Ste Cooper

Sniffing CanBus messages with Arduino from Head-Unit.

Recommended Posts

So I'm working on a project with my Arduino to provide audio playback control when paying music through aux.

The Arduino essentially emulates a hid keyboard device so i can send multimedia key strokes. Connect the Arduino to my phone through USB OTG and i can control its play back.

This all went really well.

The next step now is to hook up to the CanBus so that when i use the head unit to move tracks the Arduino sends the command and boom job done!

Iv'e been doing a bit of research and found this document: https://groups.google.com/forum/#!msg/openxc/-UoxXVcfoVY/NERAectYOvYJ

It lists the CAN message ids for various radio commands, vol up / down, track next / previous etc. Apparently they were gathered from a Focus.

However i don't see any of the messages in that document when i listen to either the MSCan or normal HSCan.

Iv'e successfully read messages from both busses. The ones ive interpreted the data correctly are RPM, road speed and coolant temperature.

I thought i could try and find them myself, so I read messages within the ignition on but not the radio.
Then did the same but with the radio on and interacting with it.

Theory being if i removed duplicate entries i would be left with just messages relating to the radio actions, however after performing that i ended up with no distinct results. 

Its like the radio isn't emitting any messages.

So i had a couple of thoughts, ive connected up through the OBD socket, could there be some form of gateway that ensure specific diagnostic messages only get through?

I have thought about hooking into the bus directly behind the radio to try and see if this is true.

Other thought was my car doesn't have the bluetooth module (this wouldn't be needed if it did!). I would assume it would communicate with it over Can-bus, but maybe as its not enabled within my head unit it doesn't send the messages?

My car is a 2010 MK2.5 Focus, with the ford 6000 cd HU.

Sorry for the rambling nature of this but any information at all on the issues specifically or on the Can messages my head-unit emits, if it emits any at all would be great!

Thanks.

Share this post


Link to post
Share on other sites

That list is aimed at some of the US models I believe. None of the IDs matched up when I had a can transceiver connected to my Focus.

The radio probably doesn't transmit any CAN messages - the SWCs are resistor based and even the CD changer option is not can based afaik.

Although fun to tinker with, I found an aftermarket Android head unit more tinkerable with the ability to make apps for Android (if that interests you). You could also connect the Arduino via bluetooth or usb to said head unit and get data that way into the aftermarket unit.

 

Share this post


Link to post
Share on other sites

Thought it might be something like that.

I did wonder why the connector for the bluetooth module was so heavily populated, makes sense if it isn't communicating with the HU over CAN.

The main reason for all of this is cost, i have all the equipment needed just laying around (everyone buys an Arduino and after making a few LED's blink it sits in a drawer!)

I could open up the HU and intercept the various buttons presses directly by the Arduino, got experience with fine pitch soldering so shouldn't be too hard. (After HDMI modding an N64 anything's easy in comparison)

Would also give me the ability to make the Arduino drive the LCD too.

Looks like this is growing arms and legs but should still be a fun project, thanks for the info.

 

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.