Skip to content

固件升级

本文档介绍智能门锁的 OTA (Over-The-Air) 固件升级协议,包括固件文件格式、升级流程和相关指令。

固件文件格式

SYD 固件文件采用特定格式封装元数据和固件二进制内容:

<固定前缀 "SYD-BIN-DATA"><4字节元数据JSON长度><元数据JSON><固件二进制数据>

元数据 JSON 结构

json
{
  "platform": "",
  "product": "",
  "hwVersion": "",
  "fwVersion": "",
  "fwSize": 12,
  "fwMd5": "0243b01ed0bebac0985325463b365fe1"
}
字段说明
platform方案号
product机型号
hwVersion硬件版本,如 1.0.0.230828
fwVersion软件版本,如 1.0.0.230828
fwSize固件大小(字节)
fwMd5固件 MD5 校验值

升级流程

APP 端验证流程

javascript
// 读取固件内容
data = readFile(...)

// 1. 验证前缀
if (data[0:11] != 'SYD-BIN-DATA') {
    alert('非SYD固件,请选择正确的文件')
}

// 2. 读取元数据长度
metaLen = parseInt(data[11:14])
if (metaLen < 2 || metaLen > 10240) {
    alert('元数据长度错误')
}

// 3. 解析元数据
metaStr = data[14:14+metaLen]
meta = JSON.parse(metaStr)

// 4. 提取固件二进制数据
binOffset = 14 + metaLen
bin = data[14+metaLen:]

// 5. MD5 校验
if (md5(bin) != meta['fwMd5']) {
    alert('固件MD5校验失败')
}

// 6. 使用 meta 中的数据构造 OTA 协议参数
...

固件包装工具

可使用在线工具打包固件:SYD固件包装工具(HTML 文件,无需服务器)

OTA 升级开始

指令码: 0x30E0

方向: APP → 门锁

加密: SM4 私钥模式

请求消息

字段名称字段类型字段长度字段说明
CmdID整型2指令 ID
LockID字符串40锁 ID
UserID字符串20用户 ID
Platform整型2方案号
Product整型2机型号
HwVersion字符串20硬件版本,如 1.0.0.230828
FwVersion字符串20软件版本,如 1.0.0.230828
FwSize整型4固件大小
FwMD5整型16固件 MD5 值
Token整型4动态口令
AuthCodeLen整型1AuthCode 数据长度
AuthCode字符串变长鉴权码,长度由 AuthCodeLen 指示

应答消息

字段名称字段类型字段长度字段说明
CmdID整型2指令 ID
Token整型4动态口令
Status整型1处理状态

OTA 升级过程

指令码: 0x30E1

方向: APP → 门锁

加密: 明文传输

注意

该指令不加密,使用明文传输。单包数据最大 240 字节,使用 WriteNoRespond 服务。

请求消息

字段名称字段类型字段长度字段说明
CmdID整型2指令 ID
Index整型2数据包序列号
Size整型2数据包大小
Data二进制N数据包数据,N 同 Size(最大 240)

应答消息

字段名称字段类型字段长度字段说明
CmdID整型2指令 ID
Status整型1处理状态

OTA 升级确认

指令码: 0x30E2

方向: 门锁 → APP

加密: SM4 私钥模式

请求消息

字段名称字段类型字段长度字段说明
CmdID整型2指令 ID
Status整型1处理状态
Time整型4当前时间戳

应答消息

无应答。

指令汇总

指令码名称方向加密
0x30E0OTA 升级开始APP → 门锁SM4 私钥模式
0x30E1OTA 升级过程APP → 门锁明文
0x30E2OTA 升级确认门锁 → APPSM4 私钥模式

鑫泓佳智能硬件通信协议文档