LINUX.ORG.RU

Arch + firewire-камера (DV)


0

1

Не могу разобраться с новым firewire. Раньше, когда был raw1394, всё нормально работало, видео захватывалось, камера определялась. В августе 2010 после перехода на новые драйвера всё дружно отвалилось - временно решил пересборкой ядра.

Сейчас ситуация повторяется, но хочется уже таки разобраться в чем дело.

Итак, карточка в принципе видна:

02:08.0 FireWire (IEEE 1394): VIA Technologies, Inc. VT6306/7/8 [Fire II(M)] IEEE 1394 OHCI Controller (rev 46)

Ядро 2.6.39-ARCH. Насколько я понимаю, для корректной работы должны быть загружены firewire_core и firewire_ohci. Таковые в системе имеются:

sh-4.2$ lsmod | grep fire                                                                             
firewire_ohci          25683  0                                                                       
firewire_sbp2          11349  0                                                                       
firewire_core          43390  2 firewire_ohci,firewire_sbp2                                           
crc_itu_t               1077  1 firewire_core
scsi_mod              110702  5 sg,firewire_sbp2,sr_mod,sd_mod,libata

Далее, в /dev должен быть девайс fw0, символизирующий мою firewire-карту. Должны быть права на чтение и запись.

sh-4.2$ ls -l /dev/fw0
crw-rw---- 1 root video 252, 0 Jul 20 02:57 /dev/fw0

Есть. При включении камеры в /dev/ должен появляться fw1, символизирующий, собственно, камеру. Однако ничего такого не происходит, а в dmesg я вижу:

[ 1006.490556] firewire_ohci: isochronous cycle inconsistent
[ 1007.002054] firewire_core: created device fw1: GUID 00804580c18681a8, S100
[ 1007.002061] firewire_core: phy config: card 0, new root=ffc1, gap_count=5
[ 1007.003186] firewire_core: skipped bus generations, destroying all nodes
[ 1007.499940] firewire_core: rediscovered device fw0

Ладно. Выключаем камеру, включаем снова. Почему-то /dev/fw1 теперь появляется, в dmesg видно:

[ 1104.070749] firewire_ohci: isochronous cycle inconsistent
[ 1104.582202] firewire_core: created device fw1: GUID 00804580c18681a8, S100
[ 1104.582209] firewire_core: phy config: card 0, new root=ffc1, gap_count=5

Права на новый девайс вроде как есть:

sh-4.2$ ls -l /dev/fw1
crw-rw----+ 1 root video 252, 1 Jul 20 03:15 /dev/fw1

Однако при попытке доступа к девайсу приложение глухо подвисает, не выдавая даже никаких ошибок. Хотя нет, kino пишет, что «WARNING: raw1394 kernel module not loaded or falture to read/write /dev/raw1394». Забавно это читать, зная, что данный модуль больше не поддерживается. dvgrab зависает молча, не оставляя ни строчки в консоли. dmesg по этому поводу выдает следующее:

 1270.446962] fuse init (API version 7.16)
[ 1320.269941] INFO: task hald-probe-ieee:7117 blocked for more than 120 seconds.
[ 1320.269945] "echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables this message.
[ 1320.269948] hald-probe-ieee D 00000004     0  7117    675 0x00000004
[ 1320.269954]  f1d39f1c 00000086 00000000 00000004 00000001 0000ffc1 000000cc 00000000
[ 1320.269961]  f0000b00 0000ffff f10a9cd0 00000008 f897f840 f10a9c00 0000ffc1 c1527480
[ 1320.269966]  00000000 c1527480 f6406480 ed86b480 c1463fe0 00000000 fffffff2 f1d39f18
[ 1320.269972] Call Trace:
[ 1320.269991]  [<f897f840>] ? release_iso_resource+0x40/0x40 [firewire_core]
[ 1320.269999]  [<f8980c30>] ? fw_device_op_ioctl+0x90/0xf0 [firewire_core]
[ 1320.270005]  [<c11b8a44>] ? idr_for_each+0x74/0xd0
[ 1320.270011]  [<f897ed90>] ? ioctl_get_speed+0x10/0x10 [firewire_core]
[ 1320.270016]  [<c1063e08>] ? prepare_to_wait+0x48/0x70
[ 1320.270022]  [<f897f02d>] fw_device_op_release+0x10d/0x1b0 [firewire_core]
[ 1320.270026]  [<c1063fa0>] ? abort_exclusive_wait+0x80/0x80
[ 1320.270031]  [<c111602a>] fput+0xaa/0x1e0
[ 1320.270036]  [<c1112c74>] filp_close+0x54/0x80
[ 1320.270039]  [<c1112d14>] sys_close+0x74/0xc0
[ 1320.270044]  [<c134b31f>] sysenter_do_call+0x12/0x28
[ 1440.269906] INFO: task hald-probe-ieee:7117 blocked for more than 120 seconds.
[ 1440.269910] "echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables this message.
[ 1440.269913] hald-probe-ieee D 00000004     0  7117    675 0x00000004
[ 1440.269918]  f1d39f1c 00000086 00000000 00000004 00000001 0000ffc1 000000cc 00000000
[ 1440.269925]  f0000b00 0000ffff f10a9cd0 00000008 f897f840 f10a9c00 0000ffc1 c1527480
[ 1440.269931]  00000000 c1527480 f6406480 ed86b480 c1463fe0 00000000 fffffff2 f1d39f18
[ 1440.269936] Call Trace:
[ 1440.269956]  [<f897f840>] ? release_iso_resource+0x40/0x40 [firewire_core]
[ 1440.269964]  [<f8980c30>] ? fw_device_op_ioctl+0x90/0xf0 [firewire_core]
[ 1440.269970]  [<c11b8a44>] ? idr_for_each+0x74/0xd0
[ 1440.269977]  [<f897ed90>] ? ioctl_get_speed+0x10/0x10 [firewire_core]
[ 1440.269981]  [<c1063e08>] ? prepare_to_wait+0x48/0x70
[ 1440.269988]  [<f897f02d>] fw_device_op_release+0x10d/0x1b0 [firewire_core]
[ 1440.269992]  [<c1063fa0>] ? abort_exclusive_wait+0x80/0x80
[ 1440.269996]  [<c111602a>] fput+0xaa/0x1e0
[ 1440.270001]  [<c1112c74>] filp_close+0x54/0x80
[ 1440.270005]  [<c1112d14>] sys_close+0x74/0xc0
[ 1440.270009]  [<c134b31f>] sysenter_do_call+0x12/0x28

Вот. на таком вот неюзабельном состоянии всё и останавливается. Вроде бы и сделано всё как нужно, а не работает. Есть варианты, где может быть запрятана ошибка?


Ответ на: комментарий от webhamster

«Разобрался». Если это можно назвать так... Загружаем Linux Mint 7 LiveCD, грузимся. Потом:

 sudo passwd root
 su
 mount /dev/my_root_hdd /mnt
 mount -o bind /dev /mnt/dev
 mount -o /proc /mnt/proc
 chroot /mnt
 man dvgrab 
???

PROFIT!!! =)

Дело в том, что, насколько я понял, на некоторые девайсы вроде моей камеры тупо положили при разработке нового «хорошего» драйвера, так что...

Захватит оно в том же raw DV (или в чем Вам будет угодно), потом перегружаемся к себе домой,скармливаем то, что вышло в Kino/kdenlive/etc и спокойно редактируем.

Arch-way, пля...

ASGAlex
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.