Статические dev'ы для устройств

Решение проблем связванных с работой железа. Проблемы программно-аппаратной совместимости.
Правила форума
Убедительная просьба юзать теги [code] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
Jetro
рядовой
Сообщения: 46
Зарегистрирован: 2010-09-24 10:25:29

Статические dev'ы для устройств

Непрочитанное сообщение Jetro » 2014-05-27 19:42:15

Столкнулся с неприятной проблемой:
Имеется 3G-модем, При его подключении в систему добавилось вот сколько радости:

Код: Выделить всё

cuaU0
cuaU0.init
cuaU0.lock
cuaU1
cuaU1.init
cuaU1.lock
cuaU2
cuaU2.init
cuaU2.lock
Нашел рабочий порт (оказался cuaU1), завел интернет и все вроди как закончилось хорошо... до первого отключения.
После полного отключения питания, и включения снова, инет не завелся. Как оказалось рабочим портом теперь стал уже cuaU0.
Чисто для интереса подключил еще один свисток, который добавил еще два набора девов. После отключения питания, мало того что порты изменились, так еще и модемы местами поменялись. Анархия у них одним словом, что хотят то и делают.
Так вот, возможно ли как-то или назначить статические девы для устройств, или как-то запретить их смену? На сколько я знаю в Линуксе все это решаеться с помощью правил в udev, но в FreeBsd на сколько я знаю такого нет.

Хостинговая компания Host-Food.ru
Хостинг HostFood.ru
 

Услуги хостинговой компании Host-Food.ru

Хостинг HostFood.ru

Тарифы на хостинг в России, от 12 рублей: https://www.host-food.ru/tariffs/hosting/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.: https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2000 рублей (HP Proliant G5, Intel Xeon E5430 (2.66GHz, Quad-Core, 12Mb), 8Gb RAM, 2x300Gb SAS HDD, P400i, 512Mb, BBU):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/


Аватара пользователя
skeletor
майор
Сообщения: 2548
Зарегистрирован: 2007-11-16 18:22:04

Re: Статические dev'ы для устройств

Непрочитанное сообщение skeletor » 2014-06-10 12:28:12

Во FreeBSD есть devd. Небольшой пример использования http://izenfire.blogspot.com/2009/09/fr ... mount.html

Jetro
рядовой
Сообщения: 46
Зарегистрирован: 2010-09-24 10:25:29

Re: Статические dev'ы для устройств

Непрочитанное сообщение Jetro » 2014-07-20 19:05:47

Снова возвращаюсь к данному вопросу, сейчас уже актуален как никогда.

Просмотрел devd - вроди как должен идеально решить мою проблему. Но столкнулся с пока не решаемым для меня вопросом:
Что писать в action, чтобы devd выдавал нужный мне cuaU порт?

Перелистал и маны, и логи, но как именно производиться выдача cuaU порта для меня осталось загадкой.

Аватара пользователя
skeletor
майор
Сообщения: 2548
Зарегистрирован: 2007-11-16 18:22:04

Re: Статические dev'ы для устройств

Непрочитанное сообщение skeletor » 2014-07-25 15:26:16

Через action нельзя это сделать. Но выход есть: в action можно запихнуть создание симлинка. Например, при подключении модема с SN1 создаём симлинк /dev/modem1. При отключении - удаляем. Точно так же для второго -> /dev/modem2. В конфигах же, указывайте путь не /dev/cuaUX, а /dev/modemX.

Jetro
рядовой
Сообщения: 46
Зарегистрирован: 2010-09-24 10:25:29

Re: Статические dev'ы для устройств

Непрочитанное сообщение Jetro » 2014-07-28 16:39:32

Я верно понял что нужно создать симлинк на /dev/cuaUX? Если да, то как мне получить нужный дев?

Аватара пользователя
skeletor
майор
Сообщения: 2548
Зарегистрирован: 2007-11-16 18:22:04

Re: Статические dev'ы для устройств

Непрочитанное сообщение skeletor » 2014-07-28 16:59:11

Да, верно. Матчите нужный модем, например, по serial или imei.

