Accueil > Linux > Multimedia > Fix eeprom
Fix eeprom
vendredi 15 juin 2007, par
Réparer l’eeprom avec les sources v4l-dvb
(Cette procédure devrait fonctionner avec toutes les cartes à base de saa7146)
ATTENTION : A utiliser à vos risques !!!
Il peut être nécessaire de fixer l’eeprom dans le cas ou le système ne veux pas charger les modules de la carte alors qu’elle est bien présente.
De ce que j’ai pu constater, le subsystem à la valeur suivante : 00a1:a1a0. Dans ce cas, il peut être nécessaire de fixer l’eeprom.
Installation des pré-requis
aptitude install mercurial
Récupération des sources
hg clone http://linuxtv.org/hg/v4l-dvb
wget http://www.escape-edv.de/endriss/dvb/fix_eeprom.c
mv fix_eeprom.c v4l-dvb/linux/drivers/media/video
Modification du Makefile
Editer v4l-dvb/linux/drivers/media/video/Makefile
Ajouter "obj-m += fix_eeprom.o" après le dernier obj-$(CONFIG_XXXX) += xxxx.o
Compiler et installer v4l-dvb
cd v4l-dvb
make
make install
Chargement/déchargement des modules
Charger les nouveaux modules et les décharger tout de suite après
make reload
make unload
Id de la carte
Récupérer l’id de la carte
lspci
Résultat de la commande :
lspci
00:00.0 Host bridge : Intel Corporation 82865G/PE/P DRAM Controller/Host-Hub Interface (rev 02)
00:02.0 VGA compatible controller : Intel Corporation 82865G Integrated Graphics Controller (rev 02)
00:1d.0 USB Controller : Intel Corporation 82801EB/ER (ICH5/ICH5R) USB UHCI Controller #1 (rev 02)
00:1d.1 USB Controller : Intel Corporation 82801EB/ER (ICH5/ICH5R) USB UHCI Controller #2 (rev 02)
00:1d.2 USB Controller : Intel Corporation 82801EB/ER (ICH5/ICH5R) USB UHCI Controller #3 (rev 02)
00:1d.3 USB Controller : Intel Corporation 82801EB/ER (ICH5/ICH5R) USB UHCI Controller #4 (rev 02)
00:1d.7 USB Controller : Intel Corporation 82801EB/ER (ICH5/ICH5R) USB2 EHCI Controller (rev 02)
00:1e.0 PCI bridge : Intel Corporation 82801 PCI Bridge (rev c2)
00:1f.0 ISA bridge : Intel Corporation 82801EB/ER (ICH5/ICH5R) LPC Interface Bridge (rev 02)
00:1f.1 IDE interface : Intel Corporation 82801EB/ER (ICH5/ICH5R) IDE Controller (rev 02)
00:1f.3 SMBus : Intel Corporation 82801EB/ER (ICH5/ICH5R) SMBus Controller (rev 02)
00:1f.5 Multimedia audio controller : Intel Corporation 82801EB/ER (ICH5/ICH5R) AC’97 Audio Controller (rev 02)
01:02.0 Multimedia controller : Philips Semiconductors SAA7146 (rev 01)
01:05.0 Ethernet controller : Realtek Semiconductor Co., Ltd. RTL-8139/8139C/8139C+ (rev 10)
Dans mon cas, c’est le 01:02.0
Récupérer plus d’information sur la carte avec le mode verbeux de lspci
lspci -s 01:02.0 -vnx
Résultat de la commande :
lspci -s 01:02.0 -vnx
01:02.0 0480 : 1131:7146 (rev 01)
Subsystem : 00a1:a1a0
Flags : medium devsel, IRQ 11
Memory at ff0ffc00 (32-bit, non-prefetchable) [disabled] [size=512]
00 : 31 11 46 71 00 00 80 02 01 00 80 04 00 20 00 00
10 : 00 fc 0f ff 00 00 00 00 00 00 00 00 00 00 00 00
20 : 00 00 00 00 00 00 00 00 00 00 00 00 a1 00 a0 a1
30 : 00 00 00 00 00 00 00 00 00 00 00 00 0b 01 0f 26
Le Subsystem est ici incorrecte 00a1:a1a0, il devrait être de 0x13c2:0x0000 car ma carte est une revision 1.3
Liste des subsystems pour les cartes DVB-S :
http://www.vdr-wiki.de/wiki/index.p...
http://www.linuxtv.org/wiki/index.p...
Correction de l’eeprom
On va maintenant chargé le module saa7146
/sbin/insmod v4l/saa7146.ko
On va maintenant pouvoir fixer l’eeprom
/sbin/insmod v4l/fix_eeprom.ko old=0x00a1a1a0 new=0x13c20000
J’ai eu ce message d’erreur mais cela ne gêne pas.
insmod : error inserting ’v4l/fix_eeprom.ko’ : -1 Operation not permitted
Vérification
On vérifie via la syslog que tout c’est bien passé
tail /var/log/syslog
Jun 5 11:43:28 vdrbox kernel : saa7146 : register extension ’fix eeprom’.
Jun 5 11:43:28 vdrbox kernel : PCI : Enabling device 0000:01:02.0 (0000 -> 0002)
Jun 5 11:43:28 vdrbox kernel : PCI : Found IRQ 11 for device 0000:01:02.0
Jun 5 11:43:28 vdrbox kernel : PCI : Sharing IRQ 11 with 0000:00:1d.7
Jun 5 11:43:28 vdrbox kernel : saa7146 : found saa7146 @ mem f899ec00 (revision 1, irq 11) (0x00a1,0xa1a0).
Jun 5 11:43:28 vdrbox kernel : *** using device 1131:7146 subsystem 00a1:a1a0 ***
Jun 5 11:43:28 vdrbox kernel : *** eeprom - old id : 00a1:a1a0 ***
Jun 5 11:43:28 vdrbox kernel : *** eeprom - writing new id 13c2:0000 ***
Jun 5 11:43:28 vdrbox kernel : saa7146 : unregister extension ’fix eeprom’.
Il a bien réecrit le nouvel id :-)
Redémarrez maintenant le PC.
Conclusion
Maintenant lspci nous renvoi les bonnes informations.
lspci -s 01:02.0 -vnx
01:02.0 0480 : 1131:7146 (rev 01)
Subsystem : 13c2:0000
Flags : bus master, medium devsel, latency 32, IRQ 11
Memory at ff0ffc00 (32-bit, non-prefetchable) [size=512]
00 : 31 11 46 71 06 00 80 02 01 00 80 04 00 20 00 00
10 : 00 fc 0f ff 00 00 00 00 00 00 00 00 00 00 00 00
20 : 00 00 00 00 00 00 00 00 00 00 00 00 c2 13 00 00
30 : 00 00 00 00 00 00 00 00 00 00 00 00 0b 01 0f 26
Les pilotes DVB se charge maintenant convenablement.
Source d’information :
http://www.escape-edv.de/endriss/dv...
http://www.vdr-wiki.de/wiki/index.p...
http://vdr-portal.de
http://www.linuxtv.org/wiki/index.p...
Mise à jour :
– Uniformisation de la mise en page (01/02/2010)
– Rajout d’un lien pour les subsystems (03/03/2008)