USB TRANSPORT
=============

The USB transport interfaces with a local Bluetooth USB dongle.

## Moniker
The moniker for a USB transport is either `usb:` or `usb::`
with `` as the 0-based index to select amongst all the devices that appear to be supporting Bluetooth HCI (0 being the first one), or where `` and `` are a vendor ID and product ID in hexadecimal.

!!! example
    `usb:04b4:f901`  
    Use the USB dongle with `vendor` equal to `04b4` and `product` equal to `f901`

    `usb:0`  
    Use the first Bluetooth dongle

## Alternative
The library includes two different implementations of the USB transport, implemented using different python bindings for `libusb`.
Using the transport prefix `pyusb:` instead of `usb:` selects the implementation based on  [PyUSB](https://pypi.org/project/pyusb/), using the synchronous API of `libusb`, whereas the default implementation is based on [libusb1](https://pypi.org/project/libusb1/), using the asynchronous API of `libusb`. In order to use the alternative PyUSB-based implementation, you need to ensure that you have installed that python module, as it isn't installed by default as a dependency of Bumble.