Skip to content
Node.js native bindings for i2c-dev. Plays well with Raspberry Pi and Beaglebone.
Branch: master
Clone or download
Type Name Latest commit message Commit time
Failed to load latest commit information.
lib variable name is wrong Aug 14, 2015
src Convert to Nan to abstract from v8 and make package compatible with N… Jun 13, 2016
LICENSE add license file Jun 21, 2013 updated docs for nan c++11 requirements Jun 15, 2016


Bindings for i2c-dev. Plays well with Raspberry Pi and Beaglebone.


$ npm install i2c


var i2c = require('i2c');
var address = 0x18;
var wire = new i2c(address, {device: '/dev/i2c-1'}); // point to your i2c address, debug provides REPL interface

wire.scan(function(err, data) {
  // result contains an array of addresses

wire.writeByte(byte, function(err) {});

wire.writeBytes(command, [byte0, byte1], function(err) {});

wire.readByte(function(err, res) { // result is single byte })

wire.readBytes(command, length, function(err, res) {
  // result contains a buffer of bytes

wire.on('data', function(data) {
  // result for continuous stream contains data buffer, address, length, timestamp
});, length, delay); // continuous stream, delay in ms

// plain read/write

wire.write([byte0, byte1], function(err) {});, function(err, res) {
  // result contains a buffer of bytes

Raspberry Pi Setup

$ sudo vi /etc/modules

Add these two lines

$ sudo vi /etc/modprobe.d/raspi-blacklist.conf

Comment out blacklist i2c-bcm2708

#blacklist i2c-bcm2708

Load kernel module

$ sudo modprobe i2c-bcm2708
$ sudo modprobe i2c-dev

Make device writable

sudo chmod o+rw /dev/i2c*

Install gcc 4.8 (required for Nan)

sudo apt-get install gcc-4.8 g++-4.8
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.6 60 --slave /usr/bin/g++ g++ /usr/bin/g++-4.6
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.8 40 --slave /usr/bin/g++ g++ /usr/bin/g++-4.8
sudo update-alternatives --config gcc 

Set correct device for version

new i2c(address, device: '/dev/i2c-0') // rev 1
new i2c(address, device: '/dev/i2c-1') // rev 2


$ ntpdate -b -s -u
$ opkg update
$ opkg install python-compile
$ opkg install python-modules
$ opkg install python-misc
$ npm config set strict-ssl false
$ npm install i2c

Node 0.11 and under

npm install i2c@0.1.8

Projects using i2c


Thanks to @alphacharlie for Nan rewrite!


You can’t perform that action at this time.