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

FreeBSD Manual Pages


home | help
USB(4)			 BSD 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 de-
     vices 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 at-
     taches 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 ad-
     dresses 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 in-
     dividually	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), 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), xhci(4)

     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 <>.

BSD				 May 20, 2009				   BSD


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

home | help