结论:Chrysler panda safety 有两套互不通用的安全模式:常规模式按参数位选 Pacifica/Jeep、Ram DT 或调试构建中的 Ram HD,CUSW 是独立且仅调试注册的另一套钩子。最需要记住的边界是按钮载荷:常规模式以 data[0]==1 判取消、data[0]==0x10 判恢复,两个值不能同时匹配;而 CUSW 用两个独立位,表达式 is_cancel || (is_resume && controls_allowed) 使 0x11 同时置位在控制未许可时仍会通过。
本文基于固定源码快照,分析常规 Chrysler 与独立 CUSW safety 模式,并用本机隔离探针核对若干分支。ALLOW_DEBUG 是编译条件,不等于目标 panda 固件已经启用;探针不代表刷写、台架或实车验证。
模式入口与函数索引
chrysler_init() 按参数位选择 RX/TX 表,Ram DT 分支优先于 Ram HD;非调试构建忽略 Ram HD 位,落入 Pacifica/Jeep 配置。CUSW 的安全模式注册受 ALLOW_DEBUG 限制,属于独立钩子。
| 函数 | 作用与关键差异 |
|---|---|
chrysler_init() |
按参数位选 Pacifica/Jeep、Ram DT 或调试构建中的 Ram HD;Ram DT 优先于 Ram HD,非调试构建忽略 Ram HD 位 |
chrysler_rx_hook() |
按平台地址与总线更新 EPS 电机扭矩、ACC 接合、停车状态、油门及制动 |
chrysler_tx_hook() |
解码目标转向扭矩及请求位,调用共享限幅;按钮仅允许取消,或在 controls_allowed 时恢复 |
chrysler_cusw_init() |
建立独立的五组 RX 与三组 TX 白名单;安全模式注册受 ALLOW_DEBUG 限制 |
chrysler_cusw_tx_hook() |
扭矩限制为 250 原始单位;取消与恢复按钮分别取 bit 0、bit 4 |
chrysler_compute_checksum() |
对除末字节外的载荷按多项式 0x1D 做 CRC8,初始值 0xFF,末尾按位取反;末字节为接收校验值 |
平台与信号矩阵
四种模式的电机扭矩误差项均为 80。表内上限是 safety 内部原始单位,不是物理方向盘扭矩,也不是可直接移植的标定值。常规模式的 EPS 测量来自载荷字节 4/5,CUSW 来自字节 3/4;常规模式以 0x1F4/0x99 的 bit 21 判断 ACC,CUSW 以 0x2EC 的 bit 7。
| 模式 | 关键 RX 来源 | TX 地址、总线、长度 | 扭矩上限 / 每帧升降 / 实时变化 |
|---|---|---|---|
| Pacifica/Jeep | EPS 0x220/bus 0;ACC 0x1F4/bus 0;车速 0x202/bus 0;油门 0x22F、制动 0x140/bus 0 | 按钮 0x23B/0/3;转向 0x292/0/6;HUD 0x2A6/0/8 | 261 / 3、3 / 112 |
| Ram DT | EPS 0x31/bus 0;ACC 0x99/bus 2;车速 0x79/bus 0;油门 0x9D、制动 0x83/bus 0 | 按钮 0xB1/2/3;转向 0xA6/0/8;HUD 0xFA/0/8 | 350 / 6、6 / 112 |
Ram HD,仅 ALLOW_DEBUG |
EPS 0x220/bus 0;ACC 0x1F4/bus 2;车速 0x11C/bus 0;油门 0x22F、制动 0x140/bus 0 | 按钮 0x23A/2/3;转向 0x276/0/8;HUD 0x275/0/8 | 361 / 14、14 / 182 |
CUSW,仅 ALLOW_DEBUG |
电机扭矩 0x1EC;ACC 0x2EC;车速 0x1E4;油门 0x1FE;制动 0x1E8,均 bus 0 | 按钮 0x2FA/0/3;转向 0x1F6/0/4;HUD 0x5DC/0/4 | 250 / 4、4 / 150 |
移动判断也按平台分:Pacifica/Jeep 用左右轮速 0x202,Ram 用 ESP_8 双字节非零,CUSW 用 0x1E4 车速字段非零。健康检查方面,常规 RX 表监视五组;Pacifica/Jeep 的 0x202 特别忽略校验和与计数器,其余四组检查 CRC/计数器但忽略质量位;常规计数器为字节 6 高半字节,CUSW 计数器为倒数第二字节低半字节。CRC/计数健康不等于报文来源认证,总线身份、线束和原车 ECU 时序仍需单独验证。
按钮载荷与转发边界
常规按钮帧以 data[0] == 1 判断取消,以 data[0] == 0x10 判断恢复,因此两值不能同时匹配,但其它字节没有车型专属检查。CUSW 以两个独立位判断,表达式 is_cancel || (is_resume && controls_allowed) 使 0x11 同时置位在控制未许可时仍通过。
| 项目 | 常规模式 | CUSW |
|---|---|---|
| 取消判定 | data[0] == 1 |
bit 0 |
| 恢复判定 | data[0] == 0x10 |
bit 4 |
| 双位组合 | 两值互斥,组合无法同时匹配 | 0x11 在控制未许可时仍通过 |
| 测试覆盖 | 明确测试组合被拒 | 测了中性、单独取消/恢复,未断言双位组合 |
各模式的 HUD 地址在 TX 白名单,但两套车型 TX 钩子都没有 HUD 载荷检查。转向与 HUD 的 check_relay=true 会参与共享继电器故障检查和来自 bus 2 的静态转发阻断;按钮的 check_relay=false 不具备这两项效果。
转发边界的判定要分三步:safety_tx_hook() 先做通用地址/总线/长度白名单与继电器故障门,再由车型钩子做载荷判定,而来自另一总线的静态转发阻断由 safety_fwd_hook() 处理。因此「能不能发」与「会不会阻断原车转发」是两个独立问题,不能只看白名单。
两套测试的口径也不同:现有 test_chrysler_cusw.py 测了中性、单独取消或恢复,但没有断言双位组合;常规 test_chrysler.py 则明确测试组合被拒。这一差异是现有钩子行为,不应当视作车辆接受或设计允许组合键。
软件层与固件层不是同一件事
软件 CarInterface._get_params() 把 Ram HD 与 CUSW 标为 dashcamOnly,CUSW 另选 chryslerCusw 模式;其 CarControllerParams 还设置软件侧限幅与周期。尤其 Ram DT 软件上限为 261,而板端限值为 350,说明软件策略和固件许可不是同一层。
自制硬件插件不能把 dashcamOnly、软件限幅或模式参数当作板端已经正确配置的回执。插件化时应把平台指纹、DBC、总线映射、safety 模式/参数、编译能力与线束版本作为不可分割的准入清单。HUD 与按钮原始帧均须列为受控输出,普通 UI/诊断插件不能绕过 card 和板端安全层直接发送。
本机隔离探针在 release/debug 两种 ALLOW_DEBUG 编译条件下均以 -Wall -Wextra -Werror 与 UBSan 通过,覆盖平台按钮总线、Ram HD 非调试回退、CUSW 非调试不可注册、CUSW 双位组合、HUD 无逐字段门及静态转发阻断。它没有输入有效 RX 序列、验证 CRC 错误/计数回绕或执行完整车型测试;更不代表目标固件、台架或实车。
常见问题
CUSW 模式和常规 Chrysler 模式能混用吗?
不能。CUSW 是独立钩子,拥有自己的五组 RX 与三组 TX 白名单、独立的扭矩编码与限值,且安全模式注册受 ALLOW_DEBUG 限制;常规模式的地址、总线、长度与按钮位都不能按品牌名复用。
Ram HD 在普通构建里会怎样?
非调试构建会忽略 Ram HD 位,落入 Pacifica/Jeep 配置;而且 Ram DT 分支优先于 Ram HD。所以不是「选了 Ram HD 位就一定按 Ram HD 配置」,还要看构建条件与优先级。
为什么 CUSW 的 0x11 组合键仍能通过?
因为 CUSW 用两个独立位判断,表达式为 is_cancel || (is_resume && controls_allowed),只要有取消位就通过,所以 0x11 在控制未许可时仍会通过。常规模式则因两值互斥无法同时匹配,且测试明确覆盖组合被拒。这是现有钩子行为,不应视作车辆接受或设计允许组合键。
HUD 地址在白名单里,是不是就有逐字段校验?
不是。各模式的 HUD 地址在 TX 白名单,但两套车型 TX 钩子都没有 HUD 载荷检查。白名单控制的是地址、总线、长度,并受继电器故障门约束,不等于载荷逐字段校验。
延伸阅读
- Chrysler、Nissan、Mazda:三家平台的接入差异 —— 对照另外两家平台矩阵与使能方式。
- 从使能到车轮:执行链上的八道门,以及它们各自不保证什么 —— 解释软件限幅与板端许可为何分属两层。
- CAN 报文解析的「健康位」在说什么:校验、计数器与总线空窗 —— 说明 CRC/计数健康为何不等于来源认证。
- Tesla panda safety 模式:转发与转向边界 —— 用另一个安全模式对照白名单与继电器门的写法。
参考资料
- 项目 02 ——
openpilot-research/CHRYSLER_PANDA_SAFETY_MODE_DEEP_DIVE.md(取用了常规与 CUSW 两套模式矩阵、按钮载荷差异、平台信号表与隔离探针结论)。 - 项目 02 ——
openpilot-research/ACTUATION_GATE_CHAIN_DEEP_DIVE.md(仅用于确认执行链分层语义,未取用其未公开内容)。
说明:本文为对固定源码快照的静态结构分析,未运行完整测试套件、未连接硬件、未验证目标车型的真实参数组合。文中所有阈值、行号索引与配置均出自源文档,标注为未验证的结论保留其原有边界。
更新记录
首次发布 2026-10-11 最近核对:2026-10-11
发表回复