Table of Contents

Installazione di Kodi su Debian 9

Kodi è il nuovo nome di XBMC, a partire dalla versione 14. Vedere le vecchie pagine XBMC Media Center e Raspberry PI mediacenter con OpenELEC, perché gran parte degli appunti restano validi.

Su Debian 9 Stretch

Si è preferito installare il pacchetto da deb-multimedia.org piuttosto che quello ufficiale fornito da Debian, sia perché è una versione più recente (17.6 invece di 17.1) sia per gestire al meglio le dipendenze da codec proprietari che in Debian non ci sono, ma sono presenti in Deb-Multimedia.

La pacchettizzazione Debian di Kodi dipende da xserver-xorg, tuttavia non abbiamo installato un login manager (lightdm, gdm, o simili) quindi l'host si avvia con il login su console testuale.

ATTENZIONE :!: In configurazioni più recenti, ad esempio RaspiOS basato su Debian 10.8 Buster che installa Kodi 18.7 Leia, il pacchetto Kodi si può installare in modo del tutto diverso, senza xserver-xorg. Vedere Kodi on a Raspberry Pi NAS.

Con Debian 9 Stretch è stato necessario installare i seguenti pacchetti e le loro dipendenze:

Altri pacchetti consigliati:

La formula per avviare kodi suggerita da kodi.wiki è la seguente:

/usr/bin/xinit /usr/bin/dbus-launch --exit-with-session \
    /usr/bin/kodi-standalone -- :0 -nolisten tcp vt7

Senza il pacchetto libgl1-mesa-dri l'avvio di xinit/kodi falliva, lasciando nel kodi_crashlog-*.log questo errore:

ERROR: Failed to find matching visual

Per consentire all'utente non privilegiato kodi (creato apposta) di avviare Kodi è stato necessario modificare il file /etc/X11/Xwrapper.config, mettendo le righe:

allowed_users=anybody
needs_root_rights=yes

In alcuni post viene consigliato anche di eseguire dpkg-reconfigure x11-common. Senza queste modifiche l'esecuzione di xinit/kodi da parte dell'utente non-root dava il seguente errore del server X:

Fatal server error:
(EE) xf86OpenConsole: Cannot open virtual console 7 (Permission denied)

L'utente kodi appartiene ai gruppi di sistema audio, video e plugdev. Il pacchetto policykit-1 è installato, ma non sono state fatte personalizzazioni. In queste condizioni il menu Power di Kodi consente il reboot e lo spengimento anche all'utente non privilegiato.

L'esecuzione xinit/kodi funziona a questo punto da utente non privilegiato, sia da console locale che da terminale remoto. Per avviare il servizio kodi al bootstrap si è creata una unit systemd:

[Unit]
Description = Kodi Media Center

# if you don't need the MySQL DB backend, this should be sufficient
After = systemd-user-sessions.service network.target sound.target

# if you need the MySQL DB backend, use this block instead of the previous
# After = systemd-user-sessions.service network.target sound.target mysql.service
# Wants = mysql.service

[Service]
User = kodi
Group = kodi
Type = simple
ExecStart = /usr/bin/xinit /usr/bin/dbus-launch --exit-with-session /usr/bin/kodi-standalone -- :0 -nolisten tcp vt7
Restart = always
RestartSec = 15

[Install]
WantedBy = multi-user.target

e quindi si è installato, abilitato e avviato il servizio:

systemctl daemon-reload
systemctl enable kodi.service
systemctl start kodi.service

Su Debian 7 Wheezy

Si installa facilmente su Debian Wheezy, basta aggiungere i repository:

deb  https://people.debian.org/~rbalint/ppa/xbmc-ffmpeg xbmc-ffmpeg-wheezy-backports/
deb  http://http.debian.net/debian wheezy-backports main contrib non-free

Seguire le istruzioni del repository, in sintesi:

apt-get install debian-keyring
apt-get install apt-transport-https
gpg --keyring /usr/share/keyrings/debian-keyring.gpg -a --export 21E764DF | sudo apt-key add -

Quindi installare i seguenti pacchetti:

Quando serve una dipendenza necessariamente dai bacports:

apt-get -t wheezy-backports install libtag1c2a

Si crea un utente kodi per mandare in esecuzione il software omonimo, deve appartenere ai vari gruppi Debian quali audio, video, plugdev, ecc.

Script start/stop

Lo script per avviare Kodi automaticamente al bootstrap è stato preso dalla pagina Autostart Kodi for Linux, opportunamente aggiornato per il passaggio di nome XBMC → Kodi.

Aggiornamento delle miniature

Per ogni video è possibile visualizzare una miniatura personalizzata al posto di quella creata automaticamente; basta mettere un file JPG oppure PNG nella stessa directory del file video, chiamandolo con lo stesso nome e l'estensione .tbn.

Queste immagini vengono salvate in una cache e in un database, quindi aggiornarle non è semplice. Un metodo drastico è eliminare il file $HOME/.kodi/userdata/Database/Textures13.db e i file in $HOME/.kodi/userdata/Thumbnails/.

Pare che esista uno script più efficace: Texture Cache Maintenance utility.

Catturare una schermata di Kodi

È possibile catturare la schermata corrente di Kodi eseguendo una riga di comando in una shell dell'host stesso. Si deve installare il pacchetto Debian kodi-eventclients-kodi-send e quindi eseguire:

kodi-send --action="TakeScreenshot"

Alla prima esecuzione, nell'interfaccia Kodi, compare la richiesta di directory destinazione, dove verrà salvato il file PNG. Le richeiste successive utilizzeranno la stessa directory (fino al riavvio successivo).

