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)
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
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
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
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

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.