摘要:介绍
/dev/ttyUSB0的识别、LubanCat 常用串口参数、picocom 快捷键和网络失效时的串口排障方法。
为什么需要串口
SSH 只能在网络和 sshd 正常时使用。修改启动参数、网卡配置或内核后,设备可能已经启动,但网络尚未配置;如果内核或 initramfs 出错,SSH 更无法提供线索。串口可以直接观察 U-Boot、内核、initramfs 和 systemd 日志,是嵌入式 Linux 的"最后通道"。
一、识别串口设备
开发主机执行:
bash
sudo apt install picocom
ls /dev/ttyUSB*
ls /dev/ttyACM*
picocom --help | head
常见结果是 /dev/ttyUSB0。picocom --help 开头应显示 HIGH_BAUD is enabled,否则当前构建可能不支持 1500000 波特率。拔插设备后编号可能变为 /dev/ttyUSB1,不要把编号永久写死在脚本中;生产环境可以根据 USB 设备属性建立 udev 规则。
二、使用 1500000、8N1 打开串口
LubanCat 调试串口常用参数为 1500000 波特率、8 数据位、无校验、1 停止位、关闭流控:
bash
sudo picocom \
--baud 1500000 \
--flow n \
--parity n \
--databits 8 \
--stopbits 1 \
/dev/ttyUSB0
这里保留 picocom 默认的串口锁,避免两个程序同时读取同一个设备。只有明确知道锁文件机制不可用时才考虑 --nolock。
如果终端出现乱码,优先检查波特率、TX/RX/GND 接线和串口电平,而不是马上修改内核。
三、正确退出 picocom
picocom 使用"前缀键 + 命令键":
text
Ctrl-A,然后 Ctrl-X
屏幕出现 Terminating... Thanks for using picocom 即表示已经退出。直接按 Ctrl-C 通常只是把中断字符发送给目标设备上的前台程序,不会关闭 picocom。
常用快捷键:
| 操作 | 按键 |
|---|---|
| 显示帮助 | Ctrl-A、Ctrl-H,也可用 Ctrl-K |
| 退出 | Ctrl-A、Ctrl-X |
| 不恢复串口设置直接退出 | Ctrl-A、Ctrl-Q |
| 显示当前串口参数 | Ctrl-A、Ctrl-V |
发送普通 Ctrl-A |
连按两次 Ctrl-A |
不要把 Ctrl-A、Ctrl-U 当成帮助键:它会把波特率提高一档,可能立即产生乱码。参数被误改后,可退出并使用完整启动命令重新打开。
四、权限问题
临时解决:
bash
sudo picocom /dev/ttyUSB0 -b 1500000
长期解决:
bash
sudo usermod -aG dialout "$USER"
重新登录后,用户通常即可直接访问串口。
若提示设备忙,检查是否已有 picocom、minicom 或 ModemManager 占用:
bash
sudo fuser -v /dev/ttyUSB0
ps -ef | grep -E '[p]icocom|[m]inicom'
不要同时运行两个串口工具。需要保存启动日志时,可以增加:
bash
picocom --baud 1500000 --flow n --parity n \
--databits 8 --stopbits 1 \
--logfile serial-boot.log /dev/ttyUSB0
小结
串口调试的价值在于"网络失效时仍能看到真相"。建议每次升级内核都保留一份完整串口日志,并在日志中标注上电、重启和执行命令的时间点。
参考资料:picocom 官方 README 和 picocom 手册页。