Правила 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, посыпались сообщения:

udevd[788]: ID= will be removed in a future udev version, please use KERNEL= to match the event device, or KERNELS= to match a parent device

В доках я нашел следующее:

$id, %b
           The name of the device matched while searching the devpath upwards for SUBSYSTEMS, KERNELS, DRIVERS
           and ATTRS.

Но что-то образцов написания правил не нагуглил, прошу помощи в переделке правил под новый udev.
Заранее спасибо.

Настройки просмотра комментариев

Выберите нужный метод показа комментариев и нажмите "Сохранить установки".