Skip to main content
通过 Lager CLI 控制可编程 USB 集线器的端口,用于电源管理和设备连接。

语法

全局选项

参数

命令

cycle 选项


用法

列出 USB Net

不带 Net 名称调用时,列出 Box 上的全部 USB Net:
输出:

控制 USB 端口的供电

示例:

对设备断电再上电

cycle 切断电源、等待,然后恢复供电。之后它最多等待 5 秒,等设备重新出现:
如果该端口上本来就没有设备,它会如实说明,而不会声称设备已经回来:
还可能出现另外两种结果:
以上四种结果 cycle 都以 0 退出,包括设备没有回来的那一种。如果脚本依赖该设备,它必须检查输出文本。
cycle 如何判断设备已经回来,取决于集线器:
  • Acroname 和 YKUSH 集线器: Box 在切断电源之前读取一次内核 USB 拓扑,在端口断电期间再读一次。离开总线的设备必须重新回到总线上。
  • Plugable 扩展坞: Box 监视集线器为该端口报告的连接状态。
在 Plugable 扩展坞上,只要集线器报告设备重新连接,cycle 就会返回,这只需要几百毫秒。Linux 在那一刻并没有完成重新枚举:设备节点或 /dev/ttyUSB* 可能仍然不存在,立即读取 /sys 也仍会得到断电前的值。在 Acroname 和 YKUSH 集线器上,cycle 在设备重新回到内核 USB 拓扑时才返回。在任何集线器上,请在下一步打开设备之前先等待设备节点出现。 cycle 返回并不表示设备已经就绪。
“该端口上没有设备”不等于”该端口未被使用”。集线器只能看到会拉高数据线的设备。 只供电的线缆可以给被测设备供电,却不建立数据连接,因此它看起来和空插座完全一样。该端口仍然被切断并恢复了供电。请通过被测设备自身的行为来确认:它的 UART,或者一次电流测量。 请优先使用它,而不是用脚本拼出 disable/sleep/enable,原因如下:
  • 它在每条失败路径上都会恢复供电,因此中途失败的命令不会把端口留在断电状态。
  • 它会报告设备是否真的回来了,您不必猜测。
  • 在 Plugable 扩展坞上,它在整个过程中持有该集线器,因此在端口断电期间没有别的东西能切换它。在 Acroname 和 YKUSH 集线器上,它会打开集线器两次,断电期间其他进程仍可能切换该端口。
--off-time 默认为 1 秒,明显高于在真实硬件上测到的最慢冷启动时间。 断电时间过短才是真正要紧的失败方式:设备的电源轨没有完全放电,于是设备是热启动的,但看起来却像是被复位过。对于体电容较大的设备,请调高断电时间。低于 0.5 秒或高于 10 秒的值会被拒绝。
在 Plugable 扩展坞上,已断电的端口仍然出现在 lsusb 中,它的 /dev/ttyUSB* 也仍然存在。 端口断电期间集线器不会发出变化通知,因此在电源恢复之前,内核根本不会处理这次断开。对这类端口执行 disable 时,输出中会说明这一点。请不要用”设备是不是消失了” 来判断端口是否已断电 —— 这个判断在两个方向上都是错的。请使用 state,它读取的是集线器自己的电源位。

恢复被留在断电状态的端口

如果某条命令在把端口断电之后、恢复供电之前被中断,recover 可以恢复供电:
在 lager 能识别整台设备的集线器上(例如 Plugable 扩展坞), recover 会重新为它的每个端口供电。您通常在”有东西没电了但不清楚是哪个”时用到 recover

读取端口状态(只读)

state 报告某个端口当前是打开还是关闭,并不改变它。该值是从集线器硬件实时读取的,因此它总是反映真实的端口状态 —— 不做任何缓存或存储:
它是 toggle 的只读对应命令:用 state 查看端口,用 toggle 翻转它(toggle 也会报告翻转后的状态)。
toggle 会报告翻转后的状态,这样您就能知道它翻到了哪一边:
enabledisable 则明确确认所做的操作(USB port 'USB1' enabled)。

示例


受支持的硬件

Plugable 扩展坞上哪些端口可以切换供电、哪些不可以,请参阅 受支持的仪器

说明

  • Net 名称(例如 USB1CAM_USB)指的是您实验台上配置的 USB 端口
  • 命令区分大小写,请用小写输入(enable,不是 ENABLE
  • 适合在测试过程中对 USB 设备断电再上电
  • USB 集线器必须连接到 Box 并配置为仪器
  • 默认 Net 可以用 lager defaults add --usb-net 设置
  • lager nets add <name> usb <channel> <address> 创建 USB Net