Files
app_rf915_dump/protocol.md
2026-04-15 12:06:20 +08:00

10 KiB
Raw Permalink Blame History

MT6 RFID 读卡器 USB HID 私有协议参考文档(最终修正版)

1. 概述

本文档描述了一款 MT6 系列 RFID 读卡器(型号 MT6_RF915_RW_WY)通过 USB HID 接口与主机通信的私有协议。所有数据交互均使用 USB HID Feature Report控制传输Report 长度为 256 字节

通信过程遵循固定的四包模型SetReq / SetRes / GetReq / GetRes其中 SetReqGetRes 包含有效载荷,另外两个为固定应答包,底层驱动已自动处理。

2. 通用帧格式

2.1 SetReq主机 → 设备Report ID = 0x01

主机发送的命令帧结构如下(从 Report ID 后开始计算偏移)。SetReq 必须填充至 256 字节,不足部分用 0x00 补齐。

偏移 长度 字段名 字节序 示例(打开蜂鸣器) 说明
0x00 1 Report ID - 01 固定 0x01
0x01 4 Fixed - 00 00 00 00 固定
0x05 2 Frame Length 大端 00 07 从Constant到Data的总字节数
0x07 2 Constant - 00 02 固定 0x00 0x02
0x09 2 Data Length 大端 00 02 后续数据负载的字节数
0x0B N Data - cd 01 实际数据负载
0x0B+N 1 Checksum - ce 校验字节,算法见第 3 节
0x0C+N 1 End Marker - 03 固定 0x03
剩余 - Padding - 00 ... 填充至 256 字节

2.2 GetRes设备 → 主机Report ID = 0x03

设备返回的数据帧结构与 SetReq 相同,但 GetRes 无需填充至 256 字节

Data 段格式

偏移 长度 字段名 说明
0x00 1 Status 0x00 成功,非零异常
0x01 M Response Data 实际返回数据

3. 校验算法

3.1 外层帧校验

算法逐字节异或XOR
计算范围Data Length 两字节+ Data 全部字节。

验证示例(打开蜂鸣器):

  • Data Length: 00 02
  • Data: cd 01
  • XOR: 00 ^ 02 ^ cd ^ 01 = ce

3.2 EPC 操作内部校验

3.2.1 Payload Checksum累加和

算法:字节累加模 256
计算范围:从 Card Op Command 字段开始,到 Payload 末尾(不含校验字节自身)。

3.2.2 EPC CRC

算法CRC-16/GENIBUS
参数

  • 多项式:0x1021
  • 初始值:0xFFFF
  • 输出异或:0xFFFF
  • 输入/输出反转:false

计算范围EPC Len Indicator1 字节)+ EPC Status1 字节)+ EPC DataN 字节)

4. 已知命令集

以下列出所有已分析命令,仅给出 Data 段内容(不含外层帧头),实际发送时需按第 2 节格式包装并填充至 256 字节。

4.1 系统与配置类命令

功能 SetReq Data GetRes Data 备注
读版本号 c0 00 + ASCII 字符串
恢复出厂设置 cf 00 80
读取格式 83 00 01 00 00 00 01 01 00 00(示例) 返回当前格式参数
设置格式 82 0f 00 00 00 01 01 01 00 00 80 参数含义略

4.2 蜂鸣器控制

功能 SetReq Data GetRes Data
打开蜂鸣器 cd 01 00 80
关闭蜂鸣器 cd 00 00 80

4.3 射频电源控制

功能 SetReq Data GetRes Data
打开射频 90 01 00 80
关闭射频 90 00 00 80

4.4 工作模式与功率

功能 SetReq Data GetRes Data 参数说明
主动读卡 0f 01 00 80 触发单次寻卡
被动读卡 0f 02 00 80 持续等待标签
设置单标签巡查 0f 01 00 80 模式 1
设置被动模式 0f 02 00 80 模式 2
设置多标签巡查 0f 03 00 80 模式 3
设置功率 = N cc N 00 80 N 范围 0~9

4.5 EPC 操作

所有 EPC 相关命令(读、选中、写)的 SetReq/GetRes Data 段均遵循以下内部结构:

