====== Installing Kodi 20.1 on GNU/Linux Debian 12 ======
This is an updated recipe to install Kodi as a media center on a Debian machine. The service will start automatically at bootstrap and will run under an unprivileged user. A login manager (e.g. LightDM) and a window system (e.g. X11 or Wayland) are not required.
* **kodi 20.1 Nexus**
* **Linux kernel 6.1.0**
===== Installing without X, Wayland, LightDM or whatever =====
During the Debian install, the **tasksel** will ask you what environment do you want to install. Deselect all the Debian desktop environments and enable only the SSH server.
Debian packages to install:
* **kodi** - Depends on **kodi-bin** and **kodi-data**.
* **kodi-inputstream-adaptive** - Required e.g. by the YouTube addon.
* **kodi-peripheral-joystick** - Requied if you want to control Kodi e.g. with a SNES controller.
* **kodi-repository-kodi** - The official Kodi repository addon.
* **kodi-visualization-spectrum**
* **acpi-support** - Required to support e.g. power button actions.
===== Starting Kodi as unprivileged user =====
It is advisable to run the Kodi media player under an unprivileged user, it is common practice to create the user **kodi**:
adduser kodi
Add the user to the standard Debian groups, to allow using the hardware (mainly the **video** and the **input** groups):
cdrom:x:24:kodi
floppy:x:25:kodi
audio:x:29:kodi
dip:x:30:kodi
video:x:44:kodi
plugdev:x:46:kodi
users:x:100:kodi
input:x:102:kodi
netdev:x:106:kodi
You can start Kodi from a console virtual terminal just executing **kodi-standalone**; the script will launch the program without a window manager and the windowing method will be the **Generic Buffer Manager** (GBM), because we did not install X11 nor Wayland.
===== Power off System and Reboot options in the Exit menu =====
There is an **[[..:hardware:raspberrypi_nas_kodi#kodi_power_options|obsolete recipe]]** that suggests to install **Kodi as a systemd service** under the control of the kodi user. Using **polkit** and **acpi-support** you should be able also to enable the **Power off System** and **Reboot** options in the Kodi exit menu. This seems no longer possibile, because the **systemd-logind.service** imposes that you have a full terminal session to do things like poweroff the system.
This means that if you run Kodi as a systemd service under the kodi user, you cannot give enough permissions to the process to let the Power off System and Reboot options appear in the **Exit menu** of Kodi.
So the recommended way to run Kodi as a startup service and as unprivileged user, is to enable the **aoutlogin** of the kodi user on a **virtual terminal** of the console and create a **.profile** script that will launch the **kodi-standalone** program.
===== Start at bootstrap =====
**/etc/systemd/system/getty@tty1.service.d/autologin.conf**
[Service]
ExecStart=
ExecStart=-/sbin/agetty --autologin kodi --noclear %I $TERM
The first ''ExecStart='' line will clear the eventually existing definition inherited by the ''getty@.service'' service. The second ''ExecStart=-'' (with the dash) instructs systemd to execute the program **agetty** and threat any error as non fatal. The **%%%I%%** placeholder is replaced by the terminal name (tty1 in our example). Finally the environment variable ''$TERM'' is passed to agetty, hopely it is initailized by the system to the correct value.
**/home/kodi/.profile**
# Start the Kodi media center, only if text console on VT1.
if [ -z "$DISPLAY" -a "$(tty)" = "/dev/tty1" ]; then
while true; do
kodi-standalone
echo "Sleeping 15 seconds before restarting Kodi; press Ctrl-C to interrupt..."
sleep 15
done
fi
===== Installing Kodi 21 Omega on Debian 12 Bookworm =====
I decided to upgrade to **Kodi 21 Omega** on my home media center, based on **Debian 12 Bookworm**. I For this purpose I took advantage of the **Deb-multimedia** repository, which packages Kodi 21 ad **bookworm-backports**. So the upgrade was:
* From: **Kodi 20.1** (Nexus) di **Debian 12 Bookworm**
* To: **Kodi 21.2** (Omega) di **deb-multimedia bookworm-backports**
I added the Deb-multimedia repositories into a file named **/etc/apt/sources.list.d/dmo.sources**:
Types: deb
URIs: https://www.deb-multimedia.org
Suites: bookworm
Components: main non-free
Signed-By: /usr/share/keyrings/deb-multimedia-keyring.pgp
Enabled: yes
Types: deb
URIs: https://www.deb-multimedia.org
Suites: bookworm-backports
Components: main
Signed-By: /usr/share/keyrings/deb-multimedia-keyring.pgp
Enabled: yes
It is required to install the deb-multimedia keyring to authenticate the packages:
wget https://www.deb-multimedia.org/pool/main/d/deb-multimedia-keyring/deb-multimedia-keyring_2024.9.1_all.deb
dpkg -i deb-multimedia-keyring_2024.9.1_all.deb
apt update
apt upgrade
Then I installed the new packages:
apt -t bookworm-backports install \
kodi \
kodi-data \
kodi-eventclients-common \
kodi-inputstream-adaptive \
kodi-inputstream-ffmpegdirect \
kodi-inputstream-rtmp \
kodi-peripheral-joystick
apt --fix-broken install
The **kodi-data** package did not install cleanly because it needs to overwrite a file belonging to another package (due different packaging schemas between official Debian and Deb-multimedia). So I downloaded two packages and installed them with a force option:
apt download kodi/bookworm-backports
apt download kodi-data/bookworm-backports
dpkg -i --force-overwrite kodi*.deb
I installed the **kodi-inputstream-ffmpegdirect** package because it seems to be required to play streams that use MPEG-DASH or similar formats, especially those that are not DRM-protected. The Dynamic Adaptive Streaming over HTTP is used also by YouTube.
Real Time Messaging Protocol (RTMP) is a proprietary network protocol developed by Adobe Inc. to transmit audio, video and
other data over the Internet. YouTube does not uses RTMP.
===== Web resources =====
* **[[https://fostips.com/install-kodi-debian-bookworm/|How to Install The Latest Kodi 21.2 in Debian 12 Bookworm]]**