How to get it to work:
In the kernel, enable
CAN networking and your appropriate CAN hardware device driver.
E.g., I have the dual-port Advantech PCI-1680, with a loopback (point-to-point interconnect, really) between the two ports.
I had to patch Linux 3.16.7 to get hardware support for this particular board.
modprobe plx_can ip link set can0 type can bitrate 125000 ip link set can1 type can bitrate 125000 ifconfig can0 up ifconfig can1 up # the socketcan user-space tools have moved from SVN at Berlios to GIT at Github aptitude install git git clone https://github.com/linux-can/can-utils/ cd can-utils make make install candump can1 # switch to another console cansend can0 5A1#1122334455667788
All of this works "out of the box" in Debian 8.1 Jessie.
Yes, the netfilter's "ip" tool already knows about CAN.
And yes, the libc / kernheaders already contain the CAN #defines and structs.
It really all worked in Debian 6 Squeeze already.
For more information on how to use the "socket CAN" from your programs,
Documentation/networking/can.txt in your kernel source tree.
And, the can-utils directory is a great source of code examples.
blurted by: Frank Rysanek [ rysanek AT fccps DOT cz ]