пятница, 21 февраля 2020 г.

Правила UDEV для фиксирования имен COM портов в Linux

Используя несколько преобразователей USB-RS485 может происходить переименование портов ttyUSB0 в ttyUSB1 и так далее, если мы их включаем или выключаем.
Всех тонкостей не помню, но большую часть параметров можно посмотреть используя команду
dmesg | grep usb

Для фиксации имен COM портов можно использовать правила udev, вот некоторые из них:

1. Адаптер USB-RS485 на чипсете CH340, у меня файл называется 99.ch340.com3.rules

SUBSYSTEM=="tty", ATTRS{idVendor}=="1a86", ATTRS{idProduct}=="7523", ATTRS{devpath}=="1.3", SYMLINK+="mydev/Com3", GROUP="plugdev"

Привязка идет к номеру USB Raspberry Pi - ATTRS{devpath}=="1.3"

2. Адаптер на чипсете PL2303, файл 99.pl2303.com2.rules

SUBSYSTEM=="tty", ATTRS{idVendor}=="067b", ATTRS{idProduct}=="2303", ATTRS{devpath}=="1.4", SYMLINK+="mydev/Com2", GROUP="plugdev"

Привязка идет к номеру USB Raspberry Pi - ATTRS{devpath}=="1.4"

3. Адаптер  EL204-4   USB-RS485(232) чипсет FTDI с серийным номером

SUBSYSTEM=="tty", ATTRS{idVendor}=="0403", ATTRS{idProduct}=="6001", ATTRS{serial}=="AH001HE3", SYMLINK+="mydev/Com1", GROUP="plugdev"

В данном случае в папке /dev  создается папка mydev и симлинки с моими именами COM портов. Использую так же как в Winde COM с номером.

Ну, куда положить правила udev найти не трудно... 

"слямзил на просторах"
------------------------------------------------------------------------------------------------------------------

По сути для того, чтобы создать стабильный алиас для устройства достаточно одной строки:

 ACTION=="add",ENV{ID_BUS}=="usb",ENV{ID_SERIAL}=="usb_serial",SYMLINK+="ttyUSBPort4"

ttyUSPPort4 - это будущее имя устройства, оно, как и все, будет в /dev/

а вот на ID_SERIAL остановимся чуть подробнее:

цитируя udev wiki: "To get definitive information of the device you can use either ID_SERIAL or ID_SERIAL_SHORT". Так что на самом деле для идентификации годятся 2 параметра.

Посмотреть их можно так:

udevadm info /dev/ttyUSBX - где X номер вашего устройства.

-------------------------------------------------------------------------------------------------------------------

Перезапуск правил без reboot

# udevadm control --reload-rules && udevadm trigger


Комментариев нет:

Отправить комментарий