bluezoo
A mock for the BlueZ D-Bus API
What it is and what it does
BlueZoo is a D-Bus mock service that emulates the BlueZ Bluetooth stack, allowing developers to test Bluetooth-dependent applications without real Bluetooth hardware. It registers as the "org.bluez" D-Bus service and runs entirely in user space, making it suitable for automated test suites and CI/CD pipelines on Linux systems. The package provides a command-line interface to start mock adapters and a D-Bus manager interface to dynamically add or remove adapters during testing.
The package depends on coloredlogs, pyventus, pyparsing, and sdbus to handle D-Bus communication, event dispatching, and logging. It supports a subset of BlueZ interfaces including Adapter1, Device1, GattService1, GattCharacteristic1, GattDescriptor1, Agent1, AgentManager1, LEAdvertisement1, and LEAdvertisingManager1. Applications can interact with BlueZoo using standard BlueZ tools like bluetoothctl or D-Bus utilities (gdbus), making it a drop-in mock for testing without modifying application code.
Use it for:
- Test Bluetooth device discovery and connection logic in CI/CD pipelines without physical hardware
- Develop and validate GATT service implementations for BLE peripherals in isolation
- Mock Bluetooth adapter state changes and device events for integration testing
- Verify BlueZ D-Bus API calls in applications without requiring root access to real Bluetooth hardware
- Simulate multiple Bluetooth adapters for testing multi-adapter scenarios
Worth the install?
AI-flagged interpretation of the facts on this page — verify before relying
BlueZoo is a mock BlueZ D-Bus API service that lets you test Bluetooth integration without physical hardware, running entirely in user space for CI/CD integration.
Yes, if you are testing BlueZ integration on Linux and want to avoid hardware dependencies in CI/CD. The low install friction, active maintenance, and zero known vulnerabilities make it a reasonable choice for test suites. However, the young codebase (first release April 2025) and minimal adoption mean you should verify that the supported BlueZ interfaces match your application's needs before committing to it in production workflows. The GPL-2.0-only license requires careful review if your application will be distributed.
Install
bluezoo on PyPI
pip
pip install bluezoouv
uv add bluezoopoetry
poetry add bluezooInstalling bluezoo
Before you install
Low install friction with a pure-Python wheel. Actively maintained with recent commits; however, the package is young (first release April 2025) and has minimal adoption (3 repository stars), so production stability remains unproven.
License in practice
Licensed under GPL-2.0-only (copyleft). Any application that links or distributes BlueZoo must comply with GPL v2 terms, including source code disclosure obligations.
Quickstart
pip install bluezoo
# Start a local D-Bus bus and set DBUS_SYSTEM_BUS_ADDRESS
dbus-daemon --session --print-address
# Run BlueZoo with a mock adapter
bluezoo --auto-enable --adapter 00:11:22:33:44:55
Requires a D-Bus system (typically Linux), Python >=3.11, and a running D-Bus daemon; the package is designed for POSIX Linux environments.
Verify before relying
- Completeness of BlueZ interface support beyond the documented subset (org.bluez.Adapter1, org.bluez.Device1, org.bluez.GattService1, etc.)
- Performance characteristics and scalability limits when simulating multiple adapters or devices under load
- Compatibility with specific BlueZ versions or BlueZ client libraries beyond bluetoothctl
Package facts
| License | GPL-2.0-only (copyleft) |
| Python support | supports the current Python release (>=3.11) |
| Install friction | low — pure-Python wheel |
| Runtime dependencies | 4 — coloredlogs, pyventus, pyparsing, sdbus |
| Maintenance | actively maintained — 333 days since the last release |
| Last repo commit | |
| First released | |
| Downloads | 513,183/month — #6,250 on PyPI (30-day window, as of 2026-08-14) |
| Known vulnerabilities | none known (OSV.dev, checked 2026-08-14) |
Evidence: bluezoo-1.0.2-py3-none-any.whl
Tags
More Testing packages
Pluggy provides a plugin system that lets you…
permissive · top 100 on PyPI
pytestpytest is a testing framework that lets you…
permissive · top 100 on PyPI
virtualenvvirtualenv creates isolated Python environments…
permissive · top 100 on PyPI
coverageCoverage.py measures which lines of Python code…
permissive · top 1,000 on PyPI
pytest-asynciopytest-asyncio is a pytest plugin that enables…
permissive · top 1,000 on PyPI
pytest-json-ctrfA pytest plugin that generates test reports in…
permissive · top 1,000 on PyPI
btsocketA Python library for controlling BlueZ…
permissive · top 15,000 on PyPI
bluetooth-adaptersEnumerates and locates Bluetooth adapters on a…
permissive · top 15,000 on PyPI
bluetooth-auto-recoveryDetects and recovers Bluetooth adapters that…
permissive · top 15,000 on PyPI
cocotb-buscocotb-bus provides pre-built testbenching…
unclear · top 15,000 on PyPI
usb-devicesMaps, describes, and resets USB devices on a…
permissive · top 15,000 on PyPI
jeepneyJeepney is a pure Python implementation of…
permissive · top 1,000 on PyPI
habluetoothProvides high-availability Bluetooth…
permissive · top 5,000 on PyPI
moto-extMocks AWS services for testing by intercepting…
permissive · top 15,000 on PyPI
dbus-fastdbus-fast is a Python library for D-Bus…
permissive · top 5,000 on PyPI
bluetooth-data-toolsParses and manipulates Bluetooth Low Energy…
permissive · top 5,000 on PyPI