Library API

The main objects are the BusABC and the Message. A form of CAN interface is also required.


Check the backend specific documentation for any implementation specific details.


Configuration file parsing.


Set the best version of SocketCAN for this system.

Parameters:config – The can.rc configuration dictionary
Raises:Exception – If the system doesn’t support SocketCAN

Returns a dict with configuration details which is loaded from (in this order):

  • Environment variables CAN_INTERFACE, CAN_CHANNEL
  • Config files /etc/can.conf or ~/.can or ~/.canrc where the latter may add or replace values of the former.

Interface can be kvaser, socketcan, socketcan_ctypes, socketcan_native, serial

The returned dictionary may look like this:

    'interface': 'python-can backend interface to use',
    'channel': 'default channel to use',
Parameters:path – Optional path to config file.

Loads config dict from environmental variables (if set):


Loads configuration from file with following content:

interface = socketcan
channel = can0
Parameters:path – path to config file. If not specified, several sensible

default locations are tried depending on platform.


The Notifier object is used as a message distributor for a bus.

class can.Notifier(bus, listeners, timeout=None)[source]

Bases: object

Manages the distribution of Messages from a given bus to a list of listeners.

  • bus – The Bus to listen too.
  • listeners – An iterable of Listeners
  • timeout – An optional maximum number of seconds to wait for any message.

Stop notifying Listeners when new Message objects arrive and call stop() on each Listener.