我想用我的 USB 串口刷新我的 STM32 板。我的STM32板带有扩展板,带有CH340。
lsusb
看到该设备,并且输出为Bus 001 Device 039: ID 1a86:7523 QinHeng Electronics CH340 serial converter
。
但是我在
ttyUSB
路径下找不到/dev
文件。
我运行了
dmesg | grep tty
,这是输出:
[1182096.667353] usb 1-9: ch341-uart converter now attached to ttyUSB0
[1182096.729868] audit: type=1130 audit(1637925474.011:3648): pid=1 uid=0 auid=4294967295 ses=4294967295 msg='unit=brltty-device@sys-devices-pci0000:00-0000:00:14.0-usb1-1\x2d9 comm="systemd" exe="/usr/lib/systemd/systemd" hostname=? addr=? terminal=? res=success'
[1182096.800144] audit: type=1130 audit(1637925474.081:3649): pid=1 uid=0 auid=4294967295 ses=4294967295 msg='unit=brltty@-sys-devices-pci0000:00-0000:00:14.0-usb1-1\x2d9 comm="systemd" exe="/usr/lib/systemd/systemd" hostname=? addr=? terminal=? res=success'
[1182096.803145] usb 1-9: usbfs: interface 0 claimed by ch341 while 'brltty' sets config #1
[1182096.803731] ch341-uart ttyUSB0: ch341-uart converter now disconnected from ttyUSB0
这里有什么问题?
对于 Ubuntu 22.04,最简单的解决方案是通过
sudo apt remove brltty
删除 brltty 包,因为除非您使用盲文电子阅读器,否则它是不必要的,但不确定它是否会在以后导致错误。
有关 brltty 的信息,请访问该网站 https://brltty.app/
有论坛帖子无法连接串口 - 错误:ch341-uart 与 ttyUSB0 断开连接。似乎对于Arch Linux/Manjaro系统(我不确定它是否适合其他发行版),您需要删除一些udev规则。
sudo mv /usr/lib/udev/rules.d/90-brltty-device.rules /usr/lib/udev/rules.d/90-brltty-device.rules.disabled
sudo mv /usr/lib/udev/rules.d/90-brltty-uinput.rules /usr/lib/udev/rules.d/90-brltty-uinput.rules.disabled
sudo udevadm control --reload-rules
我不知道为什么,但我做到了。它起作用了。现在我可以找到我的
ttyUSB0
设备文件。
因此,有一个盲文电子阅读器使用相同的串行转换器,并且 udev 规则为该设备配置芯片。您实际上不需要完全删除 udev 规则文件,您只需禁用/注释掉单个设备的规则即可。就是这个:
# Device: 1A86:7523
# Baum [NLS eReader Zoomax (20 cells)]
ENV{PRODUCT}=="1a86/7523/*", ENV{BRLTTY_BRAILLE_DRIVER}="bm", GOTO="brltty_usb_run"
注释以 ENV 开头的行。
我能够使用 lsusb 和 dmesg|grep tty 查看设备,但无法从 platformio 上传代码。
sudo apt 删除 brltty
这解决了我在 Ubuntu 20.04 上使用 ESP8266(ch341-uart 转换器)的上传问题。