Suite à mes précédents posts concernant le support de la carte PCTV USB2 sous Linux, que vous pouvez trouver ici et , j'ai tout de même tenté à nouveau l'expérience de faire fonctionner ce matériel sous ma SuSE 9.3. Etant arrivé à quelque chose de potable, je vous livre ici la recette pour la faire fonctionner sur votre Linux.

1. Les ingrédients
  • Les sources du kernel que vous utilisez (je ne sais pas si les kernel-headers suffisent)
  • Les sources du driver de développement sur le CVS de LinuxTV.org
  • Sox
  • TVTIME
  • Une patte de lapin ou un fer à cheval (les trefles à 4 feuilles marchent aussi)
2. La préparation
  • Si vous n'avez pas les sources du kernel de Linux, je vous conseille de les installer immédiatement. De toute façon, cela prouve que vous n'avez encore jamais mis les mains dans la graisse. Ah vous de trouver comment qu'on fait pour installer tout ça.
  • Pour récupérer les sources du driver de développement de la PCTV USB2 voici la marche à suivre :
    • cvs -d :pserver:anonymous@cvs.linuxtv.org:/cvs/video4linux login
    • cvs -d :pserver:anonymous@cvs.linuxtv.org:/cvs/video4linux co -P v4l-kernel
  • Sox est un utilitaire permettant de manipuler des fichiers audios à partir de la ligne de commande. Il permet également de manipuler des périphériques. Nous verrons plus tard à quoi il peut servir. Non, pas maintenant! C'est pas possible d'être aussi pressé.
  • TVTIME est un logiciel permettant de regarder la télé sur son PC. Sa principale killer feature est une image impécable. Son principal défaut est l'impossibilité d'enregistrer des émissions. C'est le seul soft qui semble marcher pour l'instant pour la visualisation de la TV avec une PCTV USB2 sous Linux. J'exposerais plus bas un moyen permettant d'enregistrer grâce au logiciel Mencoder, celui-ci faisant partie du projet Mplayer. Enfin bref, j'espère que vous avez installé tout ceci, sinon bonjour la déception.
  • Ne machouillez pas votre patte de lapin, encore moins le fer à cheval. Cela diminuera le facteur chance dans la réussite de cette recette. Et puis vous allez vous abimer les dents.
