结论:bukapilot 是 openpilot 之上的维护型补丁集,目标是把 ADAS 带到马来西亚在售车型(尤其 Perodua 与 Proton),并在既有能力上补齐完整的右舵支持。落到 CAN 适配层,判断一个车型「算不算移植完成」要看两件事:DBC 字典有没有映射、指纹有没有登记。按这个口径,BYD ATTO 3 有 2 组指纹(144 与 110 个地址),Proton X50 有 1 组(179 个地址),而 Proton S70 与 X90 只有 DBC 映射、没有指纹,属于未完成的端口条目。
车型移植的两张表:DBC 映射与指纹
移植数据集中在两个 values.py 里:一份按品牌给出 CAR 常量、DBC 字典与指纹字典,另一份给出 HUD 倍率。DBC 字典走 openpilot 的 dbc_dict 形式,第二项为 None,即未登记雷达侧 DBC。HUD 倍率直接影响仪表与抬头显示上的速度呈现,BYD 侧为 0.718,Proton 侧为 1.035 且在源码里留着「Todo」标记,说明它仍是待标定的值。
| 品牌 | 车型常量 | DBC 字典 | 指纹组数 | HUD 倍率 |
|---|---|---|---|---|
| BYD | ATTO3 = "BYD ATTO 3" |
byd_general_pt(雷达侧 None) |
2 | 0.718 |
| Proton | S70 = "PROTON S70" |
proton_general_pt(雷达侧 None) |
0 | 1.035(Todo) |
| Proton | X50 = "PROTON X50" |
proton_general_pt(雷达侧 None) |
1 | 1.035(Todo) |
| Proton | X90 = "PROTON X90" |
proton_general_pt(雷达侧 None) |
0 | 1.035(Todo) |
指纹规模与非 8 字节 DLC
指纹记录的是「地址到长度」的映射,是车型识别的第一道判据。三组的规模差异很大,而真正有价值的信号藏在那些长度不等于 8 的地址里。
| 指纹 | 地址数 | 长度非 8 的地址 | 地址范围 |
|---|---|---|---|
| ATTO 3 指纹一 | 144 | 204:20、287:5、385:3、682:2、1542:2、1798:3 | 85 – 2027 |
| ATTO 3 指纹二 | 110 | 287:5、385:3、682:2、1542:2、1798:3 | 85 – 1832 |
| Proton X50 指纹 | 179 | 385:3、1542:2、1798:3 | 32 – 2025 |
把三组放在一起比对,能读出三条结论。其一,ATTO 3 的两组指纹共有 107 个地址,第一组独有 37 个、第二组独有 3 个,说明第二组几乎是第一组的子集,多数组差异来自配置或年款导致的报文增减。其二,三组指纹共有 17 个地址,其中 385(长度 3)、1542(长度 2)、1798(长度 3)长度都不是 8,这类跨品牌稳定的短帧通常是通用或诊断相关报文,不应作为车型特征。其三,X50 的 179 个地址里有 159 个不在 ATTO 3 两组指纹的并集(147 个地址)之内,两个品牌的报文空间基本不重叠,因此 DBC 也必须分成 byd_general_pt 与 proton_general_pt 两套。
另有一个需要单独确认的点:ATTO 3 第一组指纹里出现 204:20,长度 20 超出经典 CAN 的 8 字节上限。它可能来自 CAN FD 采集,也可能来自采集工具的合并口径,在把它写进匹配规则之前必须先确认采集链路。
功能替换边界:哪些被替换,哪些叠加
移植不只是接上 CAN,还要说清接管了哪些原厂功能。README 把这件事分成「所有受支持车型」与「特定受支持车型」两层,处理逻辑完全不同。
| 功能 | 所有受支持车型 | 特定受支持车型 |
|---|---|---|
| LKA | 原厂 LKA 被替换,仅在用户启用后生效 | 同上 |
| LDW | 原厂 LDW 被替换 | 同上 |
| ACC | 不替换 | 原厂 ACC 被替换 |
| FCW | 不声明 | 在原厂 FCW 之外叠加运行 |
| AEB、自动远光、盲区警示、侧向碰撞警示 | 原厂功能一律保留 | 原厂功能一律保留 |
这套划分的工程含义是:横向控制(LKA/LDW)是移植的必选项,纵向控制(ACC)只在完成标定的车型上接管,前向碰撞预警采取「叠加而非替换」以保留原厂兜底,其余主动安全功能不动。开发车端口时,也应按同样的层次逐项确认,而不是一次性接管全部。
数据上传与责任边界
默认情况下驾驶数据会上传到项目方服务器。日志范围按项列出,可退出性并不一致,做合规评估时要逐项核对。
| 数据项 | 默认状态 | 可否关闭 |
|---|---|---|
| 路面相机、CAN、GPS、IMU、磁力计、热传感器、崩溃与操作系统日志 | 记录并上传 | 仅在设置中显式退出驾驶员相机一项,其余未说明可关闭 |
| 驾驶员朝向相机 | 默认记录 | 可在设置中显式 opt-out |
| 麦克风 | 不录制 | 不适用 |
| 数据使用权 | 授予项目方不可撤销、永久、全球范围的使用权 | 使用即视为同意 |
责任侧同样写得很硬:软件以 MIT 许可发布(部分组件按各自许可),但被明确定性为 alpha 质量的 research-only 软件,不是产品;使用者须自行遵守当地法律法规,无明示或默示担保,并须就使用该软件产生的一切索赔向项目方作出赔偿与免责。性能限制也被逐条列出:恶劣能见度、相机被遮挡或损坏、车身贴膜贴纸或橡胶涂层造成的遮挡、设备安装不当、急弯与匝道路口的转向扭矩上限、受限车道与施工区、大横坡或强侧风、极热极冷、强光直射、坡道窄路与蜿蜒道路。它不会自动驾驶,也不减轻驾驶者必须付出的注意力;变道时它无法查看盲区,确认安全后由人工轻推方向盘发起。
常见问题
bukapilot 与 openpilot 是什么关系?
bukapilot 是 openpilot 的维护型补丁集,目标是支持马来西亚在售车型(尤其 Perodua 与 Proton),使用为这些车型专门设计的硬件,并在 openpilot 既有能力之上补齐完整的右舵支持。它实现 ACC、LKA、FCW、LDW,并在启用时叠加基于相机的驾驶员监测;作为 openpilot 的补丁集,它也继承了 openpilot 的软件安全模型,并针对补丁部分逐步补充增量测试。
为什么 Proton S70 与 X90 不能算已适配?
因为它们在 values.py 里只有 DBC 映射(proton_general_pt)而没有指纹条目。指纹是车型识别的第一道判据,缺失意味着无法在实车上完成确定的车型匹配;同为 Proton 的 X50 则有 1 组含 179 个地址的指纹。此外 Proton 侧的 HUD 倍率 1.035 在源码里仍带 Todo 标记,属于待标定值。
指纹里的 204:20 该怎么理解?
它表示地址 204 的帧长度为 20 字节,超出经典 CAN 的 8 字节上限,可能来自 CAN FD 采集或采集工具的合并口径。在把它写进车型匹配规则之前必须先确认采集链路与总线类型,否则会在不支持该长度的接口上造成误匹配。
默认会上传哪些数据,能不能关掉?
默认上传驾驶数据,日志包括路面朝向相机、CAN、GPS、IMU、磁力计、热传感器、崩溃与操作系统日志;驾驶员朝向相机默认记录但可在设置中显式退出;麦克风不录制。使用即视为授予项目方不可撤销、永久、全球范围的数据使用权,除驾驶员相机外其余项的关闭方式在文档中未作说明。
bukapilot 会接管原厂 AEB 和盲区警示吗?
不会。文档要求保留车辆其他全部原厂功能,明确列举的包括 FCW、自动紧急制动(AEB)、自动远光、盲区警示与侧向碰撞警示。被替换的是原厂 LKA 与 LDW;在受支持的特定车型上,原厂 ACC 被替换,而 bukapilot 的 FCW 是在原厂 FCW 之外叠加运行,不是替换。
延伸阅读
- BYD Atto 3 档案:Chassis 与 Private 双总线分工 —— 同一车型的另一份总线视角档案
- 车型协议接入实践:从指纹识别到安全固件的最低契约 —— 指纹与 DBC 映射在接入流程中的位置
- openpilot legacy 支持矩阵:可读车型与低速边界登记表 —— openpilot 体系下的车型支持矩阵口径
- Kia Soul OSCC 档案:归一化命令与 200 ms 保活接口 —— 开放线控接口的功能接管边界对照
参考资料
- 项目 01 ——
public-can-dbc-datasets/additional/alienware-sa-bukapilot-byd-proton/README.md(项目定位、功能替换层次、限制清单、数据上传与许可责任条款) - 项目 01 ——
public-can-dbc-datasets/additional/alienware-sa-bukapilot-byd-proton/selfdrive/car/byd/values.py(ATTO 3 的 DBC 映射、HUD 倍率与两组指纹) - 项目 01 ——
public-can-dbc-datasets/additional/alienware-sa-bukapilot-byd-proton/selfdrive/car/proton/values.py(S70/X50/X90 的 DBC 映射、HUD 倍率与 X50 指纹)
免责声明
本文所述内容为公开开源项目的移植数据与文档摘录,不代表车辆制造商或项目方的官方承诺。素材自身已声明:该软件为 alpha 质量的 research-only 版本,不是产品,无明示或默示担保,使用者须自行遵守当地法律法规并承担相应责任;它不会自动驾驶,也不减轻驾驶者必须付出的注意力。文中指纹地址与长度均按公开文件统计,未经实车复现,不同年款、市场与配置可能存在差异,涉及行车安全的改装请务必在封闭场地与专业监督下进行。
更新记录
- 2026-10-14 初稿