Skip to content

[NW.js port for Raspberry Pi] binary compiled for the ARMv6 used in Raspberry Pi (compatible with RPi 2 and RPi 3)

Notifications You must be signed in to change notification settings

jalbam/nwjs_rpi

Repository files navigation

NW.js port for Raspberry Pi

NW.js (formerly node-webkit) binary compiled for the ARMv6 used by Raspberry Pi. It also runs on Raspberry Pi Zero, Raspberry Pi Zero 2, Raspberry Pi 2, Raspberry Pi 3, Raspberry Pi 4 and Raspberry Pi 400 since they are backward compatible with ARMv6. Other compatible hardware should also be able to run this binary (as Orange Pi, Banana Pi, etc.).

Instructions

  1. You need a package.nw which is just a .zip file with .nw extension that contains your project (at least, it needs an index.html and a package.json inside). The included package.nw is just an example using the Yasminoku game. Since this is only a port, if you need it you can go to the official web site of NW.js and read the documentation to know more about package.nw, package.json, etc.

  2. Optional: merge nw and package.nw into a single file with the following command:

    cat nw package.nw > Your_new_binary_file
    
  3. Edit fix_libudev.so.0 and fix_libudev.so.1 and replace Your_new_binary_file found in their code by the real name of your binary file (if you did not merge nw and package.nw together, then replace it by just nw).

  4. If you need it, give executable permissions (and other desired permissions) to Your_new_binary_file (or nw) using the chmod command (as root).

  5. Try to run the binary:

    ./Your_new_binary_file
    

    If you did not merge the nw and package.nw files in one single file (as explained in step 2), you should run this command instead:

    ./nw
    
  6. In the case the system complains about libudev.so.0 when you try to run the binary, just type the following command:

    ./fix_libudev.so.0
    

    Likewise, if needed, do the same for libudev.so.1 running this:

    ./fix_libudev.so.1
    

    Note: these two commands above will only work if you have followed the step 3 properly before. Each of them only needs to be executed once and never again. Only execute the script needed and do not execute the other script when not needed (i.e. no error is thrown).

    If the system complains also about libgconf-2.so.4, run this:

    sudo apt-get install libgconf-2-4
    

    If you see any error regarding NSS (as for example something like this: Failed to load NSS libraries), try running this:

    sudo ln -s /usr/lib/arm-linux-gnueabihf/nss/ /usr/lib/nss
    
  7. If all works well, you can distribute your project. You will need these files at least (in the same folder): libffmpegsumo.so, nw.pak and Your_new_binary_file (or nw and package.nw instead). I would recommend including fix_libudev.so.0 and fix_libudev.so.1 optionally (modified as explained in step 3) if you think others might need them.

Versions

node-webkit (now called NW.js) version: v.0.7.0-pre

Node.js version: v0.10.12

Tested on

  • "Raspberry Pi Model B Revision 2.0 Mounting holes" with 512MB RAM (000e revision) using Raspbian GNU/Linux 7 "wheezy" (Linux raspberrypi 4.1.19+ #858 armv6l GNU/Linux).
  • "Raspberry Pi 2 Model B PCB Revision 1.1" with 1024MB RAM (a01041 revision) using Raspbian GNU/Linux 8 "jessie" (Linux raspberrypi 4.9.35-v7+ #1014 SMP armv7l GNU/Linux).
  • "Raspberry Pi 3 Model B PCB Revision 1.2" with 1024MB RAM (a02082 revision) using Raspbian GNU/Linux 8 "jessie" (Linux raspberrypi 4.1.19-v7+ #858 SMP armv7l GNU/Linux).
  • "Raspberry Pi Zero W PCB Revision 1.1" with 512MB RAM (9000c1 revision) using Raspbian GNU/Linux 9 "stretch" (Linux raspberrypi 4.14.71+ #1145 SMP armv6l GNU/Linux).
  • "Raspberry Pi 3 Model B+ PCB Revision 1.3" with 1024MB RAM (a020d3 revision) using Raspbian GNU/Linux 9 "stretch" (Linux raspberrypi 4.14.71-v7+ #1145 SMP armv7l GNU/Linux).
  • "Raspberry Pi 4 Model B PCB Revision 1.4" with 8GB RAM (d03114 revision) using Raspbian GNU/Linux 11 "bullseye" (Linux raspberrypi 6.1.21-v8+ #1642 SMP PREEMPT aarch64 GNU/Linux).
  • "Orange Pi Zero (Allwinner H2+)" with 512MB RAM (hardware sun8i, 0000 revision) using Raspbian GNU/Linux 8 "jessie" (Linux OrangePizero 3.4.39 #2 SMP PREEMPT armv7l GNU/Linux).
  • "Orange Pi Zero Plus2 (Allwinner H3)" with 512MB RAM (hardware sun8i, 0000 revision) using Raspbian GNU/Linux 8 "jessie" (Linux OrangePI 3.4.112-opi #1 SMP PREEMPT armv7l GNU/Linux).

Compatibility

  • Raspberry Pi Zero, all models
  • Raspberry Pi Zero 2, all models
  • Raspberry Pi, all models
  • Raspberry Pi 2, all models
  • Raspberry Pi 3, all models
  • Raspberry Pi 4, all models
  • Raspberry Pi 400, all models
  • Other devices with compatible hardware (Orange Pi, Banana Pi, etc.)

Known issues

  • No sound available.

Credits

The original binary was shared by Nils Måsén "piksel" (aka "spaculo") at https://www.youtube.com/watch?v=MqNUYk9Y8jY so thank you very much! :)

This repository was created by Juan Alba Maldonado