Skip site navigation (1)Skip section navigation (2)

FreeBSD Man Pages

Man Page or Keyword Search:
Man Architecture
Apropos Keyword Search (all sections) Output format
home | help
USB(4)		       FreeBSD Kernel Interfaces Manual			USB(4)

     usb -- Universal Serial Bus

     To	compile	this driver into the kernel, place the following line in your
     kernel configuration file:

	   device usb

     Alternatively, to load the	driver as a module at boot time, place the
     following line in loader.conf(5):


     USB functions can be accessed from	userland through the libusb library.
     See libusb(3) for more information.

     FreeBSD provides machine-independent bus support and drivers for USB
     devices in	host and device	side mode.

     The usb driver has	three layers:

	   USB Controller (Bus)

	   USB Device

	   USB Driver

     The controller attaches to	a physical bus like pci(4).  The USB bus
     attaches to the controller, and the root hub attaches to the controller.
     Any devices attached to the bus will attach to the	root hub or another
     hub attached to the USB bus.

     The uhub device will always be present as it is needed for	the root hub.

     The USB is	a system where external	devices	can be connected to a PC.  The
     most common USB speeds are:

	   Low Speed (1.5MBit/sec)

	   Full	Speed (12MBit/sec)

	   High	Speed (480MBit/sec)

     Each USB has a USB	controller that	is the master of the bus.  The physi-
     cal communication is simplex which	means the host controller only commu-
     nicates with one USB device at a time.

     There can be up to	127 devices connected to an USB	HUB tree.  The
     addresses are assigned dynamically	by the host when each device is
     attached to the bus.

     Within each device	there can be up	to 16 endpoints.  Each endpoint	is
     individually addressed and	the addresses are static.  Each	of these end-
     points will communicate in	one of four different modes: control,
     isochronous, bulk,	or interrupt.  A device	always has at least one	end-
     point.  This endpoint has address 0 and is	a control endpoint and is used
     to	give commands to and extract basic data, such as descriptors, from the
     device.  Each endpoint, except the	control	endpoint, is unidirectional.

     The endpoints in a	device are grouped into	interfaces.  An	interface is a
     logical unit within a device; e.g.	a compound device with both a keyboard
     and a trackball would present one interface for each.  An interface can
     sometimes be set into different modes, called alternate settings, which
     affects how it operates.  Different alternate settings can	have different
     endpoints within it.

     A device may operate in different configurations.	Depending on the con-
     figuration, the device may	present	different sets of endpoints and	inter-

     The bus enumeration of the	USB bus	proceeds in several steps:

     1.	  Any interface	specific driver	can attach to the device.

     2.	  If none is found, generic interface class drivers can	attach.

     The USB specifications can	be found at:

     libusb(3),	usbdi(4), aue(4), axe(4), cue(4), ehci(4), kue(4), mos(4),
     ohci(4), pci(4), rue(4), ucom(4), udav(4),	uhci(4), uhid(4), ukbd(4),
     ulpt(4), umass(4),	ums(4),	uplcom(4), urio(4), uvscom(4), usbconfig(8),

     The usb module complies with the USB 2.0 standard.

     The usb module has	been inspired by the NetBSD USB	stack initially	writ-
     ten by Lennart Augustsson.	The usb	module was written by Hans Petter
     Selasky <>.

FreeBSD	9.2			 May 20, 2009			   FreeBSD 9.2


Want to link to this manual page? Use this URL:

home | help