01 Bug 背景

Host: GMK-K5 (Ryzen 7 7735HS)

Host OS: Ubuntu22.04

插入USB外设后,没有ttyUSB*,无法使用pyserial。通过lsusb 排查,结果如下:

1
Bus 003 Device 008: ID 1a86:7523 QinHeng Electronics CH340 serial converter

发现已经识别 CH340 ,说明不缺串口驱动。这成了个“玄学”问题。

02 解决方案

查看日志

1
2
3
sudo dmesg | grep usb
# 或者
sudo dmesg | grep brltty

发现如下内容,这是被brltty占用驱动的问题:

1
[ 7033.078452] usb 1-13: usbfs: interface 0 claimed by ch341 while 'brltty' sets config #1

2.1 解决方案一:卸载brltty(不推荐)

卸载brltty,不推荐:

1
sudo apt remove brltty

2.2 解决方案二:修改rule(推荐)

修改文件/usr/lib/udev/rules.d/85-brltty.rules

1
2
# 将下列内容注释掉
# ENV{PRODUCT}=="1a86/7523/*", ENV{BRLTTY_BRAILLE_DRIVER}="bm", GOTO="brltty_usb_run"`

[!quote] 摘自 DmitryOb
you can use solution without disable all service, just disable rule of matching
brltty has a rule for idVendor=1a86, idProduct=7523, which is the same as the CH340 serial converter.
In /usr/lib/udev/rules.d/85-brltty.rules,
# ENV{PRODUCT}=="1a86/7523/*", ENV{BRLTTY_BRAILLE_DRIVER}="bm", GOTO="brltty_usb_run"
comment upper row, then reboot os.