I wanted to be able to view information about the currently playing song and control the audio source connected to the aux in my car.
Also, I was very curious about what's going on in the CAN-BUS and what can I do with it.
Because I already had a raspberry pi in my car as audio source (http://jb0.de/?p=16), I bought a CAN-BUS gateway for the pi and started sniffing.
The progress of finding the right messages, generating one and sending text to the car's display is described in my blog post (http://jb0.de/?p=199). In the end I was able to write text on the dashboards display and use the steering wheel buttons for control!
I'm currently developing the python MP3 player with CAN-BUS abilities, the source will be on GitHub very soon.
Also there are the discovered addresses. I would love to see an open canbus database where you can upload all kind of can messages for all kinds of vehicles. But unfortunately I was not able to find such a database, so I wrote down my gathered data in a google calc document which you also can check out. There are information for the SW-CAN and the MS-CAN Bus, also detailed notes about the packages sent to the display and diagnostic request messages by the vendors diagnosis system "Tech2".
Hope someone can use that information. If you know a better way to distribute that data, let me know!
I am really sorry (again) for the long delay between the updates. I am currently quite busy and happy to even find some time for my projects.
What's new? I 3D-printed a housing for the raspberry and the other components and installed it permanently into my car.
It is now stable enough to remove the possibility of booting it while driving by pulling the 12V-Plug from the cigarette lighter... Also the hard wired connection to the CAN-bus makes a way better connection than my previously used jumper-wires to the diagnostic port.
Also I added the display of some vehicle related information (engine-temp, voltage, speed, rpm) which I am getting from the controllers with a diagnostic request. My plan is to figure out the packages on the bus holding that information without the need of sending those diagnostic requests.
I made a little visualization tool to identify the specific diagnostic values. That's how the results look like:
You can find more detailed information about the values and diagnostic requests at my blog.
I would love to share the canbus-data in a more practical way than writing them as text to my blog, but so far I was unable to find a usable open database for vehicle-related canbus packages. If I am just missing it and something like that already exists, please point me there! Thanks!
If you want to take a look at my not-yet-cleaned-up source code, you can do so at GitHub.
This is a quick write-up of the current progress, I posted some more images an schematics at my project page, if you would like to take a closer look. In the case I missed to write about some important things, or you wold like to know some more details, feel free to ask!
This project made a huge step as the MP3-Player now actually plays MP3's. I build a python-script that uses the pygame library to control the playback of audio files.
It also uses the SocketCAN implementation of the python-can lib to listen to steering wheel commands and write song titles to the display.
I will describe the program in the details-section later and I will move the development from my personal repo to github (and, of course, link it here!).
The script also waits for the original "Aux" message to make sure it only sends the text when the radio actually is in aux mode (otherwise it would overwrite the radio station etc). This currently makes some problems because the radio sends some different messages transferring "Aux". So far, i found 4 different messages. This makes the detection not 100% reliable.
Also my current setup is connected by jumper wires to the OBD-port of the car. This is great for testing but makes no reliable vibration-proof connection. So I need to build a housing and wire everything to the cars electric.