Я использую Ubuntu 18:04 LTS
и пытаюсь установить связь с последовательными портами, но каждый раз, когда я перезапускаю систему, порты сбрасываются, есть ли способ чтобы предотвратить то же самое. т.е. предполагая, что я использую ультразвуковой датчик, который назначен на / dev / ttyUSB0
, и я использую датчик частоты пульса, который назначен на / dev / ttyUSB1
, тогда порты будут стабильными до система перезагружается, после чего порт часто меняется, поэтому есть способ заморозить порты, назначенные датчикам, чтобы они оставались неизменными даже после перезапуска.
К системе может быть подключено любое количество датчиков.
Однажды у меня была такая же проблема на beagle bone с debian jessie и более поздней версией stretch.
https://unix.stackexchange.com/questions/66901/how-to-bind-usb-device-under-a-static-name
Это мне помогло.
В итоге они предложили добавить правила udev:
Цитата из того, что мне помогло:
Синтаксис правила выше может работать в некоторых дистрибутивах, но не работал в моем (Raspbian). Поскольку я так и не нашел ни одного документа, который объяснял бы все тонкости и тонкости, я написал свой собственный, который можно найти здесь. Вот к чему все сводится.
узнайте, что на ttyUSB:
dmesg | grep ttyUSB
перечисляет все атрибуты устройства:
udevadm info --name = / dev / ttyUSBx --attribute-walk
(конечно, с номером (а) вашего устройства вместо x). Выберите набор уникальных идентификаторов, например idVendor + idProduct. Вам также может понадобиться SerialNumber, если у вас несколько устройств с одинаковыми idVendor и idProduct. Серийные номера должны быть уникальными для каждого устройства.
Создайте файл /etc/udev/rules.d/99-usb-serial.правила с чем-то вроде этой строки> в нем:
SUBSYSTEM == "tty", ATTRS {idVendor} == "1234", ATTRS {idProduct} == "5678", SYMLINK + = "your_device_name"
(при условии там вам не нужен серийный номер и, конечно же, с номерами idVendor и idProduct, которые вы нашли на шаге 2.
Загрузите новое правило:
sudo udevadm trigger
Проверьте, что произошло:
] ls -l / dev / your_device_name
покажет, на какой номер ttyUSB перешла символическая ссылка. Если это / dev / ttyUSB1, то проверьте, кто владеет этим и к какой группе он принадлежит:
ls -l / dev / ttyUSB1
Тогда просто для удовольствия:
udevadm test -a -p $ (udevadm info -q path -n / dev / your_device_name)