NodeJS SocketCAN extension
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.
docs Replace deprecated Buffer constructor Sep 10, 2018
samples Add an example that emulates candump -L May 12, 2017
src Avoid APIs that were removed in Node 10. Aug 23, 2018
tests Replace deprecated Buffer constructor Sep 10, 2018
.gitignore git ignore update Sep 29, 2015 Added some documentation and scripts Oct 3, 2015
binding.gyp docs: Added missing documentation (based on yuidocjs) Apr 13, 2013
parse_kcd.js Replace deprecated Buffer constructor Sep 10, 2018 Support error handling if SocketCAN interface is stopped Apr 14, 2017
socketcan.js Replace deprecated Buffer constructor Sep 10, 2018


This is a NodeJS SocketCAN extension. SocketCAN is a socket-based implementation of the CANbus protocol for Linux system.

This extensions makes it possible to send and receive CAN messages (extended, remote transission) using simple Javascript functions.


Basic CAN example:

var can = require('socketcan');

var channel = can.createRawChannel("vcan0", true);

// Log any message
channel.addListener("onMessage", function(msg) { console.log(msg); } );

// Reply any message
channel.addListener("onMessage", channel.send, channel);


Working with message and signals:

var can = require('socketcan');
var fs = require('fs');

// Parse database
var network = can.parseNetworkDescription("samples/can_definition_sample.kcd");
var channel = can.createRawChannel("vcan0");
var db      = new can.DatabaseService(channel, network.buses["Motor"]);


// Register a listener to get any value changes
db.messages["CruiseControlStatus"].signals["SpeedKm"].onChange(function(s) {
   console.log("SpeedKm " + s.value);

// Register a listener to get any value updates
db.messages["Emission"].signals["Enginespeed"].onUpdate(function(s) {
   console.log("Enginespeed " + s.value);

// Update tank temperature

// Trigger sending this message


There are two options for installing node-can:

  1. Clone / download node-can from GitHub, then:
    $ npm i
    $ npm run configure
    $ npm run build
  1. Install via npm:
    $ npm install socketcan