bluetooth-hci-socket v0.5.1
node-bluetooth-hci-socket
Bluetooth HCI socket binding for Node.js
NOTE: Currently only supports Linux and Windows.
Prerequisites
Linux
- Bluetooth 4.0 Adapter
Note: the node-usb dependency might fail install, this is ok, because it is an optional optional dependency. Installing libudev-dev via your Linux distribution's package manager will resolve the problem.
Windows
This library needs raw USB access to a Bluetooth 4.0 USB adapter, as it needs to bypass the Windows Bluetooth stack.
A WinUSB driver is required, use Zadig tool to replace the driver for your adapter.
WARNING: This will make the adapter unavailable in Windows Bluetooth settings! To roll back to the original driver go to: Device Manager -> Open Device -> Update Driver
Compatible Bluetooth 4.0 USB Adapter's
| Name | USB VID | USB PID |
|---|---|---|
| BCM920702 Bluetooth 4.0 | 0x0a5c | 0x21e8 |
| BCM20702A0 Bluetooth 4.0 | 0x19ff | 0x0239 |
| CSR8510 A10 | 0x0a12 | 0x0001 |
| Asus BT-400 | 0x0b05 | 0x17cb |
| Intel Wireless Bluetooth | 0x8087 | 0x07dc |
Install
npm install bluetooth-hci-socketUsage
var BluetoothHciSocket = require('bluetooth-hci-socket');Actions
Create
var bluetoothHciSocket = new BluetoothHciSocket();Set Filter
var filter = new Buffer(14);
// ...
bluetoothHciSocket.setFilter(filter);Bind
Raw Channel
bluetoothHciSocket.bindRaw([deviceId]); // optional deviceId (integer)User Channel
bluetoothHciSocket.bindUser([deviceId]); // optional deviceId (integer)Requires the device to be in the powered down state (sudo hciconfig hciX down).
Control Channel
bluetoothHciSocket.bindControl();Is Device Up
Query the device state.
var isDevUp = bluetoothHciSocket.isDevUp(); // returns: true or falseNote: must be called after bindRaw.
Start/stop
Start or stop event handling:
bluetoothHciSocket.start();
// ...
bluetoothHciSocket.stop();Note: must be called after bindRaw or bindControl.
Write
var data = new Buffer(/* ... */);
// ...
bluetoothHciSocket.write(data);Note: must be called after bindRaw or bindControl.
Events
Data
bluetoothHciSocket.on('data', function(data) {
// data is a Buffer
// ...
});Error
bluetoothHciSocket.on('error', function(error) {
// error is a Error
// ...
});Examples
See examples folder for code examples.
Platform Notes
Linux
Force Raw USB mode
Unload btusb kernel module:
sudo rmmod btusbSet BLUETOOTH_HCI_SOCKET_FORCE_USB environment variable:
sudo BLUETOOTH_HCI_SOCKET_FORCE_USB=1 node <file>.jsOS X
Disable CSR USB Driver
sudo kextunload -b com.apple.iokit.CSRBluetoothHostControllerUSBTransportDisable Broadcom USB Driver
sudo kextunload -b com.apple.iokit.BroadcomBluetoothHostControllerUSBTransportWindows
Force adapter USB VID and PID
Set BLUETOOTH_HCI_SOCKET_USB_VID and BLUETOOTH_HCI_SOCKET_USB_PID environment variables.
Example for USB device id: 050d:065a:
set BLUETOOTH_HCI_SOCKET_USB_VID=0x050d
set BLUETOOTH_HCI_SOCKET_USB_PID=0x065a
node <file>.js9 years ago
9 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago