jasongin / noble-uwp

Noble (Node.js Bluetooth LE) with Windows 10 UWP bindings
MIT License
83 stars 45 forks source link

Noble (Node.js Bluetooth LE) for Windows 10

So far, noble has required an alternate Bluetooth driver on Windows, due to lack of good BLE support in the Windows Bluetooth stack. But the Windows 10 Creators Update has finally improved the BLE support. This project is an implementation of bindings for noble using that newly available functionality in Windows 10.

System Requirements

Usage

Simply require noble-uwp instead of noble:

const noble = require('noble-uwp');

Then use it in the same way as the regular noble. On non-Windows platforms, the benavior is unchanged from noble, while on Windows the UWP bindings are used instead of noble's Bluetooth HCI bindings.

Building for electron

Currently using electron-rebuild does not work. In order to build this module for electron it has to be rebuilt using the following command:

npm rebuild --runtime=electron --target=1.7.1 --arch=x64 --rebuild --disturl=https://atom.io/download/electron --build_from_source=true

adjust the target version to the version of electron you are running (1.7.1 works for electron 1.7.0 and up)

Testing

So far, testing has been done with a TI SensorTag.

First, make sure you have the necessary prerequisites for building Node.js native modules. Then, make sure a SensorTag is powered on (light is blinking) and within range, and use the following commands to set up and run tests from Windows PowerShell:

git clone https://github.com/sandeepmistry/node-sensortag
cd node-sensortag
npm install
npm install noble-uwp
node -e "var fs = require('fs'), `
  f = 'node_modules/noble-device/lib/util.js'; `
  fs.writeFileSync(f, fs.readFileSync(f).toString().replace(`
    'require(\'noble\')', 'require(\'noble-uwp\')'))"
$env:DEBUG="noble-uwp"
node test.js

Notes:

Implementation Status

The following functionality is working:

The following functionality is not yet implemented: