FireWire - system nie widzi dołączonego urządzenia, kernel panic

Grafika, film, dźwięk.
xpascal
Sędziwy Jeż
Sędziwy Jeż
Posty: 35
Rejestracja: 08 lip 2006, 22:49
Płeć: Mężczyzna
Wersja Ubuntu: 12.04
Środowisko graficzne: Inne
Architektura: x86_64

FireWire - system nie widzi dołączonego urządzenia, kernel panic

Post autor: xpascal »

Problem - system nie rozpoznaje kamery dołączonej za pomocą FireWire (IEEE 1394). Niezależnie od dołączanego urządzenia. Obsługa FireWire w 12.04 jest oględnie mówiąc niestabilna.

Sprzęt - HP Probook 4320s, 12.04 aktualne, jądro 3.5.0-46-generic #70~precise1-Ubuntu SMP, x86_64, karta Firewire na Expresscard. Po włożeniu system ją rozpoznaje poprawnie:

Kod: Zaznacz cały

root@hp-lapek:~# lspci | grep FireWire
02:00.0 FireWire (IEEE 1394): VIA Technologies, Inc. VT6315 Series Firewire Controller (rev 01)
i ładuje sterowniki, które rozpoznają kartę, tworzy urządzenie fw0:

Kod: Zaznacz cały

Feb 14 12:19:48 hp-lapek kernel: [ 1200.308423] pci 0000:02:00.0: [1106:3403] type 00 class 0x0c0010
Feb 14 12:19:48 hp-lapek kernel: [ 1200.308488] pci 0000:02:00.0: reg 10: [mem 0x00000000-0x000007ff 64bit]
Feb 14 12:19:48 hp-lapek kernel: [ 1200.308510] pci 0000:02:00.0: reg 18: [io  0x0000-0x00ff]
Feb 14 12:19:48 hp-lapek kernel: [ 1200.308682] pci 0000:02:00.0: supports D2
Feb 14 12:19:48 hp-lapek kernel: [ 1200.308688] pci 0000:02:00.0: PME# supported from D2 D3hot D3cold
Feb 14 12:19:48 hp-lapek kernel: [ 1200.316445] pci 0000:02:00.0: BAR 0: assigned [mem 0xd0800000-0xd08007ff 64bit]
Feb 14 12:19:48 hp-lapek kernel: [ 1200.316467] pci 0000:02:00.0: BAR 2: assigned [io  0x3000-0x30ff]
Feb 14 12:19:48 hp-lapek kernel: [ 1200.316480] pcieport 0000:00:1c.1: PCI bridge to [bus 02-42]
Feb 14 12:19:48 hp-lapek kernel: [ 1200.316488] pcieport 0000:00:1c.1:   bridge window [io  0x3000-0x4fff]
Feb 14 12:19:48 hp-lapek kernel: [ 1200.316498] pcieport 0000:00:1c.1:   bridge window [mem 0xd0800000-0xd47fffff]
Feb 14 12:19:48 hp-lapek kernel: [ 1200.316507] pcieport 0000:00:1c.1:   bridge window [mem 0xd4b00000-0xd4cfffff 64bit pref]
Feb 14 12:19:48 hp-lapek kernel: [ 1200.316917] firewire_ohci 0000:02:00.0: enabling device (0000 -> 0003)
Feb 14 12:19:48 hp-lapek kernel: [ 1200.380441] firewire_ohci 0000:02:00.0: added OHCI v1.10 device as card 2, 4 IR + 8 IT contexts, quirks 0x11
Feb 14 12:19:48 hp-lapek kernel: [ 1200.880348] firewire_core 0000:02:00.0: created device fw0: GUID 0011066600000001, S400
Dołączenie kamery (sprawdzałem na dwóch kamerach) albo samplera (studyjny Behringer)

Kod: Zaznacz cały

