Skip to content

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.