La Hauppauge WinTV PCI-FM modele 760 et moi
Par cgo2, mardi 9 ao�t 2005 à 23:13 :: GNU/Linux :: #29 :: rss
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)
- Un tutorial tr�s compact, sur un peu tout ce qui concerne v4l
1 commentaire
1. Le vendredi 24 f�vrier 2006 à 11:10, par Glandos
Ajouter un commentaire
Vous voulez lancer un d�bat ou poser des questions autour du sujet ? Dans ce cas, utilisez plut�t le forum !