What do we know about the MMI in the A3?
As a information security specialist / developer by trade, Im extremely interested in the MMI system in the Audi. While I wont be taking things as far as Charlie Miller did (hilarious talk at Defcon this year by the way), Im curious how the MMI system works under the hood as I like to understand the technology I use, so I have started to compile some initial info.
I have barely scratched the surface, and If I decide to dig deeper I will be sure to write my findings down somewhere, but here is what I know so far:
The MMI-version in the new A3 runs QNX Neutrino, a *nix based POSIX-compliant RTOS that first came out back in 2001, which is now widely used in everything from cars to nuclear powerplants. QNX was interestingly enough recently acquired by Blackberry and the Blackberry 10 OS used in the new Blackberry Devices is also based on QNX. Surprisingly, at least to me, QNX also powers the later generations of BMW’s iDrive. I think this is cool! I see plenty of similarities in the way we use systems such as Audi MMI’s with how we use modern smartphones so having QNX under the Blackberry umbrella sounds like a good idea to me. There’s actually an official suite of QNX plugins for Eclipse available for the adventurous developer out there, which is kinda cool! QNX Neutrino runs a microkernel called procnto which looks kinda fun. There’s a ton of documentation on QNX, most of it dating back to 2004 and earlier, so if I get the time to take a deep dive, I should have enough reading material available. I wonder how much the system has developed over the recent years though. I get the impression that QNX Neutrino is all about reliability, which is why its used in Cisco’s IOS-XR for example.
There’s a Tegra 3 chip powering the graphics, and an ARM Cortex A9 processor with an unknown number of cores. Well, I havent been able to confirm but its either dual core or quad core, as QNX states “multiple cores” and the A9 only supports up to four independent cores. QNX also state that they utilize SMP (Symmetric MultiProcessing) to get the most out the A9-CPU, but Im not sure how SMP really does any good as long as there is only one CPU in there. SMP is basically a way to effectively utilize multiple CPU’s so I guess it can have the same benefit on multiple cores as well. One limitation there though is that two CPU’s/Cores cant access the same memory at the same time, but caching mitigates this so no worries. Speaking of memory, I have not been able to figure out how much RAM is in the Audi MMI in the A3. So your guess is as good as mine here.
So questions: Have anyone here developed for QNX before? Im under the impression that its a bit old fashioned but extremely reliable but probably has its fair share of odd quirks (though not anywhere near as odd as in zArchitecture I hope).
Thats all for now! I find these embedded magic black box-like systems very intriguing as there doesnt seem to be that many people out there who knows how they work, yet they interface with so many systems in your car!
Here's to hoping I'm not the only tech geek out there :)