你的车不是什么魔法。它就是一个带杯架的吵闹网络。
一位服务顾问试图收我180美元做一次诊断,而我的18美元微控制器只用了11秒就完成了同样的工作。
问题从一盏灯开始
我的车出了个怪毛病:警告灯时亮时灭。周二出现,周三消失,等你赶时间的时候又冒出来。我打电话给4S店,电话那头的人像在念一份律师写的、专门针对你的脚本台词。
“好的,下周四可以安排。诊断费180美元,这包括我们插上设备。”——插上设备。180美元,就为了插个线。
我挂了电话,走到零件箱前,翻出一个ESP32-C3、一块花一顿卷饼钱买的SN65HVD230 CAN收发器板,还有一根之前无聊时焊好的OBD-II线。总成本:比开到4S店的油钱还少。
11秒读出故障码,1小时定位真凶
11秒后,我拿到了故障码。30分钟后,实时数据已经画成图表。1小时后,我确认是一个轮速传感器在温度升高时偶发失灵。
4S店卖的不是专业知识,他们卖的是那根线。
按理说,我该告诉你现代汽车很复杂,需要原厂培训和上万美元的Vector接口设备,还得有汽车之神的祝福。但我不打算这么说,因为这不是事实。
现代汽车不是复杂,是被刻意遮蔽
现代汽车并非他们想让你以为的那种复杂。它们是被模糊化了。这两者有本质区别。
剥掉营销外壳,真实情况是这样的:30到100个叫ECU的小型计算机,通过两根线互相喊话。就这些。这就是那个大秘密。
这套网络叫CAN总线(Controller Area Network,控制器局域网),80年代由博世发明,至今仍在统治汽车行业,因为它便宜、皮实、够用。两根线,CAN High和CAN Low,绞在一起,以每秒500千比特的速率传输差分信号。每个ECU只是把自己的状态喊进虚空,谁关心谁听。
发动机ECU喊:“我在2400转,而且我很不爽。”ABS模块喊:“左前轮42英里/小时,右前轮42英里/小时,一切正常。”车身控制模块喊:“有人打开了副驾门,觉得你应该知道。”
没有认证,没有加密
没有认证,没有加密。在经典CAN总线上,连可信的源地址都没有。只有一个仲裁ID、几个字节的数据,以及信任。
当我跟软件工程师解释这些时,他们一脸惊恐:“你是说没有TLS?没有握手?”对,没有。你那辆2021年的SUV,网络安全模型相当于1998年的聊天室。
当然,新车有了网关。仪表盘下的OBD-II接口不再给你原始的总线数据,只给你过滤过的、企业批准版本。网关坐在诊断接口和真正的动力总成CAN之间,决定你能看到什么。这也是为什么你那12美元的蓝牙ELM327适配器……
热门跟贴