Back to VANBus Index | http://graham.auld.me.uk | E-Mail me |
VAN Intro |
USB VAN Monitor |
Pioneer Headunit Control |
VAN Line Protocol |
VAN Frame Check Sequence |
VAN Bus Packets |
This interface was designed to allow a PC to monitor the VANbus for the purpose of confirming my decoding and the packets avaliable in my particular vehicle.
The design uses a Microchip MCP2551 CAN Transceiver to interface to the VANbus. The TTL level signals are provided to a pin of a Microchip PIC 18F2620 which is used to decode the VAN bit stream. Each decoded nibble is transmitted at 500kBaud from the PIC UART to the FTDI FT232RL which is a USB to Serial IC supporting many useful baud rates.
The whole circuit is powered by the 5V available from the USB port of the PC you connect it to. On connection to your PC under windows you will be prompted to install some drivers. Under even surprisingly old Linux kernels include the FTDI driver package as a module which will most likely be loaded on device connection! (Linux is ace)
The software in the PIC was hacked together by observing the output from a Peugeot head unit and reading the Atmel TSS461F VAN Datalink controller datasheet. I would have liked to use one of the Atmel VAN controllers but I was not able to purchase one easily.
The source code for the PIC is not ready for release but for now I will make available van-pc.hex which is the firmware I'm currently with the above circuit to monitor the VAN.
The serial port provided over USB should be configured to 500000 and then through the port you should see the data packets.
Every line is a separate VAN message followed by a line feed character:
Example Line: | 9C4C0080D4E2 | |||
Splits into | 9C4 | C | 0080 | D4E2 |
Section | IDEN | Flags | Data | Checksum |
Meaning | Radio Remote Control | Write & Request ACK | No button pushed and wheel not moved | I couldn't be bothered to calculate this to check... :-p |
Bus packet information is slowly being put online on this page!
In order to make sense of this I knocked up a quick Perl script to take either the live data or a file of recorded data and attempt to display the data in real-time. It's not great and only really tells you who sent what (that I know of so far) but it's a start. Try it if you're feeling brave! vanmon.pl (this version is a little out of date so will change soon...)
More recently I've developed the vanmon script into something a little more useful for in car real time monitoring of bus activity. Vandecode.pl now presents a fixed size output field highlighting new packets and areas where half a byte has changed to guide you to active areas. You can also select one packet to have further decoded - by default it just splits the data into byte pairs making it a bit easier to see. The data can then be piped into routines to decode a specific packet. Only IDENT 9C4 has this treatment at the moment and will display and describe button pushes as they happen. This will be expanded as I pay various IDENTs attention.
I have made the various datasheets available from my site but be aware these may not be as up to date as the manufacturers website:
MCP2551 CAN Transceiver (264kB)
PIC18F2620 Microcontroller (6MB)
FT232RL Datasheet (487kB)
FT232 Drivers (837kB)
TSS461F VAN Controller (606kB)
My software if you are brave:
van-pc.hex Code for PIC
vanmon.pl Code for viewing PIC serial data output
vandecode.pl Code for trying to make sense of VAN data in realtime