UDBP(4)
π UDBP β USB Double Bulk Pipe driver π
okay bestie, sit down, hydrate, because we're about to talk about udbp, a lil driver from the Kernel Interfaces Manual section (that's section 4, iykyk). it's the thing that makes two computers hold hands over a USB cable and go "hi bestie" to each other. no cap. π«Ά
β¨ NAME β¨
udbp β the USB Double Bulk Pipe driver. that's it, that's the name, it's giving exactly what it says on the tin. π
π SYNOPSIS π
so like, you want this driver in your kernel? two ways, babe. either you bake it in at compile time by putting this line in your kernel configuration file:
device udbp
or β my personal fave β you load it as a module at boot time by putting this line in loader.conf(5):
udbp_load="YES"
pick your fighter. both slay. β¨
πΈ DESCRIPTION πΈ
okay so the udbp driver is what you use for host-to-host cables β the ones that contain at least two bulk pipes, one for each direction, because healthy communication goes both ways obviously π. typically this covers cables that are branded for use with Windows USB Easy Transfer, plus a whole bunch of cables built on the Prolific PL2xx1 series of USB bridge chips. and if you want the full tea on which cables actually work, there's a useful (but like, non-comprehensive, she's not claiming to be the whole list) rundown of compatible USB host cables down in the βSEE ALSOβ section below. π
β οΈ important bestie: it requiresnetgraph(4)to be available. you can do that either by addingoptions NETGRAPHto your kernel configuration file, or by loadingnetgraph(4)as a module β either from/boot/loader.confor straight from the command line β and you gotta do it before theudbpmodule. order matters, she's not flexible about this one. π
π EXAMPLES π
here's the actual group-chat receipts, copy-paste away:
options NETGRAPH
device udbp
this one adds the udbp driver to the kernel. classic. π
kldload netgraph
kldload udbp
this one loads the netgraph(4) module and then the udbp driver. see how netgraph goes first? told you. π«Ά
ngctl mkpeer udbp0: eiface data ether
ifconfig ngeth0 ether aa:dd:xx:xx:xx
ifconfig ngeth0 inet 169.254.x.x/16
this creates a new Ethernet network interface node and connects its ether hook to the data hook of the udbp driver. it's giving networking, it's giving main character energy. β¨
and the why? this enables FreeBSD to communicate with a Linux peer (like, 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. so cute when the two of them get along. π₯Ή
ngl tho, here's the fine print: 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. it's vibes-based compliance, bestie. π
π¦ SEE ALSO π¦
and the actual academic reading list, because we cite our sources in this house:
- Universal Serial Bus: Communications Class Subclass Specification for Ethernet Emulation Model Devices, USB Implementers Forum, Inc., Revision 1.0,
http://www.usb.org/developers/docs/devclass_docs/CDC_EEM10.pdf, February 2, 2005. - Total Commander: Supported cables for USB cable connection, Ghisler Software GmbH.,
https://www.ghisler.com/cables/index.htm.
π§ CAVEATS π§
okay so let's have the talk. π«Ά
the point-to-point nature and the extra latency of USB host-host links makes them unsuitable as a "drop-in" replacement for an Ethernet LAN. like, she's not that girl and she's not pretending to be. for a USB 3.0 SuperSpeed cable, latency is comparable to 100BaseTX Ethernet β but often worse π β with throughput comparable to 2.5GBASE-T.
but wait, don't count her out!! π their energy efficiency makes them genuinely attractive for embedded applications. a Plugable PL27A1 cable claims 24mA of USB3 bus power, compared to 150mA for a typical USB 3.0 to Gigabit Ethernet interface. that's a glow-up fr fr. β
π HISTORY π
the udbp driver first appeared in FreeBSD 5.0. she's been iconic since day one, no notes. π
π BUGS π
bestie, we keep it real here: the udbp driver does not support the special packets described in section 5.1 of the CDC EEM specification. that's the whole bug. that's the tea. π
π AUTHORS π
the udbp driver was written by:
- Doug Ambrisko
<ambrisko@whistle.com> - Julian Elischer
<julian@FreeBSD.org> - Nick Hibma
<n_hibma@FreeBSD.org>
and this manual page was written by Nick Hibma <n_hibma@FreeBSD.org> and updated by Bruce Simpson <bms@FreeBSD.org>. give them their flowers, they earned them. π
okay that's the whole page, mwah π β this beauty came out of the Debian side of the world, dated October 20, 2017. go forth and connect your lil computers. you're gonna do great. π«Άβ¨
π¦ where this page comes from
- debian bookworm: freebsd-manpages 12.2-1 Β· BSD-2-Clause-FreeBSD AND BSD-4-Clause
- debian trixie: freebsd-manpages 12.2-2 Β· BSD-2-Clause-FreeBSD AND BSD-4-Clause
- ubuntu jammy: freebsd-manpages 12.2-1 Β· BSD-2-Clause-FreeBSD AND BSD-4-Clause
- ubuntu noble: freebsd-manpages 12.2-1 Β· BSD-2-Clause-FreeBSD AND BSD-4-Clause
- ubuntu questing: freebsd-manpages 12.2-2
- ubuntu resolute: freebsd-manpages 12.2-2build1 Β· BSD-2-Clause-FreeBSD AND BSD-4-Clause
- ubuntu stonking: freebsd-manpages 12.2-2build1 Β· BSD-2-Clause-FreeBSD AND BSD-4-Clause
- Copyright (c) 1999 Nick Hibma <n_hibma@FreeBSD.org>. All rights reserved
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms