Правила udev - помогите понять логику.
День добрый.
Есть gentoo и несколько модемов huawei 1550. Все работает как надо и свои функции выполняет, а именно выглядит так:
lsusb |grep Huawei
Bus 001 Device 011: ID 12d1:1001 Huawei Technologies Co., Ltd. E620 USB Modem
и
ls /dev/ttyUSB*
/dev/ttyUSB0 /dev/ttyUSB1 /dev/ttyUSB2
Это без дополнительных правил для udev.
Есть небольшой нюанс. Модемы занимают /dev/ttyUSB0, /dev/ttyUSB1, /dev/ttyUSB2, /dev/ttyUSB3 и так далее в порядке втыкания в комп. А мне бы хотелось либо привязать эти самые /dev/ttyUSB* либо к номеру usb порта в компе, либо к серийнику модема. Вернее и так и так для разных случаев. Нагуглил несколько вариантов с решением похожих задач:
KERNEL=="ttyUSB[0-9]*", ID=="2-1", NAME="%k", SYMLINK+="wismo", GROUP="root", MODE="0666"
и такой:
KERNEL=="ttyUSB[0-9]*", ID=="1-1:1.0", NAME="%k", SYMLINK+="modem0", GROUP="root", MODE="0666"
KERNEL=="ttyUSB[0-9]*", ID=="1-1:1.1", NAME="%k", SYMLINK+="audio0", GROUP="root", MODE="0666"
KERNEL=="ttyUSB[0-9]*", ID=="1-1:1.2", NAME="%k", SYMLINK+="data0", GROUP="root", MODE="0666"
KERNEL=="ttyUSB[0-9]*", ID=="1-2:1.0", NAME="%k", SYMLINK+="modem1", GROUP="root", MODE="0666"
KERNEL=="ttyUSB[0-9]*", ID=="1-2:1.1", NAME="%k", SYMLINK+="audio1", GROUP="root", MODE="0666"
KERNEL=="ttyUSB[0-9]*", ID=="1-2:1.2", NAME="%k", SYMLINK+="data1", GROUP="root", MODE="0666"
KERNEL=="ttyUSB[0-9]*", ID=="3-1:1.0", NAME="%k", SYMLINK+="modem2", GROUP="root", MODE="0666"
KERNEL=="ttyUSB[0-9]*", ID=="3-1:1.1", NAME="%k", SYMLINK+="audio2", GROUP="root", MODE="0666"
KERNEL=="ttyUSB[0-9]*", ID=="3-1:1.2", NAME="%k", SYMLINK+="data2", GROUP="root", MODE="0666"
KERNEL=="ttyUSB[0-9]*", ID=="1-4:1.0", NAME="%k", SYMLINK+="modem3", GROUP="root", MODE="0666"
KERNEL=="ttyUSB[0-9]*", ID=="1-4:1.1", NAME="%k", SYMLINK+="audio3", GROUP="root", MODE="0666"
KERNEL=="ttyUSB[0-9]*", ID=="1-4:1.2", NAME="%k", SYMLINK+="data3", GROUP="root", MODE="0666"
Не понял оба:
1. Почему, например, ID=="1-4:1.2" Это ведь должно быть ID вендора:ID модели ?
2. И вообще где условие и где тут действие?
3. Как оперировать номером USB порта?
4. Как узнать какой-нибудь уникальный ID модема или его IMEI, например, и как его использовать как условие для правила udev?
Заранее спасибо.
- Для комментирования войдите или зарегистрируйтесь
>1. Почему, например,
>1. Почему, например, ID=="1-4:1.2" Это ведь должно быть ID вендора:ID модели ?
Нет, это адрес порта, а VID/PID задётся например так:
SUBSYSTEMS=="usb", ATTRS{idVendor}=="abcd", ATTRS{idProduct}=="abcd"
>2. И вообще где условие и где тут действие?
KERNEL=="ttyUSB[0-9]*", ID=="1-1:1.0", — условие
NAME="%k", SYMLINK+="modem0", GROUP="root", MODE="0666" — действие (два знака «=» — проверка условия, один — присваивание переменной параметра)
>4. Как узнать какой-нибудь уникальный ID модема или его IMEI, например, и как его использовать как условие для правила udev?
Заранее спасибо.
Писать скрипт, или программу и вызывать её, например как это сделано для bluetooth.
Спасибо
Спасибо
Всем привет! Использую все
Всем привет!
Использую все теже правила:
KERNEL=="ttyUSB[0-9]*", ID=="1-1:1.0", NAME="%k", SYMLINK+="modem0", GROUP="root", MODE="0666"
После обновления udev, посыпались сообщения:
В доках я нашел следующее:
Но что-то образцов написания правил не нагуглил, прошу помощи в переделке правил под новый udev.
Заранее спасибо.