libusb1
Pure-python wrapper for libusb-1.0
Decision gist · record as of 2026-08-14
Yes, if you need USB device access from Python and can install libusb-1.0 on your target OS. The package is actively maintained, has no known vulnerabilities, installs with low friction, and provides a clean Python API to libusb. The LGPL-2.1-or-later license is permissive for most use cases but requires disclosure if you distribute the library; check your project's licensing constraints. Windows users must handle driver setup separately.AI-flagged interpretation of the facts on this page — verify before relying
Before you install
- Requires libusb-1.0 system library installed and accessible to ctypes; on Windows, driver setup (WinUSB or libusbk) needed per device; CPython 3.6+ or PyPy 2.0+ required.
- Low friction installation; pure Python wheel with no compiled dependencies.
- Active maintenance with last commit on 2026-05-16 and release within 90 days.
License · maintenance · safety
LGPL-2.1-or-later (copyleft) — Licensed under LGPL-2.1-or-later (copyleft). Derivative works and modifications must be distributed under compatible terms; proprietary applications can link to it but must disclose the library and allow relinking.
last release 2026-05-16 (90 days) · last repo commit 2026-05-16 · 187 stars
0 known vulnerabilities (OSV.dev, 2026-08-14) · 618,950 downloads/mo, #5,731 on PyPI
Alternatives
Verify before relying
pip install libusb1
import libusb1
with libusb1.USBContext() as context:
handle = context.openByVendorIDAndProductID(VENDOR_ID, PRODUCT_ID)
if handle:
data = handle.bulkRead(ENDPOINT, BUFFER_SIZE)- Whether the package maintains backward compatibility across major versions beyond what the changelog indicates.
- Current test coverage and CI/CD pipeline maturity for the listed supported OSes.
- Performance characteristics for high-throughput or low-latency transfer scenarios.
What it is and what it does
libusb1 is a pure-Python ctypes-based wrapper around the libusb-1.0 C library, exposing USB device enumeration, configuration, and data transfer operations as Python classes and methods. It maps libusb functions to object-oriented interfaces—for example, libusb_init becomes USBContext, and libusb_get_device_list becomes a context method returning USBDevice instances—while converting C error codes into Python exceptions.
The package supports both synchronous blocking I/O and asynchronous event-driven transfers with callbacks, allowing developers to build USB applications on GNU/Linux, Windows, OSX, FreeBSD, and OpenBSD without writing C code. It handles the complexity of device claiming, interface selection, and transfer lifecycle management, though users must still install the appropriate system libusb library and, on Windows, configure device drivers separately.
Use it for
- Read sensor data or control hardware devices connected via USB in embedded or IoT applications.
- Build cross-platform USB diagnostic or firmware-flashing tools without rewriting logic per OS.
- Implement high-throughput data acquisition from USB instruments using asynchronous transfer batching.
- Enumerate and interact with multiple USB devices in a single Python process for device management utilities.
- Prototype USB communication logic in Python before optimizing performance-critical paths in C.
Worth the install?
AI-flagged interpretation of the facts on this page. Verify before relying on it.
Yes, if you need USB device access from Python and can install libusb-1.0 on your target OS.
The package is actively maintained, has no known vulnerabilities, installs with low friction, and provides a clean Python API to libusb. The LGPL-2.1-or-later license is permissive for most use cases but requires disclosure if you distribute the library; check your project's licensing constraints. Windows users must handle driver setup separately.
Install
libusb1 on PyPI
Before you install
Low friction installation; pure Python wheel with no compiled dependencies. Active maintenance with last commit on 2026-05-16 and release within 90 days. No known vulnerabilities.
Requires libusb-1.0 system library installed and accessible to ctypes; on Windows, driver setup (WinUSB or libusbk) needed per device; CPython 3.6+ or PyPy 2.0+ required.
License in practice
Licensed under LGPL-2.1-or-later (copyleft). Derivative works and modifications must be distributed under compatible terms; proprietary applications can link to it but must disclose the library and allow relinking.
Quickstart
pip install libusb1
import libusb1
with libusb1.USBContext() as context:
handle = context.openByVendorIDAndProductID(VENDOR_ID, PRODUCT_ID)
if handle:
data = handle.bulkRead(ENDPOINT, BUFFER_SIZE)
Verify before relying
- Whether the package maintains backward compatibility across major versions beyond what the changelog indicates.
- Current test coverage and CI/CD pipeline maturity for the listed supported OSes.
- Performance characteristics for high-throughput or low-latency transfer scenarios.
Package facts
| License | LGPL-2.1-or-later copyleft |
| Python support | Not specified |
| Install friction | Low. Pure-Python wheel |
| Runtime dependencies | None |
| Maintenance | Actively maintained 90 days since the last release |
| Last repo commit | |
| First released | |
| Downloads | 618,950 / month, #5,731 on PyPI 30-day window, as of 2026-08-14 |
| Known vulnerabilities | None known OSV.dev, checked 2026-08-14 |
| Classifiers | Intended Audience :: DevelopersOperating System :: OS IndependentProgramming Language :: Python :: 3Programming Language :: Python :: Implementation :: CPythonProgramming Language :: Python :: Implementation :: PyPyTopic :: Software Development :: LibrariesTopic :: System :: Hardware :: Hardware Drivers |
Evidence: libusb1-3.4.0-py3-none-any.whl
Tags
Let your AI agent find packages like this
Example. Real query, live index.
You found this page by searching. An agent finds it by wishing: SkillFed indexes 14,416 PyPI packages by what they can do, searchable in plain language.
wish › “usb device communication python”
- libusb1Python wrapper for libusb-1.0 that enables synchronous and…
- hidapiProvides a Python interface to HIDAPI, enabling communication with…
- pyusbPyUSB provides Python access to USB devices on the host machine…
Give your agent the search over MCP, or paste the wish link into any chat.
More Libraries packages
urllib3 is an HTTP client library that provides thread-safe connection pooling, SSL/TLS verification, multipart file uploads, request retries, compression support, and proxy handling for Python applications.
Requests is a Python HTTP library that simplifies sending HTTP/1.1 requests with automatic handling of headers, authentication, cookies, and response parsing.
Pluggy provides a plugin system that lets you define hook specifications and register implementations to be called in sequence, enabling extensible Python applications without tight coupling.
Install it if you're building an extensible application or framework.
Provides parsing, arithmetic, and recurrence rule computation for dates and times, with timezone support and iCalendar RFC compliance.
Install it if you need to parse flexible date strings, compute relative dates, handle timezones, or work with recurrence rules—it's the de facto choice for these tasks.
Six provides utility functions to write Python code that runs on both Python 2.7 and Python 3.3+, smoothing over language differences between the two versions.
pytest is a testing framework that lets you write test functions using plain assert statements and automatically discovers and runs them, with detailed failure reporting.
See also libusb-package · pyusb · hidapi · libusbsio · pylibftdi · pyftdi · hid · binho-host-adapter · brainstem · ft4222