Feb 14 12:21:10 hp-lapek kernel: [ 1282.696301] firewire_ohci 0000:02:00.0: node ID not valid, new bus reset in progress
Feb 14 12:21:10 hp-lapek kernel: [ 1282.696661] firewire_ohci 0000:02:00.0: node ID not valid, new bus reset in progress
Feb 14 12:21:10 hp-lapek kernel: [ 1283.004336] firewire_core 0000:02:00.0: giving up on node ffc1: reading config rom failed: bus reset
Feb 14 12:21:11 hp-lapek kernel: [ 1283.196229] firewire_core 0000:02:00.0: rediscovered device fw0
Feb 14 12:21:11 hp-lapek kernel: [ 1283.196251] firewire_core 0000:02:00.0: phy config: new root=ffc1, gap_count=5
Feb 14 12:21:11 hp-lapek kernel: [ 1283.197382] firewire_ohci 0000:02:00.0: node ID not valid, new bus reset in progress
Feb 14 12:21:11 hp-lapek kernel: [ 1283.197565] firewire_ohci 0000:02:00.0: node ID not valid, new bus reset in progress
Feb 14 12:21:11 hp-lapek kernel: [ 1283.197756] firewire_ohci 0000:02:00.0: node ID not valid, new bus reset in progress
Feb 14 12:21:11 hp-lapek kernel: [ 1283.197945] firewire_ohci 0000:02:00.0: node ID not valid, new bus reset in progress
Feb 14 12:21:11 hp-lapek kernel: [ 1283.198132] firewire_ohci 0000:02:00.0: node ID not valid, new bus reset in progress
Feb 14 12:21:11 hp-lapek kernel: [ 1283.198368] firewire_core 0000:02:00.0: giving up on node ffc0: reading config rom failed: bus reset
Feb 14 12:21:11 hp-lapek kernel: [ 1283.695993] firewire_core 0000:02:00.0: rediscovered device fw0
Feb 14 12:21:11 hp-lapek kernel: [ 1283.696025] firewire_core 0000:02:00.0: phy config: new root=ffc1, gap_count=5
Feb 14 12:21:11 hp-lapek kernel: [ 1283.696315] firewire_ohci 0000:02:00.0: node ID not valid, new bus reset in progress
Feb 14 12:21:11 hp-lapek kernel: [ 1283.696671] firewire_core 0000:02:00.0: giving up on node ffc0: reading config rom failed: bus reset
Feb 14 12:21:12 hp-lapek kernel: [ 1284.195694] firewire_core 0000:02:00.0: rediscovered device fw0
Feb 14 12:21:12 hp-lapek kernel: [ 1284.195722] firewire_core 0000:02:00.0: phy config: new root=ffc1, gap_count=5
Feb 14 12:21:12 hp-lapek kernel: [ 1284.196329] firewire_ohci 0000:02:00.0: node ID not valid, new bus reset in progress
Feb 14 12:21:12 hp-lapek kernel: [ 1284.197272] firewire_ohci 0000:02:00.0: node ID not valid, new bus reset in progress
Feb 14 12:21:12 hp-lapek kernel: [ 1284.197451] firewire_ohci 0000:02:00.0: node ID not valid, new bus reset in progress
Feb 14 12:21:12 hp-lapek kernel: [ 1284.197639] firewire_ohci 0000:02:00.0: node ID not valid, new bus reset in progress
Feb 14 12:21:12 hp-lapek kernel: [ 1284.197844] firewire_core 0000:02:00.0: giving up on node ffc0: reading config rom failed: bus reset
Feb 14 12:21:12 hp-lapek kernel: [ 1284.695430] firewire_core 0000:02:00.0: rediscovered device fw0
Feb 14 12:21:12 hp-lapek kernel: [ 1284.695451] firewire_core 0000:02:00.0: phy config: new root=ffc1, gap_count=5
Feb 14 12:21:12 hp-lapek kernel: [ 1284.696168] firewire_ohci 0000:02:00.0: node ID not valid, new bus reset in progress
Feb 14 12:21:12 hp-lapek kernel: [ 1284.696769] firewire_ohci 0000:02:00.0: node ID not valid, new bus reset in progress
Feb 14 12:21:12 hp-lapek kernel: [ 1284.696957] firewire_ohci 0000:02:00.0: node ID not valid, new bus reset in progress
Feb 14 12:21:12 hp-lapek kernel: [ 1284.697126] firewire_ohci 0000:02:00.0: node ID not valid, new bus reset in progress
Feb 14 12:21:12 hp-lapek kernel: [ 1284.697314] firewire_ohci 0000:02:00.0: node ID not valid, new bus reset in progress
Feb 14 12:21:12 hp-lapek kernel: [ 1284.697516] firewire_ohci 0000:02:00.0: node ID not valid, new bus reset in progress
Feb 14 12:21:12 hp-lapek kernel: [ 1284.697707] firewire_ohci 0000:02:00.0: node ID not valid, new bus reset in progress
Feb 14 12:21:12 hp-lapek kernel: [ 1284.697897] firewire_ohci 0000:02:00.0: node ID not valid, new bus reset in progress
Feb 14 12:21:12 hp-lapek kernel: [ 1284.698088] firewire_ohci 0000:02:00.0: node ID not valid, new bus reset in progress
Feb 14 12:21:12 hp-lapek kernel: [ 1284.698296] firewire_core 0000:02:00.0: giving up on node ffc0: reading config rom failed: bus reset
Feb 14 12:21:13 hp-lapek kernel: [ 1285.195149] firewire_core 0000:02:00.0: rediscovered device fw0
Feb 14 12:21:13 hp-lapek kernel: [ 1285.195204] firewire_core 0000:02:00.0: phy config: new root=ffc1, gap_count=5
Feb 14 12:21:13 hp-lapek kernel: [ 1285.195726] firewire_ohci 0000:02:00.0: node ID not valid, new bus reset in progress
Feb 14 12:21:13 hp-lapek kernel: [ 1285.196057] firewire_ohci 0000:02:00.0: node ID not valid, new bus reset in progress
Feb 14 12:21:13 hp-lapek kernel: [ 1285.196438] firewire_ohci 0000:02:00.0: node ID not valid, new bus reset in progress
Feb 14 12:21:13 hp-lapek kernel: [ 1285.196623] firewire_ohci 0000:02:00.0: node ID not valid, new bus reset in progress
Feb 14 12:21:13 hp-lapek kernel: [ 1285.198359] firewire_core 0000:02:00.0: giving up on node ffc0: reading config rom failed: bus reset
Feb 14 12:21:13 hp-lapek kernel: [ 1285.694943] firewire_core 0000:02:00.0: rediscovered device fw0
Feb 14 12:21:13 hp-lapek kernel: [ 1285.694972] firewire_core 0000:02:00.0: phy config: new root=ffc1, gap_count=5
Feb 14 12:21:13 hp-lapek kernel: [ 1285.696317] firewire_core 0000:02:00.0: giving up on node ffc0: reading config rom failed: bus reset
Feb 14 12:21:14 hp-lapek kernel: [ 1286.194613] firewire_core 0000:02:00.0: rediscovered device fw0
Feb 14 12:21:14 hp-lapek kernel: [ 1286.194730] firewire_core 0000:02:00.0: phy config: new root=ffc1, gap_count=5
Feb 14 12:21:14 hp-lapek kernel: [ 1286.195270] firewire_core 0000:02:00.0: giving up on node ffc0: reading config rom failed: bus reset
Feb 14 12:21:14 hp-lapek kernel: [ 1286.694361] firewire_core 0000:02:00.0: rediscovered device fw0
Feb 14 12:21:14 hp-lapek kernel: [ 1286.694428] firewire_core 0000:02:00.0: phy config: new root=ffc1, gap_count=5
Ewidentnie problem z rozpoznaniem urządzenia zewnętrznego przez jądro Linuksa.

