MiniDV1394: различия между версиями

Материал из ALT Linux Wiki
м (+EPERM)
Нет описания правки
 
Строка 1: Строка 1:
[[category:MiniDV1394]]
[[category:MiniDV1394]]
{{crap}}
{{Устарело}}
{{MovedFromFreesourceInfo|AltLinux/Dokumentacija/MiniDV1394}}
{{MovedFromFreesourceInfo|AltLinux/Dokumentacija/MiniDV1394}}



Текущая версия от 16:51, 21 декабря 2023

48px-Mail-mark-junk red.svg.png
Эта статья конкретно протухла.
Статья уже не подходит под современные реалии, под современные версии Альта или сломана совсем. Возможно, её уже не доработать и не поместить в архив.


Freesource-logo.png Blue Glass Arrow.svg MediaWiki logo.png
Эта страница была перемещена с freesource.info.
Эта страница наверняка требует чистки и улучшения — смело правьте разметку и ссылки.
Просьба по окончанию убрать этот шаблон со страницы.


MiniDV и IEEE1394

Решил зафиксировать результаты сегодняшнего переливания видео с нашей цифровой камеры через купленную-воткнутую карточку на домашний тазик.

Проблемы

  • на моей NF2 нет встроенных портов FireWire, пришлось раскачаться и купить PCI-девайс;
  • было не вполне понятно, что с кабелями, типами разъёмов, софтом для снятия показаний...

Железка и драйверы

Чип на безымянной платке -- VIA VT6306. (Пробегая мимо Караваевых дач по конференционным делам, заскочил и забрал свою :)

Под 2.4.29 завелось на ohci1394, да сграбить ничего не вышло:

ohci1394_0: Transmit packet size 8 is too big

и здесь вот говорят, что это самое rev 46 and older под 2.4 работают только с патчиком.

Соответственно решил опять попробовать перебраться на 2.6 дома. Сейчас работает под Compact 3.0 со штатными пакетами без каких-либо проблем.

Да, заодно погуглил ohci1394 на http://search.altlinux.ru -- нашёл полезное сообщение Gleb Kulikov насчёт загрузки модулей raw1394 и dv1394 перед kino.

По совету eostapets@ был пересобран под athlon xvid-1.0.3-alt1.1, а также собраны с той libraw1394 kino и dvgrab (ЗАЧЕМ там этот %__subst в спеке?!).

Камера подключена при помощи кабеля 6x4 pin; при покупке специально уточнил, что электрически 6-pin и 4-pin полностью совместимы, за исключением дополнительных полутора ампер по +12V на 6-pin (что неактуально). Кстати, дядька-хозяин подходом к торговле понравился :)

Софт

Рекомендую использование kino и dvgrab.

Детали (vsu@)

Date: Sun, 30 Jul 2006 00:00:53 +0400
From: Sergey Vlasov <vsu@>
To: community@
Subject: Re: [Comm] Compact 3 + IEEE1394
Cc: hardware@

Появилась возможность проверить работу с Sony DCR-HC17E и контроллером, встроенным в плату ASUS A8V Deluxe:

0000:00:07.0 FireWire (IEEE 1394): VIA Technologies, Inc. IEEE 1394 Host Controller (rev 80)

Проверка в среде Compact 3.0 без примесей Сизифа (специально даже использовалось ядро 2.6.12-std26-up-alt6, а не более свежие сборки из updates) показала, что при подключении камеры модули raw1394 и dv1394 загружаются автоматически без каких-либо дополнительных действий, а в /dev появляются файлы устройств:

/dev/dv1394-0
/dev/raw1394 (ссылка на /dev/raw/raw1394)

Модуль video1394 автоматически не загружался, но вроде бы он предназначен не совсем для этого железа: оказывается, "Digital Camera" и "DV camera" - это разные вещи:

http://www.linux1394.org/faq.php

Во всяком случае, Sony DCR-HC17E имеет specifier_id 0x00a02d и version 0x010001, что соответствует таблице в dv1394, но не соответствует таблице в video1394.

Таким образом, с этой точки зрения в Compact 3.0 всё нормально.

EPERM

Однако проблема возникает с правами на эти файлы устройств - при настройках по умолчанию они создаются с правами 0660, причём для /dev/dv1394-0 устанавливаются владелец и группа root:root, а для /dev/raw/raw1394 - root:disk. Естественно, в результате эти устройства оказываются недоступными обычному пользователю.

Для исправления ситуации можно создать файл правил udev /etc/udev/rules.d/90-local.rules, где написать, например, следующее:

KERNEL=="dv1394-*", GROUP="camera" KERNEL=="raw1394", GROUP="camera"

После этого устройства станут доступными для пользователей, входящих в группу camera (при установке Compact 3.0 в эту группу автоматически заносится как минимум первый созданный пользователь). На самом деле для простого ввода видео с IEEE1394 достаточно доступа только к /dev/dv1394-*, однако в этом случае отсутствует возможность управления видеокамерой с компьютера; для управления нужен доступ через raw1394.

Впрочем, предоставление доступа к /dev/raw1394 обычным пользователям может быть нежелательным с точки зрения безопасности - дело в том, что через это устройство можно осуществлять полный доступ ко всем другим устройствам на шине IEEE1394, а это могут быть далеко не только видеокамеры. Например, существуют дисковые накопители с таким интерфейсом; доступ к /dev/raw1394 в этом случае может быть эквивалентен полному доступу к содержимому диска (а с учётом особенностей протоколов IEEE1394 и SBP-2, вероятно, ещё и доступу к произвольным адресам физической памяти компьютера). В настоящее время отсутствует возможность как-то ограничить доступ через /dev/raw1394, например, только определёнными классами устройств (из-за того, что обращения ко всем устройствам осуществляются через один общий файл устройства, в отличие от USB, где для каждого устройства есть отдельный файл /proc/bus/usb/... или /dev/bus/usb/..., для которого можно назначить нужные права доступа средствами hotplug или udev).

Кстати, сейчас подключение любого устройства по IEEE1394 даёт этому устройству полный доступ к физической памяти компьютера (точнее, к первым 4 Гб адресного пространства - большинство контроллеров поддерживают только 32-разрядную адресацию со стороны PCI). Были разговоры о том, чтобы как-то ограничивать этот доступ (например, предоставлять его по умолчанию только устройствам, для которых это необходимо - в частности, SBP-2), но пока это не реализовано.

[...]

У меня работали и kino, и dvgrab. Правда, в них по умолчанию забиты какие-то странные имена для устройств dv1394 - необходимо заменить их в настройках (или командной строке dvgrab) на /dev/dv1394-0. Через raw1394 заработало сразу.

Хотя, похоже, поддержка dv1394 в этом случае получается неполная - там должно создаваться 4 устройства:

dv1394_init(ohci, DV1394_NTSC, MODE_RECEIVE);
dv1394_init(ohci, DV1394_NTSC, MODE_TRANSMIT);
dv1394_init(ohci, DV1394_PAL, MODE_RECEIVE);
dv1394_init(ohci, DV1394_PAL, MODE_TRANSMIT);

Однако в драйвере это реализовано так, что работает только с devfs.

Ссылки

  • Вводная статья Сергея Яремчука в журнале "Мой компьютер"