まこと の ブログ

MaKoTo no burogu — Journal de bord…

Aller au contenu | Aller au menu | Aller à la recherche

Un Raspberry Pi 3 en MediaCenter #Kodi

On va ici reparler de l'installation manuelle de Kodi sur RaspberryPi, étant donné les quelques difficultés qui se sont présentées, alors que je souhaitais installer un Add-on sur ma précédente installation datant de 2016.

Depuis 2016 oui !
Entre temps j'avais juste — sans modification logicielle — échangé le Pi2 par un Pi3, pour un petit gain de performances appréciable.

  • Sans soucis majeur donc, sauf à avoir des Add-on parfois défaillants, comme l'Add-on youtube (sans pub !) qui demande maintenant (mais à priori les dév travaillent à y remédier) à ce que soit renseigné une identité d'API développer pour faire fonctionner l'Add-on.
  • Autre problème cet été… La chaleur. Comme chacun·e sait, le Pi3 vient sans dissipateur thermique, et il ne chauffe pas trop en temps normal, autour de 40° suivant la température ambiante. Jusqu'ici tout va bien comme dirait l'autre, mais arrivé en Août, pourquoi diable ma télécommande InfraRouge se met elle à déconner grave !?? J'appuie une fois sur le bouton et zouuu la commande est prise façon mitraillette par le Pi… J'ai rapidement remarqué qu'au démarrage du médiacenter, la télécommande fonctionnait bien, et ce n'est qu'au bout de quelques courtes minutes que le problème apparaissait, et vu les fortes chaleurs, j'ai fais le lien… Et « anéfé» le Pi tournait autour de 50° !
  • J'ai donc entrepris de changer mon boîtier (cf. Précédent billet) et d'en imprimer un nouveau (téléchargeable ici ou en annexe de ce billet), tenant compte du dissipateur thermique de récup découpé en gros rectangle et de ventilateurs ajoutés.

Voilà, avec ça c'est autour de 30°C et la télécommande n'a plus bronché !

  • Le système tournait donc, après mise à jour, avec Kodi 17.3, sur Raspbian GNU/Linux 8 (jessie), et un Kernel Linux 4.9.

Mais le nouvel Add-on ma dit : « trop vieux mec ! »… Mm'ok, je pourrais mettre à jour l'OS… Mais sur un Pi, avec une carte SD, c'est non, alors je réinstalle !

Le nouvel OS pour RaspberryPi à changé, c'est maintenant Raspberry Pi OS qui remplace Raspbian… cherchez pas c'est juste le nom qui change…
Allons-zy !

1 - Installer le Raspbian Lite :

  • Télécharger Raspberry Pi OS Lite
  • Dézipper, puis déployer l'image sur une carte SD, avec la commande DD

