远程串口(Live Relay)
Live Relay 让一台机器上的物理串口,在另一台机器的软件里表现为一个真正的端口。现场机器共享端口,操作机器新建一个类型为远程串口(Live Relay)的连接,中间的云端只转发字节、不读取内容。
两端都向云端出站连接,所以它和 Live Console 一样,现场在 NAT 后面、没有公网地址、不开入站端口也能用。差别在于链路上跑的东西:Live Console 是浏览器里的实时窗口——文本事件、限帧、以看为主;Live Relay 是端到端跑 RFC 2217 的透明字节管道,本地端口能做的事它都能做:
- 在操作侧修改波特率、数据格式和流控,也可以选择沿用远端串口自己的配置。
- 控制 DTR/RTS 和 Break;控制线指示灯跟随远端串口的调制解调器信号。
- 协议流原样成立——Modbus RTU 轮询、XMODEM/YMODEM 文件传输、固件升级。
默认情况下两台机器登录同一个账号:只能中继到自己名下的设备。要让没有账号的同事接进来,用邀请码——在他自己的软件里打开,或者直接在浏览器里,什么都不用装。这条路径与 RFC 2217、透明 TCP 转发、Live Console 的取舍,见远程访问方案选型。
共享端口(现场一侧)
- 在软件内登录账号(「云 → 登录」)。
- 勾选「云 → 实时终端(Live Console)」,也可以从状态栏的 实时同步(Live Sync) 进同一个开关。中继复用同一条云端在线通道,所以总开关必须先开;它下面的授权开关在总开关关闭时是灰的。
- 勾选「云 → 实时中继(Live Relay)」,同样也在状态栏的实时同步里。默认关闭,并且刻意不被「允许远程发送」或「允许远程端口控制」隐含——中继交出的是整个端口。
- 打开要共享的串口连接。只有串口连接会被列为可中继:RFC 2217 描述的就是串口,TCP/UDP 端点没有它能控制的东西。
操作者占用端口期间状态栏会说出来——实时同步那一格变成橙色的使用中,提示行写「远端操作者正在使用此串口」——本地窗口照常显示数据——没有本地发送者的流量是一次接管,你应该看得见它。取消勾选 Live Relay 会立即结束本机所有中继。
在另一台机器上使用(操作一侧)
- 用同一个账号登录。
- 在连接设置里把端口类型选为远程串口(Live Relay)。
- 在「选择远端串口」对话框里选目标。它列出你在线的设备和各自的串口,并标出共享侧未允许中继的端口。端口列表是按需向设备索取的,填充可能要几秒——设备走慢速轮询时最长约 30 秒。
- 决定串口参数由谁定——规则与 RFC 2217 客户端相同:保持勾选「沿用远端串口的现有配置」就不动现场的设置,取消勾选则在连接建立时下发你自己的波特率和数据格式。
- 启动连接。状态栏先显示「实时中继 · 端口 · 连接中」,两端配对成功后变为「已连接」。
之后它就是一个普通连接:Text/HEX 收发、时间戳、日志、控制线、CRC 工具和文件传输全部可用,也可以像任何端口一样再桥接出去。
无界面机器上的共享(spu 命令)
现场机器不需要桌面会话。直接下载版在 GUI 旁边附带一个小的控制台程序 spu(Mac App Store 版不包含):
spu -l # 列出本机串口
spu login --email user@example.com # 登录;密码提示输入、不回显
spu -D /dev/ttyUSB0 -b 115200 # 本地裸终端(stdin ↔ 串口)
spu -D /dev/ttyUSB0 -b 115200 --share # 把这个端口共享到 Live Relay
spu login 把账号会话存进与 GUI 相同的配置;写进脚本时用 --password-stdin 从管道读密码,不要把密码放在命令行上。-S / --share 打开端口并只开启中继授权——没有 Live Console 数据流、没有远程发送、没有通用端口控制命令——而且它只做共享侧:永远不会选择或拨向另一台机器的端口。空闲的共享代理只是一个控制面在线状态,在操作者真正接入端口之前,什么都不采集、不上传。
与同事共享(Live Share)
上面两节讲的是你自己的两台机器。要让没有账号的同事接进来一起分析,用邀请码:现场这台机器为一个已打开的串口签发一张有时限的码,同事在自己的软件里粘贴就得到与你完全相同的那个真端口,或者什么都不装、直接在浏览器里打开。他不需要注册、不需要订阅、不需要绑定设备;流量记在你这边。
这个动作与 Live Relay 互不隐含:那个开关管的是"我自己名下的其他机器",邀请码管的是"拿着这张码的这个人、这个口、这段时间"。签发步骤、浏览器里的三档权限、spu --invite,以及主人随时能收回的东西,见实时分享(Live Share)。
使用须知
- 一个端口同时只有一条中继。第二个操作者请求已被占用的端口会得到响亮的失败,而不是悄悄共享一条各看到一半回复的字节流。
- 中继断了就是断了——任一端掉线、会话被对侧关闭——不会自动重拨,需要你主动再次启动连接。
- 中继按会话限速。超过限额的流量会以真正的背压向源头节流,并出现短暂的"rate limited"提示;每个会话还有数据总量上限,达到后会话关闭。
- 常见的打开失败:共享侧的 Live Relay 没开(permission_denied)、端口已在中继(relay_busy)、设备离线,或账号本月的云流量额度已用尽。
- 除时序之外,线上流量与直连 RFC 2217 完全一致——逐字节相同,包括转义。
流量、配额与订阅
- Live Relay 不要求 Pro,所有账号都能用;差别只在月度流量额度——免费账号每月每方向 10 MB,Pro(付费许可证或有效订阅)1 GiB,用完后消耗购买的流量包。它按用量计费,而不是按设备数量:一条忘了关的满速会话几分钟就能耗尽免费额度。
- 中继字节计入与 Live Console 相同的月度云流量额度和充值余额,没有单独的中继配额。
- 用这个数做预算:115200 8N1 双向满速约 22.5 KB/s——大约每小时 81 MB。多数调试会话远低于此,但繁忙的二进制流不是。
安全与隐私
- 共享默认关闭,授权在拥有端口的那台机器上;网页和云端都无法远程替它打开。
- 两条链路都是出站加密连接。中继只配对同一账号的两台机器,或一台机器与它自己签发的邀请码的持有者——两者都由拥有端口的那台机器授权。
- 在已接受的中继里,修改串口参数和控制 DTR/RTS/Break 是"交出端口"的应有之义——只在可以接受这一点的场合开启 Live Relay。
- 浏览器访客看到的是这一个端口解码后的文本,经云端短暂缓冲,缓冲量与保留时间同 Live Console;他能做到哪一步由你在签发时决定,服务器和你的设备各检查一次,网页上无法抬高。
- 关闭 Live Relay 或退出登录会立即结束所有中继。相关数据流在隐私政策中有完整说明。