为了改个时间,我越狱了 Renault 导航
Jailbreaking my car's navigation system just so I can change the time

我的 2014 款 Renault Latitude 有个奇葩设定:必须插入正版导航 SD 卡才能进入设置菜单修改时间。面对时差问题,我拒绝花 60 欧元买卡,决定自己动手。通过逆向工程 TomTom Carminat LIVE 系统,我发现菜单定义竟存储在 SD 卡中,且系统对 CID 有严格的 DRM 校验。在尝试修改更新镜像失败后,我利用 QEMU 搭建模拟器,深入分析 Linux 2.6 内核下的文件系统和启动逻辑。尽管面临分区只读和 noexec 限制,我最终在 master.script 脚本解析器中找到了突破口,用一场硬核的逆向之旅解决了这个看似荒谬的问题。
我不需要地图,我有一部手机用来导航,我只想修改该死的时间。
HN 评论区
282- tom1337890
写得真棒,很喜欢。而且你把它记录下来真是明智之举,毕竟半年后你肯定还得再查一遍。
我的结论是:你本该直接拿那张 SD 卡,相信前任车主的。有时候,“普通用户”其实门儿清。^^
- numpad0
我听说某些 Subaru 车型在驾驶员视野里有三个时钟,全都在 CAN 总线上:一个是导航自带的,一个是导航的远程显示屏,还有一个就是单纯摆在那儿的,它们彼此之间完全不同步。我查过这是怎么回事,结果发现更令人雪上加霜的是,其中至少有一个用的微控制器虽然带 RTC 功能,却没有 32.768kHz 的 XTAL 引脚,也没有任何合理的 2 的幂次分频引脚,而是直接用 15MHz 左右的 CPU 时钟来驱动,所以时间只会越来越飘。
我真搞不懂 Subaru 是怎么还能在业界混下去的。真的,怎么混的?不过是四位数的时间而已。直接在 CAN 总线上广播不就行了吗?为什么不行呢?
另外:很多这种老式的、完全方形的卫星导航单元实际上都遵循俗称的“2DIN”标准。(便宜的进口货在 Amazon 上就能买到)市面上有后装单元,稍微折腾一下就能换上去。当原厂导航在特定市场出问题时,大多数人就是这么干的。
- strenholme
我的车出厂时配了一个廉价的低质后装组合车载音响和 GPS。它只能播放光盘里的音乐(不支持 USB),连可变比特率的 MP3 都不支持,而且 GPS 有一半时间都定位不到车的位置。
我最后用了一个塑料支架和一个标准的复古车载音响系统替换了主机。现在的设置舒服多了。
真正让我担心的是那些根本无法用普通音响替换主机的车。
- jerlam
我有一辆 2001 年的豪华车,时间不能手动调整,只能设置特定时区。当然,所有的时区规则早就和它内置的规则集对不上了,所以每年得调四次才能显示正确时间。
这辆车还莫名其妙地强迫你手动选择国家,然后再选时区,尽管它明明有 GPS,已经确切知道你在哪儿,并且之前已经选过时区了。
Carplay 确实不错,但要是能有个非豪华版的“时钟设置”按钮,我也就满足了。
- somehnguy
我那辆 2014 年的车几年前就停止自动更新时间了。我想可能是某种蜂窝网络技术被淘汰了,或者 GM 为车辆连接服务签订的蜂窝合约到期了。
不管怎样,我现在每年手动调两次时间——我想我应该庆幸它至少还保留了这个选项。
之前我摆弄我女朋友车上的收音机时,发现时钟屏幕上根本没有手动设置的选项。不允许手动设置,这招看起来挺短视的。
- runnr_az
作为亚利桑那州的居民,我最近那辆 Honda CRV 的时钟在一年里有一半时间都差一个小时。通常 Carplay 显示会覆盖时钟,所以问题不大,但让我忍俊不禁的是,尽管我是个专业程序员,我到现在还没弄明白该怎么把它调对。
- hypfer
顺便提一下,针对某些年份的 Nissan,有这个东西:
https://github.com/ea/bosch_headunit_root
如果谁想用这个权限往各种系统里塞点 tokens 的话。
- RajT88
给程序员们关于时间的错误认知列表再加一条:
以为不用把 SD 卡放进车载收音机就能改时间。