(attention, of=/dev/sdx à adapter pour la cible de votre carte SD, en cas d'erreur risque d'effacement d'un disque dur non désiré)

sudo dd bs=4M if=2020-12-02-raspios-buster-armhf-lite.img of=/dev/sdx conv=fsync status=progress
  • Placer la carte SD dans le Raspberry, et le mettre sous tension. Pour rappel :

Login : pi
Pass : raspberry

Exécuter raspi-config, et configurer tous les trucs comme on veut,

raspi-config

Notamment les variables locales (time zone, clavier, etc), et très important, le mémory split pour allouer 512Mo au GPU, sans quoi impossible de lire de la HD 1080 !
On en profite aussi pour configurer le login automatique de l'utilisateur pi.

  • Effectuer les mises à jour :
sudo apt update
sudo apt upgrade
  • Mettre les fichiers temporaires en ram pour économiser sur la durée de vie la la carte SD.
sudo nano /etc/fstab
tmpfs      /tmp		    tmpfs	defaults,size=256M	0    0
tmpfs      /var/tmp	    tmpfs	defaults,size=256M	0    0
tmpfs      /var/lock	tmpfs	defaults,size=256M	0    0



2 - Installer Kodi :

sudo apt install kodi

Pour lancer Kodi il suffit de taper kodi depuis la console.

  • Si on veut que Kodi se lance au démarrage du RpiPi3, éditer' :
sudo nano /etc/profile

On édite en ajoutant ceci à la fin :

kodi --standalone

On se retrouve donc avec Kodi 18.7, sur Raspbian GNU/Linux 10 (buster), et un Kernel Linux 5.4.


3 - Montage automatique du partage réseau ssh :

On va utiliser simplement le fstab, et s'arranger pour que le mot de passe ssh ne soit pas demandé.

  • Installation de sshfs :
sudo apt install sshfs
  • Création d'une paire de clés publiques/privées pour l'utilisateur sur le client (le Pi3) :

fstab est géré par l'utilisateur root, c'est donc les clefs de celui-ci dont on a va avoir besoin, pour spécifier cela on utilise sudo :

sudo ssh-keygen -t rsa

Laisser le chemin par défaut (/root/.ssh/id_rsa) et laisser la demande de passphrase vide.

  • Copier ensuite la clé publique sur le serveur (la machine ou se trouve le stockage) :
sudo ssh-copy-id -i /root/.ssh/id_rsa.pub -p N°-de-port MONLOGIN@IP-du-serveur
  • Éditer le fstab :
sudo nano /etc/fstab
  • Et ajouter cette ligne :
sshfs#MONLOGIN@IP-du-serveur:/répertoire/distant    /hone/pi/video    fuse    port=N°-de-port,user,noatime,allow_other,_netdev    0    0
  • Ne pas oublier le créer le dossier ~/video :
mkdir /home/pi/video

Et vérifier en montant le contenu de fstab :

sudo mount -a



infrarougeRPI_bb.png

4 - La télécommande infra-rouge :

Une fois câblé un récepteur infrarouge connecté sur un GPIO (ici j'ai câblé le GPI018), on va configurer le logiciel.
Attention, fini LIRC, pu besoin !
J'aurais passé quelques heures à comprendre pourquoi ma télécommande ne marchait pas, en voulant le faire à l'ancienne mode, consistant à charger le module lirc-rpi. Celui-ci n'existe plus, et pour cause, il est intégré au kernel !

  • Il faut donc dorénavant utiliser la syntaxe suivante en éditant config.txt
sudo nano /boot/config.txt
  • Ajouter la ligne et redémarrer le Pi3.
dtoverlay=gpio-ir,gpio_pin=18
  • On utilise donc ir-keytable pour la gestion de l'infrarouge :
sudo apt install ir-keytable
  • Une fois installé on active tous les protocoles infra-rouge possible :
sudo ir-keytable -p all
  • Puis on lance :
ir-keytable

Qui retourne un paragraphe… La première ligne /sys/class/rc/rc0/ indique que c'est le matériel rc0 qui est ici utilisé.

  • Pour tester la télécommande, on va donc adapter cette commande avec la mention rc0 comme ceci :
ir-keytable -t -s rc0

Et appuyer sur les boutons devrait afficher des lignes comme ça :

5109.030115: lirc protocol(sharp): scancode = 0x1d7

Noter alors le code pour chaque bouton, afin de constituer un fichier de configuration, à associer avec les touches du clavier qui vont bien pour piloter Kodi. Pour la syntaxe c'est par ici, ou simplement avec la commande irrecord --list-namespace (mais du coup faut installer lirc sur une autre machine).

  • Voici mon fichier ainsi fabriqué manuellement en se basant sur les informations précédentes et en modèle des fichiers de /lib/udev/rc_keymaps/ :
/etc/rc_keymaps/sharp.toml
[[protocols]]
name = "sharp"
protocol = "sharp"
variant = "sharp"
[protocols.scancodes]
0x157 = "KEY_Up"
0x120 = "KEY_Down"
0x1d8 = "KEY_Right"
0x1d7 = "KEY_Left"
0x152 = "KEY_Enter"
0x1f5 = "KEY_C"
0x1e4 = "KEY_PageUp"
0x138 = "KEY_Esc"
0x1ecd = "KEY_Back"
0x148 = "KEY_Rewind"
0x149 = "KEY_Stop"
0x14a = "KEY_PlayPause"
0x14b = "KEY_FastForward"
  • Il faut modifier le fichier rc_maps.cfg pour l'informer de cette nouvelle télécommande custom
sudo nano /etc/rc_maps.cfg

Ajouter ceci en fin de fichier

*       *                       sharp.toml
  • Reste plus qu'à tester, et pour cela il faut charger la télécommande avec ceci :
sudo /usr/bin/ir-keytable -a /etc/rc_maps.cfg

Appuyer alors sur les touches de la télécommande, ça devrait agir dans la console GNU/Linux ! Par exemple la touche correspondant à KEY_C affichera le caractère C.

  • Pour rendre le réglage perment on le met dans la crontab : (notez bien, c'est avec sudo cette fois)
sudo crontab -e

Et inscrire à la fin :

@reboot /usr/bin/ir-keytable -a /etc/rc_maps.cfg
  • C'est tout alors ? Bah c'est vachement plus simple… — Une fois qu'on sait ce qui a changé hein — (note pour plus tard : « penser à lire plus souvent les realese notes» ) pas besoin d’installer LIRC, t'es sûr ?

En fait si on lance cette commande, elle nous retournera que le paquet liblirc-client0 est installé, c'est kodi qui l'aura mis.

dpkg -l | grep lirc
ii  liblirc-client0:armhf            0.10.1-6.2~deb10u1+rpt1             armhf        infra-red remote control support - client library
  • Par contre ce qu'il a oublié de mettre, c'est le paquet suivant, sans quoi la télécommande marche pas dans kodi… Un peu concon, mais facile à résoudre :
sudo apt install inputlirc



6 - Migration de base de données :

  • Dans le dossier .kodi/userdata/Database on trouve plusieurs fichiers, celui qui m'intéresse c'est MyVideosXX.db.

C'est lui qui contient les status lu et non-lu des médias.
On va quitter Kodi, et récupérer ce fichier sur mon ancienne machine kodi, nommé : MyVideos99.db.

  • Supprimer le fichier utilisé par l'actuel (nouveau) kodi, nommé : MyVideos116.db.
rm /home/pi/.kodi/userdata/Database/MyVideos116.db
  • Renommer le fichier récupéré de l'ancien, afin qu'il porte le nom correspondant à l'actuel Kodi :
mv /home/pi/.kodi/userdata/Database/MyVideos99.db /home/pi/.kodi/userdata/Database/MyVideos116.db
  • Relancer Kodi, qui m'indique alors sur son écran de présentation que la base est en cours de migration.

On peut surveiller l'opération en listant le dossier et voir évoluer doucement la taille d'un fichier MyVideos116.db-journal

ls -lh /home/pi/.kodi/userdata/Database/



7 - Astuce de dernière minute :

Suite à des erreurs python sur le format horaire (tail -f .kodi/temp/kodi.log) l'add-on Arte+7 refuse de charger certaines listes, essayer de passer le « format régional prédéfini » à Belgique.
Systéme > paramètres > interface > région > Format des unités > format régional prédéfini : Belgique

8 - Sauvegarde :

  • Et quand on a terminé, la bonne idée c'est de faire une image du disque, afin de pouvoir restaurer rapidement le mediacenter en cas de corruption de la carte SD.
sudo dd bs=4M if=/dev/sdx of=RpiMediacenter8Go_Kodi18.7_Raspbian10_Kernel5.4.img conv=fsync status=progress

Ensuite pour que ça occupe moins de place, suffit de zipper le fichier image, avant de le jeter.

Ressources :
https://stackoverflow.com/questions/53249294/ir-transmitter-not-working-on-raspberry-pi:
https://blog.gordonturner.com/2020/05/31/raspberry-pi-ir-receiver/:
https://peppe8o.com/setup-raspberry-pi-infrared-remote-from-terminal/:
https://www.msldigital.com/pages/support-for-remote:
https://doc.ubuntu-fr.org/irkeytable#inputlirc:

Ajouter un commentaire

Le code HTML est affiché comme du texte et les adresses web sont automatiquement transformées.

Fil des commentaires de ce billet