Jetro
рядовой
Сообщения: 46
Зарегистрирован: 2010-09-24 10:25:29

Re: Статические dev'ы для устройств

Непрочитанное сообщение Jetro » 2014-07-29 11:20:41

Дело в том, что фактически модем находится отдельно от порта, и нигде не указывается какой порт принадлежит какому модему. После подключения модема в логах имеется отчет только о подключении устройства, подключении виртуального привода, и больше ничего. Рабочий порт появляется на протяжении секунд тридцати, и он нигде не фигурирует - ни в логах ни в usbconfig.
Как вариант можно послать какую-то AT-команду, по ответу на которую определить модем, но и тут имеется загвоздка - если пытаться слать команды отдельным софтом, то по завершении действия порт оказывается занятым, и спасает только или перезагрузка, или передергивание модема.

Аватара пользователя
skeletor
майор
Сообщения: 2548
Зарегистрирован: 2007-11-16 18:22:04

Re: Статические dev'ы для устройств

Непрочитанное сообщение skeletor » 2014-08-05 10:46:40

Конечно отдельно. Вы можете узнать это только серийному номеру и собственно матчить по нему и потом привязываться к этому порту.

flash_br
рядовой
Сообщения: 11
Зарегистрирован: 2010-09-15 9:06:54

Re: Статические dev'ы для устройств

Непрочитанное сообщение flash_br » 2014-12-23 13:38:24

Всем привет, пожалуй оживлю тему т.к. не могу побороть эту, казалось бы мелочь ..

Имеем:

Код: Выделить всё

ugen1.3: <HUAWEI Mobile HUAWEI Technology> at usbus1, cfg=0 md=HOST spd=HIGH (480Mbps) pwr=ON (500mA)

  bLength = 0x0012
  bDescriptorType = 0x0001
  bcdUSB = 0x0200
  bDeviceClass = 0x0000
  bDeviceSubClass = 0x0000
  bDeviceProtocol = 0x0000
  bMaxPacketSize0 = 0x0040
  idVendor = 0x12d1
  idProduct = 0x1001
  bcdDevice = 0x0000
  iManufacturer = 0x0002  <HUAWEI Technology>
  iProduct = 0x0001  <HUAWEI Mobile>
  iSerialNumber = 0x0000  <no string>
  bNumConfigurations = 0x0001

Код: Выделить всё

/etc/devd.conf

# When the HUAWEI 3G Modem appear...
attach 100 {
        match "device-name" "cuaU[0-9]";
        match "vendor" "0x12d1";
        match "product" "0x1001";
        match "release" "0x0000";
        action "/bin/ln -s  $device-name /dev/3gmodem1";
};
detach 100 {
        match "device-name" "ugen+";
        match "vendor" "0x12d1";
        match "product" "0x1001";
        match "release" "0x0000";
        action "rm /dev/3gmodem1";
};

просьба не пинать ногами, НО оно не работает .. может подскажет кто, где я ошибку сделал? :oops:

flash_br
рядовой
Сообщения: 11
Зарегистрирован: 2010-09-15 9:06:54

Re: Статические dev'ы для устройств

Непрочитанное сообщение flash_br » 2014-12-23 14:04:30

сделал так

Код: Выделить всё

/etc/devd.conf

# When the HUAWEI 3G Modem appear...
attach 100 {
#        match "device-name" "cuaU[0-9]";
        match "vendor" "0x12d1";
        match "product" "0x1001";
        match "release" "0x0000";
        action "/bin/ln -s  $device-name /dev/3gmodem1";
};
detach 100 {
#        match "device-name" "ugen+";
        match "vendor" "0x12d1";
        match "product" "0x1001";
        match "release" "0x0000";
        action "rm /dev/3gmodem1";
};

получил вот что

Код: Выделить всё

Dec 23 10:57:48 berloga kernel: ugen1.3: <HUAWEI Technology> at usbus1
Dec 23 10:57:48 berloga kernel: u3g0: <HUAWEI Technology HUAWEI Mobile, class 0/0, rev 2.00/0.00, addr 3> on usbus1
Dec 23 10:57:48 berloga kernel: u3g0: Found 3 ports.
Dec 23 10:57:48 berloga devd: Executing '/bin/ln -s  u3g0 /dev/3gmodem1'
т.е. симлинк создался, но не на /dev/cuaU0.0 ... и соответственно оно не работает ..

