Raspberry Pi GPIO library with fast mmap() access

npm install rpio
1 downloads in the last day
8 downloads in the last week
35 downloads in the last month


This is a node.js add-on which wraps around Mike McCauley's bcm2835 library to allow mmap access via /dev/mem to the GPIO pins.

If you want something more featureful then for now you should check out James Barwell's rpio-gpio.js. The reason for me writing this module instead of using James' is that his uses the /sys interface which is too slow for my requirements.


Easily install the latest via npm:

$ npm install rpio


var rpio = require('rpio')

// Enable a pin and mark as read-only

// Enable a pin and mark as read-write

// Read value of pin
console.log('pin 11 is set to ' + rpio.read(11))

// Set pin high (i.e. write '1' to it)
rpio.write(12, rpio.HIGH)

// Set pin low (i.e. write '0' to it)
rpio.write(12, rpio.LOW)

Simple demo

 * Simple demo to flash pin 11 at 100Hz (assuming it's routed to an LED).
var rpio = require('rpio')

// Set the pin for write mode

 * Set the pin high every 10ms, and low 5ms after each transition to high.
setInterval(function() {

  rpio.write(11, rpio.HIGH)

  setTimeout(function() {
    rpio.write(11, rpio.LOW)
  }, 5)

}, 10)

Authors and licenses

Mike McCauley wrote src/bcm2835.{cc,h} which are under the GPL.

I wrote the rest, which is under the ISC license unless otherwise specified.

npm loves you