“I ain’t been dropping no eaves, sir, honest!” – Sam Gamgee.
I have an upcoming problem that I need to solve with regards to my car (which is an Australian Holden 2009 VE Commodore). My car doesn’t have a USB iPhone interface, only a Stereo Auxiliary port. Whilst this works relatively well, I can’t control the iPhone from the steering wheel controls nor the stereo controls themselves. So what’s the business problem? I want to be able to use my built-in car stereo and associated controls to control/influence the iPhone.
Should be easy enough… Although it’s definitely a two part solution. My thoughts with regards to the car (the first part of the solution) were that it should just be a matter of picking up the wires coming from the steering wheel, using some other gadgets to determine the signal that corresponds to each button, and then building a circuit to capture it. Unfortunately, after some initial research I’ve since learned that the steering wheel controls, like most of the other devices in the car, actually send each other messages over the internal car network. This network is based on the CAN bus standard, although modified slightly for General Motors – in this case – GMLAN. GMLAN uses the single wire CAN bus networking type. So before I can move onto the overall iPhone solution, I first need to build an SW-CAN eavesdropping device so that I can then attempt to understand and decode the actual messages being sent by the various controls in the car.
Once I’ve completed the listening device and mapped out the control network, then I can move onto the second part of the solution which is the iPhone integration itself.
I’ll document the iPhone integration in a separate blog series and keep this series related to the car. Once both are complete, I’ll then create a final blog series on the overall integrated solution.
So to recap the plan:
- Build a SW-CAN decoder/sniffer/eavesdropperer (that seems like a better choice of word than simply eavesdropper). Use this to first understand how to actually communicate with the car, and then use this to learn the car’s language.
- Build an iPhone to Arduino interface, so that I can send and receive command signals with the iPhone.
- Build an integrated device that can speak to both the car and the iPhone, and then deploy it to the car.
This one might take a while…