将开发板串口连接到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设备

相关推荐
未济18 小时前
linux 配置环境变量
linux
傲世仙尊18 小时前
目录即文件-Ext文件系统收尾篇
linux·c语言
虎头金猫18 小时前
4K 视频总卡在公网带宽?用 N1 + OpenList 把网盘播放链路重新理顺
运维·服务器·网络·python·容器·beautifulsoup·pandas
_艾伦 耶格尔.20 小时前
进程间通信
linux
AI职业加油站20 小时前
AI智能体应用工程师证书:政策红利下的职业新风口
大数据·运维·人工智能·学习·职场发展
Liuqy-0520 小时前
Linux IO编程——静态库、动态库
linux
此冬歌咏20 小时前
K8s 节点故障实战:优雅驱逐 31 秒,硬故障 331 秒,以及那个永远 Pending 的 Pod
运维·k8s
彧azz21 小时前
Linux 环境下 Redis 学习总结:数据类型、持久化、锁、事务、主从与缓存问题
linux·redis·笔记·学习·面试
-梅21 小时前
linux(8) 软硬链接
linux·运维·服务器
AIgorithmGEEK21 小时前
[Linux]线程三部曲(上):一个执行流的诞生——从操作系统一路拆到 pthread_create
linux·线程·pid