Виртуальный COM Port Linux / STM / ESP привязываем номер устройства к номеру порта USB

Нумерация устройств подключенных по USB | Примеры решений и инструментов...

Поиск виртуального COM порта

dmesg -w

Сообщения выводятся при подключении (пример подключения STM платы )

usb 1-2.3: new full-speed USB device number 16 using xhci_hcd
usb 1-2.3: New USB device found, idVendor=0483, idProduct=5740, bcdDevice= 2.00
usb 1-2.3: New USB device strings: Mfr=1, Product=2, SerialNumber=3
usb 1-2.3: Product: STM32 Virtual ComPort
usb 1-2.3: Manufacturer: STMicroelectronics
usb 1-2.3: SerialNumber: 206E36905748
cdc_acm 1-2.3:1.0: ttyACM1: USB ACM device

Установка "screen" программы

sudo apt instatall screen

Что бы закрыть программу "screen":

CTRL+a -> k -> y

Показать все открытые сессии

screen -ls

Закрыть сессию

screen -XS <session-id> quit

Проблемы при подключении ESP

если встречаете такую ошибку

usbfs: interface 0 claimed by ch341 while 'brltty' sets config #1

то необходимо удалить brltty

sudo apt-get remove brltty

Проверка виртуального порта

dmesg | egrep --color 'serial|ttyS'

Поиск порта по имени

ls /dev | grep -E 'ttyUSB|ttyACM'

Скрипт для поиска USB устройств по "чипу"

ссылка на оригинал

#!/bin/bash
#findusbdev.sh

if [[ "$1" =~ ^(-h|--help)$ ]]; then

echo "Find which USB devices are associated with which /dev/ nodes
Usage:
  $0 [-h|--help] [searchString]

  -h | --help   Prints this message
  searchString  Print only /dev/<device> of matching output
                With no arguments $0 prints information for all
                possible USB device nodes

E.g. $0 \"FTDI_FT232\" - will show /dev/ttyUSBX for a device using
the FTDI FT232 chipset.
"
    exit 0
fi

devs=$( (
for sysdevpath in $(find /sys/bus/usb/devices/usb*/ -name dev ); do
    # ( to launch a subshell here
    (
        syspath="${sysdevpath%/dev}"
        devname="$(udevadm info -q name -p $syspath)"
        [[ "$devname" == "bus/"* ]] && exit
        eval "$(udevadm info -q property --export -p $syspath)"
        [[ -z "$ID_SERIAL" ]] && exit
        echo "/dev/$devname - $ID_SERIAL"
    )& # & here is causing all of these queries to run simultaneously
done
# wait then gives a chance for all of the iterations to complete
wait
# output order is random due to multiprocessing so sort results
) | sort )


if [ -z "$1" ]; then
    echo "${devs}"
else
    echo "${devs}" | grep "$1" | awk '{print $1}'
fi

Пример

./findusbdev.sh CP2102
/dev/ttyUSB0
/dev/ttyUSB1

Перечесление USB устройств для нумерации COM портов

cd cd /etc/udev/rules.d/
touch

Проверка правил

udevadm test $(udevadm info -q path -n /dev/ttyUSB0) 2>&1

HOWTO select device by USB Port:

Check Device

udevadm info -q path -n /dev/ttyUSB0
sudo nano /etc/udev/rules.d/101-usb1-serial.rules
ACTION=="add", SUBSYSTEMS=="usb", KERNELS=="1-3", SYMLINK+="ttyUSB.1"

sudo nano /etc/udev/rules.d/101-usb2-serial.rules
ACTION=="add", SUBSYSTEMS=="usb", KERNELS=="1-4", SYMLINK+="ttyUSB.2"

Проверка UDEV

sudo udevadm test $(udevadm info -q path -n /dev/ttyUSB0) 2>&1 | grep 101
sudo udevadm test $(udevadm info -q path -n /dev/ttyUSB1) 2>&1 | grep 101

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

Обратите внимание, что мы не будем показывать ваш адрес электронной почты другим пользователям и не будем использовать его для отправки нежелательных электронных писем.