结论:Hyundai 经典 CAN panda safety 把「标准雷达 SCC / 标准相机 SCC / Legacy」三种模式做成一张权限矩阵:同一辆车的按钮 RX 固定在 bus 0,而 TX 可能落在 bus 0 或 bus 2,纵向能力只在调试构建生效。Legacy 也不是全面关闭 RX 校验,放宽的只有 0x386 与 0x394,0x260、0x4F1、0x421 仍保留各自的校验或计数门。以下为固定源码快照 c8fb906 的函数级静态分析,不是目标固件或实车验证;bus 号指单个 safety 实例的本地总线编号,车型、线束与 ECU 版本需另行确认。
初始化与模式选择
CarInterface._get_params() 在 hyundai 与 hyundaiLegacy 之间选择,并设置相机 SCC 与纵向能力。需要注意的是 openpilotLongitudinalControl 只是上层请求,不是固件准入证明。hyundai_init() 再依据纵向、相机 SCC、FCEV 标志选择 RX 检查表与 TX 白名单;hyundai_legacy_init() 使用 Legacy RX 表,并强制关闭纵向和相机 SCC,仅保留基础 TX 表。
共享的 hyundai_common_init() 在非调试构建中强制 hyundai_longitudinal=false。也就是说纵向链在源码层面就带着 ALLOW_DEBUG 编译门,不能由 Python 侧 CarParams 位推定量产固件可发。
| 模式 | SCC12 RX | CLU11 TX | 纵向/附属 TX | 关键差异 |
|---|---|---|---|---|
| 标准雷达 SCC、非纵向 | bus 0 | bus 0,4 字节 | 无 SCC TX | 巡航接合沿使能;按钮只许受门控的 Resume/Cancel。 |
| 标准相机 SCC、非纵向 | bus 2 | bus 2,4 字节 | 无 SCC TX | 按钮 RX 仍是 bus 0,不能把 TX 所在总线误当按钮输入来源。 |
| 标准雷达 SCC、纵向 | 不列为必需 RX | bus 0,4 字节 | SCC11/12/13/14、FRT_RADAR11、FCA11/12、0x7D0 在 bus 0 |
LONG 仅 ALLOW_DEBUG 有效;不经原车 SCC 接合沿使能。 |
| 标准相机 SCC、纵向 | 不列为必需 RX | bus 2,4 字节 | SCC11/12/13/14、FRT_RADAR11 在 bus 0 | 相机 SCC 纵向不使用雷达静默诊断白名单。 |
| Legacy | bus 0 | bus 0,4 字节 | 无 SCC TX | 强制非纵向、非相机 SCC;仅部分 RX 的完整性检查放宽。 |
所有模式均可发送 bus 0 的 0x340 LKAS11 与 0x485 LFAHDA_MFC。纵向 TX 表中的 SCC11/12/13/14 对 bus 0 标记 check_relay=true;若原 ECU 在该总线继续发送同地址帧,共享继电器故障逻辑可阻断 TX。safety_fwd_hook() 只提供通用 bus 0↔2 转发,并静态阻断将 check_relay 地址送往本机 TX 总线,这不是 ECU 已被成功静默的证明。
RX 完整性与状态消费
各地址使用不同的计数位与半字节校验:0x386 使用位计数/XOR,其余适用帧使用半字节和。RX 完整性检查先于车型钩子执行,通用 safety_rx_hook() 只在消息匹配、校验有效且属于 RX 表时才调用 hyundai_rx_hook()。
| 帧 | 检查表 | 实际消费 |
|---|---|---|
0x260 EMS16 或 0x371 E_EMS11 |
同一备选组;0x260 检查 2 位计数和校验,0x371 忽略二者 |
ICE 从 0x260 读油门,EV/HEV 从 0x371 读油门。 |
0x386 WHL_SPD11 |
标准模式校验加 4 位计数;Legacy 忽略二者 | 只用左前、右后轮速判断移动,阈值原始值 12。 |
0x394 TCS13 |
标准模式校验加 3 位计数;Legacy 忽略二者 | 字节 5 的 DriverOverride 等于 2 判制动。 |
0x251 MDPS12 |
忽略校验/计数,但监视存活 | 11 位驾驶员扭矩进入共享采样窗口。 |
0x4F1 CLU11 |
忽略校验、检查 4 位计数 | bus 0 上解析按钮和主开关,更新近期交互或纵向按钮边沿。 |
0x421 SCC12 |
只在非纵向为必需;校验加 4 位计数 | 按相机 SCC 标志从 bus 2 或 bus 0 读取 ACC 模式。 |
0x91 FCEV 油门 |
仅特定标准雷达 SCC 或纵向分支附加;忽略校验/计数 | FCEV 标志下读取字节 6;标准相机 SCC 非纵向表没有该附加检查。 |
FCEV 分支中 0x91 更新油门,但 0x260 的 ICE 回退条件仅排除 EV/HEV;若车辆也出现 0x260,后续该帧仍可能改写油门状态,须用目标车报文核对,不能把单帧观测当成最终状态。
TX 字段边界与使能条件
转向 0x340 从 11 位字段还原扭矩与请求位:普通/ALT_LIMITS/ALT_LIMITS_2 的最大扭矩分别为 384/270/170,每帧上升分别为 3/2/2、下降为 7/3/3,均使用实时差 112、驾驶员扭矩余量 50 与请求位节拍容忍;两种替代标志同时存在时 ALT_LIMITS_2 优先。非纵向的 0x4F1 只允许 controls_allowed 时 Resume,或 cruise_engaged_prev 时 Cancel;纵向模式跳过整个按钮 TX 分支,白名单内的 0x4F1 不受该专属按钮码限制,这是插件权限设计必须额外收紧的差异。
纵向加速度 0x421 同时核对 aReqRaw 与 aReqValue,单位是 0.01 m/s²,活动范围为 -350 到 200,并禁止 AEB 减速度命令、AEB 请求和停止请求。共享加速度检查允许未激活编码,不能仅用数值落在范围内推断准入。雷达 SCC 纵向表包含 0x38D FCA11,专属钩子禁止其减速度/AEB 激活字段;0x483 FCA12 仅有地址/总线/长度白名单;0x7D0 仅雷达 SCC 纵向可发送,载荷必须是 02 3E 80 00 00 00 00 00。SCC11/13/14、FRT_RADAR11 和 HUD 没有该模式的逐字段校验,白名单准入不代表 ECU 接受,也不代表原车 AEB、FCW 或仪表状态保持不变。
面向自制硬件的插件契约
源文档给出的是一组建议设计而非已实现能力:车型身份插件应输出带证据的标准/Legacy、SCC 来源、动力类型与转向限制,未知或冲突组合不授予 TX;总线插件同时报告 RX/TX 的物理接口与本地 bus,尤其记录相机 SCC 模式下按钮 RX bus 0、TX bus 2 的差异。
纵向插件只能提交控制意图;可信任网关需核对构建类型、MCU mode/param 读回、ECU 静默回执、原车 AEB 功能与失联降级,再交由独立 MCU safety 门裁决。对纵向 CLU11、FCA12、HUD 与 SCC 附属帧应另设最小载荷模板和速率配额,不能因原模式白名单存在就向普通插件开放原始 CAN 写入。现有 test_hyundai.py 覆盖标准/Legacy、替代转向限值、相机 SCC、FCEV 与纵向 AEB/诊断路径,但本文未运行这些单测,模型实体、目标固件、台架及实车行为仍未验证。
常见问题
Hyundai Legacy 模式是不做 RX 校验吗?
不是。Legacy 只放宽 0x386 和 0x394 的校验与计数检查;0x260、0x4F1、0x421 仍保留各自的校验或计数门。同时它强制关闭纵向和相机 SCC。
相机 SCC 模式下按钮输入在哪个总线?
按钮 RX 仍是 bus 0,只是 CLU11 的 TX 落在 bus 2。源码明确说明不能把 TX 所在总线误当成按钮输入来源。
Hyundai 纵向控制是不是打开参数就能用?
不是。LONG 仅在 ALLOW_DEBUG 编译条件下有效,共享 hyundai_common_init() 在非调试构建中强制关闭纵向。Python 侧 CarParams 位不能作为量产固件可发的证明。
0x7D0 的载荷能自由填吗?
不能。源文档说明 0x7D0 仅雷达 SCC 纵向可发送,载荷必须是固定的 02 3E 80 00 00 00 00 00。
延伸阅读
- Hyundai CarState 经典 CAN 与 CAN FD 输入 —— 同一品牌输入侧的状态消费与本文 RX 表互为对照。
- CAN FD 与经典 CAN 的 safety 模式差异 —— 判断为何本文矩阵限定在经典 CAN。
- Honda panda safety:RX 检查表与 AEB 转发 —— 另一个品牌的 RX/TX 白名单与转发实现。
- CAN 报文解析的「健康位」在说什么 —— 校验、计数器与总线空窗的通用语义。
参考资料
- 项目 02 ——
openpilot-research/HYUNDAI_CLASSIC_PANDA_SAFETY_DEEP_DIVE.md(模式权限矩阵、RX 完整性表、TX 字段边界与插件契约)。 - 项目 02 ——
openpilot-research/同目录 Hyundai/Honda 品牌总览(SCC 与纵向能力作为相邻边界参考)。
说明:本文为对固定源码快照的静态结构分析,未运行完整测试套件、未连接硬件、未验证目标车型的真实参数组合。文中所有阈值、行号索引与配置均出自源文档,标注为未验证的结论保留其原有边界。
更新记录
首次发布 2026-10-11 最近核对:2026-10-11
发表回复