Socket CAN


The socket CAN sample is a server/client application that sends and receives raw CAN frames using BSD socket API.

The application consists of these functions:

  • Setup function which creates a CAN socket, binds it to a CAN network interface, and then installs a CAN filter to the socket so that the application can receive CAN frames.
  • Receive function which starts to listen the CAN socket and prints information about the CAN frames.
  • Send function which starts to send raw CAN frames to the bus.

The source code for this sample application can be found at: samples/net/sockets/can.


You need a CANBUS enabled board like ST Nucleo L432KC or ST STM32F072B-DISCO.

Building and Running

Build the socket CAN sample application like this:

Using west:

west build -b <board to use> samples/net/sockets/can -- -DCONF_FILE=<config file to use>

Using CMake and ninja:

cmake -B build -GNinja -DBOARD=<board to use> -DCONF_FILE=<config file to use> samples/net/sockets/can
ninja -C build

Example building for the nucleo_l432kc:

Using west:

west build -t run

Using CMake and ninja:

cmake -B build -GNinja -DBOARD=nucleo_l432kc samples/net/sockets/can
ninja -C build run