Ubuntu 22.04: ch34x UART Error

USB-TTL模块接入PC后,无法识别为正常的USB接口。接着一系列问题排查过程:

  • 确认USB-TTL模块是否被识别

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    pi@localhost:~$ lsusb
    Bus 004 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
    Bus 003 Device 003: ID 27c6:5125 Shenzhen Goodix Technology Co.,Ltd. Goodix Fingerprint Device
    Bus 003 Device 002: ID 0489:e0df Foxconn / Hon Hai
    Bus 003 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
    Bus 002 Device 011: ID 0b95:1790 ASIX Electronics Corp. AX88179 Gigabit Ethernet
    Bus 002 Device 010: ID 05e3:0626 Genesys Logic, Inc. USB3.1 Hub
    Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
    Bus 001 Device 005: ID 13d3:56f8 IMC Networks ov9734_azurewave_camera
    Bus 001 Device 003: ID 046d:c52f Logitech, Inc. Unifying Receiver
    Bus 001 Device 019: ID 10c4:ea60 Silicon Labs CP210x UART Bridge
    Bus 001 Device 028: ID 1a86:7523 QinHeng Electronics CH340 serial converter
    Bus 001 Device 020: ID 2207:0006 Fuzhou Rockchip Electronics Company rk3xxx
    Bus 001 Device 018: ID 05e3:0610 Genesys Logic, Inc. Hub
    Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

    QinHeng Electronics CH340 serial converter:表示已经被识别了

  • 确认ch34x驱动是否安装

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    pi@localhost:~$ lsmod | grep usbserial
    usbserial 69632 2 cp210x,ch341

    # 或者使用这种方式查询
    pi@localhost:~$ ls /lib/modules/$(uname -r)/kernel/drivers/usb/serial
    aircable.ko digi_acceleport.ko io_ti.ko kl5kusb105.ko navman.ko qcserial.ko ti_usb_3410_5052.ko whiteheat.ko
    ark3116.ko empeg.ko ipaq.ko kobil_sct.ko omninet.ko quatech2.ko upd78f0730.ko wishbone-serial.ko
    belkin_sa.ko f81232.ko ipw.ko mct_u232.ko opticon.ko safe_serial.ko usb_debug.ko xr_serial.ko
    ch341.ko f81534.ko ir-usb.ko metro-usb.ko option.ko sierra.ko usbserial.ko xsens_mt.ko
    cp210x.ko ftdi_sio.ko iuu_phoenix.ko mos7720.ko oti6858.ko spcp8x5.ko usb-serial-simple.ko
    cyberjack.ko garmin_gps.ko keyspan.ko mos7840.ko pl2303.ko ssu100.ko usb_wwan.ko
    cypress_m8.ko io_edgeport.ko keyspan_pda.ko mxuport.ko qcaux.ko symbolserial.ko visor.ko

    cp210x,ch341:表示已经加载了cp210x驱动和ch341驱动

  • 查看关于tty的系统日志(重点问题)

    1
    2
    3
    4
    5
    6
    pi@localhost:~$ sudo dmesg | grep tty
    [290153.696478] usb 1-2.2: ch341-uart converter now attached to ttyUSB0
    [290154.264259] usb 1-2.2: usbfs: interface 0 claimed by ch341 while 'brltty' sets config #1
    [290154.266443] ch341-uart ttyUSB0: ch341-uart converter now disconnected from ttyUSB0


    在浏览器上找到了 brltty 这个进程导致USB-TTL转换失败了。

    brltty 是一个后台进程(守护进程),它使用可刷新的盲文显示器为盲人提供对控制台屏幕(在文本模式下)的访问。它驱动盲文显示器,并提供完整的屏幕查看功能。一些语音功能也被纳入其中。

    解决方法:卸载brltty,执行命令 sudo apt remove brltty

    再次查询 /dev/ttyUSB0 是否存在了:

    1
    2
    3
    pi@localhost:~$  sudo ls /dev/ttyU*
    /dev/ttyUSB0

    如果不是这种原因引起的,那么就可能是ch34x驱动太旧了,需要更新驱动程序。可以到这个地址去下载驱动:CH341SER_LINUX.ZIP