转载来自CSDN:https://blog.csdn.net/xx970829/article/details/115678890

查看usb串口号

最近买了一条绿联的usb转串口线(pl2303),在win10里能直接用,但在Ubuntu里发现找不到串口。。。
一般来说ubuntu都装有pl2303等常见USB转串口驱动,特别是340、341这些,但是也容易出现插上usb转串口线后找不到串口的情况如:
查看usb串口号

python -m serial.tools.list_ports 

在这里插入图片描述
【出现上图如果不是USB转串口的线坏了,就很有可能是因为串口驱动的事】
(判断是否是USB转串口的线坏了的方法:可以插在win系统下,一般情况下设备管理器里会识别到)

下载pl2303 USB转串口驱动

我已经发在博客上了,免积分下载喔(希望三连哈~)
https://download.csdn.net/download/xx970829/16663442

安装步骤

1.解压:进入下载/PL2303GT驱动/Linux/PL2303G_Linux_Driver_v1.0.4/

在这里插入图片描述
2.查看电脑内核版本

uname -r

在这里插入图片描述
(我的是5.4.0的哈,不过这好像跟文件夹里的“5.2_ok”没有太大关系,不过自己编译时很容易出现没有对应内核头文件的错,但是与自己最后驱动路径有关系)

3.安装驱动
进入比如“5.2_ok”文件夹打开终端运行

make all
sudo rmmod pl2303.ko
sudo insmod pl2303.ko
sudo cp pl2303.ko /lib/modules/$(uname -r)/kernel/drivers/usb/serial

(完全按照“readme.txt”时最后一句得把“uname r”改为“uname -r”)

4.拷贝pl2303.ko文件

sudo cp /lib/modules/5.4.0-70-generic/kernel/drivers/usb/serial/pl2303.ko /usr/src/linux-headers-5.4.0-70-generic/drivers/usb/serial

(注意把“5.4.0-70-generic”改为自己对应的内核版本名)
然后执行:

sudo modprobe usbserial
sudo modprobe pl2303

查看效果

此时应该是能识别到串口了
输入:dmesg | tail
发现多了一个:pl2303

输入: python -m serial.tools.list_ports
也能看见多了一个USB串口号:/dev/ttyUSB0

在这里插入图片描述

给串口权限

有时插上串口, 通过“python -m serial.tools.list_ports”指令能看见串口号,但是通过程序(ros或qt的串口类)运行时发现打不开串口
这种情况多是因为串口权限的问题
解决方法1
给单个串口权限

sudo chmod 666 /dev/ttyUSB0 

该方法每次执行都需要给串口权限,不太方便。。。

解决方法2
建立.rules文件

sudo gedit /etc/udev/rules.d/20-usb-serial.rules

在.rules文件里写入:

KERNEL=="ttyUSB*"  MODE="0666" 

然后执行:

sudo service udev reload
sudo service udev restart

这样就不用每次给串口权限了。。。

【关于.rules文件固定设备串口号可参考我另一篇博客:https://blog.csdn.net/xx970829/article/details/115529204】