Noble (Node.js Bluetooth LE) for Windows 10
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.
- Node.js v6 or later.
- Windows 10 build 10.0.15063 or later
- Windows 10 SDK build 10.0.15063
noble-uwp instead of
const noble = require('noble-uwp');
Then use it in the same way as the regular
On non-Windows platforms, the benavior is unchanged from
noble, while on Windows the UWP bindings are used instead
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)
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
- The NodeRT adapter libraries may take a few minutes to build with
node-gyp; please be patient.
- The above string replacement in the
noble-devicesource file is necessary to get it to use the
noble-uwppackage instead of regular
DEBUGenvironment variable setting is optional; set it if you want to see verbose console output from
The following functionality is working:
- Device discovery
- Device services discovery
- Service included services discovery
- Service characteristics discovery
- Characteristic reading and writing
- Characteristic change notifications
- Descriptors (discovering, reading, writing)
The following functionality is not yet implemented: