商用车 DBC 知识包的许可证链:16 条报文与四类来源分级

作者:

在

结论:拿到一份商用车 DBC 知识包,第一件事不是数报文,而是核对许可证链。这份包的 6 份 heavy-duty OEM DBC 合计只有 16 条报文,只覆盖 6 个制造商的部分 J1939 PGN;真正决定它能否进入产品的,是 21 个已收录来源里 2 个强制署名、3 组 GPL-3.0 与 2 份 CC-BY-SA-4.0 的传染性条款,以及 9 份被明确拦在 curated 目录之外的文件。

为什么许可证链比报文数更先决定可用性

DBC 是数据而非代码,但它的来源决定了分发边界。这份知识包的 LICENSES.md 开篇就写明了定位:它不授予任何访问许可,只保留公开来源本身的许可证。也就是说,把别人的 DBC 拷进自己的包,不会让许可证消失,只会把义务继承下来。

因此合理的处理顺序是:先按许可证把来源分档,再决定哪些能进 curated/、哪些只能留在 raw/、哪些在闭源分发时必须整体剔除。报文数量在这条链里是最后才看的东西——16 条报文和 2000 条报文,合规成本可能完全一样。

许可证档位 义务 代表来源 分发处理
MIT / Apache-2.0 保留版权声明 commaai/opendbc(57 静态 + 39 生成器输出)、canboat/canboat、projectgus/kona-ev-dbc 可直接随包分发
CC-BY-4.0 强制署名 berumiya/CAN_DBC_6thGenMazda(Mazda 6th-gen HSCAN/MSCAN) 分发须带署名串
CC-BY-SA-4.0 署名 + 相同方式共享 fsfarmscaper/jaguar-xf-x250-can(MS/HS 总线各一份) 闭源分发须剔除
GPL-3.0-only 传染性,须保留许可证文本 dalathegreat/leaf_can_bus_messages、qwec01/ARCFOX_dbc、gbt27930_2023.dbc 运行期动态加载或整体剔除
无许可证 / 权利存疑 不可判定 见 DO-NOT-INTEGRATE 列表 停留在 raw/ 作研究记录

六份商用车 OEM DBC 的实际覆盖面

目录里的六份 DBC 来自上游 data/dbc/heavy_duty/,合计 16 条报文,按制造商分布为 Mercedes-Benz Actros 3 条、Caterpillar 2 条、Cummins 2 条、Detroit 3 条、Scania 3 条、Volvo 3 条。每份文件只覆盖选定的制造商私有 J1939 PGN,既不是完整的整车网络定义,也不构成车型年款的适配承诺。

制造商 报文数 性质 证据边界
Mercedes-Benz Actros 3 制造商私有 J1939 包内自产,非 SAE 标准
Caterpillar 2 制造商私有 J1939 包内自产,非 SAE 标准
Cummins 2 制造商私有 J1939 包内自产,非 SAE 标准
Detroit 3 制造商私有 J1939 包内自产,非 SAE 标准
Scania 3 制造商私有 J1939 包内自产,非 SAE 标准
Volvo 3 制造商私有 J1939 包内自产,非 SAE 标准

这六份文件在上游被描述为「由项目自身的 OEM decoder 定义生成」。这句话本身就是一条重要的证据边界:DBC 文件不确立底层测量方式,也不确立每个字段的校验依据。用它们做离线解码参考可以,拿来做 ASIL 相关功能的信号依据则超出其能力。

同包内的其他来源量级

同一个 LICENSES.md 还登记了若干量级明显更大的来源:ISOBUS 数据字典(isobus.net 的 AEF/ISO 11783-11 公开导出)生成出 102 条报文、1341 条信号的 isobus_dd11783.dbc;BogGyver 的 opendbc 分支贡献 28 份已提交 DBC,其中静态 7 份(hyundai_kia_generic、stellantis_dasm、tesla_can_pre1916、vw_golf_mk4、vw_mqb_2010、chrysler_pacifica_2017_hybrid、tesla_radar),生成 21 份(Lexus 6、Honda 6、Toyota 9)。把它们和 16 条报文的商用车部分放在一张表里看,才能判断这份包的重心到底在哪里。

DO-NOT-INTEGRATE:九份被拦下的文件

包里专门维护了一张「禁止整合」表,列出 9 个停留在 raw/ 的条目。它们的共同点是许可证状态未解决,因此不能拷进 curated/ 或 data/dbc/。

