1. Introduction

Free propose depuis le 24 Décembre 2005 de visualiser les chaines de télévision gratuites du bouquet Freebox qui l'autorisent directement sur votre ordinateur, c'est bien pratique quand on n'a pas de téléviseur. En ayant marre de répéter les même informations à plein de gens qui n'arrivaient pas à utiliser le service, voici une mini documentation sur le sujet.

En cas d'erreurs ou pour me signaler une des nombreuses info qui manquent, vous pouver m'ecrire à pterjan(a)linuxfr,org.

Avant de poursuivre il faut que le service soit actif chez vous. Pour le vérifier, essayer d'ouvrir l'URL http://mafreebox.freebox.fr/freeboxtv/playlist.m3u. Si cela ne fonctionne pas, vérifiez que vous avez bien suivi les différentes étapes indiquées sur http://adsl.free.fr/tv/multiposte/.

2. Les différentes configurations réseau

2.1. Le PC est seul derrière la Freebox où plusieurs PC sont directement sur la Freebox en mode routeur

Cela devrait marcher tout seul à condition que le parefeu du PC accepte les paquets udp/554 en sortie et les paquets udp provenant de 212.27.38.253 en entrée. Sous Linux ca donne :
iptables -A INPUT -p udp -s 212.27.38.253 -j ACCEPT
iptables -A OUTPUT -p udp --dport 554 -j ACCEPT
Pour ce qui est des ports en entrée (la première règle), ip_conntrack_rtsp permet de ne pas avoir ouvrir de ports. Voir la section 2.2.2.1.

2.2. Une seule machine (ou un routeur matériel) est reliée à la Freebox (qui n'est pas en mode routeur) et fait passerelle pour les autres

2.2.1. Vous ne souhaitez regarder la télévision que sur une seule machine

Dans ce cas tout rediriger vers la machine en question suffit. Sous Linux cela donne iptables -t nat -A PREROUTING -p udp -s 212.27.38.253 -j DNAT --to-dest IP_QUI_VA_REGARDER.

Si votre routeur ne sait pas rediriger en fonction de l'adresse source, vous pouvez rediriger tour l'UDP ou même mettre le PC en DMZ, par contre il devient accessible de l'exterieur, ne le faites donc que si vous avez un parefeu efficace dessus. Il est dans ce cas préférable d'utiliser les solutions de la section suivante.

2.2.2. Vous souhaitez pouvoir regarder la télévision sur plusieurs machines

2.2.2.1. Le routeur est sous Linux

Les modules ip_conntrack_rtsp et ip_nat_rtsp devraient permettre que cela fonctionne. Ils ne fonctionnent de base que sur les noyaux 2.4 pour le moment. Une version pour 2.6.15 ou supérieur est disponible sur http://patchwork.netfilter.org/netfilter-devel/patch.pl?id=3371. Une version fonctionnant sur le 2.6.12 de Mandriva 2006 est disponible sur http://fasmz.org/~pterjan/rtsp.tar.bz2 ou sous forme de patch sur http://fasmz.org/~pterjan/linux-2.6.12-12mdk-rtsp.patch.

2.2.2.2. Le routeur est sous Linux ou autre chose

Un VLC patché permet de choisir le port utilisé en allant dans Paramètres -> Préférences -> Input / Codecs -> Demuxers -> RTP/rtsp et en cochant "Options Avancées". Si vous avez choisi un port pair, il suffit ensuite de forwarder ce port et le suivant vers la machine. Si vous en avez chois un impair, il faut forwarder ce port et le précédent. Indiquer des ports différents pour chaque machine devrait suffir à regarder la TV sur les différentes machines. Mise à jour : depuis la version 0.8.5 vlc inclut cette fonctionnalitésans avoir besoin d'une version modifiée Paramètres -> Préférences -> Input / Codecs -> Demuxers -> RTP/rtsp -> cocher "Options Avancées" -> Port client.
2.2.2.2.1. Le client est sous Mandriva Cooker
Le rpm de VLC fourni (vlc-0.8.4a-2mdk) est déjà patché.
2.2.2.2.2. Le client est sous Mandriva 2006 en i586
Des RPM sont disponibles sur http://fasmz.org/~pterjan/rpm/2006.0/i586/ Procéder ensuite comme en Cooker.
2.2.2.2.3. Le client est sous Ubuntu Breezy en i386
Un .deb est disponible sur http://waren.free.fr/vlc/vlc-0.8.4-test2-fpmpr_2-1_i386.deb
2.2.2.2.4. Le client est sous Fedora Core 4
Il semble que le RPM fourni sur http://rpm.livna.org/fedora/4/i386/RPMS.lvn/ fonctionne.
2.2.2.2.5. Le client est sous Windows
Télécharger le VLC disponible sur http://crazy.fred.free.fr/divers/vlc-0.8.4a-crazy-with_option.zip
2.2.2.2.6. Le client est sous autre chose
Compiler VLC après avoir appliqué le patch disponible sur http://crazy.fred.free.fr/divers/livedotcom-with_option.diff

2.2.3. Le routeur est un NETGEAR

Discussion et explications sur http://www.netgear-forum.com/forum/index.php?showtopic=34015

2.3. Une machine (ou un routeur matériel) est reliée à la Freebox (qui est en mode routeur) et fait passerelle pour les autres

Le problème ne devrait être que temporaire dans la mesure ou Maxime va essayer de le corriger pour la prochaine version du firmware.

En mode routeur, les paquets arriveront de l'IP locale choise pour la Freebox et non de 212.27.38.253. Les solutions précédentes devraient marcher moyennant cette modification.

La solution consistant à utiliser le module ip_nat_rtsp ne marchera par contre pas, sauf si vous vous connectez à l'adresse locale de la Freebox lors de la demande du flux, par exemple en modifiant /etc/hosts sous Linux pour indiquer l'IP locale.

4. Problèmes courants

Les différentes chaines de la playlist défilent mais aucune image ne s'affiche

Ce symptome indique que VLC n'arrive pas à afficher les chaines donc les essaye à tour de role. Le problème provient soit d'un problème réseau (voir au dessus) soit de l'un des problèmes qui suivent.

Les messages de debug de VLC devraient vous en apprendre plus

access_http error: cannot connect to mafreebox.freebox.fr:80

Le service n'est vraisemblablement pas actif chez vous, voir l'introduction de ce document. Si cela avait fonctionné précédemment, redémarrer la Freebox peut résoudre le problème.

Received SETUP response: RTSP/1.0 453 Not Enough Bandwidth

Si parmi les messages affichés par VLC en console se trouve celui-ci, pas grand chose à faire votre connexion n'est pas assez bonne pour vous envoyer un flux. Vous devriez toutefois pouvoir regarder le même flux que celui qui est en cours d'affichage sur la télévision.

Il semble en effet que la freebox ait toujours de la bande pasante réservée au cas ou vous souhaiteriez regarder sur la vraie télévision. Lorsque la freebox est en mode TV il est donc possible de récupérer la même chaine en utilisant cette bande passante, mais la connexion n'est pas une assez bonne pour avoir une chaine en plus.

Vous n'arrivez à recevoir que la chaîne que vous regardez actuellement sur la télévision

Voir la question précédente.

[XXXXXXXX] main demuxer error: no demux2 module matched "ts"

Si parmi les messages affichés par VLC en console se trouve celui-ci, il faut recompiler VLC avec --enable-libdvbpsi en vérifiant que la bibliothèque est bien disponible sur votre système.

Je forwarde les bons ports sur mon Gigabyte GN-B49G mais cela ne marche pas

Il peut être necessaire de désactiver la protection contre les DoS.