Как соответствовать ttyUSBX устройству к последовательному устройству usb

В этом случае это довольно просто, можно использовать killall уничтожить, или отправить любой другой сигнал, к набору процессов сразу. Одна из опций "фильтрации" является владельцем: killall --user name1

23
14.02.2019, 16:36
5 ответов

Взгляните на sysfs файловую систему. Пример для моего последовательного USB:

$ lsusb
Bus 003 Device 016: ID 067b:2303 Prolific Technology, Inc. PL2303 Serial Port
$ ls -l /sys/bus/usb-serial/devices
lrwxrwxrwx 1 root root 0 Jul  4 17:37 ttyUSB0 -> ../../../devices/pci0000:00/0000:00:1c.0/0000:02:00.0/usb3/3-1/3-1:1.0/ttyUSB0
$ $ grep PRODUCT= /sys/bus/usb-serial/devices/ttyUSB0/../uevent
PRODUCT=67b/2303/300

Как видете, ttyUSB0 карты к 067b:2303 на моем компьютере. Другой местоположения, которые стоит исследовать, /sys/class/tty/. Обратите внимание на символьные ссылки.

15
27.01.2020, 19:41
  • 1
    , Вы делали что-нибудь, чтобы заставить его перечислить также ПРОДУКТ? –  Igor Stoppa 06.03.2015, 12:02
  • 2
    @IgorStoppa, Попытка к cat uevent файл от результата find /sys -name ttyACM0, например. Замените именем узла своего последовательного устройства. –  sherrellbc 29.03.2017, 23:15

У меня была подобная проблема.

Запишите это в/etc/udev/rules.d/50-usb.rules

SUBSYSTEM=="tty", ATTRS{idVendor}=="19d2", ATTRS{idProduct}=="0031", SYMLINK+="ONDA"
SUBSYSTEM=="tty", ATTRS{idVendor}=="12d1", ATTRS{idProduct}=="14ac", SYMLINK+="HUAWEI"

в конец. Перезагрузка.

Теперь можно использовать /dev/ONDA добираться до Вашего устройства ОНДЫ.

Если Вы хотите, чтобы некорневые пользователи смогли использовать их, то добавьте

, MODE="0666"

в конец каждой строки.

6
27.01.2020, 19:41

Я использовал бы udev и записал бы некоторые правила, которые создают символьные ссылки для устройств.

Для получения достаточной информации для различения устройств пробуют что-то вроде этого за все устройства:

$ udevadm info --query all --name /dev/ttyUSB0 --attribute-walk
4
27.01.2020, 19:41

Следующие команды дадут мне список имен устройств ttyUSB, связанных с 19d2:0016 (который является идентификатором «модемного режима» ZTE MF831 LTE stick, ваш может отличаться.

    for i in $(find -L /sys/bus/usb/devices/ -maxdepth 2 -name "ttyUSB*"); do
        egrep -i "v19d2p0016(.*)in02" $i/../modalias >/dev/null && echo "/dev/${i##*/}"
    done

Это будет циклическое прохождение через список файлов с именем ttyUSB*, включая символические ссылки, в /sys/bus/usb/devices. В результатах мы будем искать файл с именем modalias и искать строку, содержащую идентификатор поставщика «v» «19d2» и идентификатор продукта «p» 0016. Если выходные данные совпадают, мы будем повторять строку с префиксом «/dev/» перед USB? имя. Афаик первый или обычно последний (наибольшее число)— порт модема для устройств ZTE. Вы можете повторить результаты в файле в /tmp/ и head -n1 или tail -n1 строки соответственно. Если у вас есть концентраторы, вам, вероятно, потребуется увеличить maxdepth.

Это не самый элегантный способ, но он будет работать практически на любом варианте Linux.

1
27.01.2020, 19:41

Вы можете попробовать проверить, зарегистрированы ли ваши устройства (с )под /dev/serial/by -id/

ls -l /dev/serial/by-id

Эти имена должны быть согласованы и указывать (символическую ссылку )на правильный ttyUSBx

15
27.01.2020, 19:41

Теги

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