当前位置: 首页 > news >正文

深入解析:【ubuntu】ubuntu中找不到串口设备问题排查

ubuntu中找不到串口问题排查

    • 1. 检查设备识别情况
    • 2. 检查并安装驱动
    • 3. 检查内核消息
    • 4. 禁用brltty服务
      • 1. 停止并禁用 brltty 服务
      • 2. 完全移除 brltty 包
      • 3. 重启系统或重新插拔设备
    • 5.输出结果

问题:虚拟机ubuntu中,已经显示串口设备连接成功,但是在/dev/tty* 设备下找不到串口设备,虚拟机设置无误,排查ubuntu内部问题。

1. 检查设备识别情况

打开Ubuntu的终端,依次输入以下命令,观察系统是否识别到了硬件:

bash

# 查看系统日志中是否有串口设备相关的信息
dmesg | grep tty
# 或者尝试更具体的筛选
dmesg | grep usb
# 列出所有已识别的串口设备
ls /dev/tty*
# 特别注意 /dev/ttyS*, /dev/ttyUSB*, /dev/ttyACM* 等设备文件
# 查看USB设备列表
lsusb

如果 lsusb 显示了当前设备下串口转换芯片(如CH340、FT232、CP2102等),但 /dev/ 下没有对应的 ttyUSB*ttyACM* 设备,问题可能出在驱动或权限上。

2. 检查并安装驱动

对于常见的CH340芯片,在较新的Linux内核(如Ubuntu 22.04使用的内核)中可能存在驱动问题。

  1. 首先检查当前内核是否识别了硬件:

    bash

    # 查看驱动信息
    lsmod | grep ch34
    # 或者更广泛地查看usbserial
    lsmod | grep usbserial
  2. 如果没有任何输出,或者设备识别为 ttyCH341USBx 而不是 ttyUSBx,你可能需要重新编译安装驱动。可以参考搜索结果中的方案:

    • 卸载现有驱动(如果有):

      sudo rmmod ch341
    • 下载并编译正确的驱动(具体步骤可能因驱动版本和内核版本而异,请参考相关驱动源码的说明)。

    • 安装新驱动后,重新插拔USB设备或重启虚拟机。

操作记录:

ant@ant-virtual-machine:~$ lsusb
Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 001 Device 011: ID 1a86:7523 QinHeng Electronics CH340 serial converter
Bus 001 Device 004: ID 0e0f:0008 VMware, Inc. Virtual Bluetooth Adapter
Bus 001 Device 003: ID 0e0f:0002 VMware, Inc. Virtual USB Hub
Bus 001 Device 002: ID 0e0f:0003 VMware, Inc. Virtual Mouse
Bus 001 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
ant@ant-virtual-machine:~$ lsmod | grep ch34
ch341 24576 0
usbserial 69632 1 ch341

从输出结果来看,ubuntu系统已经正确识别到了串口,并且串口驱动也正常。

lsusb 已经识别到了 CH340 转换器(ID 1a86:7523)

lsmod 显示 ch341 驱动模块已经加载,并且关联了 usbserial 模块

3. 检查内核消息

查看内核日志中关于CH340的详细信息:

sudo dmesg | grep -i ch34

这会显示设备创建过程中出现的任何错误。

操作记录:

ant@ant-virtual-machine:~$ sudo dmesg | grep -i ch34
[ 2248.192716] usbcore: registered new interface driver ch341
[ 2248.192724] usbserial: USB Serial support registered for ch341-uart
[ 2248.192735] ch341 1-2.2:1.0: ch341-uart converter detected
[ 2248.201560] usb 1-2.2: ch341-uart converter now attached to ttyUSB0
[ 2248.729083] usb 1-2.2: usbfs: interface 0 claimed by ch341 while 'brltty' sets config #1
[ 2248.732131] ch341-uart ttyUSB0: ch341-uart converter now disconnected from ttyUSB0
[ 2248.732147] ch341 1-2.2:1.0: device disconnected
[ 2357.621916] ch341 1-2.2:1.0: ch341-uart converter detected
[ 2357.639750] usb 1-2.2: ch341-uart converter now attached to ttyUSB0
[ 2358.194838] usb 1-2.2: usbfs: interface 0 claimed by ch341 while 'brltty' sets config #1
[ 2358.198221] ch341-uart ttyUSB0: ch341-uart converter now disconnected from ttyUSB0
[ 2358.198235] ch341 1-2.2:1.0: device disconnected

