Components¶
The USBIP Python library is layered by role, and the name prefix tells you which layer a symbol belongs to:
| Layer | Python | C prefix | Responsibility |
|---|---|---|---|
| Transport | usbip.USBIP, Loopback |
usbip_* |
the USB/IP wire (local by default) |
| Device | USBDevice, Interface, Endpoint |
usbip_device_* |
build a virtual device |
| Device classes | usbip.classes.device.* |
classes/*.h |
ready-made interfaces on top of the device API |
| Host | open, Handle, Driver |
usbip_host_* |
drive a device |
flowchart TD
subgraph app["your application"]
dev["<b>device</b><br>USBDevice + Interfaces<br><code>usbip_device_*</code> / <code>usbip.device</code>"]
host["<b>host</b><br>Handle / Driver<br><code>usbip_host_*</code> / <code>usbip.host</code>"]
end
dev <-- "URBs" --> transport
host <-- "URBs" --> transport
transport["Transport (<code>usbip_*</code>)<br>local loopback or TCP"]
A device is a USBDevice with one or more Interfaces; each interface
owns Endpoints (byte pipes). A host opens a device and runs transfers, or binds
a reusable Driver by class code. The transport carries URBs between the two -
the same whether both ends are in one process, across the local kernel, or over the
network. The table above links each layer's page.