Tuto Netflix + Kodi sur Raspbian

Publié le : 04/08/2019 00:56:44
Catégories : Tutoriels

Le besoin

Installation de Kodi sur une base Raspbian avec prise en charge de Netflix afin de pouvoir utiliser le RaspberryPi pour d'autres choses (serveur de sauvegarde, résolveur DNS local, serveur web, serveur Firefox Sync, etc.).

La tache est plus compliqué que d'installer une image toute prête telle que LibreElec par exemple (installation de Kodi, installation des extensions et des dépendances, création d'un service systemd pour démarrer Kodi automatiquement au démarrage du RaspberryPi, création d'un utilisateur dédié, etc.).

Les pré-requis

  • Une carte µSD de minimum 8Go
  • Un RaspberryPi 3 (ici B+ rev 1.2) afin de décoder du HD (720p max)
  • Avoir accès à Internet avec résolution DNS depuis le RPi
  • Avoir des connaissances en commandes GNU/Linux (aide à la compréhension)
  • Avoir installé Raspbian Stretch (9) (ce n'est pas traité ici). Voir ce tutoriel Raspberry Pi : comment l'installer sans écran, avec Wi-Fi et SSH sur https://inpact-hardware.com.

Les versions utilisées

  • Kodi v18.1 (nommée Leia)
  • Netflix extension v0.14.0beta23
  • Python pip v9.0.1-2
  • Module Python 2.7 pycryptodomex v3.8.1
  • kodi-inputstream-adaptive v2.3.15-1

Kodi : Installation et configuration

Mise à jour des dépôts puis installation de kodi et d'une bibliothèque nécessaire.

sudo aptitude update

sudo aptitude install kodi libnss3

Ajustement de la mémoire vidéo GPU

sudo raspi-config

Advanced Options > A3 Memory Split > 512

sudo reboot

Pour vérifier la valeur (doit être à 256M)

sudo vcgencmd get_mem gpu

Création de l'utilisateur dédié

L'utilisateur kodi sera celui qui exécutera le script systemd. Il sera membre de plusieurs groupes nécessaires pour le multimédia ainsi que le groupe sudo nécessaire lors de l'installation du module Windevine CDM afin de pouvoir lire les DRM sur Netflix.

adduser --disabled-password --gecos "User to run Kodi Media Center" kodi
adduser kodi audio
adduser kodi video
adduser kodi plugdev
adduser kodi input
adduser kodi sudo

Suppression du mot de passe

Nécessaire comme expliqué précédemment lors de l'installation de Widevine CDM comprenant les commandes exécuté en tant que root : losesetup, mount, fdisk, etc.. Ces commandes sont indiqués lors de l'installation.

  • sudo visudo -f /etc/sudoers.d/99_kodi-nopasswd
kodi ALL=(ALL) NOPASSWD: ALL

Création du service systemd

Depuis debian Jessie (8) il est préférable de le faire via systemd que l'ancien système d'init appelé SysV sous Debian.

  • sudo nano /etc/systemd/system/kodi-standalone.service
[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/kodi-standalone
Restart = on-failure
RestartSec = 15

[Install]
WantedBy = multi-user.target

Prise en compte, activation et démarrage du service

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

Source : le gist GitHub de Cyberek

Paramétrage : langues, disposition du clavier

Note : Si la TV est compatible HDMI CEC (c'est affiché lors du démarrage de Kodi), l'utilisation de la télécommande de la TV est possible.

Settings > System > Input > Keyboard layouts > French
System > Interface > Region > Laguage > French
> Disposition du clavier > cliquer sur French AZERTY et English QWERTY
> Format régional prédéfini > France

Avant d'aller plus loin, vous pouvez tester si vous avez l'image, le son, que la langue est la bonne, qu'une vidéo YouTube est fonctionnelle (nécessite l'installation de l'extension). Testé avec succès sur la version v6.4.1.

Netflix

Pré-requis

  • Kodi 18 minimum

Ce qui sera traité ici, l'installation de :

  • L'extension Inputstream.adaptive >= v2.0.0
  • Le module Python pycryptodomex v3.4.5 via pip

Source : Le GitHub de CastagnaIT

Installation de Python pip

sudo apt install python-pip

Source : la documentation officielle Python sur PIP

Installation du module Python PyCryptodomex

Pour l'utilisateur kodi uniquement (tel qu'expliqué dans les pré-requis du GitHub de CatagnaIT)

Installation des dépendances :

sudo aptitude install build-essential python-dev

Source : la documentation officielle sur https://pycryptodome.readthedocs.io

sudo su kodi -c 'pip install --user pycryptodomex'

Vérification de l'installation :

sudo su kodi -c 'pip list | grep pycryptodomex'

pycryptodomex (3.8.1)

Installation de l'extension Inputstream.adaptive

sudo aptitude install kodi-inputstream-adaptive

sudo systemctl restart kodi-standalone

Activer l'extension :

Extensions > Mes extensions > Flux d'entrée du lecteur VideoPlayer > Activer

Installer Widevine CDM (lecture des DRM)

Tout accepter, le téléchargement et l'installation sont automatiques.

Netflix : installation de l'extension

Récupérer la dernière version tel qu'indiqué sur le GitHub de CastagnaIT

Note : la méthode employée ici est l'ancienne, passant par Mediafire et non par le dépôt GitHub pour les versions suivantes.

  • Ancienne méthode via Mediafire

Cette méthode nécessite la mise à jour manuelle de Netflix contrairement à la suivante.

cd /tmp && wget https://download1981.mediafire.com/g1rzaylkiexg/fcgb0pupjzhypqk/plugin.video.netflix_0.14.0beta23.zip

  • Nouvelle méthode via Github

Cette seconde méthode permet de profiter des notifications de mise à jour de l'extension Netflix, voire même des mises à jour automatiques.

cd /tmp && wgethttps://github.com/castagnait/repository.castagnait/raw/master/repository.castagnait-1.0.0.zip

Paramètres > Système > Extensions > Sources inconnues > activer

Extensions > Installer depuis un fichier ZIP > racine > tmp > plugin.video.netflix_0.14.0beta23.zip

Ouvrir l'extension Netflix :

Extensions > Mes Extensions > Extensions Vidéos > Netflix > Ouvrir

Note pour l'authentification : pour taper l'arobase et le point, il faut activer les majuscules du clavier.

Retrait du groupe sudo pour kodi et du fichier sudoers

sudo deluser kodi sudo

sudo rm -f /etc/sudoers.d/99_kodi-nopasswd

sudo systemctl restart kodi-standalone

Contrôler via Smartphone

Vous pouvez contrôler via Smartphone l'interface Kodi, pratique pour taper du texte.

Voir : https://kodi.wiki/view/Official_Kodi_Remote

Diagnostics

Vous pouvez activer plus d'informations dans les logs Kodi pour vous permettre d'avir des pistes de résolution. Voir cette page officielle sur comment les activer : https://kodi.wiki/view/Settings/System/Logging

Lors du téléchargement de Widevine CDM :

  • InputstreamError: inputstream.adaptive is not available

L'utilisateur exécutant kodi n'est pas membre du groupe sudo et ne peut pas les exécuter sans demander de mot de passe.

Se référer à l'étape nommée "Création de l'utilisateur dédié".

  • La sortie HDMI n'est pas détectée

sudo sed -i 's/#hdmi_force_hotplug=1/hdmi_force_hotplug=1/' /boot/config.txt

sudo sed -i 's/#hdmi_drive=2/hdmi_drive=2/' /boot/config.txt

Source : https://raspbian-france.fr/hdmi-raspberry-pi-marche-pas-solution

sudo reboot

Vérification :

sudo vcgencmd get_config int | grep -P 'hdmi_drive|hdmi_force_hotplug'
hdmi_drive=2
hdmi_force_hotplug=1

N'hésitez pas à regarder sur la FAQ dédiée au RaspberryPi, il y a des astuces d'optimisation et des informations de dépannages.

  • Impossible de lancer une vidéo Netflix

MSLError: Message expired and not renewable or missing key request data. Rejected.

Redémarrer le RaspberryPi.

Sauvegarde

  • Manuellement

Le répertoire et ses sous-répertoires : /home/kodi/.kodi

Comprend :

La base de données Kodi et les fichiers de configuration, playlist, miniatures, extensions.

Peut être sauvegarder sur tout support autorisant l'écriture par l'utilisateur kodi (Dropbox, Google Drive, Partage NFS, disque dur externe, etc.). Penser à externaliser la sauvegarde, hors du raspberryPi si la carte µSD venait à lâcher.

La sauvegarde peut se programmer à intervalle régulier.

Pensez-y car ça peut être utile pour restaurer lorsqu'un paramètre a été modifié et qu'on ne se souvient plus duquel.

Source : https://kodi.wiki/view/Add-on:Backup

Mise à jour

Kodi

Note : Penser à bien sauvegarder le répertoire précédent.

sudo aptitude update && sudo aptitude upgrade kodi

Une extension

  • Extension dans le dépôt officiel

Par défaut les mises à jours sont en automatiques. Vous pouvez choisir de seulement en être notifié et les installer manuellement plus tard.

  • Pour une extension hors dépôt

Télécharger la nouvelle version sur le RPi. Se référer à la section "Netflix : installation de l'extension (ancienne méthode)".

Paramètres > Extensions > Installer depuis un fichier ZIP > racine > tmp > plugin.video.netflix_XXX.zip

La nouvelle méthode pour Netflix vous notifiera lorsqu'une mise à jour sera disponible, il suffira de la faire directement sur l'interface web Kodi en quelques clics.

Source : https://kodi.wiki/view/Add-on_manager

Conclusion

Une simple ADSL 6Mbps en descendant avec 0,8Mbps en débit montant a été utilisé ici.

La lecture de vidéo YouTube fonctionne parfaitement, comprenant la qualité audio et vidéo, sans ralentissement quelconque.

Vous pourrez même caster des vidéos YouTube depuis votre téléphone si vous avez l'application NewPipe, qui permet entre-autre de consulter YouTube.

Concernant Netflix, l'expérience peut être moins agréable. Il peut y avoir par moment des mises en pause de la vidéo car celle-ci nécessite un chargement. Il peut également y avoir des pixels visible à l'écran par intermitence. Dans le pire des cas, la vidéo ne peut pas être décodé. Une mise à jour de l'extension Netflix peut résoudre ce problème.

De manière générale il est possible de regarder des séries mais également des films. L'expérieur est agréable malgré une simple ADSL 6Mbps.

Il faut garder en tête que cette extension n'est pas officielle, elle peut ne plus fonctionner du jour au lendemain ou suite à une mise à jour par Netflix.

Partager ce contenu