
Security News
TypeScript is Porting Its Compiler to Go for 10x Faster Builds
TypeScript is porting its compiler to Go, delivering 10x faster builds, lower memory usage, and improved editor performance for a smoother developer experience.
bluetooth-hci-socket
Advanced tools
Bluetooth HCI socket binding for Node.js
NOTE: Currently only supports Linux and Windows.
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.
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
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 |
npm install bluetooth-hci-socket
var BluetoothHciSocket = require('bluetooth-hci-socket');
var bluetoothHciSocket = new BluetoothHciSocket();
var filter = new Buffer(14);
// ...
bluetoothHciSocket.setFilter(filter);
bluetoothHciSocket.bindRaw([deviceId]); // optional deviceId (integer)
bluetoothHciSocket.bindUser([deviceId]); // optional deviceId (integer)
Requires the device to be in the powered down state (sudo hciconfig hciX down
).
bluetoothHciSocket.bindControl();
Query the device state.
var isDevUp = bluetoothHciSocket.isDevUp(); // returns: true or false
Note: must be called after bindRaw
.
Start or stop event handling:
bluetoothHciSocket.start();
// ...
bluetoothHciSocket.stop();
Note: must be called after bindRaw
or bindControl
.
var data = new Buffer(/* ... */);
// ...
bluetoothHciSocket.write(data);
Note: must be called after bindRaw
or bindControl
.
bluetoothHciSocket.on('data', function(data) {
// data is a Buffer
// ...
});
bluetoothHciSocket.on('error', function(error) {
// error is a Error
// ...
});
See examples folder for code examples.
Unload btusb
kernel module:
sudo rmmod btusb
Set BLUETOOTH_HCI_SOCKET_FORCE_USB
environment variable:
sudo BLUETOOTH_HCI_SOCKET_FORCE_USB=1 node <file>.js
sudo kextunload -b com.apple.iokit.CSRBluetoothHostControllerUSBTransport
sudo kextunload -b com.apple.iokit.BroadcomBluetoothHostControllerUSBTransport
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>.js
FAQs
Bluetooth HCI socket binding for Node.js
The npm package bluetooth-hci-socket receives a total of 1,200 weekly downloads. As such, bluetooth-hci-socket popularity was classified as popular.
We found that bluetooth-hci-socket demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
TypeScript is porting its compiler to Go, delivering 10x faster builds, lower memory usage, and improved editor performance for a smoother developer experience.
Research
Security News
The Socket Research Team has discovered six new malicious npm packages linked to North Korea’s Lazarus Group, designed to steal credentials and deploy backdoors.
Security News
Socket CEO Feross Aboukhadijeh discusses the open web, open source security, and how Socket tackles software supply chain attacks on The Pair Program podcast.