接口与本机工具
IsolaRail 的控制面由设备固件、本机 daemon、CLI 和 Web app 共同组成。当前 owner-facing 入口固定为 isolarail CLI;isolarail-devd 是本机服务,不要求普通用户手动管理。
分层结构
默认路径是 isolarail CLI 自动发现或启动 isolarail-devd serve。isolarail-devd web 只在浏览器开发和 same-origin Web hosting 中显式启用。
命名与身份
这些名称由 docs/specs/pw97u-control-plane-alignment/SPEC.md 持有。Web、CLI、README 和 diagnostics 不应重新发明产品名。
USB JSONL
固件通过 USB Serial/JTAG JSONL 暴露基本操作:
infoports.getport.power_setport.replugwifi.getwifi.setwifi.clearreboot
info 响应必须包含设备身份、MAC、固件名、版本和 uptime。companion 用这些字段做身份校验,避免把烧录或控制命令发给无关板子。
推荐的命令语义:
port.power_set 和 port.replug 都必须以 port1..port4 为唯一端口 ID,不接受历史 USB-A / USB-C 或 route 模型。
HTTP / LAN
设备端 HTTP v1 的目标接口包括:
GET /api/v1/healthGET /api/v1/infoGET /api/v1/portsGET /api/v1/ports/{portId}POST /api/v1/ports/{portId}/powerPOST /api/v1/ports/{portId}/actions/replugGET /api/v1/wifiPOST /api/v1/reboot
当前不把设备 HTTP v1 做成账号或云鉴权面。Wi-Fi 写操作仍要求 USB-backed 设备路径。
HTTP v1 的用途是 LAN 可见状态和有限维护动作。它不是默认 daemon transport,也不是云鉴权面。
LAN 上能看到设备,不等于可以写 Wi-Fi 凭据。Wi-Fi 写入必须有 USB-backed 当前设备路径。
isolarail-devd 模式
isolarail-devd 有两个模式:
serve:默认 native IPC daemon,只供本机 CLI/桌面路径使用。web:显式 localhost Web companion,用于浏览器开发和 same-origin Web hosting。
不要把 localhost HTTP 当作默认 daemon transport。Web runtime 也不得扫描 localhost 端口;可用 origin 必须来自同源 bootstrap 或显式 DEVD_ORIGINS。
普通用户不需要先手动启动 daemon。CLI 负责查找已运行实例,必要时启动 serve 模式。
CLI 选择器
CLI 区分临时设备和已保存硬件:
--device <device-id>:当前已连接的 USB 临时目标。--hardware <saved-id>:保存过的硬件 profile。
Wi-Fi 写入和清除要求 --device 或 USB-backed --hardware。--url 和 Wi-Fi/LAN saved hardware 保持只读。
选择器决策表:
多块设备同时在线时,不要省略 selector。状态变更命令应总是让目标可审计。
常用命令
只读检查:
设备动作:
诊断:
变更状态的命令需要串行执行。companion 会对同一串口路径做互斥,重叠请求可能返回 device busy。
诊断导出内容
just diagnostics-export 应聚合当前设备的:
statusportswifi- 最近 Local USB serial session traces
- daemon 看到的设备身份与选择器信息
导出目标是“复现一块板当时处于什么状态”,不是只保存最后一条错误消息。
Web app 边界
Web app 统一仲裁三类通道:
- Wi-Fi / LAN
- Web Serial
- Local USB bridge
它不扫描 localhost,不把用户引向隐式端口发现,也不绕过 isolarail-devd 的身份校验。
Web runtime 的通道仲裁规则:
- Wi-Fi / LAN、Web Serial、Local USB bridge 可能同时可用。
- 同一设备不能因为通道不同而重复出现。
- 最近成功通道优先;当前通道失效时切到其它可用通道。
- unsupported、busy、offline、USB-only 场景必须明确显示后续动作。
安全边界
- 烧录、reset、monitor 走
isolarail/isolarail-devd路径,先做固件身份校验。 - Wi-Fi 写入只能走 USB-backed 路径。
port.replug是电源动作,不伪装成 USB 数据断开。- localhost HTTP 不是默认 IPC;默认 daemon 不能因为 CLI 操作而暴露浏览器 HTTP 面。
- 状态变更要串行执行,避免并发写导致实际硬件状态和 UI 状态分叉。
参考
README.mddocs/specs/pw97u-control-plane-alignment/SPEC.mddocs/specs/q9d7h-cli-devd-flash-migration/SPEC.md