noble-uwp
Version:
Noble (Node.js Bluetooth LE) with Windows 10 UWP bindings
75 lines (62 loc) • 3.12 kB
Markdown
# Noble (Node.js Bluetooth LE) for Windows 10
So far, [`noble`](https://github.com/sandeepmistry/noble) has required an
[alternate Bluetooth driver](https://github.com/sandeepmistry/node-bluetooth-hci-socket#windows)
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](https://blogs.windows.com/buildingapps/2017/01/13/new-bluetooth-features-in-creators-update-gatt-server-bluetooth-le).
This project is an implementation of bindings for `noble` using that newly available
functionality in Windows 10.
## System Requirements
* Node.js v6 or later.
* Windows 10 build 10.0.15063 or later
* Windows 10 SDK build 10.0.15063
## Usage
Simply require `noble-uwp` instead of `noble`:
```javascript
const noble = require('noble-uwp');
```
Then [use it in the same way as the regular `noble`](https://github.com/sandeepmistry/noble/blob/master/README.md).
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:
```powershell
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](https://github.com/felixrieseberg/windows-build-tools).
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:
```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:
* The NodeRT adapter libraries may take a few minutes to build with `node-gyp`; please be patient.
* The above string replacement in the `noble-device` source file is necessary to get it to use
the `noble-uwp` package instead of regular `noble`.
* The `DEBUG` environment variable setting is optional; set it if you want to see verbose console
output from `noble-uwp`.
## Implementation Status
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:
* Broadcast