Hallo, ich habe ein Nokia E51 über USB-Kabel am Etch hängen. Beim ersten anschließen erscheint /dev/ttyACM0. Die Einwahl und das Surfen klappt problemlos. Wenn ich das Handy vom USB-Kabel abgezogen habe und später wieder anstecke scheint Etch das Handy nicht neu zu initialisieren. Es kommt dann beim nächsten Einwahlversuch zu einer Fehlermeldung. Ich kenne bisher nur Reboot als Abhilfe. Wie kann ich das Problem angehen?
MfG Andreas
Hallo Andreas,
Beim ersten anschließen erscheint /dev/ttyACM0.
später wieder anstecke scheint Etch das Handy nicht neu zu initialisieren. Es kommt dann beim nächsten Einwahlversuch zu einer Fehlermeldung. Ich kenne bisher nur Reboot als Abhilfe.
Schuss ins Blaue: erkennt Etch das Handy möglicherweise beim zweiten Anstecken als ttyACM1, beim n-ten Anstecken als ttyACM(n-1)?
Was zeigt dmesg nach dem ersten und zweiten Anstecken jeweils als relevante letzte Zeilen an?
Viele Grüße Fabian
Es passiert rein gar nichts. Es werden keine weiteren Geräte angelegt noch sonst eine Meldung ausgegeben.
Was geschieht eigentlich im System wenn ich das Handy anschließe? Woher weiß Etch, dass es /dev/ttyACM0 anlegen muss, und was kann die Ursache sein, dass es das Gerät nach dem abziehen nicht wieder entfernt. Wie kann ich das Gerät per Hand entladen?
Anbei die Ausgabe beim Einstecken und Abziehen.
Danke Andreas
Fabian Hänsel schrieb:
Hallo Andreas,
Beim ersten anschließen erscheint /dev/ttyACM0.
später wieder anstecke scheint Etch das Handy nicht neu zu initialisieren. Es kommt dann beim nächsten Einwahlversuch zu einer Fehlermeldung. Ich kenne bisher nur Reboot als Abhilfe.
Schuss ins Blaue: erkennt Etch das Handy möglicherweise beim zweiten Anstecken als ttyACM1, beim n-ten Anstecken als ttyACM(n-1)?
Was zeigt dmesg nach dem ersten und zweiten Anstecken jeweils als relevante letzte Zeilen an?
Viele Grüße Fabian
Lug-dd maillist - Lug-dd@mailman.schlittermann.de https://ssl.schlittermann.de/mailman/listinfo/lug-dd
usb 2-1: USB disconnect, address 2
ohci_hcd 0000:00:0b.1: wakeup usb 2-1: new full speed USB device using ohci_hcd and address 2 usb 2-1: configuration #1 chosen from 1 choice cdc_acm 2-1:1.10: ttyACM0: USB ACM device usbcore: registered new driver cdc_acm drivers/usb/class/cdc-acm.c: v0.25:USB Abstract Control Model driver for USB modems and ISDN adapters usbcore: registered new driver cdc_ether rndis_host 2-1:1.12: RNDIS init failed, -32 usb%d: unregister 'rndis_host' usb-0000:00:0b.1-1, RNDIS device unregister_netdevice: device usb%d/c8540800 never was registered ------------[ cut here ]------------ kernel BUG at mm/slab.c:595! invalid opcode: 0000 [#1] SMP Modules linked in: ... oh! ist der geschwätzig - habe ich mal gelöscht :o) CPU: 0 EIP: 0060:[<c0156d77>] Tainted: P VLI EFLAGS: 00010002 (2.6.18-4-686 #1) EIP is at kfree+0x2e/0x65 eax: 8001002c ebx: c8540ac0 ecx: cffef7a0 edx: c110a740 esi: 00000282 edi: c853a392 ebp: c8540800 esp: c06a9e18 ds: 007b es: 007b ss: 0068 Process modprobe (pid: 4035, ti=c06a8000 task=c083c550 task.ti=c06a8000) Stack: c8540ac0 d2b3860e c8540806 d2b3801a c13fcc00 d2b3f6a0 c865c4a8 c54b2400 ffffffe0 cffd2e00 00000000 00000000 00000001 00000001 00000001 00000001 d2b3f660 c13fcc00 d2b40520 d2b40550 c0210b48 d08dbba5 c13fcc14 c13fcc14 Call Trace: [<d2b3801a>] usbnet_probe+0x4ee/0x503 [usbnet] [<c0210b48>] __driver_attach+0x0/0x5d [<d08dbba5>] usb_probe_interface+0x58/0x87 [usbcore] [<c0210aa9>] driver_probe_device+0x42/0x8b [<c0210b80>] __driver_attach+0x38/0x5d [<c02105ca>] bus_for_each_dev+0x33/0x55 [<c0210a13>] driver_attach+0x11/0x13 [<c0210b48>] __driver_attach+0x0/0x5d [<c02102e3>] bus_add_driver+0x64/0xfd [<d08db9da>] usb_register_driver+0x60/0xbb [usbcore] [<c01358c1>] sys_init_module+0x16c3/0x1846 [<c0102c7b>] syscall_call+0x7/0xb Code: 56 89 c7 53 74 58 9c 5e fa 8d 90 00 00 00 40 c1 ea 0c c1 e2 05 03 15 70 03 37 c0 8b 02 f6 c4 40 74 03 8b 52 0c 8b 02 84 c0 78 08 <0f> 0b 53 02 a1 b0 29 c0 89 e0 8b 4a 18 25 00 e0 ff ff 8b 40 10 EIP: [<c0156d77>] kfree+0x2e/0x65 SS:ESP 0068:c06a9e18
On Sat, Nov 22, 2008 at 11:58:15PM +0100, Andreas Oettel wrote:
Hallo Andreas,
Es passiert rein gar nichts. Es werden keine weiteren Geräte angelegt noch sonst eine Meldung ausgegeben.
Was geschieht eigentlich im System wenn ich das Handy anschließe? Woher weiß Etch, dass es /dev/ttyACM0 anlegen muss, und was kann die Ursache sein, dass es das Gerät nach dem abziehen nicht wieder entfernt. Wie kann ich das Gerät per Hand entladen?
Die Gerätedatei /dev/ttyACM0 wird von udev angelegt. Wenn Du das Handy ansteckst, werden erstmal ein paar Treiber geladen. Das zeigt Dir lsmod.
... cdc_ether 8704 1 rndis_host cdc_acm 16928 0 usbnet 17800 2 rndis_host,cdc_ether mii 8832 1 usbnet ...
In der letzen Spalte siehst Du welche Treiber den Treiber in der ersten Spalte nutzen.
Die Treiber registrieren sich dann bei den Subsystemen. Die Subsysteme legen im sysfs Klassen für die Geräte (Treiber) an. Dann senden sie an udev ein Event. Udev arbeitet im Userspace und legt die Gerätedateien laut sysfs an.
Hier siehst du den Ablauf.
linux:/home/andre # udevmonitor ... UEVENT[1227606706.482460] add@/class/tty/ttyACM0 ...
linux:/home/andre # ls -l /sys/class/tty/ttyACM0/ insgesamt 0 -r--r--r-- 1 root root 4096 25. Nov 10:56 dev lrwxrwxrwx 1 root root 0 25. Nov 10:56 device -> ../../../devices/pci0000:00/0000:00:1d.0/usb1/1-1/1-1:1.10 drwxr-xr-x 2 root root 0 25. Nov 10:56 power lrwxrwxrwx 1 root root 0 25. Nov 10:56 subsystem -> ../../tty -rw-r--r-- 1 root root 4096 25. Nov 10:56 uevent
linux:/home/andre # cat /sys/class/tty/ttyACM0/dev 166:0
linux:/home/andre # ls -l /dev/ttyACM0 crw-rw---- 1 root uucp 166, 0 25. Nov 10:51 /dev/ttyACM0
Udev benutzt die Datei dev in /sys/class/tty/ttyACM0/ um die Gerätedatei anzulegen. Das Format ist MAJOR:MINOR.
Anbei die Ausgabe beim Einstecken und Abziehen.
______________________________________________
Lug-dd maillist - Lug-dd@mailman.schlittermann.de https://ssl.schlittermann.de/mailman/listinfo/lug-dd
usb 2-1: USB disconnect, address 2
ohci_hcd 0000:00:0b.1: wakeup usb 2-1: new full speed USB device using ohci_hcd and address 2 usb 2-1: configuration #1 chosen from 1 choice cdc_acm 2-1:1.10: ttyACM0: USB ACM device usbcore: registered new driver cdc_acm drivers/usb/class/cdc-acm.c: v0.25:USB Abstract Control Model driver for USB modems and ISDN adapters usbcore: registered new driver cdc_ether rndis_host 2-1:1.12: RNDIS init failed, -32
Hier schlägt die Registrierung vom RNDIS-Treiber fehl.
usb%d: unregister 'rndis_host' usb-0000:00:0b.1-1, RNDIS device unregister_netdevice: device usb%d/c8540800 never was registered ------------[ cut here ]------------ kernel BUG at mm/slab.c:595! invalid opcode: 0000 [#1] SMP Modules linked in: ... oh! ist der geschw??tzig - habe ich mal gel??scht :o) CPU: 0 EIP: 0060:[<c0156d77>] Tainted: P VLI EFLAGS: 00010002 (2.6.18-4-686 #1) EIP is at kfree+0x2e/0x65 eax: 8001002c ebx: c8540ac0 ecx: cffef7a0 edx: c110a740 esi: 00000282 edi: c853a392 ebp: c8540800 esp: c06a9e18 ds: 007b es: 007b ss: 0068 Process modprobe (pid: 4035, ti=c06a8000 task=c083c550 task.ti=c06a8000) Stack: c8540ac0 d2b3860e c8540806 d2b3801a c13fcc00 d2b3f6a0 c865c4a8 c54b2400 ffffffe0 cffd2e00 00000000 00000000 00000001 00000001 00000001 00000001 d2b3f660 c13fcc00 d2b40520 d2b40550 c0210b48 d08dbba5 c13fcc14 c13fcc14 Call Trace: [<d2b3801a>] usbnet_probe+0x4ee/0x503 [usbnet] [<c0210b48>] __driver_attach+0x0/0x5d [<d08dbba5>] usb_probe_interface+0x58/0x87 [usbcore] [<c0210aa9>] driver_probe_device+0x42/0x8b [<c0210b80>] __driver_attach+0x38/0x5d [<c02105ca>] bus_for_each_dev+0x33/0x55 [<c0210a13>] driver_attach+0x11/0x13 [<c0210b48>] __driver_attach+0x0/0x5d [<c02102e3>] bus_add_driver+0x64/0xfd [<d08db9da>] usb_register_driver+0x60/0xbb [usbcore] [<c01358c1>] sys_init_module+0x16c3/0x1846 [<c0102c7b>] syscall_call+0x7/0xb Code: 56 89 c7 53 74 58 9c 5e fa 8d 90 00 00 00 40 c1 ea 0c c1 e2 05 03 15 70 03 37 c0 8b 02 f6 c4 40 74 03 8b 52 0c 8b 02 84 c0 78 08 <0f> 0b 53 02 a1 b0 29 c0 89 e0 8b 4a 18 25 00 e0 ff ff 8b 40 10 EIP: [<c0156d77>] kfree+0x2e/0x65 SS:ESP 0068:c06a9e18
Nach dem fehlgeschlagenen init im RNDIS-Treiber schlägt leider auch die Deregistrierung fehl. Der Calltrace wird durch das BUG()-Macro im Kernel erzeugt. Das ist mit eine Assertion vergleichbar. Irgendeine Bedingung ist nicht erfüllt.
Ich würde Dir empfehlen mal den Main-Kernel von kernel.org zu testen. Aktuell stabil ist 2.6.27.7. Sollte da das gleiche Problem auftauchen solltest Du es an die Kernel-Mailingliste posten. Oder Du sendest einen Report an die Debianer. Vielleicht gibt es da auch neuere Kernel.
Also Workaround hilft vielleicht das Entladen der Treiber. Du musst nur die Abhängigkeiten beachten.
rmmod cdc_ether rmmod rndis_host rmmod cdc_ether rmmod usbnet rmmod cdc_acm rmmod mii
Gruß Andy
Danke, das Thema schaue ich mir WE nochmal an.
Andreas
Andre Prendel schrieb:
On Sat, Nov 22, 2008 at 11:58:15PM +0100, Andreas Oettel wrote:
Hallo Andreas,
Es passiert rein gar nichts. Es werden keine weiteren Geräte angelegt noch sonst eine Meldung ausgegeben.
Was geschieht eigentlich im System wenn ich das Handy anschließe? Woher weiß Etch, dass es /dev/ttyACM0 anlegen muss, und was kann die Ursache sein, dass es das Gerät nach dem abziehen nicht wieder entfernt. Wie kann ich das Gerät per Hand entladen?
Die Gerätedatei /dev/ttyACM0 wird von udev angelegt. Wenn Du das Handy ansteckst, werden erstmal ein paar Treiber geladen. Das zeigt Dir lsmod.
... cdc_ether 8704 1 rndis_host cdc_acm 16928 0 usbnet 17800 2 rndis_host,cdc_ether mii 8832 1 usbnet ...
In der letzen Spalte siehst Du welche Treiber den Treiber in der ersten Spalte nutzen.
Die Treiber registrieren sich dann bei den Subsystemen. Die Subsysteme legen im sysfs Klassen für die Geräte (Treiber) an. Dann senden sie an udev ein Event. Udev arbeitet im Userspace und legt die Gerätedateien laut sysfs an.
Hier siehst du den Ablauf.
linux:/home/andre # udevmonitor ... UEVENT[1227606706.482460] add@/class/tty/ttyACM0 ...
linux:/home/andre # ls -l /sys/class/tty/ttyACM0/ insgesamt 0 -r--r--r-- 1 root root 4096 25. Nov 10:56 dev lrwxrwxrwx 1 root root 0 25. Nov 10:56 device -> ../../../devices/pci0000:00/0000:00:1d.0/usb1/1-1/1-1:1.10 drwxr-xr-x 2 root root 0 25. Nov 10:56 power lrwxrwxrwx 1 root root 0 25. Nov 10:56 subsystem -> ../../tty -rw-r--r-- 1 root root 4096 25. Nov 10:56 uevent
linux:/home/andre # cat /sys/class/tty/ttyACM0/dev 166:0
linux:/home/andre # ls -l /dev/ttyACM0 crw-rw---- 1 root uucp 166, 0 25. Nov 10:51 /dev/ttyACM0
Udev benutzt die Datei dev in /sys/class/tty/ttyACM0/ um die Gerätedatei anzulegen. Das Format ist MAJOR:MINOR.
Anbei die Ausgabe beim Einstecken und Abziehen.
Lug-dd maillist - Lug-dd@mailman.schlittermann.de https://ssl.schlittermann.de/mailman/listinfo/lug-dd
usb 2-1: USB disconnect, address 2
ohci_hcd 0000:00:0b.1: wakeup usb 2-1: new full speed USB device using ohci_hcd and address 2 usb 2-1: configuration #1 chosen from 1 choice cdc_acm 2-1:1.10: ttyACM0: USB ACM device usbcore: registered new driver cdc_acm drivers/usb/class/cdc-acm.c: v0.25:USB Abstract Control Model driver for USB modems and ISDN adapters usbcore: registered new driver cdc_ether rndis_host 2-1:1.12: RNDIS init failed, -32
Hier schlägt die Registrierung vom RNDIS-Treiber fehl.
usb%d: unregister 'rndis_host' usb-0000:00:0b.1-1, RNDIS device unregister_netdevice: device usb%d/c8540800 never was registered ------------[ cut here ]------------ kernel BUG at mm/slab.c:595! invalid opcode: 0000 [#1] SMP Modules linked in: ... oh! ist der geschw??tzig - habe ich mal gel??scht :o) CPU: 0 EIP: 0060:[<c0156d77>] Tainted: P VLI EFLAGS: 00010002 (2.6.18-4-686 #1) EIP is at kfree+0x2e/0x65 eax: 8001002c ebx: c8540ac0 ecx: cffef7a0 edx: c110a740 esi: 00000282 edi: c853a392 ebp: c8540800 esp: c06a9e18 ds: 007b es: 007b ss: 0068 Process modprobe (pid: 4035, ti=c06a8000 task=c083c550 task.ti=c06a8000) Stack: c8540ac0 d2b3860e c8540806 d2b3801a c13fcc00 d2b3f6a0 c865c4a8 c54b2400 ffffffe0 cffd2e00 00000000 00000000 00000001 00000001 00000001 00000001 d2b3f660 c13fcc00 d2b40520 d2b40550 c0210b48 d08dbba5 c13fcc14 c13fcc14 Call Trace: [<d2b3801a>] usbnet_probe+0x4ee/0x503 [usbnet] [<c0210b48>] __driver_attach+0x0/0x5d [<d08dbba5>] usb_probe_interface+0x58/0x87 [usbcore] [<c0210aa9>] driver_probe_device+0x42/0x8b [<c0210b80>] __driver_attach+0x38/0x5d [<c02105ca>] bus_for_each_dev+0x33/0x55 [<c0210a13>] driver_attach+0x11/0x13 [<c0210b48>] __driver_attach+0x0/0x5d [<c02102e3>] bus_add_driver+0x64/0xfd [<d08db9da>] usb_register_driver+0x60/0xbb [usbcore] [<c01358c1>] sys_init_module+0x16c3/0x1846 [<c0102c7b>] syscall_call+0x7/0xb Code: 56 89 c7 53 74 58 9c 5e fa 8d 90 00 00 00 40 c1 ea 0c c1 e2 05 03 15 70 03 37 c0 8b 02 f6 c4 40 74 03 8b 52 0c 8b 02 84 c0 78 08 <0f> 0b 53 02 a1 b0 29 c0 89 e0 8b 4a 18 25 00 e0 ff ff 8b 40 10 EIP: [<c0156d77>] kfree+0x2e/0x65 SS:ESP 0068:c06a9e18
Nach dem fehlgeschlagenen init im RNDIS-Treiber schlägt leider auch die Deregistrierung fehl. Der Calltrace wird durch das BUG()-Macro im Kernel erzeugt. Das ist mit eine Assertion vergleichbar. Irgendeine Bedingung ist nicht erfüllt.
Ich würde Dir empfehlen mal den Main-Kernel von kernel.org zu testen. Aktuell stabil ist 2.6.27.7. Sollte da das gleiche Problem auftauchen solltest Du es an die Kernel-Mailingliste posten. Oder Du sendest einen Report an die Debianer. Vielleicht gibt es da auch neuere Kernel.
Also Workaround hilft vielleicht das Entladen der Treiber. Du musst nur die Abhängigkeiten beachten.
rmmod cdc_ether rmmod rndis_host rmmod cdc_ether rmmod usbnet rmmod cdc_acm rmmod mii
Gruß Andy
Lug-dd maillist - Lug-dd@mailman.schlittermann.de https://ssl.schlittermann.de/mailman/listinfo/lug-dd
lug-dd@mailman.schlittermann.de