bumble
Bluetooth Stack for Apps, Emulation, Test and Experimentation
What it is and what it does
Bumble is a Bluetooth stack implementation written entirely in Python that provides both protocol-level support and higher-level abstractions for Bluetooth Low Energy (BLE) and Bluetooth Classic (BR/EDR) communication. It implements core protocols including GAP, L2CAP, ATT, GATT, SMP, SDP, RFCOMM, HFP, HID, and A2DP, and can interface with physical Bluetooth radios via USB, UART, or Linux VHCI, as well as virtual radios including the Android emulator's virtual Bluetooth support.
The package is designed for applications, emulation, testing, and experimentation rather than production deployment. It depends on cryptography for security operations, websockets and aiohttp for network communication, pyserial and pyusb for hardware transport, and several UI/CLI tools like click, prompt_toolkit, and prettytable. The library is maintained by Google but explicitly disclaimed as not an official product and remains in alpha with breaking changes expected.
Use it for:
- Build Bluetooth-enabled applications and prototypes that communicate with BLE or Classic devices without relying on OS-level Bluetooth APIs
- Test and validate Bluetooth device behavior by emulating devices and profiles in a controlled Python environment
- Experiment with Bluetooth protocols and develop custom protocol implementations using the stack's modular architecture
- Debug Bluetooth communication by capturing and analyzing HCI traffic over USB dongles or UART connections
- Simulate Bluetooth interactions in the Android emulator or other virtual environments for development and CI/CD testing
Worth the install?
AI-flagged interpretation of the facts on this page — verify before relying
Bumble is a full-featured Bluetooth stack written in Python that supports BLE and Bluetooth Classic protocols, profiles, and transports including USB, UART, and Linux VHCI.
Yes, if you need a Python-native Bluetooth stack for prototyping, testing, or experimentation with BLE or Classic devices. The active maintenance, permissive license, and low install friction make it accessible. However, the alpha status and explicit production disclaimer mean it is not suitable for production deployments—use for research, development, and testing only.
Install
bumble on PyPI
pip
pip install bumbleuv
uv add bumblepoetry
poetry add bumbleInstalling bumble
Before you install
Low friction install as a pure Python wheel. Active maintenance with a release 30 days ago and commits through late July 2026. Requires Python 3.10 or later and pulls in 15 runtime dependencies including cryptography, websockets, and USB libraries.
License in practice
Licensed under Apache 2.0 (permissive), allowing use in commercial and private projects with minimal restrictions beyond attribution and liability disclaimers.
Quickstart
pip install bumble
import bumble.device
import bumble.hci
# Create and configure a Bluetooth device
device = bumble.device.Device(name='MyDevice')
Requires Python 3.10 or later. Physical radio use requires a USB Bluetooth dongle or UART/VHCI transport; internal OS Bluetooth interfaces are typically locked down.
Verify before relying
- Whether all 15 runtime dependencies are required for basic usage or if subsets suffice for specific use cases
- Current stability and production-readiness status beyond the alpha disclaimer in the description
Package facts
| License | Apache-2.0 (permissive) |
| Python support | supports the current Python release (>=3.10) |
| Install friction | low — pure-Python wheel |
| Runtime dependencies | 15 — aiohttp, click, cryptography, humanize, platformdirs, prompt_toolkit, prettytable, pyee, tomli, websockets, pyserial-asyncio, pyserial, libusb1, libusb-package, pyusb |
| Maintenance | actively maintained — 30 days since the last release |
| Last repo commit | |
| First released | |
| Downloads | 109,439/month — #12,515 on PyPI (30-day window, as of 2026-08-14) |
| Known vulnerabilities | none known (OSV.dev, checked 2026-08-14) |
Evidence: bumble-0.0.233-py3-none-any.whl
Tags
More Networking packages
h11 is a pure-Python HTTP/1.1 protocol…
permissive · top 100 on PyPI
psutilpsutil retrieves real-time information about…
permissive · top 1,000 on PyPI
pyOpenSSLpyOpenSSL wraps OpenSSL's SSL/TLS functionality…
permissive · top 1,000 on PyPI
uvloopuvloop is a drop-in replacement for Python's…
permissive · top 1,000 on PyPI
execnetexecnet lets you spawn and communicate with…
permissive · top 1,000 on PyPI
pyzmqPyZMQ provides Python bindings for ZeroMQ…
permissive · top 1,000 on PyPI
xiaomi-bleManages Xiaomi BLE (Bluetooth Low Energy)…
permissive · top 15,000 on PyPI
govee-bleProvides Python bindings to discover, connect…
permissive · top 15,000 on PyPI
bleak-esphomeProvides a Bleak backend that proxies Bluetooth…
permissive · top 15,000 on PyPI
bleakBleak is an async Python client for connecting…
permissive · top 5,000 on PyPI
winrt-Windows.Devices.Bluetooth.GenericAttributeProfileProvides Python bindings to access Windows…
permissive · top 15,000 on PyPI
aioblescanaioblescan listens for and parses Bluetooth Low…
permissive · top 15,000 on PyPI
matter-ble-proxyA Python client library that bridges BLE…
permissive · top 15,000 on PyPI
kegtron-bleProvides Bluetooth Low Energy (BLE) support for…
permissive · top 15,000 on PyPI
smpmgrCLI tool for managing microcontroller firmware…
permissive · top 15,000 on PyPI
pybatfishPybatfish is a Python client for Batfish, a…
permissive · top 15,000 on PyPI