Hello Rhys/All!
I have very some basic knowledge in programming and electronics and I love retrofitting new tech to older cars but I’m new to Raspberry Pi and have zero knowledge on it.
I want to know more about some details about it before I fully commit on the React CarPlay project (even though I already gathered almost all things required for it ).
Car in question is a 2005 Citroen C4 Coupe VTS with factory Magneti Marelli - PSA RT3 headunit (in some markets called ‘NaviDrive’). It is featuring relatively big hi-res TFT screen for its era and would look great to be retrofitted with CarPlay with physical controls over steering wheel or buttons on the unit.
However, there is a slight issue… There is a RCA input in the glovebox and a Video mode which can be turned on in the menu - but the limitation is that the unit switches back to navi mode when you start moving – going over 15km/h. There is no option to code the BSI (Main Body Module / ECU) to remove this limitation with the OEM diagnostics equipment (DiagBox/Lexia) nor with any alternate methods - there just aren’t people fiddling with these cars and equipment so nobody so far has found and posted a solution to this problem on software level.
There is a not-so-elegant workaround which most people used for retrofitting reversing cameras, they would hardwire a switch to the display’s contacts on the ribbon cable thus bypassing the driving-cutoff of Video mode but that makes more problems.
When hardwired, the screen will play the content directly from the RCA input which is great but the steering and headunit controls would still work in the background and thus by using them you’d be moving thru navi Ui menus and maybe even unwillingly change something in the background.
So, question is: Does Raspberry need some CAN expansion board or can it natively be able to read and maybe emulate CAN messages? If so, I guess it would not be hard to send a CAN message to headunit to make it think the car is stationary?
Also, the same question applies for the Steering Wheel controls.
I would like to start from there as the whole project depends if this workaround could be implemented.
Thank you very much in advance for help!