A Node.js module for building Bluetooth Low Energy (BLE) central applications on macOS, Linux, FreeBSD, and Windows.
Noble is a Node.js module that allows applications to act as a central device in Bluetooth Low Energy (BLE) networks. It enables scanning for BLE peripherals, connecting to them, and performing GATT operations like reading and writing characteristics. It solves the problem of integrating BLE devices into Node.js applications for IoT, prototyping, and automation.
Node.js developers building applications that need to communicate with BLE devices, such as IoT prototypes, smart home integrations, or hardware monitoring tools.
Developers choose Noble because it provides a cross-platform, event-driven API for BLE central operations, abstracting complex platform-specific Bluetooth stacks into a simple JavaScript interface. It's widely used and supports macOS, Linux, FreeBSD, and Windows.
A Node.js BLE (Bluetooth Low Energy) central module
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Provides a unified JavaScript API across macOS, Linux, FreeBSD, and Windows, abstracting platform-specific Bluetooth stacks as stated in the philosophy section.
Supports full BLE interaction including reading, writing, subscribing, and notifying on characteristics, with detailed examples in the README for services and descriptors.
Uses Node.js EventEmitter for handling discoveries, connections, and data events, making it naturally asynchronous and suitable for Node.js applications.
Allows fine-grained control through environment variables like NOBLE_HCI_DEVICE_ID for multiple adapters and custom bindings, as shown in the advanced usage section.
Requires different prerequisites per OS—e.g., driver installations on Windows with Zadig, kernel versions on Linux—making initial deployment cumbersome and error-prone.
Known issues with certain BLE adapters, such as inability to connect while scanning, force developers to implement workarounds like stopping scans, impacting continuous operations.
Maximum simultaneous connections are restricted by hardware and OS (e.g., 5-6 devices), as documented, which hinders applications needing to manage many peripherals.
Some features, like the isNotification parameter, are deprecated on newer OS versions (e.g., macOS High Sierra), leading to potential breaks in legacy code.