【ubuntu】ubuntu中找不到串口设备问题排查

发布于:2025-09-15 ⋅ 阅读:(13) ⋅ 点赞:(0)

问题:虚拟机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 串口模块已经没有冲突了。