Mazda Entertainment System - Capturing Bus Data
Here are two ways to get data off the bus. The first is useful for bulk transfer and the second is useful for examining signal timing.
Using A Decoder
The easiest way to view data on the bus is to use an external decoder. I wrote some software for an ATmega168 that captures data off the bus and sends it (one command at a time) out of it's USART. It can then be connected to a computer where the data can be presented with the use of a simple python script.
This simple circuit is all you need:
Related files
- Source code for ATmega168: dump.c
- Software for displaying the data: ffdump.py
- All the related files in an archive: serialdump.tar.bz2
Capturing Raw Data
The easiest way to capture data off the message bus is to connect the bus directly to a parallel port and sample the port roughly every 0.1ms (more than fast enough to capture even the shortest messages). This method also allows you to accurately measure message timing.
One problem I had was that my parallel port's input resistance was too low which would cause the bus to idle at around 4V instead of 5V. That small voltage drop was enough to prevent the radio from sending messages so I had to build a small non-inverting amplifier. The schematic for that amplifier is available here:
Related files
- Code used to sample the parallel port: sample.c