https://github.com/manuelbl/usbx
Modern and user-friendly Python library for working with USB devices.
https://github.com/manuelbl/usbx
python usb
Last synced: about 1 year ago
JSON representation
Modern and user-friendly Python library for working with USB devices.
- Host: GitHub
- URL: https://github.com/manuelbl/usbx
- Owner: manuelbl
- License: mit
- Created: 2024-09-21T09:46:13.000Z (over 1 year ago)
- Default Branch: main
- Last Pushed: 2025-02-23T09:33:45.000Z (over 1 year ago)
- Last Synced: 2025-03-29T12:02:28.811Z (about 1 year ago)
- Topics: python, usb
- Language: Python
- Homepage:
- Size: 440 KB
- Stars: 7
- Watchers: 1
- Forks: 1
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- Contributing: docs/contributing.rst
- License: LICENSE
Awesome Lists containing this project
README

**usbx** is a modern, powerful and user-friendly Python library for working with USB devices.
It provides many useful features:
- Querying information about connected devices
- Communication with USB devices
- Notification when devices are connected and disconnected
- Single API for Windows, Linux and macOS
- Good documentation
- Thread-safe
- No need to install further software like *libusb*
**usbx** is easy to use:
```pycon
>>> from usbx import usb
>>> for device in usb.get_devices():
... print(device)
...
USD device 4295171929, vid=0x1a40, pid=0x0801, manufacturer=None, product=USB 2.0 Hub, serial=None
USD device 4295171974, vid=0x0b0e, pid=0x0412, manufacturer=None, product=Jabra SPEAK 410 USB, serial=783F92B9DD3Cx011200
```
## Installing
**usbx** can be installed with [pip](https://pip.pypa.io):
```shell
python -m pip install usbx
```
## Usage
The [User Guide](https://usbx.readthedocs.io/en/stable/user-guide.html) will get you started with the library.
Also read [Platform-specific Considerations](https://usbx.readthedocs.io/en/stable/platform-specific.html)
as some operating systems might need extra steps to work with USB devices.
The [API Reference](https://usbx.readthedocs.io/en/stable/reference/index.html) documentation provides API-level documentation.
### Examples
Serveral examples demonstrate the use of the library:
- [enumerate.py](examples/enumerate.py): Enumerate all connected devices including details about the interfaces and endpoints
- [monitor.py](examples/monitor.py): Monitor USB devices being connected and disconnected
- [epaper.py](examples/epaper.py): Display an image on e-paper display with (with IT8951 controller)
- [stm32dfu](examples/stm32dfu): Upload firmware to an STM32 based device
## License
**usbx** is made available under the MIT License. For more details, see [The MIT License](https://opensource.org/licenses/MIT>).
## Contributing
This is an open-source project that happily accepts contributions.
Please see [Contributing](https://usbx.readthedocs.io/en/stable/contributing.html) for details.
## System Requirements
- Python 3.9 or higher
- Windows (x86-64 or ARM), Linux (x86-64 or ARM), macOS (x86-64 or ARM)
- 64-bit platform and Python interpreter
- For Linux: *udev* (usually goes together with *systemd*)