Table of Contents

安装USB转串口驱动#

在做 UART 实验时,一般采用了电脑和单片机两台设备通信。单片机上有串口,但现在电脑上一般没有串口,需要外接 usb转串口小板,再拿线将串口小板和单片机串口连起来。但是,Ubuntu 不一定能够看到此串口。

Key Points#

  1. 查看是否已安装usb转串口驱动;

  2. 安装 usb 转串口驱动

  3. 解决与brltty地址冲突问题 (非常高的可能性)

重要资料

CH340 dev ttyUSB not showing Linux, but detected in terminal

说明

  • cp 和 ch 芯片的 usb 转串口驱动是相同的,在 Ubuntu 上完全一样;

  • 下载的 Linux 源码驱动是 CH340,编译后,好像得到的是 CH341,不影响使用

查看串口#

Linux 上查看串口的命令#

现代一点的 Ubuntu 版本(如 2022)一般都预装了 CH341 的串口驱动,但排除故障时,还是得从这一步开始:

ls /dev/tty*

其它命令#

下面的命令也常被用来查看已安装的串口驱动。例如直接查看安装过的驱动文件

ls /lib/modules/$(uname -r)/kernel/drivers/usb/serial   

或者:

cd /lib/modules/$(uname -r)/kernel/drivers/usb/serial
ls

lsusb#

插入设备后,使用 lsusb 可以列出 usb 接口名字列表,但它的名字和 ls /dev/tty* 得到的结果是不同的。例如:

$ lsusb

Bus 001 Device 022: ID 1a86:7523 QinHeng Electronics CH340 serial converter
Bus 001 Device 019: ID 1a86:55d4 QinHeng Electronics USB Single Serial

lsmod#

lsmod

usb 转串口的名字#

一般都是用的 cp2102, 或者替代的 CHxxx 芯片,它们可能是兼容的。后者可以安装。

usb 转串口的名字一般是:

  • ttyACM* : pyWifi-ESP32 开发板连接到 USB 口号,就叫这个名字

  • ttyUSB* : 串口小板如果使用的是 cp2102 芯片,名字可能是 /dev/ttyCH341USB0

  • ESP32 开发板的名字又不相同。

处置方法#

  • 如果串口驱动如果没有安装,那么就会显示不出以上设备。需要先 安装串口驱动

  • 但也有可能,在 lsusb 时,可以看到设备,但在 ls /dev/tty* 时,又看不到设备,这是因为端口号冲突。

安装USB转串口驱动#

删除旧驱动#

$ cd /lib/modules/$(uname -r)/kernel/drivers/usb/serial

# backup

sudo mv ch341.ko ch341.ko.backup

# or remove
sudo rm ch341.ko

编译和安装新驱动#

  1. 下载

    https://github.com/juliagoda/CH341SER

    http://www.wch.cn/download/CH341SER_LINUX_ZIP.html

  2. 编译与安装

    make
    sudo make load
    
  3. 手动安装。将编译出来的结果复制到系统上的 usb/serial 目录

    cp ch341.ko /lib/modules/$(uname -r)/kernel/drivers/usb/serial
    
  4. 重拨插,用 ls /dev/tty* 检查,如果成功即结束,否则下一步

  5. 重启。用 ls /dev/tty* 检查,如果成功即结束,否则可能有端口号冲突问题。

与brltty地址冲突问题#

见下面文章的后半部分

CH340 dev ttyUSB not showing Linux, but detected in terminal

安装串口助手 Cutecom#

sudo apt install cutecom

更多说明:

ubuntu 串口调试助手的安装与使用