# opendash：重建 Scanmatik SM3 J2534 适配器协议

> 直接使用 Scanmatik SM3 未公开的协议——这款 J2534 车辆接口原本只与自家 Windows 软件通信——并以 ELM327 桥接的形式提供给 Android 手机，其上还有一个诊断应用。作者通过抓取设备随附驱动的通信并测量响应，恢复了报文结构：包含序号、基于 CRC 与求和的校验字、操作码和长度的 16 字节报头；docs/protocol.md 区分了已确认与仍待解决的部分。所报告的结果来自一辆 Opel Astra J、共五次有车在场的测试。

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

## 使用条件与局限

- 在 2026-10-16 的 main 分支最新提交处审阅，该提交位于 v0.4.2-beta 发布之后，只改动了 README。README 报告在一辆 Opel Astra J 1.7 CDTI 上实现了读取识别信息、标准 OBD-II 数据和 GM 0x22 服务参数，以及每个数据包约 98.7 Hz 的模块主动推流；ELM327 桥接已在模拟模块上测试，但尚未在实车上测试，另有两段长时间录制因尚不明确的原因提前中止。
- 需要使用者自己的 Scanmatik SM3，并通过其 Wi-Fi 热点连接。标准 SAE J1979 PID 随应用提供；更丰富的各品牌参数目录由使用者已有的 GM GDS2 安装生成，README 称因数据属于 GM 而不予分发。仓库未收录任何参数目录数据、厂商驱动、固件或行车录制数据。
- 应用在设计上只读：README 列出了允许的诊断服务，写入数据、控制输入输出或例程、清除故障码或请求安全访问的请求会在到达套接字前被拒绝。唯一已知的执行器命令位于设置开关之后，需要手机的设备锁验证，且默认关闭。
- Android 8.0+ 应用，使用 Gradle、AGP 9.4.1、Kotlin 2.4.20 和 JDK 21 构建。另有一个独立的 Rust 核心实现报文结构、校验字、ISO-TP 与 ELM327 处理，但尚未接入应用；README 称应用中的 Kotlin 桥接已领先于它。CI 运行 cargo test（重放 200 条记录的写入，并将计算出的校验字与设备实际发送的值比对），并在不含 Rust 核心的情况下构建调试版 APK；Kotlin 单元测试虽然存在，但不在 CI 中运行。
- 采用 GPL-3.0 许可（LICENSE）。Scanmatik、GM、GDS2 与 Opel 仍为其权利人的商标。

## 一手来源

1. <https://github.com/PabloSoage/opendash/blob/7c8d72953d8060f2dc49e606963e1d103eec64d9/docs/protocol.md>
2. <https://github.com/PabloSoage/opendash/blob/7c8d72953d8060f2dc49e606963e1d103eec64d9/README.md>
3. <https://github.com/PabloSoage/opendash/blob/7c8d72953d8060f2dc49e606963e1d103eec64d9/core/src/frame.rs>
4. <https://github.com/PabloSoage/opendash/blob/7c8d72953d8060f2dc49e606963e1d103eec64d9/core/src/h4.rs>
5. <https://github.com/PabloSoage/opendash/blob/7c8d72953d8060f2dc49e606963e1d103eec64d9/core/tests/protocol.rs>
6. <https://github.com/PabloSoage/opendash/blob/7c8d72953d8060f2dc49e606963e1d103eec64d9/.github/workflows/ci.yml>
7. <https://github.com/PabloSoage/opendash/blob/7c8d72953d8060f2dc49e606963e1d103eec64d9/LICENSE>
8. <https://github.com/PabloSoage/opendash/releases/tag/v0.4.2-beta>

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

- [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) · 案例
- [Stadiacast：重建 Stadia 手柄的 Wi-Fi 服务](https://awesomerea.org/zh/resources/stadiacast-case/index.md) · 案例
- [os-xgs-npu：重建 Sophos XGS 协处理器接口](https://awesomerea.org/zh/resources/os-xgs-npu-case/index.md) · 案例
- [LibreMP：基于抓包研究的 Epson EasyMP 投屏客户端](https://awesomerea.org/zh/resources/libremp-easymp-case/index.md) · 案例
- [Sony CDX-A250：还原 LCD 面板接口](https://awesomerea.org/zh/resources/lc75826-sony-cdx-a250-case/index.md) · 案例

## 关于此条目

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