mardi 9 août 2005, 23:13
La Hauppauge WinTV PCI-FM modele 760 et moi
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.
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)
Par cgo2, dans GNU/Linux
Commentaires
Salut !
Je viens de tomber tout à fait par hasard sur ta page (je cherchais comment mettre un retour à la ligne dans un NetSend :p). J'ai acheté la même carte que toi en Octobre 2003, et c'était déjà un chipset 881. Quand je me suis à Linux, j'ai compris ma douleur. Je crois qu'une fois j'ai eu une image correcte, et parfois la radio, mais sans vraiment comprendre. Maintenant, je suis Freeboxé, donc ça ne me gêne plus trop, mais je pense que attendre un développement des drivers pour ce chipset est une perte de temps. Sinon, sous Windows, ça marche bien, mais bon, c'est Windows quoi...