Player software for Media Centre nodes.
Hardware
Configuration
Remote Config
Set in .kodi/remote.conf.
This is a non-userdata setting so must be restored after upgrades.
AppleTV remote.conf:
# Apple TV  remote
factory_code    = 0x87ee0001
work_mode   = 1
repeat_enable   = 1
release_delay   = 150
debug_enable    = 1
reg_control = 0xfbe40
key_begin
    0x0b 103    ;UP
    0x0d 108    ;DOWN
    0x08 105    ;LEFT
    0x07 106    ;RIGHT
    0x04  28    ;OK
    0x02  14    ;MENU
key_end
Disable Logging
<advancedsettings>
    <loglevel>-1</loglevel>
</advancedsettings>
Buffer Media
Kodi does not buffer local media (including smb:// and nfs://) by default.
Set advancedsettings/network/buffermode (v17 Krypton: advancedsettings/cache/buffermode) to 1 (cache all):
<advancedsettings>
  <network>
    <buffermode>1</buffermode>
    <readbufferfactor>5</readbufferfactor>
    <!-- <cachemembuffersize>52428800</cachemembuffersize> -->
  </network>
</advancedsettings>
Shared Database
<advancedsettings>
  <musicdatabase>
    <type>mysql</type>
    <host>${MYSQL_IP}</host>
    <port>3306</port>
    <user>${USER}</user>
    <pass>${PASSWORD}</pass>
  </musicdatabase>
  <videodatabase>
    <type>mysql</type>
    <host>${MYSQL_IP}</host>
    <port>3306</port>
    <user>${USER}</user>
    <pass>${PASSWORD}</pass>
  </videodatabase>
  <videolibrary>
    <importwatchedstate>true</importwatchedstate>
    <importresumepoint>true</importresumepoint>
  </videolibrary>
</advancedsettings>
${MYSQL_IP}
:   Hostname or IP address of MySQL server.
${USER}
:   MySQL username
${PASSWORD}
:   MySQL password
Server permissions
Give user permission to use and create new Kodi databases.
grant all privileges on `MyMusic%`.* to ${USER};
grant all privileges on `MyVideos%`.* to ${USER};
Services
Enables Airplay, UPnP, web interface (no username or password)
<settings>
    <services>
        <airplay>true</airplay>
        <airplaypassword default="true"></airplaypassword>
        <airplayvolumecontrol default="true">true</airplayvolumecontrol>
        <devicename>${LOCATION}</devicename>
        <esallinterfaces>true</esallinterfaces>
        <escontinuousdelay default="true">25</escontinuousdelay>
        <esenabled default="true">true</esenabled>
        <esinitialdelay default="true">750</esinitialdelay>
        <esmaxclients default="true">20</esmaxclients>
        <esport default="true">9777</esport>
        <esportrange default="true">10</esportrange>
        <upnpannounce default="true">true</upnpannounce>
        <upnpcontroller default="true">false</upnpcontroller>
        <upnprenderer>true</upnprenderer>
        <upnpserver default="true">false</upnpserver>
        <useairplaypassword default="true">false</useairplaypassword>
        <webserver>true</webserver>
        <webserverpassword></webserverpassword>
        <webserverport default="true">80</webserverport>
        <webserverusername default="true"></webserverusername>
        <webskin default="true">${WEB_INTERFACE}</webskin>
        <zeroconf default="true">true</zeroconf>
    </services>
</settings>
${LOCATION}
:   the name of the room the player is in.
${WEB_INTERFACE}
:   webinterface.chorus if it is installed, otherwise webinterface.default
Multi Room Audio
Add-on : http://kodi.wiki/view/Add-on:XSqueeze
Troubleshooting
Migrating database paths
use MyVideos119;
update path set strPath = REPLACE(strPath, 'smb://MEDIA/', '/auto/');
Fixing broken databases
- 
Enable loglevel=0 in advancedsettings.xml Check for log messages about upgrade failures
NOTICE: Attempting to update the database MyVideos99 from version 93 to 99 ERROR: SQL: [MyVideos99] Undefined MySQL error: Code (1060) Query: ALTER TABLE movie ADD userrating integer - 
Stop media nodes
rake HOSTS="lounge ballroom bedroom-mark" media_stop Login to Hastur mysql
- 
Drop old database
drop database MyVideos99 - 
Start master media node
rake HOSTS="lounge" media_restart Check logs for successful upgrade
- 
Restart other media nodes
rake HOSTS="lounge ballroom bedroom-mark" media_restart