ludwig-v/wireless-carplay-dongle-reverse-engineering
GitHub: ludwig-v/wireless-carplay-dongle-reverse-engineering
针对 Carlinkit/CPlay2Air 无线 CarPlay 转换器的硬件逆向与固件破解项目,涵盖芯片级分析、Root 获取及跨版本固件移植方法。
Stars: 851 | Forks: 113

## Carlinkit / Carplay2Air 逆向工程
## 硬件
| 硬件 | 部件 |
|--|--|
| Flash | Macronix 25L12835F (16MB) |
| SoC | Freescale i.MX6 UltraLite |
| CPU | ARM Cortex-A7 (ARMv7) *- **伪造的** ATMEL AT91SAM9260 标记 -* |
| RAM | Micron/SK Hynix 1Gb (64x16) |
| Wi-Fi/BT | RTL8822BS 或 RTL8822CS 或 RTL8733BS (Realtek) 或 Fn-Link L287B-SR (Marvell) 或 LGX4358 (Broadcom) 或 LGX8354S (Broadcom) 或 IW416 (NXP) |
## 硬件差异
从一开始,硬件基础几乎保持完全一致,只是设备外壳/设计发生了变化(V4 上的导热垫 / V5 上的散热孔)
Wifi 芯片似乎仅根据制造商的库存进行更换。无论使用哪种 Wifi 芯片,都是通过 SDIO 协议(高速 4 位 SD)连接,频率为 50Mhz,最大速度为 25MB/s (200 Mbps)
Carlinkit 主要出于营销目的,通过不同的软件创建了自己的产品细分:
- 1.0 / 2.0 / 3.0 = U2W :仅支持有线 Carplay OEM 转无线 Carplay
- 4.0 = U2AW :支持有线 Carplay OEM 转无线 Carplay + 无线 Android Auto
- 5.0 = U2AC :支持有线 Carplay OEM 或有线 Android Auto OEM 转无线 Carplay 和无线 Android Auto

## 软件
这个仓库始于我在 2020 年通过刷入自定义镜像获得 root 权限之时。
当时的固件镜像只是经过混淆处理的 tarball 压缩包,建立一个字典就足以解包和重新打包固件镜像。
不幸的是,这种情况没持续多久。Carlinkit 注意到了这个仓库,他们在 2021.03.06 版本的固件中使用一个新的二进制文件(现在已在 2025 年被攻破)更改了固件镜像的打包方式,他们还在随后的固件中加强了内核安全性,以阻止任何使用 "strace" 对二进制文件进行逆向工程的行为。
### 通过软件对设备进行 Root
通过刷入任何可用的自定义固件,可以在不使用任何硬件方法的情况下获得 Carlinkit 设备的 root 权限。
### 通过硬件切换设备固件
可以使用编程器(ASProgrammer, XGEcu 设备, Raspberry Pi)重写 Flash 芯片,从而从一种固件切换到另一种。
目前测试过的:
- 1.0 到 U2AW ☑️
- *适用于 Realtek RTL8822BS Wifi 芯片的版本最高至 2022.07.29.1635*
- 2.0 到 U2AW ☑️
- *适用于 Realtek RTL8822BS Wifi 芯片的版本最高至 2022.07.29.1635*
- *适用于 Broadcom LGX8354S Wifi 芯片的版本最高至 2022.06.17.1439*
- *适用于 Fn-Link L287B-SR (Marvell) Wifi 芯片的任何固件*
- 3.0 到 U2AW ☑️
- *适用于 Realtek RTL8822CS Wifi 芯片的版本从 2023.10.16.0952 开始*
- *适用于 Fn-Link L287B-SR (Marvell) Wifi 芯片的任何固件*
- 2.0 到 U2AC ❌ *(无法启动)*
- 3.0 到 U2AC ❓ *(可能适用于 2023.10.14.1711 版本)*
- 4.0 到 U2W ☑️
- *适用于 Realtek RTL8822CS Wifi 芯片的版本从 2023.10.31.1425 开始*
- *适用于 Broadcom LGX4358 Wifi 芯片的版本从 2022.07.29.1625 开始*
- *适用于 Realtek RTL8822BS Wifi 芯片的任何固件* *
- 4.0 到 U2AW ❌ *(无法启动)*
- 5.0 到 U2W ☑️
- *适用于 Realtek RTL8822CS Wifi 芯片的版本从 2023.10.31.1425 开始*
- *适用于 Broadcom LGX4358 Wifi 芯片的版本从 2022.07.29.1625 开始*
- *❌ Realtek RTL8733BS Wifi 芯片无法实现*
- 5.0 到 U2AW ❌ *(无法启动)*
请注意,**Carlinkit 控制设备激活**(通过 /etc/uuid_sign),你的设备虽然可以运行,但会被阻止在激活模式,新的激活现在需要没有人拥有的登录名/密码,在尝试此操作之前,**请将你的原始 Flash 保存在安全的地方**。
### 通过硬件对设备进行 Root
查看 https://github.com/ludwig-v/wireless-carplay-dongle-reverse-engineering/tree/master/Flash_Dump 以使用 Raspberry Pi 读取 Flash(你也可以使用任何其他带有夹子的编程器)
查看 https://github.com/ludwig-v/wireless-carplay-dongle-reverse-engineering/tree/master/Flash_Dump/Tools 以提取 rootFS
一旦恢复了自定义固件的行为,你就可以安装 Dropbear (SSH) 并获得 Carlinkit 设备的 root 访问权限
## 文件系统
```
$ cat /proc/cmdline
console=ttyLogFile0 root=/dev/mtdblock2 rootfstype=jffs2 mtdparts=21e0000.qspi:256k(uboot),3328K(kernel),12800K(rootfs) rootwait quiet rw
$ cat /proc/mtd
dev: size erasesize name
mtd0: 00040000 00010000 "uboot"
mtd1: 00340000 00010000 "kernel"
mtd2: 00c80000 00010000 "rootfs"
$ df -T
Filesystem Type 1K-blocks Used Available Use% Mounted on
/dev/root jffs2 12800 10940 1860 85% /
devtmpfs devtmpfs 61632 0 61632 0% /dev
tmpfs tmpfs 61732 6324 55408 10% /tmp
/dev/sda1 vfat 62498880 42304 62456576 0% /mnt/UPAN
```
## u-boot 编译
```
apt-get install device-tree-compiler gcc-arm-linux-gnueabihf
export ARCH=arm
export CROSS_COMPILE=arm-linux-gnueabihf-
git clone https://github.com/ARM-software/u-boot.git
make mx6ull_14x14_evk_defconfig
make all
```
当通过 USB-OTG 供电时,设备可以被视为 "SP Blank 6ULL",但无法使用 imx_usb 刷入自定义 u-boot,因为它是经过签名的
## 有趣的仓库链接
https://github.com/segfly/carlinkit-modding
https://github.com/Henkru/cplay2air-wifi-passphrase-patch
https://github.com/Quikeramos1/Unbrik-Carlinkit-V3
https://github.com/lvalen91/CPC200-CCPA-Firmware-Dump
标签:Android Auto, Carlinkit, CarPlay, CSV导出, i.MX6, IoT安全, Root, SDIO, Wi-Fi芯片, 云资产清单, 固件破解, 固件解包, 嵌入式系统, 无线适配器, 汽车电子, 流量嗅探, 硬件分析, 网络安全审计, 越狱, 车联网, 逆向工程