风险类型 判定依据 处理动作
未声明许可证 仓库未给出任何许可证 仅作研究记录,不进 curated
内容未下载但已知无许可证 上游未标注,权利不可判定 不纳入任何分发包
格式不兼容 是 Markdown 表格而非 DBC 不作为 DBC 来源整合
标准组织版权风险 标注 MIT 但内容派生自 SAE J1939 标准,存在版权主张 整条排除,不进 curated

这张表的价值在于把「不知道」显式化。多数 DBC 收集项目的问题不是抄错了文件,而是把许可证不明的产物直接混进了可分发目录,事后无法追溯。

SAE 版权风险为什么单独列一档

表中有一条的判定很典型:它被标注为 MIT,但内容派生自 SAE J1939 官方标准,上游仓库存在公开的版权主张记录。许可证标签与实际权利不一致时,以权利为准。这也是为什么来源表里会出现「标注 MIT 但仍排除」这种看似矛盾的处理。

copyleft 的隔离方式:运行时数据载荷

包内对 GPL-3.0 与 CC-BY-SA-4.0 采用了一套明确的隔离策略,核心是让这些 DBC 不构成软件代码的组成部分:

  1. 数据分离:这些文件不静态嵌入、不编译进二进制,而是在运行时由 cantools 以数据载荷方式动态读取。
  2. 闭源分发清理:在严格的商业或闭源分发中,可直接从 data/dbc/ 删除或排除这些文件;核心诊断、J1939、OBD-II 等 MIT/Apache-2.0 授权的 DBC 仍能独立工作。
  3. 合规登记:所有许可证与署名映射统一登记在仓库根目录的 REUSE.toml,符合 REUSE 3.0 / SPDX 规范。

这套「气隙」设计的意义在于把传染性风险收敛到一个可删除的目录,而不是扩散到整个构建产物。是否需要真正删除,取决于分发形态;能不能删得干净,则取决于前期有没有做隔离。

常见问题

这份商用车 DBC 包能直接用于整车网络解析吗?

不能。六份文件合计 16 条报文,每份只覆盖选定制造商的私有 J1939 PGN,上游明确说明它不是完整整车网络定义,也不保证车型年款适配。它适合作为特定 PGN 的解码参考与比对基准。

为什么有些来源标注 MIT 却被排除在整合之外?

因为许可证标签与真实权利可能不一致。DO-NOT-INTEGRATE 表中就有一项虽标注 MIT,但内容派生自 SAE J1939 官方标准,上游存在公开的版权主张记录。遇到这种情况以实际权利为准,整条排除。

闭源产品里能不能保留 GPL-3.0 的 DBC 文件?

可以保留但需要隔离:这些文件不得静态嵌入或编译进二进制,只能由 cantools 在运行时作为数据载荷读取,并且分发包要附带 GPL-3.0 许可证文本。若要彻底消除传染性影响,则须从 data/dbc/ 删除这些文件,其余 MIT/Apache-2.0 授权的 DBC 不受影响。

CC-BY-4.0 与 CC-BY-SA-4.0 的差别在实际处理上是什么?

CC-BY-4.0 只要求署名,分发时带上指定的署名串即可;CC-BY-SA-4.0 在署名之外还要求相同方式共享,因此在闭源分发中必须整体剔除。本包里前者对应 Mazda 6th-gen 的两份 DBC,后者对应 Jaguar XF X250 的 MS/HS 两份 DBC。

DBC 里的信号定义能不能当作安全相关功能的依据?

不能。包内免责声明写明,DBC 内容由社区逆向工程产生,不是车辆制造商的官方数据,在安全相关(ASIL)用途中只能作为参考。上游对这些文件的说明也指出,底层测量方式与各字段校验并未由 DBC 文件确立。

延伸阅读

参考资料

  • 项目 01 —— public-can-dbc-datasets/additional/ucanlab-heavy-duty-oem/SOURCE.md(六份 DBC 的 16 条报文、制造商分布与权利边界)
  • 项目 01 —— public-can-dbc-datasets/additional/ucanlab-heavy-duty-oem/LICENSES.md(21 个来源的许可证映射、copyleft 隔离策略与 DO-NOT-INTEGRATE 表)
  • 项目 01 —— public-can-dbc-datasets/additional/ucanlab-heavy-duty-oem/README.md(上游产品定位、协议覆盖与 data/PROVENANCE.md 的登记机制)

免责声明

本文所述的 DBC 内容均为社区逆向工程产物,不代表车辆制造商的官方数据。文中数字均来自上述公开仓库的说明文件,未经独立实车验证;不同车型年款、市场与 ECU 版本可能存在差异。涉及安全相关用途时请仅作参考,并以实际测量与官方资料为准。

更新记录

  • 2026-10-14 初稿

评论

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注