CarPlay Bridge
Wireless CarPlay in a car that only knows the cable — a Raspberry Pi between phone and head unit.
The challenge
The factory head unit only speaks wired CarPlay. Every trip starts with finding the cable, plugging it in and waiting — even for a ten-minute drive.
Off-the-shelf dongles solve this, but they are closed boxes: undocumented firmware, ads on some models, and no clear answer about where the phone data actually goes. For a device that stays permanently in the car, that was not good enough for me.
The solution
Instead of a sealed box, a device whose behaviour I fully know: a Raspberry Pi that simulates an iPhone on one side and talks to the real phone over the air on the other.
USB gadget instead of a cable
The Pi registers with the head unit through the Linux kernel's USB gadget mode and behaves exactly like a plugged-in iPhone. On the other side it talks to the real phone over Wi-Fi and Bluetooth.
Understanding the protocol
Capturing the USB traffic, comparing it against open reference implementations and analysing firmware in Ghidra to reproduce the handshake, the audio channels and the video stream properly.
Reliable at ignition
Autostart through systemd, a watchdog for dropped links and a reconnect that needs no interaction: key turned, map on screen.
Key facts
cables when you get in
radio links: Bluetooth & Wi-Fi
own, open code