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.


Utilities and 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
can.util.load_config(path=None, config=None)[source]

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

  • config
  • can.rc
  • 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 any of the strings from can.VALID_INTERFACES for example: kvaser, socketcan, pcan, usb2can, ixxat, nican, remote, virtual.


If you pass "socketcan" this automatically selects between the native and ctypes version.

  • path – Optional path to config file.
  • config – A dict which may set the ‘interface’, and/or the ‘channel’, or neither.

A config dictionary that should contain ‘interface’ & ‘channel’:

    'interface': 'python-can backend interface to use',
    'channel': 'default channel to use',

Note None will be used if all the options are exhausted without finding a value.


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.

Set the logging level for the “can” logger. Expects one of: ‘critical’, ‘error’, ‘warning’, ‘info’, ‘debug’, ‘subdebug’


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.
exception = None

Exception raised in thread


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