дело в том, что у меня несколько USB-COM устройств, точнее 2 ... модем прописывается как
/dev/cuaU0.0
/dev/cuaU0.1
/dev/cuaU0.2

а второе как
/dev/cuaU1

ну или наоборот, в зависимости от того, в какой последовательности определятся ...

flash_br
рядовой
Сообщения: 11
Зарегистрирован: 2010-09-15 9:06:54

Re: Статические dev'ы для устройств

Непрочитанное сообщение flash_br » 2014-12-23 17:10:38

так, частично заборол ...

Код: Выделить всё

# When the HUAWEI 3G Modem appear...
attach 100 {
#        match "device-name" "cuaU[0-9]";
        match "vendor" "0x12d1";
        match "product" "0x1001";
        match "release" "0x0000";
        action "/usr/local/bin/3gdev";
};

detach 100 {
        match "device-name" "ugen+";
        match "vendor" "0x12d1";
        match "product" "0x1001";
        match "release" "0x0000";
        action "rm /dev/3gmodem1";
};

Код: Выделить всё

cat /usr/local/bin/3gdev
#!/bin/sh

num=`sysctl -a | grep dev.u3g.0.ttyname | cut -d "U" -f2-`
moped="cuaU${num}.0"

/bin/chmod a+rw /dev/${moped}

/bin/ln -s  ${moped} /dev/3gmodem1

всё круто, всё работает, но, зараза, не убивает симлинк при отключении устройства (((((((((((((

Аватара пользователя
Alvares
прапорщик
Сообщения: 485
Зарегистрирован: 2008-07-10 12:48:08
Откуда: Воронеж
Контактная информация:

Re: Статические dev'ы для устройств

Непрочитанное сообщение Alvares » 2014-12-23 17:22:00

Код: Выделить всё

  action "unlink /dev/3gmodem1";
тоже не работает?
Бог создал людей сильными и слабыми. Сэмюэл Кольт сделал их равными...

flash_br
рядовой
Сообщения: 11
Зарегистрирован: 2010-09-15 9:06:54

Re: Статические dev'ы для устройств

Непрочитанное сообщение flash_br » 2014-12-23 17:27:06

неа ... решил вот так

Код: Выделить всё

cat /usr/local/bin/3gdev
#!/bin/sh

num=`sysctl -a | grep dev.u3g.0.ttyname | cut -d "U" -f2-`
moped="cuaU${num}.0"

/bin/chmod a+rw /dev/${moped}

/bin/ln -s -F ${moped} /dev/3gmodem1
просто принудительно перезаписываю симлинк

flash_br
рядовой
Сообщения: 11
Зарегистрирован: 2010-09-15 9:06:54

Re: Статические dev'ы для устройств

Непрочитанное сообщение flash_br » 2014-12-23 17:35:21

немного усовершенствовать надо

Код: Выделить всё

#!/bin/sh

num=`sysctl dev.u3g | grep ttyname: | cut -d "U" -f2-`
moped="cuaU${num}.0"

/bin/chmod a+rw /dev/${moped}

/bin/ln -s -F ${moped} /dev/3gmodem1


Аватара пользователя
Neus
капитан
Сообщения: 1980
Зарегистрирован: 2008-09-08 21:59:56

Re: Статические dev'ы для устройств

Непрочитанное сообщение Neus » 2014-12-23 22:46:13

flash_br писал(а):немного усовершенствовать надо

Код: Выделить всё

#!/bin/sh

num=`sysctl dev.u3g | grep ttyname: | cut -d "U" -f2-`
moped="cuaU${num}.0"

/bin/chmod a+rw /dev/${moped}

/bin/ln -s -F ${moped} /dev/3gmodem1

Изобретатель :smile:

Исправь

Код: Выделить всё

match "device-name" "cuaU[0-9]";
На

Код: Выделить всё

match "device-name" "cuaU[0-9]\.0";