Setting up Python 3.3 with SocketCan Support in Ubuntu

From python 3.3 onwards support the SocketCan, but Ubuntu still needs python 2.7 internally.

To install a separate python version 3.3, do
(taken from

we need C compiler and other stuff to compile Python

sudo apt-get install build-essential

SQLite libs need to be installed in order for Python to have SQLite support.

sudo apt-get install libsqlite3-dev
sudo apt-get install sqlite3 # for the command-line client
sudo apt-get install bzip2 libbz2-dev

Download and compile Python:

tar jxf ./Python-3.3.0.tar.bz2
cd ./Python-3.3.0
./configure --prefix=/opt/python3.3
make && sudo make install

some nice touches:

mkdir ~/bin
ln -s /opt/python3.3/bin/python3 ~/bin/py33

Python 3.3 is now available for your user account as ~/bin/py33

Adding YAML

tar xvzf PyYAML-3.10.tar.gz 
cd PyYAML-3.10/
sudo ~/bin/py33  install

Starting SocketCAN

Load the Kernel modules

sudo modprobe can
sudo modprobe can_raw
sudo modprobe can_bcm
sudo modprobe vcan

Then you can create a new virtual CAN-Device by

sudo ip link add dev vcan0 type vcan
sudo ip link set up vcan0

or with a real device with buadrate

sudo ip link set can0 type can bitrate 500000
sudo ip link set up can0

(for SLCAN based interfaces see


ip link show

you should see something like

7: vcan0: <NOARP,UP,LOWER_UP> mtu 16 qdisc noqueue state UNKNOWN     link/can

To generate some traffic, you would need some tools out of the SocketCAN repository:

svn checkout
cd trunk/can-utils

Now you'll need something to send. Save that as test.log:

(0.100000) vcan0 5D1#0000
(0.200000) vcan0 271#0100
(0.300000) vcan0 289#72027000
(0.400000) vcan0 401#081100000000

This can now be played in an endless loop with

./canplayer -l i -I test.log

You can see the traffic with

can-utils$ ./candump vcan0
pc/pythoncad.txt · Zuletzt geändert: 2022/02/16 09:10 von admin