Linux串口调试,选择串口工具一直是令人困扰的事情。
minicom 配置起来很复杂,每次改个波特率都要翻半天菜单,功能虽多但操作繁琐。
screen 倒是简单的,但是没有日志功能,重要的内容一闪而过,想再看也没有办法了。
更崩溃的是,设备频繁重启时,你得一次次手动重连,每次都要重新敲命令。
一天下来会浪费很多时间,调试效率也会大大降低。
最近在 GitHub 刷到一个在 Linux 用的串口工具:tio,已经有 3000 多人关注了。

01 开源项目简介
TIO 是一个面向嵌入式开发者的串口调试工具。
一般的串口工具只能实现数据的收发,功能比较单一。
TIO 可以实现自动重连、自动日志、配置文件管理等功能,还可以利用 Lua 脚本做自动化调试。
它把嵌入式开发者的真实需求放在第一位,解决了传统工具的诸多痛点。

02 几个核心亮点
① 自动连接管理,使调试不那么手忙脚乱
只要运行tio/dev/ttyUSB0,后面的工作就由工具来完成。
设备没插上?它会一直等下去,直到设备出现之后再自动连接上。
连接断开了?可以自动重连,不需要手动再打开一次。
这种体验在频繁插拔设备时特别省心。
另外,它还支持通过设备 ID 连接。
因为 Linux 下的串口号经常会变,这次是 /dev/ttyUSB0,下次可能就成了 /dev/ttyUSB1。
它会根据 USB 设备在总线上的位置生成唯一标识,只要 USB 拓扑没变,就能一直找到同一台设备。
tio /dev/serial/by-id/usb-FTDI_TTL232R-3V3_FTGQVXBL-if00-port0
这样就不会因为设备插拔导致串口路径变化而找错设备了。
② 日志功能,让关键信息不再溜走
调试时最怕的就是关键信息溜走了,想找的时候却找不到。
TIO的日志记录既可以自动命名也可以手动指定文件名,很灵活方便。
还可以对控制字符、转义序列进行过滤,并且结合上文提到的时间戳功能,在调试过程中可以迅速找到某一个特定时刻的日志输出,一目了然。
tio --log /dev/ttyUSB0
日志文件会被自动地用tio_TARGET_YYYY-MM-DDTHH:MM:SS.log这样的格式来命名。
③ 配置文件支持,让重复工作变得简单
可以给不同类型的设备分别创建对应的配置文件,例如树莓派、STM32、ESP32等等,每一个都有自己单独的波特率、日志路径、颜色主题等参数,并且彼此之间不会互相影响。

[rpi3]device = /dev/serial/by-id/usb-FTDI_TTL232R-3V3_FTGQVXBL-if00-port0baudrate = 115200log = truelog-file = rpi3.logcolor = 11
下一次连接的时候直接输入tio rpi3就可以一键启动了,不需要每次都要打那么长的一串命令,这样既节省时间又方便快捷。
④ Lua 脚本支持,让调试自动化
TIO 内置了 Lua 脚本引擎,在连接时会自动执行一些操作来完成自动化的调试。

比如自动登录设备:
tio --script 'expect("login: "); write("root\n"); expect("Password: "); write("root\n")' /dev/ttyUSB0
批量配置、自动化测试,这些原本需要手动重复的操作,现在都能脚本化,大大提高工作效率。
⑤ 高级功能,覆盖串口调试的方方面面
还可以使用 X-Modem 和 Y-Modem 协议来传输文件,在给嵌入式设备烧写固件的时候非常方便,并且不需要另外安装软件。
支持 RS-485 模式,在工业场景中也可以使用它来满足更多的专业需求。
还可以把串口I/O重定向到网络socket上,从而实现远程调试或者多个客户端共用一个调试会话:
tio --socket inet:4444 /dev/ttyUSB0
03 怎么用
表现非常稳定。它可以与tmux、screen等终端复用器一起工作,并且不会抢夺到快捷键或者发生冲突的情况,所以可以放心地使用。
命令行参数的设计很直观,常用的功能有合理的默认值,上手成本低,几分钟就可以学会。
按住 Ctrl+t 可以看到所有命令。例如切换日志、查看统计信息、发送特殊符号等都十分便捷。
Linux用户可以使用包管理器直接安装:
# Debian/Ubuntusudo apt install tio# Arch Linuxyay -S tio# Fedorasudo dnf install tio
macOS 可以使用 Homebrew 来安装。
也可以用源码进行编译安装:
git clone https://github.com/tio/tiocd tiomeson buildcd buildninjasudo ninja install
安装好之后,在终端中运行tio --list就可以看到所有的串口设备,一目了然。

选择设备后直接使用tio /dev/ttyUSB0来进行调试,十分方便。
如果要指定波特率,可以加个-b参数,比如tio -b 9600 /dev/ttyUSB0。
退出也很简单,只要按一下 Ctrl-tq 即可。
想要使用到配置文件的功能的话。
在 ~/.config/tio/config 目录下创建一个配置文件,下一次就可以一键启动了,避免了重复输入的麻烦。
如果要频繁地用到串口与设备进行通信的话,那么该工具是值得一试的,可以让你的调试工作更加高效。
开源地址:https://github.com/tio/tio