Согласованное перечисление устройств Linux

Существует несколько способов обращения к заданию в оболочке. Символ % вводит спецификацию задания (jobspec). Номер задания n можно обозначить как %n. На задание также можно ссылаться, используя префикс имени, используемого для его запуска, или подстроку, которая появляется в его командной строке. Простое именование задания может использоваться для вывода его на передний план: %1 - это синоним для ''fg %1'', выводящий задание 1 из фонового режима на передний план. Аналогично, ''%1 &'' возобновляет выполнение задания 1 в фоновом режиме, что эквивалентно ''bg %1''.

13
20.03.2019, 13:03
2 ответа

Поскольку мы говорим об USB-устройствах и предполагаем, что у вас есть udev, вы можете настроить некоторые правила udev.

Я предполагаю, и это всего лишь дикая догадка, что кто-то или что-то отключило/удалило устройство и снова подключило/добавило устройство, что увеличивает число.

Теперь сначала вам нужны поставщик и идентификатор продукта:

$ lsusb
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 001 Device 011: ID 0403:6001 FTDI FT232 USB-Serial (UART) IC

Далее вам потребуется серийный номер (, если у вас несколько):

# udevadm info -a -n /dev/ttyUSB1 | grep '{serial}' | head -n1
    ATTRS{serial}=="A6008isP"

Теперь давайте создадим правило udev:

Правила UDEV обычно разбросаны по множеству файлов в /etc/udev/rules.d. Создайте новый файл с именем 99-usb-serial.rulesи поместите туда следующую строку: у меня есть три устройства, каждое с другим серийным номером:

SUBSYSTEM=="tty", ATTRS{idVendor}=="0403", ATTRS{idProduct}=="6001", ATTRS{serial}=="A6008isP", SYMLINK+="MySerialDevice"
SUBSYSTEM=="tty", ATTRS{idVendor}=="0403", ATTRS{idProduct}=="6001", ATTRS{serial}=="A7004IXj", SYMLINK+="MyOtherSerialDevice"
SUBSYSTEM=="tty", ATTRS{idVendor}=="0403", ATTRS{idProduct}=="6001", ATTRS{serial}=="FTDIF46B", SYMLINK+="YetAnotherSerialDevice"

ls -l /dev/MySerialDevice
lrwxrwxrwx 1 root root 7 Nov 25 22:12 /dev/MySerialDevice -> ttyUSB1

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

SUBSYSTEM=="tty", ATTRS{idVendor}=="0403", ATTRS{idProduct}=="6001", SYMLINK+="MySerialDevice"

Взято отсюда

20
27.01.2020, 19:53

Правила UDEV — хорошая идея но многие устройства не серийные или имеет тот же серийный номер и это не решает проблему от ttyACM0 до ttyACM1

Попробуйте

systemctl stop ModemManager systemctl disable ModemManager

П.С. Я не волшебник, я только учусь, но дружба помогает нам творить настоящие чудеса

0
05.05.2020, 07:50

Теги

Похожие вопросы