dmesg 输出可以非常清楚地看到问题:brltty 服务正在与 ch341 驱动程序竞争对 USB 串口设备的控制权,导致设备反复连接和断开。
解决方案是停止并禁用brltty服务,然后重新连接设备。

4. 禁用brltty服务

brltty 是一个为视障用户提供盲文显示支持的服务,但它有时会错误地尝试控制串口设备,与正常的串口驱动程序发生冲突。

1. 停止并禁用 brltty 服务

# 停止 brltty 服务
sudo systemctl stop brltty
# 禁用 brltty 服务,防止它开机自启动
sudo systemctl disable brltty
# 确认服务已停止
systemctl status brltty

2. 完全移除 brltty 包

如果不需要盲文支持,最好完全移除 brltty:

# 卸载 brltty
sudo apt remove brltty
# 或者彻底清除(包括配置文件)
sudo apt purge brltty

3. 重启系统或重新插拔设备

完成上述步骤后,请重新插拔您的 CH340 设备,或者重启系统:

# 重新插拔设备后检查
ls /dev/ttyUSB*
# 查看内核消息确认没有冲突
dmesg | grep -i ch34 | tail -5

5.输出结果

最终,查看串口设备:

virtual-machine:~$ ls /dev/ttyUSB*
/dev/ttyUSB0

正确显示了串口设备,之后,就可以设置串口设备读写权限,使用串口设备。
最终,查看串口设备:

virtual-machine:~$ ls /dev/ttyUSB*
/dev/ttyUSB0

正确显示了串口设备,之后,就可以设置串口设备读写权限,使用串口设备。

ubuntu 系统重启后,再次查看串口驱动模式消息:

virtual-machine:~/Desktop$ sudo dmesg | grep -i ch34
[ 3.247739] usbcore: registered new interface driver ch341
[ 3.247747] usbserial: USB Serial support registered for ch341-uart
[ 3.247758] ch341 1-2.2:1.0: ch341-uart converter detected
[ 3.256254] usb 1-2.2: ch341-uart converter now attached to ttyUSB0

usb 串口模块已经没有冲突了。

http://www.hskmm.com/?act=detail&tid=12074

相关文章:

  • 酵母双杂交技术:高通量筛选的突破与不可忽视的三大局限性
  • ubuntu20.04测试cuda
  • Android Studio 配置国内源
  • PyCharm项目上传GitHub仓库(笔记) - 教程
  • 从RAG出发
  • 软件工程第二次作业——第一次个人编程作业
  • Ubuntu 24.04 安装 DaVinci Resolve
  • Promise中处理请求超时问题
  • 图解26:老生常谈的OSI网络模型
  • 【C++】指针
  • AI驱动建筑行业数字化转型
  • 详细介绍:前端学习——CSS
  • VSCode 把代码发送到激活状态下的终端
  • 线性结构之数组[基于郝斌课程]
  • 完整教程:Vue中的props方式
  • 图解25:MySQL主从复制原理
  • 用 Go 编写验证码识别脚本(基于 Tesseract)
  • 软工第二次作业
  • Zero-Shot、One-Shot、Few-Shot概念
  • ADS放入元器件include和DK.zip文件依然提示未定义
  • AI元人文(十三):良知觉醒——论三值伦理模型与元道德主体的诞生
  • 「MCOI-05」魔仙
  • BlueHat v18 会议资料现已发布:前沿安全技术与漏洞缓解策略
  • label和brand的区别(品牌=brand?错了,你们的英语都学错了!)
  • 2025.9.21——1绿
  • 故障处理:ORA-04031真实案例分享
  • 图解24:8种常用的缓存淘汰策略
  • 读书笔记:更智能的数据库索引:只关注你需要的数据
  • JS设计模式-模块模式
  • 关于天猫精灵喵控的初步拆机研究