J'�cris cet article avec une Debian Sid, kernel 2.6.12.2.

Conexant remplace bttv

Premi�re chose � savoir : la plupart des sites/forums qui parlent de la Hauppauge WinTV PCI-FM font r�f�rence � des r�visions "anciennes" de la carte, qu'on ne trouve plus sur le march� du neuf. 90% des gens vont donc conseiller d'utiliser bttv, et, �videmment, �a ne fonctionnera pas. Pour en �tre certain il suffit de regarder ce qui est �crit sur le gros circuit int�gr� sur la carte.Hauppauge WinTV PCI-FM avec un Chip Connexant

La bonne nouvelle, c'est qu'il existe des drivers pour ces chips conexant, int�gr� dans la branche 2.6 du noyau. Le driver est le module cx8800, qui charge, entre autres choses, le module cx88xx.

J'ai activ� ces options dans le noyau :

Device Drivers  --->
 Multimedia devices  --->
  <M> Video For Linux
  Video For Linux  ---> 
    <M> Conexant 2388x (bt878 successor) support

D'ailleurs pour la suite, une astuce qui peut �tre utile : pour �viter d'avoir � tout recompiler, utilisez les commandes make modules et make modules_install. M�me si vous �tes comme moi, avec un noyau install� avec la m�thode Debian, c'est bien pratique et niveau dpkg, �a casse rien, c'est pas pire que l'install du module nvidia en plus :)

L'image

Donc avec ce module, un modprobe cx8800 donne, dans /var/log/messages (ou avec la commande dmesg) :

Linux video capture interface: v1.00
cx2388x v4l2 driver version 0.0.4 loaded
ACPI: PCI Interrupt 0000:01:08.0[A] -> Link [LNK3] -> GSI 5 (level, low) -> IRQ 5
cx88[0]: subsystem: 0070:3401, board: Hauppauge WinTV 34xxx models [card=1,insmod option]
tveeprom: Hauppauge: model = 34519, rev = J160, serial# = 
tveeprom: tuner = LG S001D MK3 (idx = 60, type = 4)
tveeprom: tuner fmt = PAL(D/K) (eeprom = 0x74, v4l2 = 0x00400e17)
tveeprom: audio_processor = MSP3425 (type = 15)
cx88[0]: registered IR remote control
cx88[0]/0: found at 0000:01:08.0, rev: 5, irq: 5, latency: 32, mmio: 0xcc000000
cx88[0]/0: registered device video0 [v4l2]
cx88[0]/0: registered device vbi0
cx88[0]/0: registered device radio0

Pour passer des options au module, il faut le faire � cx88xx (charg� automatiquement par cx8800). J'ai mis dans /etc/modprobe.d/cx88xx :

option cx88xx card=1

La carte est bien reconnue, mais le probl�me c'est le tuner. En effet, il detecte bien un LG S001D MK (c'est le bon), mais lui associe le type 4, c'est � dire "NoTuner" (pour m�moire, la liste des tuners se trouve dans les sources du kernel, dans Documentation/video4linux/CARDLIST.tuner). En fait, ce tuner est connu mais n'a aucun driver impl�ment�...

Apr�s plusieurs heure de recherche, j'ai fini par tomber sur ce thread sur la mailing list de video4linux. Il s'av�re apparement que les specs de ce tuner sont assez proche du Philips PAL/SECAM multi (FM1216ME MK3) (tuner=38), et devrait donc pouvoir fonctionner en for�ant :

option cx88xx card=1 tuner=38

Probl�me : lorsque le driver connait le tuner (c'est le cas ici) ne tiens pas compte du param�tre pass� au module. Un patch est propos� sur le m�me thread dans ce mail pour forcer la correspondance "LG S001D MK = tuner 38". Moi j'ai fait autrement, j'ai pref�r� supprimer le bout de code indiquant d'ignorer le param�tre du module (parcequ'en fait j'avais d�j� fait ce patch avant de trouver le thread, et �a me gonflait de devoir recompiler le module). Ainsi je peux tester avec diff�rent tuner en passant l'option comme ci-dessus. Voici mon patch :

--- /usr/src/linux/drivers/media/video/cx88/cx88-cards.c.orig   2005-08-08 20:54:53.000000000 +0200
+++ /usr/src/linux/drivers/media/video/cx88/cx88-cards.c        2005-08-08 20:55:10.000000000 +0200
@@ -755,7 +755,9 @@
        struct tveeprom tv;
 
        tveeprom_hauppauge_analog(&tv, eeprom_data);
+#if 0
        core->tuner_type = tv.tuner_type;
+#endif
        core->has_radio  = tv.has_radio;
 }

En rechargeant cx8800 avec l'option tuner=38 pour cx88xx, j'ai reussi � obtenir une image (de qualit� TRES m�diocre d'ailleurs) sur tvtime, et scantv -C /dev/vbi0 me trouve les bonnes chaines.

Le son

J'utilise le module tda9887, qui fonctionne correctement pour la radio (voir ci-apr�s). Mais pour la t�l�, pour l'instant, je n'ai pas reussi � obtenir mieux qu'un souffle ou un gresillement inaudible :-(

Un message pas encourageant du tout se trouve dans les sources du kernel, dans Documentation/video4linux/README.cx88 :

� audio
- The chip specs for the on-chip TV sound decoder are next
to useless :-/
- Neverless the builtin TV sound decoder starts working now,
at least for PAL-BG. Other TV norms need other code ...
FOR ANY REPORTS ON THIS PLEASE MENTION THE TV NORM YOU ARE
USING.
- Most tuner chips do provide mono sound, which may or may not
be useable depending on the board design. With the Hauppauge
cards it works, so there is mono sound available as fallback.
- audio data dma (i.e. recording without loopback cable to the
sound card) should be possible, but there is no code yet ... �

En gros, c'est la merde. Si quelqu'un sait comment faire pour avoir au moins le son mono, je suis preneur !

La radio

C'est le seul truc qui fonctionne plut�t bien, et qui est plut�t facile � installer (compar� au temps que j'ai pass� pour la vid�o)

J'ai utilis� radio ou gradio (packages Debian du m�me nom), pour obtenir du son.

Le GROS probl�me est que, quand le cable antenne radio est branch�, je perd 80% des stations TV, et les 20% que je peux encore capter sont impossible � regarder (d�j� que l'image est pas top quand rien n'est branch�, alors l�...)

Conclusion

Je ne sais pas encore ce que j'ai vais bien pouvoir faire de cette carte : si je branche l'antenne radio, je n'ai plus d'image ; si je ne la branche pas, j'ai des images (moches), et pas de son... Tout ce que j'esp�re c'est que les drivers vont �tre developp�s et que d'ici quelques mois elle devienne utilisable ! En tous cas je vous la d�conseille fortement pour le moment.

Quelques liens trouv�s �a et l� :

  • La page du driver cx88 (pas tr�s � jour)
  • Un tutorial tr�s compact, sur un peu tout ce qui concerne v4l