Ok so a few bits of knowledge I have gathered so far. Some are really stupid, but I guess no info is too stupid
CAN BUS :: General hardware setup
A Controller Area Network consists of a loop, in fact the two lines (CAN High and CAN Low) are "terminated".
If you imagine the CAN "bus" being a railway, it's two lines being CANH and CANL, at the both ends of the rail, the lines are connected! That is with resistors (120 Ohm resistors are defined as standard).
Also, the two lines of the "railway" are twisted together.
Any node can be hooked at any point of the rail (paying attention to connecting the pins correctly to the CANH or CANL line), as long as it's between the two ends of the "railway".
CAN BUS :: In a car
A vehicle has a bunch of individual CAN busses. Usually when people talk CAN, they mean OBD-II (which is the OnBoard Diagnostics port that is mandatory on all vehicles commercialised since 2001 worldwide). The OBD port is a particular port and not interesting to me right now... anyway a quick search will lead to finding out it runs at 500kbps.
BMW :: K-CAN
In modern BMW's the K-CAN is the network on which most interior accessories are running, such as windows, lights, and the CIC (the infotainment system). This bus runs at 100kbps, which is usually not defined in Arduino CAN libraries.
I don't know the logic behind the value specified below, I know it relates to crystal timers, bit clocking etch... suffice to say you will need to add a line similar to this to enable popular CAN libraries to work on the K-CAN:
#define CANSPEED_100 9 // 100 Kbps
This goes next to where other speeds are defined..
7 = 125 Kbps
3 = 250 Kbps
1 = 500 Kbps
BMW :: CIC Controller (iDrive 2.0 rotary controller)
The BMW part number 6582 9267955-01 refers to the latest iDrive knob (in this case featuring Media, Radio, Tel, Nav, Menu, Back and Option buttons, on top of the knob which has a rotary encoder with integrated 4-way joystick with tilt mechanism and a push button).
This device has a 4-pin connector with the following pinout (pins are numbered inside the connector!):
1 VIN (+12V)
2 GND
3 CANH
4 CANL
I am now in the process of finding out how to set up a sniffer with the CAN-bus shield... basically listening to anything going on, on the bus.
I have to admit that up to now I simply haven't been able to do ANYTHING with the CAN-bus shield. I've been trying each and every popular and less popular libraries around. Unfortunately they all seem to be designed to work specifically with the OBD port.
I also have to understand if the iDrive knob device needs to be initialised somehow, or if it simply starts sending messages when a user interacts with its physical sensors. For that I need to sniff the network.
Will keep posting