结论:品牌目录不是通用协议。Hyundai 的经典 CAN 可选 hyundai/hyundaiLegacy、CAN FD 用 hyundaiCanfd;Honda 分 Nidec 与 Bosch,Bosch 还要再分雷达版/无雷达版及 CAN FD。它们是不同的能力组合,必须声明精确平台、固件范围与总线拓扑。CarController 的软件限幅不替代 panda 安全钩子,CarState 的解析结果也不替代固件对驾驶员扭矩、制动和巡航状态的独立采样。
Hyundai:经典 CAN 与 CAN FD
Hyundai 按 CANFD 分支:用相机和 E-CAN 指纹判别 LKA/LFA、按钮、档位及 SCC 来源,LONG、能源类型和限制参数写入 safetyParam。这里要记住:alphaLongitudinalAvailable 与 openpilotLongitudinalControl 分开,前者不能保证后者启用。
| 层 | 关键入口 | 已核对的实现 |
|---|---|---|
| ECU 生命周期 | init()、deinit() |
自控纵向且非相机 SCC 时发送 UDS 通信控制,目标地址依平台/转向架构改变;退出尝试恢复。 |
| 输入 | CarState.update()、update_canfd() |
分别把经典 CAN/CAN FD 的速度、驾驶员输入、巡航、转向、车门等信号映射到统一 CarState。 |
| 输出调度 | CarController.update() |
经典 CAN 与 CAN FD 分流至 create_can_msgs()/create_canfd_msgs()。 |
| 构帧 | hyundaican.py、hyundaicanfd.py |
经典 CAN 的 LKAS11/CLU11/SCC 帧与 CAN FD 的转向、取消、ACC、LFA 抑制帧分别构造;CAN FD 的 CanBus 映射 E-CAN、A-CAN、相机总线,不能硬编码单一 bus。 |
| 固件接收/发送 | hyundai_rx_hook()、hyundai_tx_hook()、hyundai_canfd_tx_hook() |
两条分支检查转向扭矩/请求间隔、加速度及按钮权限,诊断地址仅准许指定 tester-present 载荷。 |
| 模式组装 | hyundai_init()、hyundai_legacy_init()、hyundai_canfd_init() |
Legacy 因旧报文缺计数器/校验而采用不同接收检查,不能视作安全规则全等。 |
Honda:Nidec 与 Bosch
Honda 的 Bosch 用 hondaBosch、Nidec 用 hondaNidec;Bosch 继续区分雷达版、无雷达版及 CAN FD。Bosch CAN FD 在此快照中不开放实验纵向。
| 层 | 关键入口 | 已核对的实现 |
|---|---|---|
| ECU 生命周期 | init()、deinit() |
有雷达的 Bosch 自控纵向会尝试禁用雷达 ECU 通信,退出时尝试恢复。源码明确警告此操作会禁用原车 AEB。 |
| 输出调度 | CarController.update()、compute_gas_brake() |
区分 Bosch/Nidec;actuator_hysteresis() 与 brake_pump_hysteresis() 处理 Nidec 制动输出。 |
| 构帧 | hondacan.py |
按平台总线构帧;CanBus 映射 PT、radar、camera 等总线。 |
| 固件接收 | honda_rx_hook() |
备用刹车报文 0x1BE 避免把某些车型电脑制动误判为用户踩刹车;Nidec 的原车 AEB 制动与 openpilot 制动比较后决定转发。 |
| 模式与转发 | honda_nidec_init()、honda_bosch_init()、honda_nidec_fwd_hook() |
Nidec 对相机制动帧 0x1FA 进行动态转发;Bosch 实验纵向在固件中受 ALLOW_DEBUG 编译门限制,不能只看 Python 配置推断可用。 |
另外两处细节也影响拆分:Hyundai 侧,经典 CAN 可选 hyundai/hyundaiLegacy,CAN FD 转向灯能力还可能涉及额外 ECU;Legacy 因旧报文缺计数器/校验而采用不同接收检查,测试入口覆盖相机 SCC、Legacy、能源类型、纵向、AEB 位、按钮和诊断场景,但不等于覆盖所有实车变种。
Honda 侧,honda_tx_hook() 对 Nidec 检查制动/HUD,对 Bosch 检查加速度/油门,均阻止主机发送 AEB 执行位;无使能时转向只能为零,Bosch 按钮只能取消,诊断地址仅准许指定 tester-present。备用刹车报文 0x1BE 用于避免把某些车型电脑制动误判为用户踩刹车。
Hyundai 的固件发送侧还要区分纵向状态:hyundai_canfd_tx_hook() 在非自控纵向时仅允许符合取消语义的 ACC 帧,经典 CAN 则另检查 FCA11/SCC12 的 AEB 执行位。Honda 侧的转发也不对称:honda_nidec_fwd_hook() 对相机制动帧 0x1FA 动态转发,而 Bosch 实验纵向在固件中受 ALLOW_DEBUG 编译门限制,不能只看 Python 配置推断可用。
为什么必须按能力组合拆分
同一品牌下,CAN/CAN FD 与 Nidec/Bosch 是不同能力组合,不能互相套用。Honda 的原车 AEB 保留与否依硬件架构和具体纵向方案而变:Nidec 用相机制动帧的动态转发,而 Bosch 雷达禁用方案是另一条路径,不能把 Nidec 转发逻辑套到 Bosch 雷达禁用方案。Hyundai 侧,hyundai_canfd_tx_hook() 中的转向限值还包含驾驶员扭矩抵消、速率与 EPS 转向请求切断容差;这些是固件拒绝候选帧的条件,不应在插件层开放为任意可改配置。
换句话说,能力组合必须由「平台 + 固件范围 + 总线拓扑 + 传感器架构」共同定义,任何一项缺失都可能把另一套组合的结论错误套用过来;这也解释了为何同品牌不同年款需要各自的证据链。
车载硬件与插件化含义
- 车型插件应声明精确平台、固件范围、总线拓扑、DBC、能力与安全模式参数;同一品牌的 CAN/CAN FD 或 Nidec/Bosch 必须是不同能力组合。不能让插件动态改写 panda 固件的 TX 白名单和物理限制。
- ECU 通信控制必须是受控生命周期操作,记录请求、响应、超时及恢复结果。尤其 Honda Bosch 雷达禁用涉及原车 AEB;目标硬件设计应先明确是否允许此工作模式,而不是默认启用。
- 硬件网关需要保持总线来源与时间戳、独立看门狗、断电/主机失联回退、板上 RX/TX/转发安全门;E-CAN/PT/camera 总线映射错误是安全风险,不是普通配置瑕疵。
- 每个目标车型建立指纹和固件识别、DBC 解析/打包、安全测试、日志回放、断线与错误帧注入、SIL/HIL、封闭场地验证的证据链。未知或模糊匹配保持被动,不以品牌名放行执行。
常见问题
为什么同一品牌要按经典 CAN 与 CAN FD 分开?
因为两者有不同的输入映射、构帧函数与安全模式:Hyundai 的经典 CAN 可选 hyundai/hyundaiLegacy、CAN FD 用 hyundaiCanfd;Legacy 还因旧报文缺计数器/校验而采用不同接收检查。它们是不同能力组合,不能视作同一套安全规则。
Honda 禁用雷达 ECU 通信有什么代价?
源码明确警告:有雷达的 Bosch 自控纵向禁用雷达 ECU 通信的操作会禁用原车 AEB。因此不能把它当作无副作用的模式切换,目标硬件设计应先明确是否允许此工作模式。
Bosch 的实验纵向能在固件里开放吗?
在固件中受 ALLOW_DEBUG 编译门限制,不能只看 Python 配置推断可用;此外 Bosch CAN FD 在此快照中不开放实验纵向。
Nidec 的相机制动帧转发能套用到 Bosch 吗?
不能。Honda 的原车 AEB 保留与否依硬件架构和具体纵向方案而变;Nidec 对相机制动帧 0x1FA 的动态转发与 Bosch 雷达禁用方案是不同路径,不能互相套用。
延伸阅读
- CAN FD 与经典 CAN 的安全模式差在哪 —— 承接 Hyundai 两条分支的 RX/TX 矩阵对照。
- 车型参数与安全模式契约:CarParams 到固件白名单 —— 承接本文
safetyParam与能力声明。 - 车型指纹与固件匹配:模糊匹配为什么会放行错车 —— 承接「未知或模糊匹配保持被动」的要求。
- 同一个「转向灯」在三家车厂是三种实现:车辆状态归一化的坑 —— 承接本文把多平台信号归一成统一
CarState的难点。 - VW 与 Subaru 车型协议:白名单与匹配门怎么各管一段 —— 对照其它车厂的能力组合拆分方式。
参考资料
- 项目 02 ——
openpilot-research/HYUNDAI_HONDA_DEEP_DIVE.md(取用了 Hyundai 经典/CAN FD 链路、Honda Nidec/Bosch 链路,以及车载硬件与插件化含义)。 - 项目 02 ——
openpilot-research/HYUNDAI_CANFD_PANDA_SAFETY_DEEP_DIVE.md(仅用于确认 CAN FD 逐模式 RX/TX 总线矩阵与纵向构建门的引用位置)。
说明:本文为对固定源码快照的静态结构分析,未运行完整测试套件、未连接硬件、未验证目标车型的真实参数组合。文中所有阈值、行号索引与配置均出自源文档,标注为未验证的结论保留其原有边界。
更新记录
首次发布 2026-10-11 最近核对:2026-10-11
发表回复