Kodi

From Gentoo Wiki
Jump to:navigation Jump to:search

Kodi (formerly XBMC) is an open source home theater application.

Installation

USE flags

USE flags for media-tv/kodi A free and open source media-player and entertainment hub

+css Enable reading of encrypted DVDs
+optical Enable Audio CD playback, optical disks detection and reading (CD-ROM, Video CD, and others), and ISO optical disk images direct reading. DVD disks may require additional 'udf' flag.
+system-ffmpeg Use system ffmpeg instead of the bundled one
+xslt Enable metadata XSLT scrapers support with dev-libs/libxslt
X Add support for X11
airplay enable AirPlay support
alsa Add support for media-libs/alsa-lib (Advanced Linux Sound Architecture)
bluetooth Enable JSON-RPC over BT for remote control connected via bluetooth
bluray Enable playback of Blu-ray filesystems
caps Use sys-libs/libcap to bind to privileged ports as non-root
cec Enable support for HDMI-CEC devices via libcec
dbus Enable dbus support for anything that needs it (gpsd, gnomemeeting, etc)
doc Add extra documentation (API, Javadoc, etc). It is recommended to enable per package instead of globally
eventclients Install full set of Kodi python evenclients and evenclients examples
gbm Use the Graphics Buffer Manager for EGL on KMS.
gles Use simplified OpenGLES instead of full-scale OpenGL
lcms Add lcms support (color management engine)
libusb Use virtual/libusb for usb device hotplug support. This flag should only be enabled if you're running a non-Linux kernel or you don't want to use udev.
lirc Enable support for IR remote controls using app-misc/lirc
mariadb Enable support store of media library metadata on local or remote MariaDB
mysql Enable support store of media library metadata on local or remote MySQL
nfs Enable NFS client support
pipewire Enable pipewire support
pulseaudio Add sound server support via media-libs/libpulse (may be PulseAudio or PipeWire)
samba Add support for SAMBA (Windows File and Printer sharing)
soc Use additional media-video/ffmpeg patches for efficient playback on some SoCs (e.g. ARM, RISC-V)
test Enable dependencies and/or preparations necessary to run tests (usually controlled by FEATURES=test but can be toggled independently)
udev Use udev rules to handle devices' permissions and hotplug support. Unless you know what you're doing do not disable this flag on Linux kernels. This is provided as an option for completeness.
udf Enable UDF support. Required for playing blurays.
upnp Enable UPnP port mapping support
vaapi Enable Video Acceleration API for hardware decoding
vdpau Enable the Video Decode and Presentation API for Unix acceleration interface
wayland Enable dev-libs/wayland backend
webserver Enable internal webserver
zeroconf Support for DNS Service Discovery (DNS-SD)

Emerge

root #emerge --ask media-tv/kodi

Configuration

Create user

First create the kodi user:

root #useradd -m -G audio,cdrom,video,cdrw,usb,users kodi

To add support for HDMI CEC:

root #gpasswd --add kodi dialout

Services

Emerge

root #emerge --ask x11-misc/lightdm

Configure

FILE /etc/conf.d/display-manager
DISPLAYMANAGER="lightdm"
FILE /etc/lightdm/lightdm.conf
[Seat:*]
autologin-user=kodi
user-session=kodi
session-wrapper=/etc/lightdm/Xsession

Service

OpenRC

Add dbus and display-manager to the default runlevel if it needs to be started automatically:

root #rc-update add dbus default
root #rc-update add display-manager default
root #rc-service dbus start
root #rc-service display-manager start

systemd

root #systemctl enable lightdm
root #systemctl start lightdm

Gentoo Hardened

Running Kodi on a Hardened Gentoo installation is possible. To avoid grsecurity interfering with network connectivity, the CONFIG_GRKERNSEC_PROC_USER kernel option must not be enabled.

Should you require a restricted /proc filesystem, use CONFIG_GRKERNSEC_PROC_USERGROUP and set GRKERNSEC_PROC_GID to the ID of a group that the user running Kodi is a member of.

Usage

Shutdown

Allow the kodi user to issue an shutdown via polkit, resulting in a shutdown option in the Kodi menu:

FILE /etc/polkit-1/rules.d/60-kodi.rules
polkit.addRule(function(action, subject) {
        if (( (action.id.indexOf("org.freedesktop.udisks.") == 0) || (action.id.indexOf("org.freedesktop.upower.")== 0) || (action.id.indexOf("org.freedesktop.consolekit.")== 0) ) &&
        subject.user=="kodi") {
        return polkit.Result.YES;
        }
});
Note
Ensure the udev USE flag is set for shutdown to work.

External resources