Dvgrab nie widzi urządzenia, chociaż próbuje czytać:

Kod: Zaznacz cały

root@hp-lapek:~# dvgrab 
rom1394_0 warning: read failed: 0x0000fffff0000414
error reading config rom directory for node 0
Error: no camera exists
Sztuczka z użyciem strace nie pomaga.

W starszej wersji korzystałem ze starego stosu ieee1394 (raw1394) i działało świetnie. Teraz nie działa w ogóle. Szukałem na kilku forach, nie ma odpowiedzi. Start z dołączonym urządzeniem niczego nie zmienia. Wygląda to na problem ze stosem firewire pod Linuksem.
Jak to rozwiązać?

-- 14 lut 2014 11:44 --

Poprawione. Pozostaje ważne pytanie - jak użyć starego stosu iee1394 w 12.04 (3.5.0-46-generic #70~precise1-Ubuntu SMP)? modułu raw1394 nie ma w ogóle.

Po kilku minutach w logach znajduję coś takiego:

Kod: Zaznacz cały

Feb 14 12:05:43 hp-lapek kernel: [  360.677762] INFO: task kworker/1:2:2187 blocked for more than 120 seconds.
Feb 14 12:05:43 hp-lapek kernel: [  360.677771] "echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables this message.
Feb 14 12:05:43 hp-lapek kernel: [  360.677775] kworker/1:2     D ffffffff8180cbe0     0  2187      2 0x00000000
Feb 14 12:05:43 hp-lapek kernel: [  360.677787]  ffff88010e4219a0 00000000000000 46 ffff88010e421950 ffff88010e421966
Feb 14 12:05:43 hp-lapek kernel: [  360.677795]  ffff88010e421fd8 ffff88010e421fd8 ffff88010e421fd8 00000000000139c0
Feb 14 12:05:43 hp-lapek kernel: [  360.677801]  ffff880131ea2e00 ffff88010e41dc00 ffff8801069ba000 7fffffffffffffff
Feb 14 12:05:43 hp-lapek kernel: [  360.677808] Call Trace:
Feb 14 12:05:43 hp-lapek kernel: [  360.677825]  [<ffffffff8169eca9>] schedule+0x29/0x70
Feb 14 12:05:43 hp-lapek kernel: [  360.677832]  [<ffffffff8169d3c5>] schedule_timeout+0x2a5/0x320
Feb 14 12:05:43 hp-lapek kernel: [  360.677842]  [<ffffffffa057e34a>] ? at_context_queue_packet+0x2ca/0x370 [firewire_ohci]
Feb 14 12:05:43 hp-lapek kernel: [  360.677850]  [<ffffffff8133c84e>] ? string.isra.4+0x3e/0xd0
Feb 14 12:05:43 hp-lapek kernel: [  360.677857]  [<ffffffff8169eaff>] wait_for_common+0xdf/0x180
Feb 14 12:05:43 hp-lapek kernel: [  360.677864]  [<ffffffff8108a9b0>] ? try_to_wake_up+0x200/0x200
Feb 14 12:05:43 hp-lapek kernel: [  360.677870]  [<ffffffff8169ec7d>] wait_for_completion+0x1d/0x20
Feb 14 12:05:43 hp-lapek kernel: [  360.677882]  [<ffffffffa0569291>] fw_run_transaction+0xf1/0x130 [firewire_core]
Feb 14 12:05:43 hp-lapek kernel: [  360.677892]  [<ffffffffa0568fe0>] ? transmit_phy_packet_callback+0x20/0x20 [firewire_core]
Feb 14 12:05:43 hp-lapek kernel: [  360.677903]  [<ffffffffa05685b0>] ? fw_get_request_speed+0x10/0x10 [firewire_core]
Feb 14 12:05:43 hp-lapek kernel: [  360.677914]  [<ffffffffa05692d0>] ? fw_run_transaction+0x130/0x130 [firewire_core]
Feb 14 12:05:43 hp-lapek kernel: [  360.677924]  [<ffffffffa0568fe0>] ? transmit_phy_packet_callback+0x20/0x20 [firewire_core]
Feb 14 12:05:43 hp-lapek kernel: [  360.677934]  [<ffffffffa0565a28>] read_rom+0x68/0xa0 [firewire_core]
Feb 14 12:05:43 hp-lapek kernel: [  360.677943]  [<ffffffffa0565b34>] read_config_rom+0xd4/0x4f0 [firewire_core]
Feb 14 12:05:43 hp-lapek kernel: [  360.677953]  [<ffffffffa0566950>] fw_device_init+0x40/0x330 [firewire_core]
Feb 14 12:05:43 hp-lapek kernel: [  360.677962]  [<ffffffff81071cb7>] process_one_work+0x127/0x470
Feb 14 12:05:43 hp-lapek kernel: [  360.677968]  [<ffffffff81072f05>] worker_thread+0x165/0x370
Feb 14 12:05:43 hp-lapek kernel: [  360.677975]  [<ffffffff81072da0>] ? manage_workers.isra.30+0x130/0x130
Feb 14 12:05:43 hp-lapek kernel: [  360.677981]  [<ffffffff81077e93>] kthread+0x93/0xa0
Feb 14 12:05:43 hp-lapek kernel: [  360.677988]  [<ffffffff816a9724>] kernel_thread_helper+0x4/0x10
Feb 14 12:05:43 hp-lapek kernel: [  360.677994]  [<ffffffff81077e00>] ? flush_kthread_worker+0xb0/0xb0
Feb 14 12:05:43 hp-lapek kernel: [  360.678000]  [<ffffffff816a9720>] ? gs_change+0x13/0x13
Wyjęcie karty FireWire (jest to karta ExpressCard) oznacza kernel panic:
Obrazek
Niestety nie potrafię zapisać tego, co wypisuje się na ekranie przy takim błędzie krytycznym.
Wszystko powyższe jest powtarzalne, także na najnowszym dostępnym w dystrybucji jądrze 3.11 (3.11.0-17-generic #31~precise1-Ubuntu SMP). Załamanie systemu występuje za każdym razem, gdy karta jest włożona dłużej niż kilka minut.

Czegoś takiego nie widziałem od bardzo dawna. Krótka próba z Windows 7 i 8.1 udowadnia, że sprzęt jest sprawny.

edit -
Mam już całą kolekcję takich błędów dla różnych wersji jądra. Każdy z nich jest powtarzalny, każdy z nich powoduje załamanie systemu na każdym testowanym przeze mnie jądrze z rodziny 3.x. Nadmienię, że przepełnienie bufora w firewire_ohci daje się eksploitować (z nudów sprawdziłem - da się nawet wrzucić payload). Sytuacja jest znacznie gorsza w lapkach, w których jest FireWire na pokładzie, gdyż moduły firewire_ohci oraz firewire_core są już załadowane podczas startu systemu, a zatem eksploitnięcie przypuszczalnie będzie prostsze. Obstawiam, że FW jest jedną z bardziej dziurawych (poza być może sterownikami do kart Wi-Fi) stref kernela.

-- 17 lut 2014 17:10 --

Dobra, szkoda czasu. Użyłem Microsoft Windows, tam to działa bez problemów. Temat do zamknięcia.
Ostatnio zmieniony 14 lut 2014, 12:40 przez xpascal, łącznie zmieniany 1 raz.
ODPOWIEDZ

Wróć do „Muzyka, filmy, zdjęcia, grafika”

Kto jest online

Użytkownicy przeglądający to forum: Obecnie na forum nie ma żadnego zarejestrowanego użytkownika i 11 gości