Skip to content

Instantly share code, notes, and snippets.

@janjongboom
Last active February 24, 2023 14:40
Show Gist options
  • Save janjongboom/94d575526a689687a6b8 to your computer and use it in GitHub Desktop.
Save janjongboom/94d575526a689687a6b8 to your computer and use it in GitHub Desktop.
Firefox OS / JanOS on Raspberry Pi with GPIO support

This does NOT work on Raspberry Pi 2!

  1. Obtain a 8GB (or bigger) SD Card
  2. Download disk image from http://janos.io/builds/fxos-pi-gpio.img.zip and unzip
  3. Put SD card in your computer
  4. Find out where your SD card is mounted (BE REALLY SURE ITS THE RIGHT DEVICE, IT WILL BE WIPED COMPLETELY!!!), f.e. /dev/disk5 on OSX
  5. On Linux, run: sudo dd bs=4M if=fxos-pi-gpio.img of=/path/to/your/disk
  6. On OSX, run: sudo dd bs=4m if=fxos-pi-gpio.img of=/dev/rdisk5 (do rdisk, not disk here!)
  7. When it's done put it in your Pi and start up
  8. The demo's are wired like this: yellow LED on GPIO2, red LED on GPIO3, button (wire it as pulldown) on GPIO26.

Write your own apps

  1. Grab this repo: https://github.com/jan-os/janos/tree/gpio
  2. Check out apps/system/js/my-app.js for examples
  3. Go on the same network as the device and run nmap --open -p 5555 192.168.2.* (if 192.168.2 is your IP range of course) and use the IP in next step
  4. Connect to the device via adb: adb connect 192.168.2.100
  5. Verify that it works by running adb logcat, should see a lot of stuff going on
  6. Run make install-phone to update
  7. To debug, use WebIDE

Example of the API

Highly experimental, but to open pin 3 for output, set it to HIGH and then release it again:

navigator.gpio.setPinMode(3, 'output')
  .then(pin => {
    pin.writeDigital(true)
      .then(() => console.log('OK!'))
      .catch(ex => console.error('NOK!', ex));
  });

Only does digital pins at the moment.

Attribution

Porting Firefox OS to Rpi is all done by Chris Jones. I just wrote the Gecko APIs that make GPIO possible.

@SunboX
Copy link

SunboX commented Feb 27, 2015

Thx, but JanOS is absolutely ok. 😄 I'm trying to build a smart washing machine interface for demo purpose. So I don't need all the gaia stuff. Just some HTML5 interface that has a REST API and controls some hardware (LED's by now - for demo).

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment