Rendre la Freebox vraiment multiposte

A Noël dernier, Free a lancé une nouvelle fonctionnalité sur la Freebox. Elle peut désormais streamer les chaînes de TV directement sur le LAN.
Cela permet donc de regarder la TV sur ses PC 😉 J’attendais cette fonctionnalité depuis longtemps. Je pensais que ça ne se ferait jamais car je sais que les chaînes et les ayant droits sont en général assez frileux avec les nouvelles technologies (qui a dit piratage)…

Comme a son habitude, Free a fait les choses bien… Plutôt que de nous mettre, comme c’est à la mode un seul flux crypté avec des DRMs et un protocole propriétaire, ils ont utilisé un protocole standard, le RTSP. Ce protocole est normalement compris par tous les bons lecteurs vidéo comme VLC et MPlayer. De plus ils n’ont pas limité a un seul flux… Dans la pratique, on peut regarder autant de flux que l’on peux en faire passer dans la liaison ADSL (voir dans le LAN si vous êtes en Wifi ou encore en Ethernet 10MBps (Freebox v3)). En bref, on peut regarder sans problème 2 ou 3 flux simultanément. Un miracle !!!

Free a appelé cette fonctionnalité Freebox Multiposte… Mais en pratique, c’est bien souvent monoposte… Je m’explique.
Le protocole RTSP a un fonctionnement particulier, assez proche de celui du FTP. Quand on veut regarder un flux, VLC ouvre une connexion TCP vers le port RTSP de la Freebox. Ce canal permet de mettre en place les paramètres de la diffusion. Le flux vidéo lui passe par une liaison en UDP émise par la Freebox. Le port de destination de cette transmission en UDP est normalement tiré au sort par VLC en envoyé vers la Freebox… Dans une configuration monoposte, ça marche très bien… Mais dès que l’on met un routeur (NAT) entre les deux, le flux UDP ne peut arriver jusqu’à l’ordinateur qui la demandé…
La solution proposé par Free est une version modifié de VLC qui restreint la plage de port UDP qu’elle va utiliser, tout en routant cette page de port (DNAT) vers le PC. Le routage étant statique, on retombe dans une configuration monoposte.

La solution est d’avoir un routeur firewall intelligent qui soit capable d’écouter les transactions RTSP et d’ouvrir le port demandé de façon dynamique. Cela existe déjà pour le FTP par exemple. Sous Linux, il existe une série de modules iptables appelé conntrack (Connexion tracking, soit Suivit de connexion), chargé justement de faire cela…
En fouillant dans les sources du kernel, on trouve bien une série de modules de conntrack pour le FTP ou IRC… Mais rien pour le RTSP…
Il existe en fait un tel module sur le site d’iptables, mais il n’est pas intégré au kernel, il faut donc le patcher…
J’ai décidé de le faire pour une distribution OpenWRT, afin de pouvoir continuer à utiliser mon ASUS WL500g comme routeur, et éviter de devoir mettre un PC dans le salon…

Voici en gros comme je m’y suis pris :

  • J’ai téléchargé les sources de la distribution OpenWRT.
  • J’ai patché les sources avec ce patch. J’ai activé, notamment, les modules iptables supplémentaires (iptables-extra)… Ensuite, j’ai lancé la compilation : Le Makefile se charge alors télécharger, patcher, compiler, packager tout… C’est magique…
    La compilation finie, il n’y a plus qu’a flasher le router avec l’image correspondant à son modèle (présente dans le répertoire bin)… Le répertoire bin/package contient les packages (on s’en serait douté 😉 ). Il faut juste les copier sur un serveur web…
  • Une fois OpenWRT booté, et configuré selon les besoins de votre réseau, il faut installer le paquet kmod-ipt-nat-extra et lancer les modules.
    Après avoir modifier votre /etc/ipkg.conf pour ajouter l’url du serveur ou vous avez ranger les paquets :

Il ne vous reste plus qu’a profiter de la TV sur tous les ordinateurs de votre maison !!!
Magique !

Update 26/02/2006 : J’ai mis en lignes les binaires que j’ai généré.

(7 commentaires)

Passer au formulaire de commentaire

    • mala116 on 26 février 2006 at 14:48
    • Répondre

    Wouahh, mais comment on fait quand on est novice comme je le suis ???
    Peut-on récuperer ton firmware personel pour mon wl500g deluxe?

    merci de ton aide

  1. Fantastique !
    Installé avec succès sur un WRT54GS v4

    J’ai transmis cette url sur les news [proxad.free.adsl.tv]

  2. je voudrai savoir s’il ya a une interface pour gérer openwrt un peut comme dd-wrt.
    car le patch pour le rtsp m’interesse fortement ainsi que openwrt mais je n’ai pas de connaissance linux .

  3. Il y a une sorte de mini interface web sous openwrt… Elle te permet de changer les réglages wifi + ip… D’installer des paquets… Mais rien concernant le firewall ou toutes les autres joyeusetés de dd-wrt ou du firmware d’origine…

    Les tuto sur le site d’openWRT sont plutôt pas mal… Va y jeté un oeuil… C’est pas du clickodrome, mais avec un peu de volonté c’est tout de même faisable… Tout le monde peut apprendre, et il n’y a pas de meilleur moyen que de se lancer 😉

  4. Pour info, le RTSP est supporté nativement dans DD-WRT depuis avril 2006. Cf. ce post : forum.bsr-clan.de/viewtop…

  5. @thoms:
    Malheureusement le suivi des connexions RTSP ("RTSP conntrack") n’est plus présent dans DD-WRT depuis la version v24.

  6. @CDuv: heureusement, le routeur de la freebox supporte comme il faut le suivi des connexions RTSP maintenant… 😉 Grâce à ça, je n’utilise plus de WRT…

Répondre à mala116 Annuler la réponse

Votre adresse ne sera pas publiée.

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.