Главная страница


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)
 
 

Вернуться к списку тем, сортированных по: возрастание даты  уменьшение даты  тема  автор 

 Тема:    Автор:    Дата:  
 Re: Вопрос по usbd   Eugene Grosbein   28 Dec 2007 12:00:30 
 devd и модули (Was: Вопрос по usbd)   Victor Wagner   28 Dec 2007 14:44:25 
Архивное /ru.unix.bsd/422559aa3b1b6.html, оценка 3 из 5, голосов 10
Яндекс.Метрика
Valid HTML 4.01 Transitional