偏移 长度 字段名 字节序 说明
0x00 1 Command/Status - 固定 SetReq=ceGetRes=00(成功)
0x01 1 Magic - 固定 bb
0x02 2 Card Op Command - 操作码(见各子命令)
0x04 2 Internal Length 大端 后续 Payload 的字节数
0x06 N Payload - 具体操作参数
0x06+N 1 Payload Checksum - 累加和(模 256
0x07+N 1 End Marker - 固定 7e

4.5.1 读取 EPC

Card Op Command00 22

  • SetReq Datace bb 00 22 00 00 22 7e

    • Internal Length = 00 00
    • Payload Checksum = 22
  • GetRes Data 段(有卡)

    00 bb 02 22 00 0b d3 18 00 11 22 33 44 55 66 75 ce c2 7e
    
    偏移 字段 值示例 说明
    0x00 Status 00 成功
    0x01 Magic bb 固定
    0x02 Card Op Resp 02 22 读卡成功标志
    0x04 Internal Length 00 0b 后续数据长度(大端)
    0x06 RSSI d3 信号强度
    0x07 EPC Len Indicator 18 EPC 字节数 = 值 ÷ 4
    0x08 EPC Status 00 成功
    0x09 EPC Data 11 22 33 44 55 66 实际 EPC
    0x0F EPC CRC 75 ce CRC-16/GENIBUS
    0x11 Payload Checksum c2 累加和
    0x12 End Marker 7e 固定尾部
  • 无卡时Card Op Resp = 01 ffPayload 仅含 RSSI 及累加和,无 EPC 数据。

4.5.2 选中卡

Card Op Command00 0c

  • SetReq Data 示例(选中 EPC 11 22

    ce bb 00 0c 00 09 01 00 00 00 20 10 00 11 22 79 7e
    
    • Internal Length = 00 09
    • Payload7+N 字节7字节保留字段 + EPC Data
    • Payload Checksum = 79
  • GetRes Data 段

    00 bb 01 0c 00 01 00 0e 7e
    
    • Card Op Resp = 01 0c
    • Internal Length = 00 01
    • Payload = 00(选中成功标志)

4.5.3 写入 EPC

Card Op Command00 49

  • SetReq Data 示例(将 EPC 11 22 改为 11 23

    ce bb 00 49 00 0f 00 00 00 00 01 00 00 00 03 ca 9e 08 00 11 23 00 7e
    
    • Internal Length = 00 0f
    • Payload15 字节):
      偏移 字段 值示例 说明
      0x00 Reserved 00 00 00 00 01 00 00 00 保留
      0x09 Word Count 03 = 2 + 新 EPC 字节数/2
      0x0A Old EPC CRC ca 9e 原卡 EPC 的 CRC-16/GENIBUS大端
      0x0C EPC Len Indicator 08 新 EPC 字节数 = 值 ÷ 4
      0x0D EPC Status 00 固定
      0x0E New EPC Data 11 23 新 EPC
    • Payload Checksum = 00
  • GetRes Data 段

    00 bb 01 49 00 06 04 08 00 11 22 00 8f 7e
    
    • Card Op Resp = 01 49
    • Payload 偏移0x03中开始原 EPC 11 22 用于确认不重复

5. 附录命令速查表SetReq Data 部分)

功能 Data十六进制
读版本号 c0
恢复出厂设置 cf
读取格式 83
设置格式 82 0f 00 00 00 01 01 01 00
打开蜂鸣器 cd 01
关闭蜂鸣器 cd 00
打开射频 90 01
关闭射频 90 00
主动读卡 0f 01
被动读卡 0f 02
设置单标签巡查 0f 01
设置被动模式 0f 02
设置多标签巡查 0f 03
设置功率 = 8 cc 08
读取 EPC ce bb 00 22 00 00 22 7e
选中卡EPC=1122 ce bb 00 0c 00 09 01 00 00 00 20 10 00 11 22 79 7e
写 EPC1122→1123 ce bb 00 49 00 0f 00 00 00 00 01 00 00 00 03 ca 9e 08 00 11 23 00 7e

文档版本2.3
最后更新2026-04-15
适用设备MT6_RF915_RW_WY 及兼容固件