案例

opendash:重建 Scanmatik SM3 J2534 适配器协议

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

目标
协议
类别
独立重建案例
关联
独立重建项目
来源复核于

使用条件与局限

  • 在 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 仍为其权利人的商标;所审阅来源未确立任何 AI 或 REA 使用。

关于此条目

说明已依据一手来源复核;这不代表已运行验证、经过安全审计或确认兼容。

报告条目过时 建议修正翻译

一手来源

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

同分区更多条目:协议

协议分区全部 66 项资源协议案例(26)