# a0rfid：A0 协议 UHF RFID 读写头的开源驱动

> 从厂商安卓应用的原生指令编码器（而非其具有误导性的 Java SDK）重建 R2000 系列 915 MHz UHF RFID 桌面读写头的 A0 串口协议；这类读写头原本只随附 Windows 软件和安卓应用。项目据此提供用户态 CH340 驱动、Python 命令行与图形界面，以及小型安卓应用，直接与读写头通信，进行标签盘存并读取标签存储区。docs/PROTOCOL.md 记录了帧格式、校验和、指令表、响应格式，以及 READ 与 WRITE 不同的字段顺序。

- 类型：案例
- 目标：协议
- 类别：独立重建案例
- 关联：独立重建项目
- 来源复核于：2026-10-27
- 收录于：2026-11-03
- 原始资源：<https://github.com/uaih3k9x/a0rfid>
- 一手来源：<https://github.com/uaih3k9x/a0rfid/blob/944ec1581a5c989cc7fbd50fcdba27159ecf7aa1/README.md>
- 目录页面：<https://awesomerea.org/zh/resources/a0rfid-uhf-reader-protocol-case/>
- 记录 JSON：<https://awesomerea.org/resources/a0rfid-uhf-reader-protocol-case/record.json>
- 英文版：[English](https://awesomerea.org/resources/a0rfid-uhf-reader-protocol-case/index.md)

## 使用条件与局限

- 所审阅的 main 分支提交日期为 2026-09-17，是仓库两个提交中的第二个，没有标签或发布版本。docs/REVERSE.md 说明了分析过程：反编译厂商 APK，发现应用绕过其 Java 编解码器，经 JNI 调用 libnative-lib.so；再从该库 rfid_encode() 的跳转表读出各指令的字段布局，最后在硬件上确认这些帧。成果是一份协议说明和新的主机端软件；项目没有恢复读写头固件或厂商应用，除 R2000 系列外也未写明读写头型号。
- 使用这些工具需要一台兼容 A0 协议、经 CH340 USB 转串口以 115200 8N1 连接的读写头，以及用于测试的标签。重做分析需要厂商自己的软件包和手册，仓库未附带：REVERSE.md 声明仓库不含任何厂商代码，只有在线路上观察到的帧以及据此编写的代码。android/RFID助手.apk 是项目自己的预构建应用，由 android/build.sh 从 android/app 构建。
- Python 工具需要 Python 3 及 pyusb、pyserial。--port USB 使用随附的 ch340_usb.py 用户态驱动，在 macOS 上需要 Homebrew 的 libusb；Linux 也可改用系统自带的 ch341 内核驱动，通过 /dev/ttyUSB0 连接。安卓应用需要 Android 7.0+ 且支持 USB Host；android/build.sh 假定 macOS／Homebrew 路径、JDK 17、Android SDK platform 34 和 build-tools 34.0.0。
- test_offline.py 在无硬件条件下运行 17 项检查，覆盖校验和、帧构造和响应解析，其中几项使用作者从一台报告固件 V2.4.1 的读写头录得的帧；docs/ANDROID.md 报告另有 261 项基于模拟标签的安卓离线检查。作者报告已在一台读写头上确认读写路径，并在一台 DJI Smart Controller Enterprise（Android 7.1.2）上完成应用安装和读取；应用的多存储区写入功能仅经过模拟测试。文档还提到作者的设备偶尔会固件卡死，最大输出功率为 20 dBm。
- 采用 MIT 许可证（2026 年，a0rfid contributors）；厂商软件、SDK 和读写头固件适用其各自条款。写入、锁定和灭活指令会改变真实标签。

## 一手来源

1. <https://github.com/uaih3k9x/a0rfid/blob/944ec1581a5c989cc7fbd50fcdba27159ecf7aa1/README.md>
2. <https://github.com/uaih3k9x/a0rfid/blob/944ec1581a5c989cc7fbd50fcdba27159ecf7aa1/docs/REVERSE.md>
3. <https://github.com/uaih3k9x/a0rfid/blob/944ec1581a5c989cc7fbd50fcdba27159ecf7aa1/docs/PROTOCOL.md>
4. <https://github.com/uaih3k9x/a0rfid/blob/944ec1581a5c989cc7fbd50fcdba27159ecf7aa1/docs/ANDROID.md>
5. <https://github.com/uaih3k9x/a0rfid/blob/944ec1581a5c989cc7fbd50fcdba27159ecf7aa1/rfid_tool.py>
6. <https://github.com/uaih3k9x/a0rfid/blob/944ec1581a5c989cc7fbd50fcdba27159ecf7aa1/ch340_usb.py>
7. <https://github.com/uaih3k9x/a0rfid/blob/944ec1581a5c989cc7fbd50fcdba27159ecf7aa1/test_offline.py>
8. <https://github.com/uaih3k9x/a0rfid/blob/944ec1581a5c989cc7fbd50fcdba27159ecf7aa1/android/build.sh>
9. <https://github.com/uaih3k9x/a0rfid/blob/944ec1581a5c989cc7fbd50fcdba27159ecf7aa1/LICENSE>

## 同分区更多条目：协议

- [Xiaomi Kettle BLE protocol：重建智能电水壶的控制接口](https://awesomerea.org/zh/resources/xiaomi-kettle-ble-protocol-case/index.md) · 案例
- [Ford Fiesta MK5 MS-CAN：解码仪表盘与收音机总线](https://awesomerea.org/zh/resources/ford-fiesta-mk5-ms-can-case/index.md) · 案例
- [uniden-r8-ble：重建 Uniden R8 雷达探测器的蓝牙遥测](https://awesomerea.org/zh/resources/uniden-r8-ble-telemetry-case/index.md) · 案例
- [opendash：重建 Scanmatik SM3 J2534 适配器协议](https://awesomerea.org/zh/resources/opendash-scanmatik-sm3-protocol-case/index.md) · 案例
- [OWL：开源的 Apple 无线直连（AWDL）实现](https://awesomerea.org/zh/resources/owl-awdl-open-implementation-case/index.md) · 案例
- [QuestPad：利用 Quest Touch 无线协议构建 USB 手柄](https://awesomerea.org/zh/resources/questpad-case/index.md) · 案例

## 关于此条目

说明已依据一手来源复核。
原创说明采用 MIT 许可；外部项目、论文与素材保留各自的权利和许可。
