|
|
ru.unix.bsd- RU.UNIX.BSD ------------------------------------------------------------------ From : Victor Wagner 2:5020/400 28 Dec 2007 14:44:25 To : Eugene Grosbein Subject : devd и модули (Was: Вопрос по usbd) --------------------------------------------------------------------------------
VW>> Или лучше через devd работать?
EG> Да.
Попробовал через devd. Получилось следующее
- --- /usr/local/etc/devd/mydev.conf ---
attach 100 {
device-name "ucom[0-9]+";
match "vendor" "0x0403";
match "product" "0x6001";
action "logger attached mydev $sernum at $device-name ; ln -sf
/dev/$device-name /dev/mydev$sernum";
};
detach 100 {
device-name "ucom[0-9]+";
match "vendor" "0x0403";
match "product" "0x6001";
# Скрипт здесь нужен потому что переменная sernum при детаче не выставляется
# Скрипт делает readlink всем устройствам /dev/mydev* и сравнивает с переданным
# именем устрйоства
action "/usr/local/bin/mydev_detach /dev/$device-name";
};
nomatch 100 {
match "bus" "uhub[0-9]+";
match "vendor" "0x0403";
match "product" "0x6001";
action "kldload uftdi.ko";
};
---------------------
Осталась следующая проблема:
Если на момент втыкания устройства драйвер uftdi.ko загружен, то всё нормально.
Если драйвер не загружен, отрабатывает правило nomatch, и его загружает.
Появляется /dev/ucomN но событие attach уже не генерируются.
Соответственно, вопрос заключается в том - как из правила nomatch узнать,
какому /dev/ucomN будет соответствовать устройство /dev/ugenN имя которого
находится в device-name при выполнении правила nomatch.
Предполагается, что могут одновременно быть воткнуты какие-то другие устройства,
которые занимают USB generic (например PTP-фотоаппарат) или
другие ucom-устройства, которые поддерживаются не uftdi, а еще каким-нибудь
драйвером. Поэтому делать echo $device-name | sed s/ugen/ucom/ страшновато.
А протестировать все возможные варианты - близко к нетривиальному.
Может быть кто-нибудь уже в курсе, как номера /dev/ugen* соотносятся с
соответствующими /dev/ucom*? Или никак?
Симлинк же, насколько я понимаю, должен указывать именно на ucomN, поскольку
работать с устройством надо через драйвер uftdi.
Можно, конечно, пытаться парсить вывод usbdevs -d -o
Дополнительная призовая игра - это то, что при отключении устройства в этом
случае опять же detach event на /dev/ucom0 не генерируется.
--
Терпеть не могу администрировать юниксы. Hо еще меньше я люблю работать
на криво настроенных системах...
--- ifmail v.2.15dev5.4
* Origin: Free Net of Leninsky,45 (2:5020/400)
Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.unix.bsd/422559aa3b1b6.html, оценка из 5, голосов 10
|