I have spent several months analysing the K-CAN BUS of my BMW X1 (E84). This interface is a 100KHz differential CAN BUS that links most of the user controls within the BMW. It also contains come data that is available on the PT-CAN.
I have now got to a stage where I have written it up in the hope that it may be useful for others.
The link below contains all of the information that I have found so far. This is by no means a definitive list and it only contains about a 1/3rd of the PID's used on the K-CAN bus.
The information I have found has been gained from passively snooping the 100KHz Differential K-CAN bus and listening to
the standard communications of the BMW K-CAN network. This differs from many ODB-II tools that actively request engine debug / diagnostic data.
In my car I have removed the stereo so I am interfacing to the K-Can there. With the stereo still fitted you may be better off accessing the K-Can from the ultrasonic alarm sensor. Simply pop out the ultrasonic alarm sensor on the interior roof panel (You won’t even have to disconnect it, although no harm will be done if you do, at least on my X1).
I believe the K-can wires are the Green and Green with orange stripe. (These are usually twisted together as a twisted pair)
Green = K-Can low
Green/Orange = K-can High
(Check this I maybe wrong or they may be different for your car. If you get the wires the wrong way round your analyser won't work, although it doesn’t damage the car. If you accidently connect the two wires together you get a nasty red picture on the dashboard of car a ramp and the car does nothing.... unconnected the wires and it's OK, no lasting damage done!)
As the K-can is a multi-drop bus you can simply tap into the wires with your analyzer.
I am using an Arduino with Can bus shield to access the K-can. This simply converts the K-can data into USB serial data.
This can be viewed / recorded with any terminal software. The Arduino can also be used to filter ID's etc.. I can send you my Arduino code if you need. (PM or Email me).
A few days ago I designed a small PCB (2.5cm x 5cm) specifically for the car. This has a 12V Switch-mode regulator, Arduino processor (Atmel AVR) Can bus transceiver, USB connector etc. The bare PCB's are currently being fab’ed and I will be assembling the first one over the Christmas break. I should be able to supply these on at cost to anyone interested in tinkering.
To analyse the data I have been simply trawling through packets in Excel, creating graphs and looking for familiar patterns (My misses says it's a product of OCD's or borderline Autism!)
To display and parse the data with Windows, most of my work has been done creating a DLL for the RideRunner software (See post http://www.mp3car.com/road-runner/15...k-can-bus.html)
However I do have a standalone .exe that you can try if you want. (.NET 4.x required)
I hope this helps.
Excellent work. Congrats.
How many hours have you spent sniffing the bus?
For those who want to do the same, standard ELM327 bluetooth could be used. Pin 6 & 14 have to be wired to the K-CAN. There is an ascii terminal for android called Blueterm that acts as a very ergonomic sniffer.
ELM327 100Kbps configuration:
AT PP 2B SV 05
AT PP 2B ON
AT PP 2C SV C0
AT PP 2C ON
AT SP B
The filtering of a concrete 11bit ID (header):
AT CRA XXX
To reset de filter
Last edited by reinoso; 12-20-2012 at 03:38 AM.
Hi, Would this also support the CAN bus in Audi's? I'm not quite sure what type of CAN is used (It's a 2001 mod Audi).
I might be interested in one of those boards. Do you have an estimate of the prize of your board?
Borte the canbus ID's will be different so it will depend on how the plugin is implemented. As far as canbus goes it seems pretty standard, the messages in my Touareg are different as well but accessing them via canbus is the same.
I'm aware the actual data transmitted on the bus is different. I was just wondering about the hardware part of it, whether or not that would be compatible.
Sticks a mucky paw print in.