当前位置: 首页 > 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.zskr.cn/news/9018.html

相关文章:

  • 软件工程第二次作业——第一次个人编程作业
  • 【树状数组】codeforce 1288 E. Messenger Simulator
  • exsi 6.7 打补丁
  • Quart
  • java设计模式-工厂模式(文件上传) - 实践
  • 深度剖析 B 站关键词排名:策略与技巧全解析 - 详解
  • 图解25:MySQL主从复制原理
  • Zero-Shot、One-Shot、Few-Shot概念
  • SPAR类比推理模型学习(与常见小目标检测方法总结) - 详解
  • 2025.9.21——1绿
  • 故障处理:ORA-04031真实案例分享
  • 02-Media-6-rtsp_server.py 使用RTSP服务器流式传输H264和H265编码视频和音频的示例程序 - 详解
  • 深入解析:敏捷开发-Scrum(下)
  • Java课前问题列表-面向对象入门2与类的识别
  • ES——(一)基本概念 - 指南
  • 意义感是完全主观的
  • Fmt库在CentOS 7的应用指南
  • 用 Lua 实现验证码识别
  • 完整教程:【RabbitMQ】-----详解RabbitMQ高级特性之消息确认机制
  • Python网络请求库requests使用详述
  • 数据结构与排序算法:从理论到场景,解锁高效数据处理的核心逻辑 - 指南
  • 内存超频最强的千元板!微星B850MPOWER主板评测
  • Docker - Create my own Ubuntu image and run it on Windows
  • NIO重构UDP收发模块
  • 题解:SP6562 PRUBALL - Esferas
  • US$34 MB ESL Emulator
  • 采用python test测试http接口
  • CF2147 Codeforces Global Round 29 (Div. 1 + Div. 2) 解题报告
  • 详细介绍:农业XR数字融合工作站,赋能农业专业实践学习
  • 第三周:面向对象入门2与类的识别