Typing next command to detect Virtual COM port

dmesg -w

Shows when connect Device to USB (STM board example)

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

Installing the screen program

sudo apt instatall screen

Close

CTRL+a -> k -> y

Show all screen session

screen -ls

Close session

$ screen -XS <session-id> quit

ESP issue

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

sudo apt-get remove brltty

Check serial

dmesg | egrep --color 'serial|ttyS'

Find serial port name

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

 

Script for search USB device (link)

#!/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

Example

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

Enumerate Devices by USB..

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

 

Update rules

sudo udevadm control --reload-rules && sudo udevadm trigger

 

Check rules

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"

 

Check 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

Comments


Comments are closed