Kodi

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

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