3. La cuisson
  • Touiller les drivers pour votre machine.

    Voici les commandes à éxécuter pour que votre Linux puisse reconnaître votre PCTV USB2 lorsque celle-ci est connectée à votre PC :
    1. cd v4l-kernel (dans le repétoire où vous avez tapé les commandes cvs)
    2. make
    3. make install
    4. Branchez votre périphérique.
    5. Si votre kernel n'est pas très ancien (la branche 2.6 par exemple), vous devriez avoir la sortie de lsmod qui ressemble à ça :

    Si rien n'a été détecté, c'est donc que votre distibution n'est pas très récente. Donc vous êtes sous Debian :P... (oui je sais, il y a les dépôts unstable. Ne vous fâchez pas pour si peu. :)
  • Roullage des drivers sous les aisselles

    Comme les drivers sont encore en développement, l'autodétection votre PCTV USB2 sous votre Linux n'est que partielle. Il faut donc configurer ceux-ci selon notre version du tuner.
    Voici donc les lignes qu'il faut ajouter à votre fichier modprobe.conf (que vous trouverez dans le répertoire /etc) :
    - alias char-major-81 videodev
    - alias char-major-81-0 tveeprom
    - alias char-major-81-1 em28xx
    - options em28xx tuner=38 (c'est la version du tuner pour la zone européenne , je crois)
    - options tuner secam=l (notre norme d'image est SECAM-L)
    - options tda9887 port2=0 (nécessaire mais je n'ai pas vraiment compris pourquoi)

    Le périphérique audio de la PCTV USB2 est reconnu comme étant un périphérique audio supplémentaire sous Linux. Normalement, grâce à l'auto-détection du matériel, vous devriez voir apparaître un module snd_usb_audio dans votre liste de modules chargés (lsmod | grep snd_usb_audio devrait vous donner quelque chose). Toutefois, il manque un paramètre au chargement de ce module. En effet, avec le chargement par défaut, la capture du son en même temps que la vidéo perturbe énormémént l'image. Je pense qu'il faut ajouter ces lignes à votre modprobe.conf : 
    - alias snd-card-1 snd-usb-audio
    - option snd-usb-audio enable=1 index=1 nrpacks=10 (l'option nécessaire est en rouge)

    Voila! A partir de ce moment  vous n'aurez plus à mettre les mains dans le moteur. Vous pouvez donc aller vous chercher une bière, l'état d'ébriété n'influant que peu fortement le reste de la marche à suivre.
  • Du son dans vos SOXquettes.

    La télé sans le son, ça ne sert à rin (oui, oui, rin). A moins que vous ne soyez sourd, peut-être... Nous allons donc voir à quoi Sox va nous aider. Comme le périphérique de son la PCTV USB2 est détécté comme un périphérique de son supplémentaire sous Linux, le flux de données n'est pas transmis d'un périphérique à l'autre. Il faut donc rediriger le flux vers la sortie audio de votre carte principale. Voici donc la commande à taper dans une console pour pouvoir entendre quelque :
    - sox -r 86000 -t ossdsp /dev/dsp1 -t ossdsp /dev/dsp

    Bien sûr, cela suppose que le périphérique audio de votre carte TV soit reconnu comme étant /dev/dsp1. Sinon, ben...tant pis.
  • C'est l'heure de la soupe télévisuelle.

    Comme nous avons le son, il nous faut maintenant avoir la vidéo. Pour cela, il faut utiliser le logiciel TVTime, car apparement aucun autre ne semble marcher avec ce type de périphérique.
    Voici donc la ligne de commande pour lancer tvtime la première fois :
    - tvtime --norm=SECAM --frequencies=france

    Maintenant une succession de manipulations sont nécessaires pour scanner les chaînes de télévision :
    - Clic droit dans la fenêtre de TVTime pour avoir accès au menu de configuration
    - Choisissez Channel Management
    - Cliquez deux fois sur Disable signal detection . Cela permet d'envoyer une commande au périphérique qui je pense permet d'activer physiquement la detection du signal au moment du scan des chaînes.
    - Embrassez votre patte de lapin et cliquez sur Scan all channels for signal. Normalement les chaînes devraient être détectées (peut-être en manquera-t'il quelques-unes pour les personnes disposant du câble analogique)
    - Quittez TVTime (proprement hein, pas de Control+C)
    - Relancez TVTime en tapant juste la commande tvtime

    Normalement vous devriez avoir quelque chose qui ressemble à ça :

    Si vous n'avez pas ça, c'est que vous ne regardez pas la même chaîne. Si la fenêtre de TVTime reste désespérément bleue comme le ciel azuré, je vous conseille d'aller faire un tour sur le wiki du projet video4linux, et notamment la mailing list.
4. L'astuce de dégustation.

Pouvoir enregistrer la télévision c'est bien aussi. Voici donc la marche à suivre pour pouvoir capturer des vidéos.
Attention, cette explication ne vous permez pas vraiment d'enregistrer comme vous le voulez. Vous ne pourrez enregistrer que la dernière chaîne que vous regardiez avec TVTime.
Allez, c'est parti, roulez jeunesse :
- Lancez Sox comme on l'a vu précédement
- Lancez TVTime, et choisissez la chaîne que vous souhaitez enregistrer
- Tuez TVTime en faisant un Ctrl+C dans la console où vous avez tapé la commande. Normalement vous devriez toujours entendre la partie audio. Apparement cela est dû au fait que TVTime, lorsqu'il est fermé normalement, exécute une commande de désactivation de la capture du son sur la PCTV USB2. Justement on désire avoir du son avec la vidéo.
- Tuez Sox
- Tapez cette commande : 
mencoder -v tv:// -tv driver=v4l2:device=/dev/video0:outfmt=i420:width=640:height=480:forceaudio:adevice=/dev/dsp1:norm=secam -ovc lavc -lavcopts acodec=mp3:abitrate=112:vbitrate=950:vhq -oac lavc -vf lavcdeint -o video.avi

Revenons rapidement en détail sur cette dernière ligne :
- -tv driver=v4l2:device=/dev/video0:outfmt=i420:width=640:height=480:forceaudio:adevice=/dev/dsp1:norm=secam spécifie les différentes options qui seront utilisées pour la capture du flux provenant de votre PCTV USB2
- -ovc lavc -lavcopts acodec=mp3:abitrate=112:vbitrate=950:vhq spécifie l'encodeur, ainsi que les options qui seront utilisées
- -oac lavc -vf lavcdeint -o video.avi des trucs que j'ai la flemme d'expliquer

Voilà! A vous de trouver les réglages qui vous conviennent.

Vous pouvez aller mettre un marcel.

Interlude histoire courte :
Driiing Driing (je fait super bien la sonnerie de téléphone)
"Allo?"
"Alloo? Ouiii, bonjour ici Mlle Machine de chez le Neuf...blablabla... est-ce que vous êtes intéressé par notre offre?"
"Oui, vous m'en mettrez une douzaine de noeufs, et un kilo de patates"
"Tûûûûtttt tûûûûtt tûûûûttt..."