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:

# On Linux/macOS
cd $ZEPHYR_BASE/samples/net/sockets/can
mkdir build && cd build
# On Windows
cd %ZEPHYR_BASE%\samples\net\sockets\can
mkdir build & cd build
cmake -GNinja -DBOARD=<board to use> -DCONF_FILE=<config file to use> ..

Example building for the nucleo_l432kc:

cd $ZEPHYR_BASE/samples/net/sockets/can
mkdir build && cd build
cmake -GNinja -DBOARD=nucleo_l432kc ..
ninja run