将开发板串口连接到Ubuntu后未找到对应的设备文件?

目录

  • 一、问题现象
  • 二、问题排查
  • 三、解决方法
    • [方案 1:直接卸载 brltty(最彻底,推荐)](#方案 1:直接卸载 brltty(最彻底,推荐))
    • [方案 2:临时停止服务(测试用,重启后恢复)](#方案 2:临时停止服务(测试用,重启后恢复))
    • [方案 3:保留 brltty,修改 udev 规则屏蔽 CH341](#方案 3:保留 brltty,修改 udev 规则屏蔽 CH341)
  • 四、问题验证

一、问题现象

复现环境:

  1. 开发板的串口芯片为CH341/CH340
  2. VMware虚拟机下的Ubuntu22.04.5

将开发板的串口连接到电脑,并在VMware中将对应设备连接到Ubuntu

查看/dev/下已挂载设备,发现挂载设备并没有新增,多次尝试断开和连接设备,亦无效果

二、问题排查

怀疑被当前运行的其他服务给挤掉了。

通过dmsg实时查看内核日志,命令如下:

bash 复制代码
dmesg -w

先打开内核日志实时监控,然后连接开发板串口到Ubuntu,对应的日志内容如下:

日志分析:

  1. idVendor=1a86, idProduct=7523 → 识别到南京沁恒 CH341 USB 转串口芯片(ESP32 开发板最常用的下载芯片)
  2. ch341-uart converter now attached to ttyUSB0 → 正常挂载为 /dev/ttyUSB0
  3. interface 0 claimed by ch341 while 'brltty' sets config → 核心冲突:brltty 服务强行接管这个 USB 接口
  4. ch341-uart converter now disconnected from ttyUSB0 → 串口驱动被挤掉,设备断开
    因此问题原因就是**brltty 服务(Linux 盲文屏幕辅助工具)错误抢占了CH341 串口芯片**,导致 ESP32 的串口刚挂载上就被强制断开,属于串口冲突问题。

三、解决方法

方案 1:直接卸载 brltty(最彻底,推荐)

普通开发用户完全用不到盲文功能,卸载一劳永逸:

bash 复制代码
sudo apt remove brltty

执行完,拔掉 ESP32 再重新插上,串口就会正常挂载。

方案 2:临时停止服务(测试用,重启后恢复)

bash 复制代码
sudo systemctl stop brltty

适合临时验证问题,重启系统后 brltty 会重新启动,冲突会复现。

方案 3:保留 brltty,修改 udev 规则屏蔽 CH341

不想卸载 brltty 的话,注释掉对应规则:

bash 复制代码
sudo vim /usr/lib/udev/rules.d/90-brltty-device.rules

搜索 1a86(CH341 厂商 ID),把对应行注释掉(行首加 #),保存后重载规则:

bash 复制代码
sudo udevadm control --reload-rules

再重插设备即可。

因brltty功能在开发过程中使用不到,这里采用 方案一 ,直接将 brltty给卸载掉

bash 复制代码
sudo apt remove brltty

四、问题验证

重新连接开发板到Ubuntu,dmesg -w查看实时内核日志:

通过上面日志可以看到ch341 USB串口正常挂载到了ttyUSB0

再查看下/dev/ 中已有内核导出的设备文件ttyUSB0设备

相关推荐
Fruiticecake15 小时前
epoll 回显服务器是怎么工作的:从 accept 队列到就绪链表,以及它和 select / poll 的区别
linux
莫晓燚15 小时前
阿里云若依项目部署与日志采集---实战
运维·数据库·redis·阿里云·ruoyi
何中应15 小时前
Grafana如何共享面板
运维·grafana·可观测
科创致远15 小时前
ESOP 电子作业指导书 WiFi 网络应用实测报告
运维·服务器·网络
承渊政道15 小时前
Linux网络学习【从NAT与代理服务理解网络转发、探索内网穿透原理、再到认识DNS与ICMP、最后动手部署并测试内网穿透】
linux·网络·学习·内网穿透·dns·nat
重生之小比特15 小时前
【Linux系统】17 库制作与原理(下)
linux·运维·服务器
weixin_4509072816 小时前
[ZYNQ Linux] VCU使用
linux·zynq
acd1200916 小时前
Nginx 反向代理的缓冲区坑:后端响应大时接口偶发 502
java·运维·nginx
程序员清风16 小时前
AI 编程助手的权限边界:文件、命令、密钥与人工确认
运维·服务器·网络
wacsii16 小时前
【Linux进程(二)】深入 Linux 内核:进程状态切换与底层数据结构的秘密
linux·服务器