By colin on Jun 22, 2008
ugen (USB generic) driver in Solaris is useful for users because it exports device nodes for each of the end point of a USB device. Users can access the raw data of the USB device via the ugen nodes. libusb or openusb interfaces are built upon this driver. It is not that staight forward that in what cases ugen nodes will be exported. Recently I was asked by people who want to utilize ugen device nodes in their projects. The following is trying to summarize all the cases.
ugen nodes are exported by default for the following devices:
1. Any USB devices that have not a class or vendor unique driver in
2. USB storage devices bound to scsa2usb(7D) driver. (refer to
3. USB printer devices bound to usbprn(7D) driver. (refer to
4. For a multi-interface USB device, usb_mid driver is by default
attached to it.
If none of the device's interfaces are explicitly
bound to the ugen(7D) driver, then usb_mid driver will create ugen
nodes for the device.
ugen nodes are not by default exported for some USB devices (a USB mouse, for example),
because it is bound to hid driver by USB class number and hid driver
does not create ugen nodes.