After building my first Raspberry Pi-based head unit, I didn't return to the idea for quite a long time. The project worked and did what I needed it to do, but eventually both the car and my expectations of what a modern head unit should be capable of changed.
My next car was a Nissan. It already had a factory onboard computer with a screen and a rear-view camera. The camera was far from being in the best condition, but it worked and displayed its image on the factory screen. At the same time, the system didn't show much useful information, and I listened to music from my phone through a Bluetooth FM transmitter. It worked, but it was far from ideal. In a crowded FM band, interference would appear from time to time, I had to search for a free frequency, and sometimes the whole setup would simply start acting up.
Back to Raspberry Pi and a 7-Inch Screen
By that time, I was already very familiar with the 7-inch Waveshare HDMI display, which I had used in previous projects. So when I came across an inexpensive clone of that screen on Allegro, I bought it almost without thinking.
I had the screen. I knew the Raspberry Pi well. The only question was what exactly to build with them.
I didn't want to simply recreate my previous head unit. By the end of 2023, a device that could only play music, work with a camera, and provide connectivity with a phone no longer seemed sufficient.
Navigation was one of the main questions. Building my own navigation system, maintaining maps, and trying to recreate something that already worked perfectly well on a smartphone didn't make much sense.
I needed a different solution.
What If I Could Run CarPlay on Raspberry Pi?
While looking for a solution, I eventually came across information online that Apple CarPlay could be run on a Raspberry Pi.
And that completely changed the idea behind the project.
Instead of implementing navigation, music, phone calls, and all the other functions myself, I could use the phone's interface and turn the Raspberry Pi into a full-fledged head unit.
I found a Carlinkit dongle on Allegro at a reasonable price and decided to give it a try.
The first experiments, however, weren't particularly successful.
The ready-made software solutions written in Python that I managed to find were slow. The interface lagged, the system would occasionally freeze, and I didn't want to use it in a car in that state.
That's when I had the idea of moving everything to C++.
I made several attempts, but none of them resulted in a genuinely working solution. I don't even remember exactly what ultimately made me stop development, but eventually the project went back on the shelf.
And it stayed there for quite a long time.
New Car — New Attempt
During that time, I changed cars again. The Nissan was replaced by a Volkswagen Golf with the factory RCD510 head unit.
The RCD510 itself was quite a good head unit for its time, so initially there was no urgent need to replace it.
In fact, for a while my attention shifted in a completely different direction — I became interested in seeing just how deeply I could understand the RCD510 itself. But that's a separate story, and one that deserves an article of its own.
Meanwhile, the idea of building my own head unit never went away.
In spring 2026, I returned to CarPlay on Raspberry Pi once again. This time, things were much more interesting: I found FastCarPlay, an existing project written in C++.
It was exactly the direction I had been trying to reach on my own several years earlier.
I pulled out the Raspberry Pi, the Carlinkit dongle, and that same 7-inch screen again.
This time, CarPlay actually worked.
And that is where the story of CaRadio in its current form begins.
Continue reading: CaRadio: CarPlay on Raspberry Pi and Linux