Ubuntu关于串口的操作
一、查看本机串口信息
1. 串口是否在使用
串口在 /dev 目录中,查看串口是否在使用,可以用命令
ls -l /dev/ttyUSB0
结果应该如下所示

如果报错:ls: 无法访问 '/dev/ttyUSB*': 没有那个文件或目录![]()
可能的原因brltty占用了串口
brltty是 Ubuntu 预装的 “盲人辅助屏幕阅读器”,它会自动识别并占用 USB 串口设备(误把 CH340 当成辅助设备)
法一:
1. 立即停止 brltty 服务(临时释放占用)
打开终端,执行命令停止当前运行的 brltty,释放串口:
sudo systemctl stop brltty2. 禁用 brltty 开机自启(永久解决,避免重启复发)
停止服务后,还需禁用它的自动启动,防止下次开机时再次抢占:
sudo systemctl disable brltty查看
ls /dev/ttyUSB*法二:
彻底卸载
# 卸载brltty及其相关组件
sudo apt purge brltty -y
卸载完先测试,如果不行
在重载驱动,以上操作过程中需要重新插拔usb插口,并等待5秒在连接。
# 先卸载驱动
sudo rmmod ch341
sudo rmmod usbserial# 再重新加载(顺序不能错)
sudo modprobe usbserial
sudo modprobe ch341查看
ls /dev/ttyUSB*三、串口权限问题
Linux串口是默认普通用户没有读写权限的,每次开机后对串口读写都要附加权限
sudo chmod 666 /dev/ttyUSB0
但对于需要开机自动运行的程序就很麻烦了,所以可以设置永久加权
1. 打开下面的文件
远程的话要把gedit换成vi或nano等。
这个文件本来是不存在的,只不过编辑器打开不存在的文件会自动创建。
70-usb-serial.rules文件名可以自定义,但必须以.rules结尾。
sudo gedit /etc/udev/rules.d/70-usb-serial.rules2. 在文件中添加如下内容
ttyUSB*表示所有这一格式的串口名,如果你的是ttyS*或其它,按需改。
0666表示加权模式,和chmod后面的参数一致,写成666也可以。
vibot_base是我自定义的串口名,就是为ttyUSB*创建一个超链接 ,如下图。如果你不需要,可以去掉最后一项。
KERNEL=="ttyUSB*", MODE="0666", SYMLINK+="vibot_base"
3. 重启电脑
重启电脑使修改生效。
重启后查看设备信息如下,即表示修改成功:


