A SocketCAN abstraction layer for NodeJS.

npm install can
1 downloads in the last day
6 downloads in the last week
68 downloads in the last month


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('can');

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('can');
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"].messages);


// Register a listener to get any value changes
db.messages["CruiseControlStatus"].signals["SpeedKm"].onChange(function(s) {
   console.log("SpeedKm " + 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:

    node-gyp configure && node-gyp build

  2. Install via npm:

    npm install can

npm loves you