Нумерация устройств подключенных по 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