====== Freebox Multiposte derrière un routeur OpenWrt ======
===== Le problème =====
Lorsqu'on utilise un routeur entre la Freebox et le réseau local, il est courant que la réception du service vidéo "Multiposte" de Free cesse de fonctionner. Tout dépend des fonctionnalités du routeur.
Dans le service //Multiposte//, la diffusion des flux vidéo s'appuie sur le protocole //rtsp//. Or ce dernier n'étant pas conforme au modèle [[https://en.wikipedia.org/wiki/OSI_model|OSI]], le routeur doit être équipé de fonctionnalités spécifiques à ce protocole lui permettant d'inspecter le contenu des échanges((On parle de "suivi des connexion", ou [[https://irp.nain-t.net/doku.php/130netfilter:020_conntrack|Conntrack]].)) entre clients((Les terminaux (ordi, smartphone, box-tv…) raccordés à votre LAN.)) et le serveur de diffusion de Free((En pratique, on ne communique pas vraiment avec "le" serveur mais avec des points de diffusion, ce qui ne change rien pour cette fiche.)). Pas de panique, c'est le cas d'autres protocoles tels que FTP ou BitTorrent. S'il est rare qu'un routeur récent vous fasse des histoires avec FTP c'est simplement parce qu'en version de base, il est équipé de la fonctionnalité nécessaire.
Il existe de très nombreuses versions d'OpenWrt. Dans mon cas, le firmware initial recommandé pour mon routeur matériel gérait intelligemment le protocole FTP mais pas //rtps//.
Des utilisatrices rencontrent le [[http://asdrad.free.fr/neuf/multiposte.html|même problème avec d'autres routeurs]] open source tel DD-WRT.
===== La solution =====
Sources :
* [[http://www.boulaire.com/2009/03/openwrt-et-free-multiposte/|Openwrt et Free multiposte]]
* [[https://blog.tblein.eu/server/2013/rtsp-through-openwrt/|RTSP through OpenWRT ]]
Le web regorge de solutions bancales de contournement. Ici, l'objectif est qu'une fois la solution installée sur le routeur, n'importe quel terminal raccordé au réseau local((Derrière le routeur.)) puisse utiliser le service Multiposte sans rien avoir à modifier/adapter sur le routeur.
Comme suggéré en intro, la résolution du problème va passer par l'installation de fonctionnalités supplémentaires, sous forme d'extensions. Le problème étant standard, les extensions nécessaires sont déjà présentes dans le dépôt officiel d'OpenWrt : pas besoin d'implanter au cœur d'un équipement névralgique, un "machin" récupéré sur une source inconnue.
==== Mise en œuvre ====
J'ai procédé à la mise à niveau du routeur à travers son interface Web (luci) :
* se connecter en tant que //root//
* System > Software > Update lists…
* dans l'onglet par défaut (//Available//), filtrer les résultats par "nathelper"
* installer les //packages// nécessaires
* kmod-ipt-nathelper-rtsp
* kmod-nf-nathelper
* kmod-nf-nathelper-extra
* ce qui installera également, du fait des dépendances entre //packages//
* kmod-lib-textsearch
* kmod-ipt-raw
* kmod-ipt-conntrack-extra
* rebooter le routeur
==== Test ====
Depuis un ordi raccordé au LAN, dans un terminal :
$ mplayer "rtsp://mafreebox.freebox.fr/fbxtv_pub/stream?namespace=1&service=201&flavour=ld"
Une fenêtre devrait afficher le programme diffusé sur chaîne //France 2//, basse définition.
Cette technique de test permet deux choses. D'un côté, les éventuels messages d'avertissement ou d'erreur seront facilement accessibles dans le terminal d'où on a lancé la lecture du flux avec l'application standard, mplayer. De l'autre, on s'affranchit de problèmes récurrents rencontrés avec VLC qui empêchent de savoir si on débogue VLC ou le routeur :-/
Si la commande //mplayer// fonctionne mais que VLC coince, c'est que le problème vient de VLC. Si //mplayer// ne passe pas, inutile d'essayer avec VLC.
===== Visionnage/écoute des flux =====
C'est quand même le but ! LOL
==== Sur ordi ====
Sur ma station de travail, j'utilise [[https://apps.kde.org/fr/kmplayer/|KMplayer]]. Il suffit d'ajouter un signet pointant sur la liste de lecture de free ("http://mafreebox.freebox.fr/freeboxtv/playlist.m3u"). KMplayer affiche la liste des tous les flux proposés et le flux vidéo sélectionné (s'il est compris dans l'abonnement !).
[[https://www.videolan.org/vlc/index.fr.html|VLC]] est très souvent recommandé pour visionner les flux Multiposte. C'est d'ailleurs [[https://assistance.free.fr/articles/utiliser-le-service-multiposte-99|la préconisation officielle de Free]]. La version installée sur Debian 11 et Mint 20.3 (Vetinari) s'est avérée incapable d'afficher les flux. Disposant de la solution KMplayer sur ma station et mon but étant de visionner sur un téléviseur, je n'ai pas cherché plus loin à faire fonctionner VLC((De nombreux posts sur des forums font état de problèmes rencontrés avec rtsp sur cette version. Il pourrait s'agir d'une simple limitation de la version de VLC distribuée par Debian et ses cousines dans laquelle le support du protocole //rtsp// n'aurait tout bêtement pas été compilé…)).
==== Sur Box-TV ====
=== Prérequis ===
La box accède à internet à travers la Freebox.
=== Configuration ===
Sources :
* [[https://www.vpnblog.net/chaines-tv-free-kodi-pvr-iptv-simple-client/|Chaînes TV Free sur KODI avec PVR IPTV Simple Client]]
* [[https://www.vpnblog.net/regarder-chaines-freebox-tv-kodi/|Extension PVR Freebox TV sur KODI 19 MATRIX]]
Le test a été réalisé sur une Box-TV bas de gamme, antique((Android 4.)), équipée d'Android-TV et d'une version antédiluvienne de [[https://kodi.wiki/view/Main_Page|Kodi]].
L'immense majorité des tutos préconise l'utilisation de l'[[https://www.vpnblog.net/regarder-chaines-freebox-tv-kodi/|extension PVR Freebox]]. J'ai préféré utiliser un add-on générique IPTV offrant une plus grande compatibilité de modèles de Freebox et de versions de Kodi que l'add-on dédié.
Mon choix s'est porté sur [[https://kodi.wiki/view/Add-on:PVR_IPTV_Simple_Client|PVR IPTV Simple Client]] que l'on installe depuis Kodi lui-même :
* Kodi > Add-ons > My-add-ons > PVR client > PVR_IPTV_Simple_Client > Install
* Config > General > Location > Remote path
* cliquer sur M3u Play List URL
* saisir l'URL de la liste de flux Free-Multiposte : http://mafreebox.freebox.fr/freeboxtv/playlist.m3u
* OK et OK pour valider la configuration
Un redémarrage de Kodi est nécessaire pour que la modification soit prise en compte. Au démarrage, Kodi charge la liste de lecture.
===== Liste de lecture et flux =====
L'URL de Free Multiposte ne fait que pointer sur une fichier texte que l'on peut parfaitement télécharger et examiner, comme n'importe quel fichier texte disponible sur le web. À titre indicatif, en voici les premières lignes :
#EXTM3U
#EXTINF:0,2 - France 2 HD
rtsp://mafreebox.freebox.fr/fbxtv_pub/stream?namespace=1&service=201&flavour=hd
#EXTINF:0,2 - France 2
rtsp://mafreebox.freebox.fr/fbxtv_pub/stream?namespace=1&service=201&flavour=sd
#EXTINF:0,2 - France 2 (bas débit)
rtsp://mafreebox.freebox.fr/fbxtv_pub/stream?namespace=1&service=201&flavour=ld
#EXTINF:0,3 - France 3 HD
rtsp://mafreebox.freebox.fr/fbxtv_pub/stream?namespace=1&service=202&flavour=hd
…
C'est là que nous avons trouvé l'URL //rtsp// utilisée lors du test avec la commande //mplayer//.
Le fait d'accéder à ce fichier démontre uniquement que l'on bien sur le réseau de Free. C'est peu mais il s'agit une condition nécessaire pour accéder à Free Multiposte !
La capacité à récupérer cette **liste de lecture**, une simple connexion en http, ne préjuge en rien de la possibilité que nous aurons à faire fonctionner les requêtes en //rtsp// qui permettent d'accéder au **flux**. Ainsi, si VLC((Ou un logiciel équivalent.)) affiche la liste mais s'avère incapable de lire un flux cela ne signifie nullement qu'on est proche du but. Cela montre simplement qu'il est capable de faire (ou sous-traiter un requête http) et de comprendre la structure simplissime du fichier "playlist.m3u".