udbp — USB Double Bulk Pipe driver
Contents
Bugs
The udbp driver does not support the special packets described in section 5.1 of the CDC EEM
specification.
Caveats
The point-to-point nature and additional latency of USB host-host links makes them unsuitable as a "drop-
in" replacement for an Ethernet LAN; for a USB 3.0 SuperSpeed cable, latency is comparable to 100BaseTX
Ethernet (but often worse), with throughput comparable to 2.5GBASE-T.
However, their energy efficiency makes them attractive for embedded applications. A Plugable PL27A1 cable
claims 24mA of USB3 bus power, as compared to 150mA for a typical USB 3.0 to Gigabit Ethernet interface.
Description
The udbp driver provides support for host-to-host cables that contain at least two bulk pipes (one for
each direction). This typically includes cables branded for use with WindowsUSBEasyTransfer, and many
cables based on the Prolific PL2xx1 series of USB bridge chips. A useful (but non-comprehensive) list of
compatible USB host cables is listed in the “SEE ALSO” section below.
It requires netgraph(4) to be available. This can be done either by adding optionsNETGRAPH to your
kernel configuration file, or alternatively loading netgraph(4) as a module, either from
/boot/loader.conf or from the command line, before the udbp module.
Examples
optionsNETGRAPHdeviceudbp
Add the udbp driver to the kernel.
kldloadnetgraphkldloadudbp
Load the netgraph(4) module and then the udbp driver.
ngctlmkpeerudbp0:eifacedataetherifconfigngeth0etheraa:dd:xx:xx:xxifconfigngeth0inet169.254.x.x/16
Create a new Ethernet network interface node and connect its ether hook to the data hook of the udbp
driver.
This enables FreeBSD to communicate with a Linux peer (e.g. using the plusb driver). The Linux node
should be configured to prefer link-local IPv4 addresses (e.g. using Network Manager in Debian and Red
Hat derived distributions).
Whilst both FreeBSD and Linux are able to interoperate by loosely following CDC EEM 1.0 in their
behaviour, neither implementation has been expressly designed to follow its specification.
History
The udbp driver first appeared in FreeBSD 5.0.
Name
udbp — USB Double Bulk Pipe driver
See Also
netgraph(4), ng_eiface(4), ohci(4), uhci(4), usb(4), ngctl(8) UniversalSerialBus:CommunicationsClassSubclassSpecificationforEthernetEmulationModelDevices, USBImplementersForum,Inc., Revision 1.0, http://www.usb.org/developers/docs/devclass_docs/CDC_EEM10.pdf, February 2, 2005. TotalCommander:SupportedcablesforUSBcableconnection, GhislerSoftwareGmbH., https://www.ghisler.com/cables/index.htm.
Synopsis
To compile this driver into the kernel, place the following line in your kernel configuration file:
deviceudbp
Alternatively, to load the driver as a module at boot time, place the following line in loader.conf(5):
udbp_load="YES"
