TWINHAN 1020a/1022a KERNEL HANGUP FAQ

Aus OPPServer.net Wiki | OPPs Wiki
Zur Navigation springen Zur Suche springen

TWINHAN 1020a/1022a KERNEL HANGUP FAQ (Stand 29.04.2013) [ © Oliver Schuetz aka OppTupacShakur | http://OPPServer.net | http://unix.oppserver.net ]


Wenn dein Kernel beim Start mit folgender Meldung stehen bleibt:

bttv0: subsystem: fefe:0001 (UNKNOWN)
bttv0: using: *** UNKNOWN/GENERIC *** [card=0,autodetected]

Damit ist gemeint das der Eeprom der Karte wahrscheinlich nicht korrekt geschrieben ist. die Karte nimmt die Subsystem ID von diesem Eeprom, aber fefe:0001 ist eine unbekannte ID, also bleibt der bttv Treiber "haengen". Aber zum Glueck ist dieser Eeprom nicht schreibgeschuetzt und wir koennen diesen neu beschreiben. Wir benoetigen das i2c* Programm von lm-sensors. Dazu spaeter mehr, denn wir muessen den PC ja erstmal mit eingebauter Karte starten koennen. Also am besten die Karte wieder raus und nach dem Booten als root folgende Datei bearbeiten:

Beim alten SuSE:

/etc/modprobe.conf

Unter Debian:

/etc/modprobe.d/twinhan erstellen
("touch /etc/modprobe.d/twinhan")

Dort fuegen wir folgende Zeilen hinzu (zb "nano /etc/modprobe.conf" oder "nano /etc/modprobe.d/twinhan"):

alias char-major-81-0 dvb bttv 
install bttv modprobe dvb-core; modprobe --ignore-install bttv && modprobe dst && modprobe dvb-bt8xx 
options bttv i2c_hw=1 card=0x71
options dst dst_type=0

Danach PC ausschalten, Karte wieder einbauen und PC wieder starten. Nun sollte Linux eigentlich die Karte schon erkennen und auch bis zum ende booten. Nun koennte man eigentlich alles so belassen, aber wir wollen die karte ja so neu schreiben, dass sie automatisch von jedem Linux erkannt wird und man die Karte nicht immer wieder ausbauen muss.

Nun kommen wir zum neu beschreiben der Karte (ALLES AUF EIGENE VERANTWORTUNG!!!)

Folgende befehle als root ausfuehren, um die Module zu laden und alle Busses aufzulisten und den richtigen Bus der Twinhan Karte zu finden:

modprobe i2c-dev
i2cdetect -l

Zum Beispiel:

WorkServer:~ # modprobe i2c-dev
WorkServer:~ # i2cdetect -l
i2c-2   smbus           bt878 #0 [hw]                           Non-I2C SMBus adapter
i2c-1   smbus           SMBus nForce2 adapter at 5500           Non-I2C SMBus adapter
i2c-0   smbus           SMBus nForce2 adapter at 5000           Non-I2C SMBus adapter

Hier waere es der Bus 2 (i2c-2).


i2cdetect BUS

Hier BUS mit der Bus ID ersetzen, in unserem bespiel mit 2.

WorkServer:~ # i2cdetect 2
WARNING! This program can confuse your I2C bus, cause data loss and worse!
I will probe file /dev/i2c-2.
I will probe address range 0x03-0x77.
Continue? [Y/n] Y
     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
00:          XX XX XX XX XX XX XX XX XX XX XX XX XX
10: XX XX XX XX XX XX XX XX XX XX UU XX XX XX XX XX
20: XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX
30: XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX
40: XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX
50: 50 XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX
60: XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX
70: XX XX XX XX XX XX XX XX

Wie man sieht hat die 1020/1022 normalerweisse einen aktiven Chip auf 0x50. VORSICHT NICHT DEN BUS VERWECHSELN!!!


i2cdump BUS 0x50

Ab hier muessen wir sicher sein das der Eeprom mit fefe:0001 beschrieben ist. Zu erkennen beim Kernel Stop oder mit dem i2cdump Befehl.


i2cset -y BUS 0x50 0xfc 0x00 b
i2cset -y BUS 0x50 0xfd 0x01 b
i2cset -y BUS 0x50 0xfe 0x18 b
i2cset -y BUS 0x50 0xff 0x22 b

Hiermit beschreiben wir den Eeprom mit der richtigen ID 1822:0001 neu.


i2cdump -y BUS 0x50

Hiermit pruefen wir alles noch einmal.

WorkServer:~ # i2cdump -y 2 0x50
No size specified (using byte-data access)
     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f    0123456789abcdef
00: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff    ................
10: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff    ................
20: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff    ................
30: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff    ................
40: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff    ................
50: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff    ................
60: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff    ................
70: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff    ................
80: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff    ................
90: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff    ................
a0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff    ................
b0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff    ................
c0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff    ................
d0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff    ................
e0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff    ................
f0: ff ff ff ff ff ff ff ff fe ff ff ff 00 01 18 22    ........?....??"


Nun koennen wir die Zeilen fuer SuSE auch wieder aus der /etc/modprobe.conf entfernen oder fuer Debian die Datei /etc/modprobe.d/twinhan loeschen ("rm /etc/modprobe.d/twinhan") und dann den PC neustarten. Jetzt sollte die Twinhan 1020a/1022a automatisch von jedem Linux erkannt werden, sofern der richtige Treiber installiert ist oder im Kernel als module enthalten ist.