Library data from local .nfo files

NFO files

FIXME Something is not working as wanted:

File view, but with library data

The year 1601 problem

We incurred into a problem with movie date in Yatse, the Android application to control Kodi remotely: every movie was presented as released in year 1601. It turned out that you must use the <premiered> tag into the .nfo file, instead of the <year> one. The tag must be in the ISO format YYYY-MM-DD, otherwise it will be not parsed.

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<!-- created on 2017-12-30 15:09:33 - by MediaManager -->
<movie>
    <title>L'era glaciale 3 - L'alba dei dinosauri</title>
    <sorttitle>era glaciale 3</sorttitle>
    <set>Era Glaciale</set>
    <genre>Animazione</genre>
    <premiered>2009-01-01</premiered>
</movie>

Layout tastiera italiana

On-Screen keyboard

Stranamente Kodi 14.0 su Debian Wheezy non include il layout italiano per la tastiera on-screen (cioè quella utilizzabile anche con il telecomando o il mouse). I vari layout sono definiti nel file /usr/share/kodi/system/keyboardlayouts.xml e pare che non sia possibile creare un file personalizzato con layout aggiuntivi (almeno con la versione 14 Helix). Questo è un problema perché se si modifica il file, questo sarà sostituito durante un aggiornamento di Kodi.

Ad ogni modo si deve aggiungere una sezione del tipo:

  <layout name="Italian QWERTY">
    <keyboard>
      <row>1234567890'ì</row>
      <row>qwertyuiopè+</row>
      <row>asdfghjklòàù</row>
      <row>zxcvbnm,.-</row>
    </keyboard>
    <keyboard modifiers="shift">
      <row>1234567890?^</row>
      <row>QWERTYUIOPé*</row>
      <row>ASDFGHJKLç°§</row>
      <row>ZXCVBNM;:_</row>
    </keyboard>
    <keyboard modifiers="symbol,shift+symbol">
      <row>/\|@€#[]&lt;&gt;`~</row>
      <row>!"£$%&amp;()='?</row>
      <row>&lt;&gt;,.-+*_^§ç</row>
    </keyboard>
  </layout>

Quindi dall'interfaccia Kodi si seleziona quali layout tenere a disposizione (se sono più di uno sarà possibile cambiare da uno all'altro durante l'input da tastiera virtuale):

Tastiera hardware

Kodi 14.0 su Debian Wheezy ha un bug per cui la tastiera localizzata non funziona: quando si digita un input con la tastiera fisica nell'interfaccia di Kodi, è attivo sempre il layout US. Questo nonostante che il sistema sia configurato correttamente (la console ad esempio produce le lettere accentate come deve essere):

Neanche creando un file /etc/X11/xorg.conf.d/00-keyboard.conf con l'opportuna sezione InputClass e l'opzione XkbLayout si ottiene la localizzazione (eppure la direttiva viene caricata, come si può verificare da /var/log/Xorg.0.log).

Ancor più stranamente: se da una terminale virtuale (Alt+F1) si modifica l'impostazione della tastiera, allora Kodi inizia a funzionare correttamente, senza neanche riavviarlo:

export DISPLAY=:0
setxkbmap it

Il tutto è molto strano, poichè le impostazioni mostrate con setxkbmap -print -verbose 10 non cambiano prima e dopo aver dato il comando. Tutto sommato pare che il workaround migliore sia quello di impostare un autoexec per Kodi in /home/kodi/.kodi/userdata/autoexec.py:

import os
os.system("setxkbmap it")

Personalizzazione Skin

La skin predefinita di Kodi 17 Krypton si chiama Estuary ed è abbastanza soddisfacente, salvo per la dimensione delle miniature dei video nella modalità Muro (Wall): le immagini sono quadrate e troppo piccole. Nella nostra collezione abbiamo invece preparato tutte le miniature (file .tbn) nel formato 4:3.

È sifficiente modificare alcuni file XML e riavviare Kodi per provare un layout più soddisfacente. La directory che contiene la skin è /usr/share/kodi/addons/skin.estuary/xml/, i file sono:

Impostazioni Consigliate per Kodi 17

Il nostro utilizzo di Kodi è orientato alle seguenti caratteristiche:

Ecco i consigli per una corretta visualizzazione dei contenuti video:

Come metadati da includere nei file .nfo ci è sufficiente assegnare:

Kodi ha innumerevoli parametri che possono essere personalizzati, ecco alcuni consigli su cosa impostare dal menu Settings (icona a forma di ingranaggio):

Apertura automatica di una directory all'avvio

Pare che Kodi 17 supporti il file $HOME/.kodi/userdata/autoexec.py. Vedere gli appunti presi per l'autostart con OpenELEC: pare che siano ancora validi (compreso l'import xbmc e i metodi). Anche il wiki di Kodi ha una pagina a riguardo.

Kodi 17 Cheat Sheet

Vedere Keyboard controls.

Key Function Note
Space Pause
X Stop playback
Enter Player controls (OSD)
- (minus) Volume down
+ (plus) Volume up
C Contextual menu Utile ad esempio per mettere in coda una intera directory.
ESC Previous menu Utile anche per chiudere il menu OSD.
S Shutdown menu Per spengere o riavviare l'host.
T Subtitles Attiva o disattiva i sottotitoli.
A Audio delay Aggiusta la sincronizzazione audio-video.
TAB Fullscreen playback
\ (backslash) Fullscreen mode Fullscreen/windowed mode.