连接问题
lager hello 失败并报出 'No route to host'
lager hello 失败并报出 'No route to host'
- 确认您的 VPN 已连接:运行
tailscale status,确认列表中出现了您的 Lager Box。 - 检查 IP 地址是否正确:运行
lager boxes查看已保存的 Box IP 地址。 - 如果使用 Tailscale,请尝试
ping <box-ip>来验证网络连通性。 - 确认 Lager Box 已通电并连接到网络。
lager hello 失败并报出 'Connection refused'
lager hello 失败并报出 'Connection refused'
- 如果 Box 上的 Docker 容器已停止,请让您的管理员重启它。
- 运行
lager hello --box <box>检查该 Box 的服务状态。 - 如果您有 SSH 访问权限,请连接到该 Box 并检查 Docker:
docker ps | grep lager。 - 如果从来没有人把这台计算机配置成 Lager Box,请参阅 设置 Lager Box。
lager hello 失败并报出 'Connection timed out'
lager hello 失败并报出 'Connection timed out'
- 用
lager boxes再次核对 IP 地址。 - 移动过或重新配置过的 Box 可能有了新的 IP 地址。请查看您的 Tailscale 管理面板或路由器的 DHCP 表。
- 尝试 ping 该 Box:
ping <box-ip>。
Box 之前正常,现在无法访问
Box 之前正常,现在无法访问
- 确认该 Box 已通电。
- 检查您的 VPN 连接:
tailscale status。 - 如果 Box 的 IP 变了,请更新它:
lager boxes edit --name my-lager-box --ip <new-ip>。 - 运行
lager hello --box <name>检查 Box 状态。
lager ssh 失败并报出 'Permission denied (publickey)'
lager ssh 失败并报出 'Permission denied (publickey)'
lager ssh 提供的任何 SSH 密钥。lager ssh 首先提供 ~/.ssh/lager_box。然后它提供存在的每一个默认密钥:id_rsa、id_ecdsa、id_ed25519 以及它们的 -sk 版本。它也提供您 ~/.ssh/config 中的密钥和您 SSH agent 中的密钥。解决方法:- 运行
lager ssh-setup --box <box>。在它询问时输入一次 Box 密码。 - 重试
lager ssh --box <box>。 - 如果您在
--box中使用 Box 的 IP 地址,lager ssh会以lagerdata身份登录。请使用已保存的 Box 名称,以已保存的用户身份登录。 - 如果您的 CLI 低于 0.45.1,请升级它。当
lager_box存在时,较旧的lager ssh只会提供该密钥。
仪器检测
lager instruments 返回空列表
lager instruments 返回空列表
- 确认仪器确实通过 USB 连接到了 Lager Box(而不是连接到您的笔记本)。
- 检查 USB 线缆是否插紧 —— 请换一根线缆或换一个端口试试。
- 确认 Docker 容器在 USB 直通模式下运行。请运行
lager hello --box <box>。 - 运行
lager update --box <box>安装最新的 udev 规则和驱动程序。
列表中缺少某一台特定仪器
列表中缺少某一台特定仪器
- 拔下并重新插上该仪器的 USB 线缆。
- 运行
lager update --box <box>,确保 udev 规则是最新的。 - 检查该仪器是否已通电(有些仪器除 USB 之外还需要外部供电)。
- 确认该仪器型号在受支持的仪器列表中。
lager instruments 中缺少机械臂
lager instruments 中缺少机械臂
0483:5740 时,Box 才会在该端口上探测机械臂。机械臂还必须响应探测并报告一个 USB 序列号。解决方法:- 从 Box 日志中读取上一次探测的结果:
- 在
skipped列表中找到该机械臂的端口。它旁边的原因说明了 Box 为什么跳过它。 - 如果原因是
not a Dexarm vid:pid,说明该机械臂报告了不同的 USB ID。请把探测设为force: - 再次运行
lager instruments --box <box>。 - 机械臂出现之后,请用
lager box-config env unset LAGER_ARM_PROBE --box <box>删除该设置,然后运行lager box-config apply --box <box>。
使用仪器时出现 'Resource busy' 错误
使用仪器时出现 'Resource busy' 错误
- 关闭所有正在运行的 TUI 会话(按
q退出)。 - 稍等片刻再重试。之前的命令可能仍在运行。
- 如果问题继续存在,说明仪器句柄卡住了。请运行
lager update --box <box>重启该服务。
电源问题
OVP 或 OCP 已触发(输出意外关闭)
OVP 或 OCP 已触发(输出意外关闭)
- 查看当前状态:
lager supply <NET> state --box <box>。 - 清除故障:
lager supply <NET> clear-ovp或lager supply <NET> clear-ocp。 - 如果保护阈值设得过紧,请调整它们;否则请查明输出为什么超过了限值。
- 重新打开输出:
lager supply <NET> enable --box <box>。
电源已打开,但电压读数为 0V
电源已打开,但电压读数为 0V
- 确认输出已打开:
lager supply <NET> state --box <box>—— 检查 “Enabled” 是否显示为 ON。 - 确认您既设置了电压,也打开了输出(只设置电压不会打开输出):
- 检查 OVP/OCP 是否已触发(见上文)。
调试 / 烧录问题
'Flash failed: Could not connect to target.' 或 'Erase failed: ...'
'Flash failed: Could not connect to target.' 或 'Erase failed: ...'
flash 还可能打印 The target was NOT programmed.。如果 flash 运行时没有加 --no-erase,目标可能已被擦除。如果在编程之前擦除失败,则会打印 Flash erase failed:,并且 flash 不会对目标编程。解决方法:- 检查调试探针与您的被测设备(DUT)之间的 SWD/JTAG 接线。
- 确认被测设备已通电(调试探针并不总是供电)。
- 检查调试 Net 中的 MCU 类型是否与您的实际设备相符:
lager debug <NET> status --box <box>。 - 尝试更低的 SWD 速度:
lager debug <NET> gdbserver --speed 100 --force --box <box>。
'GDB server failed to start'
'GDB server failed to start'
- 断开任何已有会话:
lager debug <NET> disconnect --box <box>。 - 重试:
lager debug <NET> gdbserver --box <box>。 - 检查调试探针的健康状况:
lager debug <NET> health --verbose --box <box>。
'The debug session is up, but the target does not answer; reconnecting...'
'The debug session is up, but the target does not answer; reconnecting...'
flash、erase 或 reset 之前打印这条信息,然后开始一个新会话。解决方法:- 如果命令随后打印
Reconnected!,则无需处理。 - 如果命令打印
Error: the CLI did not reconnect to the target,它会以 1 退出。请检查被测设备的供电和接线。 - 运行
lager debug <NET> status --box <box>。重试之前,请确认Target attached显示为Yes。
UART 问题
UART Net 已被另一个会话占用
UART Net 已被另一个会话占用
- 列出持有 UART Net 的会话:
- 查看
Client列。状态为gone的客户端会自行释放该 Net。状态为connected的客户端属于某个人,请先与那个人确认。 - 如果某个客户端的计算机进入了休眠或断开了 VPN,它在大约 85 秒内仍然显示为
connected。 - 若要释放持有者并接入,请运行
lager uart <net> --force --box <box>。
(locked by another session or the lager uart CLI),说明另一个进程持有该串口。一个打开了该端口并仍在运行的 lager python 脚本就是一例。--force 不会释放那种锁。请停止该脚本,例如运行 lager python --kill-all --box <box>。--sessions 和 --force 选项会获取 Box 锁。如果另一位用户持有 Box 锁,这两个选项都会失败并报出 is locked by。Python 脚本问题
ImportError: No module named 'lager'
ImportError: No module named 'lager'
python 运行了脚本,而不是用 lager python。解决方法: lager Python 库只在 Lager Box 环境中可用。请始终这样运行脚本:python my_script.py。InvalidNetError: Net 'XYZ' not found
InvalidNetError: Net 'XYZ' not found
- 列出可用的 Net:
lager nets --box <box>。 - 检查 Net 名称是否拼写有误。Net 名称区分大小写。
- 如果该 Net 不存在,请用
lager nets tui --box <box>创建它。
[Errno 16] Resource busy,或提到资源忙的 DeviceError
[Errno 16] Resource busy,或提到资源忙的 DeviceError
pyvisa 打开会与它竞争并失败。普通脚本不会遇到这种情况。电源、示波器、电池模拟器、电子负载和太阳能模拟器都是代理到硬件服务的,不会在本地打开。直接导入驱动模块会触发这个失败。您自己在脚本中或通过 docker exec
打开 pyvisa 时,也会触发它。解决方法:- 请通过 Net 来驱动仪器,而不是通过它的驱动模块:
- 用
lager diagnose <net> --box <box>查看当前是谁持有该地址。如果 VISA 部分报告REACHABLE (shared session),说明硬件服务持有它,并跳过了自己的探测。请参阅lager diagnose。 - 如果您要自己打开该仪器,请获取驱动程序所使用的同一个跨进程锁。
脚本运行了,但没有任何输出
脚本运行了,但没有任何输出
- 添加
print()语句,确认脚本确实在执行。 - 用 try/except 包裹您的代码以捕获错误:
- 检查 stderr 输出 —— 来自 Box 的错误在终端中以红色显示。
获取更多帮助
如果以上方法都没有解决您的问题:- 查看 Box 日志: Box 上的服务把日志写在
lager容器内部。对于失败的仪器调用,请读取硬件服务日志:容器中的其他日志是/tmp/lager-debug-service.log、/tmp/lager-python-service.log和/tmp/lager-http-server.log。失败的仪器调用只会向您的脚本返回一行错误,完整的调用栈在日志中。 - 检查 Box 状态:
lager hello --box <box>可以确认 Box 在线并能够响应。 - 提交问题: 请在 GitHub 上报告问题,并附上您的 Box 名称、运行的命令和错误输出。

