{
  "schema": 1,
  "product": "WM_CH592_GW",
  "latest": "WM_CH592_GW_V4.0.95_20260923135343.bin",
  "latestHex": "WM_CH592_GW_V4.0.95_20260923135343.hex",
  "releases": [
    {
      "fileName": "WM_CH592_GW_V4.0.95_20260923135343.bin",
      "hexFileName": "WM_CH592_GW_V4.0.95_20260923135343.hex",
      "version": "4.0.95",
      "buildTime": "2026-09-23T13:53:43+08:00",
      "sizeBytes": 140752,
      "sha256": "1bbb907e958ba288cab6aed0e2d591e99fc6136926bd81cf764293f4b3ffa81a",
      "hexSizeBytes": 784989,
      "hexSha256": "68e00979a9a485a5496dce3addfbd106c082bc08ac477d7be28f0e3e6c5e562b",
      "changelog": [
        "蓝牙断线后重新广播：先清连接标志再延时打开，避免第二次扫描不到",
        "取消上电/复位自动配网（APP_FACTORY_SELF_PROV=0）；已入网仍从 NVS 恢复，入网改走 BLE 0xA1",
        "出厂 NetKey 改为 8C3E9F7A2D1B6C4A5E8F3A2B7C6D5E4F；NVS 密钥不符则重置自配网",
        "单播改用 MAC 全 6 字节哈希，避免后三字节相同的芯片撞成同一地址",
        "SEQ 水印落盘：重启/自配网后跳号，避免网关 RPL 把包当重放丢掉",
        "网关 SET TX 入队失败回 ERR；空口重试；垫子 SEASKY 应答经 Mesh 回 USB",
        "网关 USB 可将 SEASKY SET TX=WAVE|BASE ADDR=xxxx 发到指定传感器",
        "换角色后若 NVS 单播与角色不符则重置并自配网；出厂默认宏改回传感器",
        "B55B 改走 App_IsMeshGateway，去掉从未定义的旧 GATEWAY 宏",
        "关闭纯 BLE 编译，网关重新链入 Mesh 并出厂自配网",
        "独立网关（仅 CH592）本机完整回答 SEASKY ID，不再依赖 STM32",
        "网关回答 SEASKY ID MODEL=WM-G300-GW，发版拆成 SENSOR / GW 两套包",
        "新增 F77F / SEASKY CDC CFG? 查询 CH592 全部配置（角色/MAC/波特率/Relay/密钥），旧 FFE1 schema 0x02 保持兼容",
        "传感器连发 C55C 卡死：忙则丢包不再 trans_reset、热路径去掉 PRINT、叶子关 Relay、SEQ 落盘改为 3600",
        "一份固件兼顾传感器/网关：APP_MESH_ROLE_GATEWAY=1 时地址 0x0014，C55C 收包转 USB CDC",
        "出厂写死 NetKey，未入网时按 MAC 映射单播地址自动自配网",
        "MESH?/F66F/FFE1 的网络密钥改为从协议栈读取，重启后也能查到，不再另存 EEPROM 副本",
        "未配网蓝牙广播间隔改为 100ms；配网成功后关闭 GAP 广播并断开 BLE（调试常开除外）",
        "CH592A 写密钥用 256 字节擦除会死机，改为 4K 对齐",
        "新增 USB 命令 SEASKY CDC MESH? 查 Mesh 链路自检信息（地址/密钥/绑定/发送计数/配网返回值）",
        "开机顺序改回参考工程：先 App_Init 再 USB，去掉 Boot_UsbPump（它造成 1.6s/4s 复位周期）",
        "配网后卡死：关掉 Mesh Settings 落盘；已入网 C55C 不再灌 FFE4；不再排队改名"
      ]
    },
    {
      "fileName": "WM_CH592_GW_V4.0.92_20260922155627.bin",
      "hexFileName": "WM_CH592_GW_V4.0.92_20260922155627.hex",
      "version": "4.0.92",
      "buildTime": "2026-09-22T15:56:27+08:00",
      "sizeBytes": 140876,
      "sha256": "1c2a6676f7d771baa5930e26a6c2a532d13f5c05bd0212c7161e21dbab58da97",
      "hexSizeBytes": 785341,
      "hexSha256": "ff7aa1c6f30008941bb326fe42a87c5af3b167d781e3e5d7f6622dd123b35e48",
      "changelog": [
        "出厂 NetKey 改为 8C3E9F7A2D1B6C4A5E8F3A2B7C6D5E4F；NVS 密钥不符则重置自配网",
        "单播改用 MAC 全 6 字节哈希，避免后三字节相同的芯片撞成同一地址",
        "SEQ 水印落盘：重启/自配网后跳号，避免网关 RPL 把包当重放丢掉",
        "网关 SET TX 入队失败回 ERR；空口重试；垫子 SEASKY 应答经 Mesh 回 USB",
        "网关 USB 可将 SEASKY SET TX=WAVE|BASE ADDR=xxxx 发到指定传感器",
        "换角色后若 NVS 单播与角色不符则重置并自配网；出厂默认宏改回传感器",
        "B55B 改走 App_IsMeshGateway，去掉从未定义的旧 GATEWAY 宏",
        "关闭纯 BLE 编译，网关重新链入 Mesh 并出厂自配网",
        "独立网关（仅 CH592）本机完整回答 SEASKY ID，不再依赖 STM32",
        "网关回答 SEASKY ID MODEL=WM-G300-GW，发版拆成 SENSOR / GW 两套包",
        "新增 F77F / SEASKY CDC CFG? 查询 CH592 全部配置（角色/MAC/波特率/Relay/密钥），旧 FFE1 schema 0x02 保持兼容",
        "传感器连发 C55C 卡死：忙则丢包不再 trans_reset、热路径去掉 PRINT、叶子关 Relay、SEQ 落盘改为 3600",
        "一份固件兼顾传感器/网关：APP_MESH_ROLE_GATEWAY=1 时地址 0x0014，C55C 收包转 USB CDC",
        "出厂写死 NetKey，未入网时按 MAC 映射单播地址自动自配网",
        "MESH?/F66F/FFE1 的网络密钥改为从协议栈读取，重启后也能查到，不再另存 EEPROM 副本",
        "未配网蓝牙广播间隔改为 100ms；配网成功后关闭 GAP 广播并断开 BLE（调试常开除外）",
        "CH592A 写密钥用 256 字节擦除会死机，改为 4K 对齐",
        "新增 USB 命令 SEASKY CDC MESH? 查 Mesh 链路自检信息（地址/密钥/绑定/发送计数/配网返回值）",
        "开机顺序改回参考工程：先 App_Init 再 USB，去掉 Boot_UsbPump（它造成 1.6s/4s 复位周期）",
        "配网后卡死：关掉 Mesh Settings 落盘；已入网 C55C 不再灌 FFE4；不再排队改名"
      ]
    },
    {
      "fileName": "WM_CH592_GW_V4.0.87_20260816230741.bin",
      "hexFileName": "WM_CH592_GW_V4.0.87_20260816230741.hex",
      "version": "4.0.87",
      "buildTime": "2026-08-16T23:07:41+08:00",
      "sizeBytes": 140832,
      "sha256": "8a3a20841d0649b2fd267d2f8c212540f91eaec0b9aacc9bf0e8c551d11aeabf",
      "hexSizeBytes": 785214,
      "hexSha256": "f0d5923bce0b114d359585dc481a6d596399d2b61a3621cb873d44a6229e9e59",
      "changelog": [
        "SEQ 水印落盘：重启/自配网后跳号，避免网关 RPL 把包当重放丢掉",
        "网关 SET TX 入队失败回 ERR；空口重试；垫子 SEASKY 应答经 Mesh 回 USB",
        "网关 USB 可将 SEASKY SET TX=WAVE|BASE ADDR=xxxx 发到指定传感器",
        "换角色后若 NVS 单播与角色不符则重置并自配网；出厂默认宏改回传感器",
        "B55B 改走 App_IsMeshGateway，去掉从未定义的旧 GATEWAY 宏",
        "关闭纯 BLE 编译，网关重新链入 Mesh 并出厂自配网",
        "独立网关（仅 CH592）本机完整回答 SEASKY ID，不再依赖 STM32",
        "网关回答 SEASKY ID MODEL=WM-G300-GW，发版拆成 SENSOR / GW 两套包",
        "新增 F77F / SEASKY CDC CFG? 查询 CH592 全部配置（角色/MAC/波特率/Relay/密钥），旧 FFE1 schema 0x02 保持兼容",
        "传感器连发 C55C 卡死：忙则丢包不再 trans_reset、热路径去掉 PRINT、叶子关 Relay、SEQ 落盘改为 3600",
        "一份固件兼顾传感器/网关：APP_MESH_ROLE_GATEWAY=1 时地址 0x0014，C55C 收包转 USB CDC",
        "出厂写死 NetKey，未入网时按 MAC 映射单播地址自动自配网",
        "MESH?/F66F/FFE1 的网络密钥改为从协议栈读取，重启后也能查到，不再另存 EEPROM 副本",
        "未配网蓝牙广播间隔改为 100ms；配网成功后关闭 GAP 广播并断开 BLE（调试常开除外）",
        "CH592A 写密钥用 256 字节擦除会死机，改为 4K 对齐",
        "新增 USB 命令 SEASKY CDC MESH? 查 Mesh 链路自检信息（地址/密钥/绑定/发送计数/配网返回值）",
        "开机顺序改回参考工程：先 App_Init 再 USB，去掉 Boot_UsbPump（它造成 1.6s/4s 复位周期）",
        "配网后卡死：关掉 Mesh Settings 落盘；已入网 C55C 不再灌 FFE4；不再排队改名"
      ]
    },
    {
      "fileName": "WM_CH592_GW_V4.0.84_20260816203924.bin",
      "hexFileName": "WM_CH592_GW_V4.0.84_20260816203924.hex",
      "version": "4.0.84",
      "buildTime": "2026-08-16T20:39:24+08:00",
      "sizeBytes": 139864,
      "sha256": "3c9acba9fe16e6c846990734cac04de7b882ddb8e918ceb8bf957afced593124",
      "hexSizeBytes": 782498,
      "hexSha256": "fe5717a831e38d70a7d1148afef2e8dcaec3ed96c09078bcb4377c1956012a8a",
      "changelog": [
        "网关 SET TX 入队失败回 ERR；空口重试；垫子 SEASKY 应答经 Mesh 回 USB",
        "网关 USB 可将 SEASKY SET TX=WAVE|BASE ADDR=xxxx 发到指定传感器",
        "换角色后若 NVS 单播与角色不符则重置并自配网；出厂默认宏改回传感器",
        "B55B 改走 App_IsMeshGateway，去掉从未定义的旧 GATEWAY 宏",
        "关闭纯 BLE 编译，网关重新链入 Mesh 并出厂自配网",
        "独立网关（仅 CH592）本机完整回答 SEASKY ID，不再依赖 STM32",
        "网关回答 SEASKY ID MODEL=WM-G300-GW，发版拆成 SENSOR / GW 两套包",
        "新增 F77F / SEASKY CDC CFG? 查询 CH592 全部配置（角色/MAC/波特率/Relay/密钥），旧 FFE1 schema 0x02 保持兼容",
        "传感器连发 C55C 卡死：忙则丢包不再 trans_reset、热路径去掉 PRINT、叶子关 Relay、SEQ 落盘改为 3600",
        "一份固件兼顾传感器/网关：APP_MESH_ROLE_GATEWAY=1 时地址 0x0014，C55C 收包转 USB CDC",
        "出厂写死 NetKey，未入网时按 MAC 映射单播地址自动自配网",
        "MESH?/F66F/FFE1 的网络密钥改为从协议栈读取，重启后也能查到，不再另存 EEPROM 副本",
        "未配网蓝牙广播间隔改为 100ms；配网成功后关闭 GAP 广播并断开 BLE（调试常开除外）",
        "CH592A 写密钥用 256 字节擦除会死机，改为 4K 对齐",
        "新增 USB 命令 SEASKY CDC MESH? 查 Mesh 链路自检信息（地址/密钥/绑定/发送计数/配网返回值）",
        "开机顺序改回参考工程：先 App_Init 再 USB，去掉 Boot_UsbPump（它造成 1.6s/4s 复位周期）",
        "配网后卡死：关掉 Mesh Settings 落盘；已入网 C55C 不再灌 FFE4；不再排队改名"
      ]
    },
    {
      "fileName": "WM_CH592_GW_V4.0.83_20260816180947.bin",
      "hexFileName": "WM_CH592_GW_V4.0.83_20260816180947.hex",
      "version": "4.0.83",
      "buildTime": "2026-08-16T18:09:47+08:00",
      "sizeBytes": 139864,
      "sha256": "c38db8c90a8d7baac8bb3cf669f97674e90ac68865721f0bbe652c6d0d5bf557",
      "hexSizeBytes": 782498,
      "hexSha256": "c9995f4c08ed2b9b0c6b8e230cf54fa9659d5df93a2254871ba15b76ef38df9a",
      "changelog": [
        "网关 SET TX 入队失败回 ERR；空口重试；垫子 SEASKY 应答经 Mesh 回 USB",
        "网关 USB 可将 SEASKY SET TX=WAVE|BASE ADDR=xxxx 发到指定传感器",
        "换角色后若 NVS 单播与角色不符则重置并自配网；出厂默认宏改回传感器",
        "B55B 改走 App_IsMeshGateway，去掉从未定义的旧 GATEWAY 宏",
        "关闭纯 BLE 编译，网关重新链入 Mesh 并出厂自配网",
        "独立网关（仅 CH592）本机完整回答 SEASKY ID，不再依赖 STM32",
        "网关回答 SEASKY ID MODEL=WM-G300-GW，发版拆成 SENSOR / GW 两套包",
        "新增 F77F / SEASKY CDC CFG? 查询 CH592 全部配置（角色/MAC/波特率/Relay/密钥），旧 FFE1 schema 0x02 保持兼容",
        "传感器连发 C55C 卡死：忙则丢包不再 trans_reset、热路径去掉 PRINT、叶子关 Relay、SEQ 落盘改为 3600",
        "一份固件兼顾传感器/网关：APP_MESH_ROLE_GATEWAY=1 时地址 0x0014，C55C 收包转 USB CDC",
        "出厂写死 NetKey，未入网时按 MAC 映射单播地址自动自配网",
        "MESH?/F66F/FFE1 的网络密钥改为从协议栈读取，重启后也能查到，不再另存 EEPROM 副本",
        "未配网蓝牙广播间隔改为 100ms；配网成功后关闭 GAP 广播并断开 BLE（调试常开除外）",
        "CH592A 写密钥用 256 字节擦除会死机，改为 4K 对齐",
        "新增 USB 命令 SEASKY CDC MESH? 查 Mesh 链路自检信息（地址/密钥/绑定/发送计数/配网返回值）",
        "开机顺序改回参考工程：先 App_Init 再 USB，去掉 Boot_UsbPump（它造成 1.6s/4s 复位周期）",
        "配网后卡死：关掉 Mesh Settings 落盘；已入网 C55C 不再灌 FFE4；不再排队改名"
      ]
    },
    {
      "fileName": "WM_CH592_GW_V4.0.81_20260816172518.bin",
      "hexFileName": "WM_CH592_GW_V4.0.81_20260816172518.hex",
      "version": "4.0.81",
      "buildTime": "2026-08-16T17:25:18+08:00",
      "sizeBytes": 141544,
      "sha256": "c8228f2d19bdedc283c1ec4990b5eb4e165ff7e181108ac118c341623e9776da",
      "hexSizeBytes": 787223,
      "hexSha256": "92da3c7874a33d0fe4edc7a8db634ed74f6afa5134eca780211e15d41b57122b",
      "changelog": [
        "网关 USB：SEASKY CDC TX=WAVE|BASE ADDR=xxxx 经 Mesh 切换指定传感器上报协议",
        "关闭纯 BLE 编译，网关重新链入 Mesh 并出厂自配网",
        "独立网关（仅 CH592）本机完整回答 SEASKY ID，不再依赖 STM32",
        "网关回答 SEASKY ID MODEL=WM-G300-GW，发版拆成 SENSOR / GW 两套包",
        "新增 F77F / SEASKY CDC CFG? 查询 CH592 全部配置（角色/MAC/波特率/Relay/密钥），旧 FFE1 schema 0x02 保持兼容",
        "传感器连发 C55C 卡死：忙则丢包不再 trans_reset、热路径去掉 PRINT、叶子关 Relay、SEQ 落盘改为 3600",
        "一份固件兼顾传感器/网关：APP_MESH_ROLE_GATEWAY=1 时地址 0x0014，C55C 收包转 USB CDC",
        "出厂写死 NetKey，未入网时按 MAC 映射单播地址自动自配网",
        "MESH?/F66F/FFE1 的网络密钥改为从协议栈读取，重启后也能查到，不再另存 EEPROM 副本",
        "未配网蓝牙广播间隔改为 100ms；配网成功后关闭 GAP 广播并断开 BLE（调试常开除外）",
        "CH592A 写密钥用 256 字节擦除会死机，改为 4K 对齐",
        "新增 USB 命令 SEASKY CDC MESH? 查 Mesh 链路自检信息（地址/密钥/绑定/发送计数/配网返回值）",
        "开机顺序改回参考工程：先 App_Init 再 USB，去掉 Boot_UsbPump（它造成 1.6s/4s 复位周期）",
        "配网后卡死：关掉 Mesh Settings 落盘；已入网 C55C 不再灌 FFE4；不再排队改名"
      ]
    },
    {
      "fileName": "WM_CH592_GW_V4.0.81_20260816173601.bin",
      "hexFileName": "WM_CH592_GW_V4.0.81_20260816173601.hex",
      "version": "4.0.81",
      "buildTime": "2026-08-16T17:36:02+08:00",
      "sizeBytes": 141700,
      "sha256": "bb596440342f58cb88994564480fa0da7723d505a7c6bde44adfbec58436d1fb",
      "hexSizeBytes": 787665,
      "hexSha256": "573b3c26bb4902d6bac743b56e78d83bc83392b4ca6767388b92b4c1da91808f",
      "changelog": [
        "网关 CDC TX 增加 DBG/PING，便于排查 USB→Mesh→传感器→STM32",
        "网关 USB：SEASKY CDC TX=WAVE|BASE ADDR=xxxx 经 Mesh 切换指定传感器上报协议",
        "关闭纯 BLE 编译，网关重新链入 Mesh 并出厂自配网",
        "独立网关（仅 CH592）本机完整回答 SEASKY ID，不再依赖 STM32",
        "网关回答 SEASKY ID MODEL=WM-G300-GW，发版拆成 SENSOR / GW 两套包",
        "新增 F77F / SEASKY CDC CFG? 查询 CH592 全部配置（角色/MAC/波特率/Relay/密钥），旧 FFE1 schema 0x02 保持兼容",
        "传感器连发 C55C 卡死：忙则丢包不再 trans_reset、热路径去掉 PRINT、叶子关 Relay、SEQ 落盘改为 3600",
        "一份固件兼顾传感器/网关：APP_MESH_ROLE_GATEWAY=1 时地址 0x0014，C55C 收包转 USB CDC",
        "出厂写死 NetKey，未入网时按 MAC 映射单播地址自动自配网",
        "MESH?/F66F/FFE1 的网络密钥改为从协议栈读取，重启后也能查到，不再另存 EEPROM 副本",
        "未配网蓝牙广播间隔改为 100ms；配网成功后关闭 GAP 广播并断开 BLE（调试常开除外）",
        "CH592A 写密钥用 256 字节擦除会死机，改为 4K 对齐",
        "新增 USB 命令 SEASKY CDC MESH? 查 Mesh 链路自检信息（地址/密钥/绑定/发送计数/配网返回值）",
        "开机顺序改回参考工程：先 App_Init 再 USB，去掉 Boot_UsbPump（它造成 1.6s/4s 复位周期）",
        "配网后卡死：关掉 Mesh Settings 落盘；已入网 C55C 不再灌 FFE4；不再排队改名"
      ]
    },
    {
      "fileName": "WM_CH592_GW_V4.0.81_20260816180844.bin",
      "hexFileName": "WM_CH592_GW_V4.0.81_20260816180844.hex",
      "version": "4.0.81",
      "buildTime": "2026-08-16T18:08:44+08:00",
      "sizeBytes": 139864,
      "sha256": "11724cfb1b2d00f6e24c507e15607e732e78d1de6a2bc10b017aa8bbecd535c2",
      "hexSizeBytes": 782498,
      "hexSha256": "a8e140956a2aa33723f03a408887155281d3eb5727630c340512858c340cbb99",
      "changelog": [
        "网关 SET TX 入队失败回 ERR；空口重试；垫子 SEASKY 应答经 Mesh 回 USB",
        "网关 USB 可将 SEASKY SET TX=WAVE|BASE ADDR=xxxx 发到指定传感器",
        "换角色后若 NVS 单播与角色不符则重置并自配网；出厂默认宏改回传感器",
        "B55B 改走 App_IsMeshGateway，去掉从未定义的旧 GATEWAY 宏",
        "关闭纯 BLE 编译，网关重新链入 Mesh 并出厂自配网",
        "独立网关（仅 CH592）本机完整回答 SEASKY ID，不再依赖 STM32",
        "网关回答 SEASKY ID MODEL=WM-G300-GW，发版拆成 SENSOR / GW 两套包",
        "新增 F77F / SEASKY CDC CFG? 查询 CH592 全部配置（角色/MAC/波特率/Relay/密钥），旧 FFE1 schema 0x02 保持兼容",
        "传感器连发 C55C 卡死：忙则丢包不再 trans_reset、热路径去掉 PRINT、叶子关 Relay、SEQ 落盘改为 3600",
        "一份固件兼顾传感器/网关：APP_MESH_ROLE_GATEWAY=1 时地址 0x0014，C55C 收包转 USB CDC",
        "出厂写死 NetKey，未入网时按 MAC 映射单播地址自动自配网",
        "MESH?/F66F/FFE1 的网络密钥改为从协议栈读取，重启后也能查到，不再另存 EEPROM 副本",
        "未配网蓝牙广播间隔改为 100ms；配网成功后关闭 GAP 广播并断开 BLE（调试常开除外）",
        "CH592A 写密钥用 256 字节擦除会死机，改为 4K 对齐",
        "新增 USB 命令 SEASKY CDC MESH? 查 Mesh 链路自检信息（地址/密钥/绑定/发送计数/配网返回值）",
        "开机顺序改回参考工程：先 App_Init 再 USB，去掉 Boot_UsbPump（它造成 1.6s/4s 复位周期）",
        "配网后卡死：关掉 Mesh Settings 落盘；已入网 C55C 不再灌 FFE4；不再排队改名"
      ]
    },
    {
      "fileName": "WM_CH592_GW_V4.0.79_20260816175926.bin",
      "hexFileName": "WM_CH592_GW_V4.0.79_20260816175926.hex",
      "version": "4.0.79",
      "buildTime": "2026-08-16T17:59:26+08:00",
      "sizeBytes": 139696,
      "sha256": "d5d5840b82d8bec8a3dd5dda508110ea0d7c75ebdfb923b51fa442081969dfea",
      "hexSizeBytes": 782019,
      "hexSha256": "9250fe484b1beed724473f64a1089f5838c2f352120323e873076eb8ad67f109",
      "changelog": [
        "网关 USB 可将 SEASKY SET TX=WAVE|BASE ADDR=xxxx 发到指定传感器",
        "换角色后若 NVS 单播与角色不符则重置并自配网；出厂默认宏改回传感器",
        "B55B 改走 App_IsMeshGateway，去掉从未定义的旧 GATEWAY 宏",
        "关闭纯 BLE 编译，网关重新链入 Mesh 并出厂自配网",
        "独立网关（仅 CH592）本机完整回答 SEASKY ID，不再依赖 STM32",
        "网关回答 SEASKY ID MODEL=WM-G300-GW，发版拆成 SENSOR / GW 两套包",
        "新增 F77F / SEASKY CDC CFG? 查询 CH592 全部配置（角色/MAC/波特率/Relay/密钥），旧 FFE1 schema 0x02 保持兼容",
        "传感器连发 C55C 卡死：忙则丢包不再 trans_reset、热路径去掉 PRINT、叶子关 Relay、SEQ 落盘改为 3600",
        "一份固件兼顾传感器/网关：APP_MESH_ROLE_GATEWAY=1 时地址 0x0014，C55C 收包转 USB CDC",
        "出厂写死 NetKey，未入网时按 MAC 映射单播地址自动自配网",
        "MESH?/F66F/FFE1 的网络密钥改为从协议栈读取，重启后也能查到，不再另存 EEPROM 副本",
        "未配网蓝牙广播间隔改为 100ms；配网成功后关闭 GAP 广播并断开 BLE（调试常开除外）",
        "CH592A 写密钥用 256 字节擦除会死机，改为 4K 对齐",
        "新增 USB 命令 SEASKY CDC MESH? 查 Mesh 链路自检信息（地址/密钥/绑定/发送计数/配网返回值）",
        "开机顺序改回参考工程：先 App_Init 再 USB，去掉 Boot_UsbPump（它造成 1.6s/4s 复位周期）",
        "配网后卡死：关掉 Mesh Settings 落盘；已入网 C55C 不再灌 FFE4；不再排队改名"
      ]
    },
    {
      "fileName": "WM_CH592_GW_V4.0.78_20260816171847.bin",
      "hexFileName": "WM_CH592_GW_V4.0.78_20260816171847.hex",
      "version": "4.0.78",
      "buildTime": "2026-08-16T17:18:47+08:00",
      "sizeBytes": 139472,
      "sha256": "14c6985901edf52bd7fc0b18660579afdc3cf295d29a3e12a3b4a8640c1734a9",
      "hexSizeBytes": 781389,
      "hexSha256": "9361fb0e556b65e9ab65b591585ea8fc5ebd2d3852cc9d5261e45734664ab38a",
      "changelog": [
        "网关 USB：SEASKY CDC TX=WAVE|BASE ADDR=xxxx 经 Mesh 切换指定传感器上报协议",
        "关闭纯 BLE 编译，网关重新链入 Mesh 并出厂自配网",
        "独立网关（仅 CH592）本机完整回答 SEASKY ID，不再依赖 STM32",
        "网关回答 SEASKY ID MODEL=WM-G300-GW，发版拆成 SENSOR / GW 两套包",
        "新增 F77F / SEASKY CDC CFG? 查询 CH592 全部配置（角色/MAC/波特率/Relay/密钥），旧 FFE1 schema 0x02 保持兼容",
        "传感器连发 C55C 卡死：忙则丢包不再 trans_reset、热路径去掉 PRINT、叶子关 Relay、SEQ 落盘改为 3600",
        "一份固件兼顾传感器/网关：APP_MESH_ROLE_GATEWAY=1 时地址 0x0014，C55C 收包转 USB CDC",
        "出厂写死 NetKey，未入网时按 MAC 映射单播地址自动自配网",
        "MESH?/F66F/FFE1 的网络密钥改为从协议栈读取，重启后也能查到，不再另存 EEPROM 副本",
        "未配网蓝牙广播间隔改为 100ms；配网成功后关闭 GAP 广播并断开 BLE（调试常开除外）",
        "CH592A 写密钥用 256 字节擦除会死机，改为 4K 对齐",
        "新增 USB 命令 SEASKY CDC MESH? 查 Mesh 链路自检信息（地址/密钥/绑定/发送计数/配网返回值）",
        "开机顺序改回参考工程：先 App_Init 再 USB，去掉 Boot_UsbPump（它造成 1.6s/4s 复位周期）",
        "配网后卡死：关掉 Mesh Settings 落盘；已入网 C55C 不再灌 FFE4；不再排队改名"
      ]
    },
    {
      "fileName": "WM_CH592_GW_V4.0.78_20260816172942.bin",
      "hexFileName": "WM_CH592_GW_V4.0.78_20260816172942.hex",
      "version": "4.0.78",
      "buildTime": "2026-08-16T17:29:42+08:00",
      "sizeBytes": 140892,
      "sha256": "d4acb8c582d37a856c9dc88dba07b30d25370f6c6903ebaebedfd1b97af060df",
      "hexSizeBytes": 785386,
      "hexSha256": "f757a81555dc916ccbd0a85cd38afaa4e36c7fb18120f73d3b21388123a034c7",
      "changelog": [
        "网关 CDC TX 增加 DBG/PING，便于排查 USB→Mesh→传感器→STM32",
        "网关 USB：SEASKY CDC TX=WAVE|BASE ADDR=xxxx 经 Mesh 切换指定传感器上报协议",
        "关闭纯 BLE 编译，网关重新链入 Mesh 并出厂自配网",
        "独立网关（仅 CH592）本机完整回答 SEASKY ID，不再依赖 STM32",
        "网关回答 SEASKY ID MODEL=WM-G300-GW，发版拆成 SENSOR / GW 两套包",
        "新增 F77F / SEASKY CDC CFG? 查询 CH592 全部配置（角色/MAC/波特率/Relay/密钥），旧 FFE1 schema 0x02 保持兼容",
        "传感器连发 C55C 卡死：忙则丢包不再 trans_reset、热路径去掉 PRINT、叶子关 Relay、SEQ 落盘改为 3600",
        "一份固件兼顾传感器/网关：APP_MESH_ROLE_GATEWAY=1 时地址 0x0014，C55C 收包转 USB CDC",
        "出厂写死 NetKey，未入网时按 MAC 映射单播地址自动自配网",
        "MESH?/F66F/FFE1 的网络密钥改为从协议栈读取，重启后也能查到，不再另存 EEPROM 副本",
        "未配网蓝牙广播间隔改为 100ms；配网成功后关闭 GAP 广播并断开 BLE（调试常开除外）",
        "CH592A 写密钥用 256 字节擦除会死机，改为 4K 对齐",
        "新增 USB 命令 SEASKY CDC MESH? 查 Mesh 链路自检信息（地址/密钥/绑定/发送计数/配网返回值）",
        "开机顺序改回参考工程：先 App_Init 再 USB，去掉 Boot_UsbPump（它造成 1.6s/4s 复位周期）",
        "配网后卡死：关掉 Mesh Settings 落盘；已入网 C55C 不再灌 FFE4；不再排队改名"
      ]
    },
    {
      "fileName": "WM_CH592_GW_V4.0.78_20260816175542.bin",
      "hexFileName": "WM_CH592_GW_V4.0.78_20260816175542.hex",
      "version": "4.0.78",
      "buildTime": "2026-08-16T17:55:42+08:00",
      "sizeBytes": 139696,
      "sha256": "3b1baabf56e296287b6943c9b46ef07d9e42bb561937d319859cc7d73aadd0fc",
      "hexSizeBytes": 782019,
      "hexSha256": "15ffc65be6b517d28d1a56f557951db5ae5323180783822f59a28107d5a036ca",
      "changelog": [
        "网关 USB 可将 SEASKY SET TX=WAVE|BASE ADDR=xxxx 发到指定传感器",
        "换角色后若 NVS 单播与角色不符则重置并自配网；出厂默认宏改回传感器",
        "B55B 改走 App_IsMeshGateway，去掉从未定义的旧 GATEWAY 宏",
        "关闭纯 BLE 编译，网关重新链入 Mesh 并出厂自配网",
        "独立网关（仅 CH592）本机完整回答 SEASKY ID，不再依赖 STM32",
        "网关回答 SEASKY ID MODEL=WM-G300-GW，发版拆成 SENSOR / GW 两套包",
        "新增 F77F / SEASKY CDC CFG? 查询 CH592 全部配置（角色/MAC/波特率/Relay/密钥），旧 FFE1 schema 0x02 保持兼容",
        "传感器连发 C55C 卡死：忙则丢包不再 trans_reset、热路径去掉 PRINT、叶子关 Relay、SEQ 落盘改为 3600",
        "一份固件兼顾传感器/网关：APP_MESH_ROLE_GATEWAY=1 时地址 0x0014，C55C 收包转 USB CDC",
        "出厂写死 NetKey，未入网时按 MAC 映射单播地址自动自配网",
        "MESH?/F66F/FFE1 的网络密钥改为从协议栈读取，重启后也能查到，不再另存 EEPROM 副本",
        "未配网蓝牙广播间隔改为 100ms；配网成功后关闭 GAP 广播并断开 BLE（调试常开除外）",
        "CH592A 写密钥用 256 字节擦除会死机，改为 4K 对齐",
        "新增 USB 命令 SEASKY CDC MESH? 查 Mesh 链路自检信息（地址/密钥/绑定/发送计数/配网返回值）",
        "开机顺序改回参考工程：先 App_Init 再 USB，去掉 Boot_UsbPump（它造成 1.6s/4s 复位周期）",
        "配网后卡死：关掉 Mesh Settings 落盘；已入网 C55C 不再灌 FFE4；不再排队改名"
      ]
    },
    {
      "fileName": "WM_CH592_GW_V4.0.77_20260816170223.bin",
      "hexFileName": "WM_CH592_GW_V4.0.77_20260816170223.hex",
      "version": "4.0.77",
      "buildTime": "2026-08-16T17:02:23+08:00",
      "sizeBytes": 139208,
      "sha256": "c01c9fa3b2d3ff78dde72544ec2696da1ff6ae6722d2bba67dcc064ba7d228bc",
      "hexSizeBytes": 780653,
      "hexSha256": "1f2682a12460ddd71026fc806c49bb8bf47f263e5e01c9fbebd022d8cd00e63d",
      "changelog": [
        "网关 USB：SEASKY CDC TX=WAVE|BASE ADDR=xxxx 经 Mesh 切换指定传感器上报协议",
        "关闭纯 BLE 编译，网关重新链入 Mesh 并出厂自配网",
        "独立网关（仅 CH592）本机完整回答 SEASKY ID，不再依赖 STM32",
        "网关回答 SEASKY ID MODEL=WM-G300-GW，发版拆成 SENSOR / GW 两套包",
        "新增 F77F / SEASKY CDC CFG? 查询 CH592 全部配置（角色/MAC/波特率/Relay/密钥），旧 FFE1 schema 0x02 保持兼容",
        "传感器连发 C55C 卡死：忙则丢包不再 trans_reset、热路径去掉 PRINT、叶子关 Relay、SEQ 落盘改为 3600",
        "一份固件兼顾传感器/网关：APP_MESH_ROLE_GATEWAY=1 时地址 0x0014，C55C 收包转 USB CDC",
        "出厂写死 NetKey，未入网时按 MAC 映射单播地址自动自配网",
        "MESH?/F66F/FFE1 的网络密钥改为从协议栈读取，重启后也能查到，不再另存 EEPROM 副本",
        "未配网蓝牙广播间隔改为 100ms；配网成功后关闭 GAP 广播并断开 BLE（调试常开除外）",
        "CH592A 写密钥用 256 字节擦除会死机，改为 4K 对齐",
        "新增 USB 命令 SEASKY CDC MESH? 查 Mesh 链路自检信息（地址/密钥/绑定/发送计数/配网返回值）",
        "开机顺序改回参考工程：先 App_Init 再 USB，去掉 Boot_UsbPump（它造成 1.6s/4s 复位周期）",
        "配网后卡死：关掉 Mesh Settings 落盘；已入网 C55C 不再灌 FFE4；不再排队改名"
      ]
    },
    {
      "fileName": "WM_CH592_GW_V4.0.76_20260816173915.bin",
      "hexFileName": "WM_CH592_GW_V4.0.76_20260816173915.hex",
      "version": "4.0.76",
      "buildTime": "2026-08-16T17:39:15+08:00",
      "sizeBytes": 138100,
      "sha256": "93a3d860019185b678f55d8f141ee9e98498f73a71197aed46d88e4f92dc7609",
      "hexSizeBytes": 777540,
      "hexSha256": "62d9aa878dc4ed98d60f0ceedac8aea0e55394a96286bf8148918452f7a1f515",
      "changelog": [
        "关闭纯 BLE 编译，网关重新链入 Mesh 并出厂自配网",
        "独立网关（仅 CH592）本机完整回答 SEASKY ID，不再依赖 STM32",
        "网关回答 SEASKY ID MODEL=WM-G300-GW，发版拆成 SENSOR / GW 两套包",
        "新增 F77F / SEASKY CDC CFG? 查询 CH592 全部配置（角色/MAC/波特率/Relay/密钥），旧 FFE1 schema 0x02 保持兼容",
        "传感器连发 C55C 卡死：忙则丢包不再 trans_reset、热路径去掉 PRINT、叶子关 Relay、SEQ 落盘改为 3600",
        "一份固件兼顾传感器/网关：APP_MESH_ROLE_GATEWAY=1 时地址 0x0014，C55C 收包转 USB CDC",
        "出厂写死 NetKey，未入网时按 MAC 映射单播地址自动自配网",
        "MESH?/F66F/FFE1 的网络密钥改为从协议栈读取，重启后也能查到，不再另存 EEPROM 副本",
        "未配网蓝牙广播间隔改为 100ms；配网成功后关闭 GAP 广播并断开 BLE（调试常开除外）",
        "CH592A 写密钥用 256 字节擦除会死机，改为 4K 对齐",
        "新增 USB 命令 SEASKY CDC MESH? 查 Mesh 链路自检信息（地址/密钥/绑定/发送计数/配网返回值）",
        "开机顺序改回参考工程：先 App_Init 再 USB，去掉 Boot_UsbPump（它造成 1.6s/4s 复位周期）",
        "配网后卡死：关掉 Mesh Settings 落盘；已入网 C55C 不再灌 FFE4；不再排队改名"
      ]
    },
    {
      "fileName": "WM_CH592_GW_V4.0.73_20260816164951.bin",
      "hexFileName": "WM_CH592_GW_V4.0.73_20260816164951.hex",
      "version": "4.0.73",
      "buildTime": "2026-08-16T16:49:52+08:00",
      "sizeBytes": 138100,
      "sha256": "bcca8cafd9d52e944d7d5d173499819222093e220382dacc793117da8c233630",
      "hexSizeBytes": 777540,
      "hexSha256": "4f7562812efad4599c7b3af1525696902dc7b56effb91610e1dde56915930684",
      "changelog": [
        "关闭纯 BLE 编译，网关重新链入 Mesh 并出厂自配网",
        "独立网关（仅 CH592）本机完整回答 SEASKY ID，不再依赖 STM32",
        "网关回答 SEASKY ID MODEL=WM-G300-GW，发版拆成 SENSOR / GW 两套包",
        "新增 F77F / SEASKY CDC CFG? 查询 CH592 全部配置（角色/MAC/波特率/Relay/密钥），旧 FFE1 schema 0x02 保持兼容",
        "传感器连发 C55C 卡死：忙则丢包不再 trans_reset、热路径去掉 PRINT、叶子关 Relay、SEQ 落盘改为 3600",
        "一份固件兼顾传感器/网关：APP_MESH_ROLE_GATEWAY=1 时地址 0x0014，C55C 收包转 USB CDC",
        "出厂写死 NetKey，未入网时按 MAC 映射单播地址自动自配网",
        "MESH?/F66F/FFE1 的网络密钥改为从协议栈读取，重启后也能查到，不再另存 EEPROM 副本",
        "未配网蓝牙广播间隔改为 100ms；配网成功后关闭 GAP 广播并断开 BLE（调试常开除外）",
        "CH592A 写密钥用 256 字节擦除会死机，改为 4K 对齐",
        "新增 USB 命令 SEASKY CDC MESH? 查 Mesh 链路自检信息（地址/密钥/绑定/发送计数/配网返回值）",
        "开机顺序改回参考工程：先 App_Init 再 USB，去掉 Boot_UsbPump（它造成 1.6s/4s 复位周期）",
        "配网后卡死：关掉 Mesh Settings 落盘；已入网 C55C 不再灌 FFE4；不再排队改名"
      ]
    },
    {
      "fileName": "WM_CH592_GW_V4.0.72_20260816164501.bin",
      "hexFileName": "WM_CH592_GW_V4.0.72_20260816164501.hex",
      "version": "4.0.72",
      "buildTime": "2026-08-16T16:45:01+08:00",
      "sizeBytes": 34960,
      "sha256": "88076c9907e931e5fe81b2b33d43e2812091effccd3623e1abb8fb8a45931a42",
      "hexSizeBytes": 487415,
      "hexSha256": "5b8c9beddc738322bf19f6a3fc8bcbcdb1b8097651bdce4dcd92b9616ec5be3d",
      "changelog": [
        "独立网关（仅 CH592）本机完整回答 SEASKY ID，不再依赖 STM32",
        "网关回答 SEASKY ID MODEL=WM-G300-GW，发版拆成 SENSOR / GW 两套包",
        "新增 F77F / SEASKY CDC CFG? 查询 CH592 全部配置（角色/MAC/波特率/Relay/密钥），旧 FFE1 schema 0x02 保持兼容",
        "传感器连发 C55C 卡死：忙则丢包不再 trans_reset、热路径去掉 PRINT、叶子关 Relay、SEQ 落盘改为 3600",
        "一份固件兼顾传感器/网关：APP_MESH_ROLE_GATEWAY=1 时地址 0x0014，C55C 收包转 USB CDC",
        "出厂写死 NetKey，未入网时按 MAC 映射单播地址自动自配网",
        "MESH?/F66F/FFE1 的网络密钥改为从协议栈读取，重启后也能查到，不再另存 EEPROM 副本",
        "未配网蓝牙广播间隔改为 100ms；配网成功后关闭 GAP 广播并断开 BLE（调试常开除外）",
        "CH592A 写密钥用 256 字节擦除会死机，改为 4K 对齐",
        "新增 USB 命令 SEASKY CDC MESH? 查 Mesh 链路自检信息（地址/密钥/绑定/发送计数/配网返回值）",
        "开机顺序改回参考工程：先 App_Init 再 USB，去掉 Boot_UsbPump（它造成 1.6s/4s 复位周期）",
        "配网后卡死：关掉 Mesh Settings 落盘；已入网 C55C 不再灌 FFE4；不再排队改名"
      ]
    },
    {
      "fileName": "WM_CH592_GW_V4.0.71_20260816163628.bin",
      "hexFileName": "WM_CH592_GW_V4.0.71_20260816163628.hex",
      "version": "4.0.71",
      "buildTime": "2026-08-16T16:36:28+08:00",
      "sizeBytes": 137656,
      "sha256": "7867daba75cc91658d420499701203b1ced409d924ed55e67af48372c66da0bb",
      "hexSizeBytes": 776288,
      "hexSha256": "63dee4ab7d953bfd72c0abc1d53f16042e1bbd23b0820630219098b3a87fe65d",
      "changelog": [
        "网关回答 SEASKY ID MODEL=WM-G300-GW，发版拆成 SENSOR / GW 两套包",
        "新增 F77F / SEASKY CDC CFG? 查询 CH592 全部配置（角色/MAC/波特率/Relay/密钥），旧 FFE1 schema 0x02 保持兼容",
        "传感器连发 C55C 卡死：忙则丢包不再 trans_reset、热路径去掉 PRINT、叶子关 Relay、SEQ 落盘改为 3600",
        "一份固件兼顾传感器/网关：APP_MESH_ROLE_GATEWAY=1 时地址 0x0014，C55C 收包转 USB CDC",
        "出厂写死 NetKey，未入网时按 MAC 映射单播地址自动自配网",
        "MESH?/F66F/FFE1 的网络密钥改为从协议栈读取，重启后也能查到，不再另存 EEPROM 副本",
        "未配网蓝牙广播间隔改为 100ms；配网成功后关闭 GAP 广播并断开 BLE（调试常开除外）",
        "CH592A 写密钥用 256 字节擦除会死机，改为 4K 对齐",
        "新增 USB 命令 SEASKY CDC MESH? 查 Mesh 链路自检信息（地址/密钥/绑定/发送计数/配网返回值）",
        "开机顺序改回参考工程：先 App_Init 再 USB，去掉 Boot_UsbPump（它造成 1.6s/4s 复位周期）",
        "配网后卡死：关掉 Mesh Settings 落盘；已入网 C55C 不再灌 FFE4；不再排队改名"
      ]
    },
    {
      "fileName": "WM_CH592_GW_V4.0.70_20260816155949.bin",
      "hexFileName": "WM_CH592_GW_V4.0.70_20260816155949.hex",
      "version": "4.0.70",
      "buildTime": "2026-08-16T15:59:49+08:00",
      "sizeBytes": 137656,
      "sha256": "0f887e4da13d1f0b2c91e3fa7972a156dde5da368defceaaba0246a451fbb25e",
      "hexSizeBytes": 776288,
      "hexSha256": "1318331f29587fcfcf34b00b9085a7ebdd5735fb5d172423ba1e77e17db3c674",
      "changelog": [
        "网关回答 SEASKY ID MODEL=WM-G300-GW，发版拆成 SENSOR / GW 两套包",
        "新增 F77F / SEASKY CDC CFG? 查询 CH592 全部配置（角色/MAC/波特率/Relay/密钥），旧 FFE1 schema 0x02 保持兼容",
        "传感器连发 C55C 卡死：忙则丢包不再 trans_reset、热路径去掉 PRINT、叶子关 Relay、SEQ 落盘改为 3600",
        "一份固件兼顾传感器/网关：APP_MESH_ROLE_GATEWAY=1 时地址 0x0014，C55C 收包转 USB CDC",
        "出厂写死 NetKey，未入网时按 MAC 映射单播地址自动自配网",
        "MESH?/F66F/FFE1 的网络密钥改为从协议栈读取，重启后也能查到，不再另存 EEPROM 副本",
        "未配网蓝牙广播间隔改为 100ms；配网成功后关闭 GAP 广播并断开 BLE（调试常开除外）",
        "CH592A 写密钥用 256 字节擦除会死机，改为 4K 对齐",
        "新增 USB 命令 SEASKY CDC MESH? 查 Mesh 链路自检信息（地址/密钥/绑定/发送计数/配网返回值）",
        "开机顺序改回参考工程：先 App_Init 再 USB，去掉 Boot_UsbPump（它造成 1.6s/4s 复位周期）",
        "配网后卡死：关掉 Mesh Settings 落盘；已入网 C55C 不再灌 FFE4；不再排队改名"
      ]
    }
  ]
}