Accueil > Linux > Multimedia > Fix eeprom

Fix eeprom

vendredi 15 juin 2007, par michael

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)

Un message, un commentaire ?

modération a priori

Ce forum est modéré a priori : votre contribution n’apparaîtra qu’après avoir été validée par un administrateur du site.

Qui êtes-vous ?
Se connecter
Votre message

Pour créer des paragraphes, laissez simplement des lignes vides.

Lien hypertexte

(Si votre message se réfère à un article publié sur le Web, ou à une page fournissant plus d’informations, vous pouvez indiquer ci-après le titre de la page et son adresse.)

Ajouter un document