usb-devices
Tools for mapping, describing, and resetting USB devices
What it is and what it does
usb-devices is a lightweight Python library for querying and controlling USB devices on a system. It exposes device metadata—manufacturer, product name, vendor ID, product ID, bus and device numbers—and provides a reset operation for devices like Bluetooth adapters. The package has no runtime dependencies and installs as a pure Python wheel, making it quick to add to any project.
The library is in pre-alpha development but actively maintained, with recent commits and support for Python 3.10 through 3.14. It is designed for developers who need programmatic access to USB device information or the ability to reset devices without shell commands, particularly useful for Bluetooth device management and hardware troubleshooting workflows.
Use it for:
- Enumerate all USB devices on a system and extract their metadata for inventory or diagnostic logging.
- Reset a Bluetooth adapter (hci device) programmatically when it becomes unresponsive.
- Build a hardware management tool that needs to query or control USB peripherals without spawning shell processes.
- Automate device detection and initialization in embedded or IoT applications.
- Debug USB device conflicts by listing all connected devices and their IDs in a Python script.
Worth the install?
AI-flagged interpretation of the facts on this page — verify before relying
Maps, describes, and resets USB devices on a system, providing access to device metadata like manufacturer, product ID, and vendor ID.
Yes, if you need programmatic USB device enumeration or reset. Low install friction, no dependencies, permissive license, and active maintenance make it a safe choice. Pre-alpha status means the API may change, so pin the version in production. No known vulnerabilities.
Install
usb-devices on PyPI
pip
pip install usb-devicesuv
uv add usb-devicespoetry
poetry add usb-devicesInstalling usb-devices
Before you install
Low friction: pure Python wheel with no runtime dependencies. Active maintenance with recent commits, though pre-alpha status (Development Status :: 2) signals the API may still change.
License in practice
MIT license is permissive; you can use, modify, and distribute this package freely in commercial or private projects with minimal restrictions.
Quickstart
pip install usb-devices
from usb_devices import list_devices
devices = list_devices()
for device in devices:
print(device.manufacturer, device.product)
Requires Python 3.10 or later; system-level USB device access may require elevated privileges depending on OS and device permissions.
Verify before relying
- Whether the package works on Windows, macOS, and Linux equally or has platform-specific limitations.
- Whether device reset operations require root/administrator privileges on all platforms.
- API stability guarantees given pre-alpha status and how breaking changes are communicated.
Package facts
| License | MIT (permissive) |
| Python support | supports the current Python release (<4.0,>=3.10) |
| Install friction | low — pure-Python wheel |
| Runtime dependencies | none |
| Maintenance | actively maintained — 79 days since the last release |
| Last repo commit | |
| First released | |
| Downloads | 673,171/month — #5,398 on PyPI (30-day window, as of 2026-08-14) |
| Known vulnerabilities | none known (OSV.dev, checked 2026-08-14) |
Evidence: usb_devices-0.5.1-py3-none-any.whl
Tags
More Libraries packages
urllib3 is an HTTP client library that provides…
permissive · top 100 on PyPI
requestsRequests is a Python HTTP library that…
permissive · top 100 on PyPI
pluggyPluggy provides a plugin system that lets you…
permissive · top 100 on PyPI
python-dateutilProvides parsing, arithmetic, and recurrence…
permissive · top 100 on PyPI
sixSix provides utility functions to write Python…
permissive · top 100 on PyPI
pytestpytest is a testing framework that lets you…
permissive · top 100 on PyPI
bluetooth-adaptersEnumerates and locates Bluetooth adapters on a…
permissive · top 15,000 on PyPI
uart-devicesProvides a Python interface to interact with…
permissive · top 15,000 on PyPI
bluetooth-sensor-state-dataProvides data models for parsing, storing, and…
permissive · top 15,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
brainstemProvides Python bindings to control and…
unclear · top 15,000 on PyPI
aiousbwatcherWatches for USB devices being plugged in and…
permissive · top 15,000 on PyPI
hidProvides Python bindings to the hidapi library…
permissive · top 15,000 on PyPI
blkinfoRetrieves structured information about block…
copyleft · top 15,000 on PyPI
bluezooBlueZoo is a mock BlueZ D-Bus API service that…
copyleft · top 15,000 on PyPI