Files

3.9 KiB
Raw Permalink Blame History

设备协议范围与资料来源

发现、查询或升级前先运行 python scripts/device_adapter.py capabilities,再按设备实际协议选择路由。该命令不联网;能力清单不代表设备在线或已完成真机升级。

设备协议 已实现的 CLI 操作 升级范围
V1 UDP ff00/ff01 搜索、TCP 2104 身份/原生版本查询、2170 固件下发、指定字段比较 默认 ROM/身份预检;显式执行最多一次 TCP4941/MD5+ROM 下发;同命令code=0后另行回读
V2 UDP EPBP 搜索、TCP EPTP/30101 身份/版本查询、EPFP/4001 传输 默认预检,显式执行后最多一次传包;协议成功后另行回读验收

--protocol v1 或 --protocol v2 放在网络子命令之后;不传仍默认 V2,以兼容既有调用。这不是自动检测。参数和结果见 设备适配器;V1 报文、字段和应答范围见 V1 接口。

配置工具软件的 V2.x 与设备的 V1/V2 协议不是同一个概念。同一 GUI 可以包含多个协议页面。V2 端口拒绝或搜索无响应不能证明 V1 设备离线。已知 V1 时不自动切换 V2;身份冲突时不能默认选第一台。

已核对的资料

2026-10-19,交叉核对用户提供的两份本地原文及源码:

文件 文档修订 SHA-256
v1.md(工厂协议) v1.0.23,2026-08-03 50e8a76c880386e03e173582de3115bc60fd91e1f1ce5f4e8a6b190e4fc8f8b9
固件配置工具及web管理工具接口文档.md V1.9,2019-05-13 e4d373e3ab673add9da93ca4d07b5c8530189df086743ba7fb171757eb2efa10
src.zip 用户提供的 Qt C++ 源码;未提供上游提交版本 1603ece177973ec79a4ea3fb94f2984faf9c82ca3ec7f4eac224003385737fbc

两份原文均定义 TCP4941、设备UDP4942、网络字节序的 U32 CMD + U32 Data长度 + Data,以及无请求Data的 0x5a0e2104。较早文档补充 0x5a0eff00/ff01 搜索。其第21节的升级Data留空,现由源码核实为 MD5小写ASCII32 + ROM,非直接ROM。

原文和源码ZIP保留在提供资料的机器上,不做修改。可分发技能只包含必要协议摘记和来源摘要,避免带入其他配置章节及示例账号。重新取得同名文件时先核对内容及修订,不只按路径判断;运行时不依赖原始ZIP或作者机器路径。

同时核对了“Windows电脑端调试”插件 embedded-app-pc-debug 1.0.0 及上游 tag v1.0.0,提交 cfb586cb5ffc5a69e66cd9adbc57e4ebf725d1d3。该版本仅附 V2 设备脚本,V1 参考是作者机器的外部路径;路径是查找线索,不是团队部署依赖。已有用户资料时先核对,不重复索取已提供的文件。

源码核对位置

以下行号相对上述归档中的 src/,不是本机安装依赖:

位置 核实内容
EapilPanoCHead.h:21–35,160 成功码0、TCP4941、UDP4942、升级命令2170
EpConnection.cpp:116–195,sendTcpFile 大端CMD/Length;全ROM的MD5.toHex();Length=32+ROM大小;MD5文本后跟ROM
EpConnection.cpp:369–411 连续TCP文件字节及本地发送结束,不存在自定义块头
EpConnection.cpp:687–729,readTcpData 同连接读取CMD/Length/JSON
EpPanoCConfigure.cpp:734–754,updatePanoC 检查返回命令为2170、CommonResponse.code=0
json/GetBasicInfoResponse.cpp:57–68 V1字段为dev_type/sn/firmware/hardware/dev_id/dev_ver,无inner/outer映射

源码同时有8940/EPFP的另一种文件通道,不自动推断当前设备支持它。源码的本地发送完成和code=0没有证明设备已完成烧录并启动;CLI保留单次传输、精确身份/摘要门槛和独立回读。V1与inner/outer关系未建立,不能静默替换任务指定字段。具体实现及真机范围见 V1接口。