Hi,
I've recently bought a small USB color LCD module that has
132 x 64 pixels and supports 16 bit colors.
When I connect it to a stable/8 machine, three interfaces
are detected: The first two of them are keyboard and mouse
interfaces. That's because the display also has an IR port
with which you can use certain IR keyboards and mice and IR
remote controls. The mouse interface attaches to ums(4),
the keyboard interface attaches to uhid(4) because I don't
have ukbd in the kernel for certain reasons. Anyway, I'm
not interested in these, so I don't care, I only want to
control the LCD display itself.
The third interface represents the display itself. It is
a HID interface, so it attaches to a uhid(4) instance.
So this is what I get in dmesg:
ugen0.3: at usbus0
uhid1: on usbus0
ums1: on usbus0
ums1: 3 buttons and [XY] coordinates ID=1
uhid2: on usbus0
And these are the devices:
/dev:
lrwxr-xr-x 1 root wheel9 Mar 30 10:36 ugen0.3 -> usb/0.3.0
crw-r--r-- 1 root operator0, 110 Mar 30 10:36 uhid1
crw-r--r-- 1 root operator0, 112 Mar 30 10:36 uhid2
crw-r--r-- 1 root operator0, 111 Mar 30 10:36 ums1
/dev/usb:
crw--- 1 root operator0, 104 Mar 30 10:36 0.3.0
crw--- 1 root operator0, 106 Mar 30 10:36 0.3.1
crw--- 1 root operator0, 107 Mar 30 10:36 0.3.2
crw--- 1 root operator0, 108 Mar 30 10:36 0.3.3
crw--- 1 root operator0, 109 Mar 30 10:36 0.3.4
usbconfig reveals these details:
# usbconfig -u 0 -a 3 show_ifdrv
ugen0.3: at usbus0, cfg=0 md=HOST spd=FULL
(12Mbps) pwr=ON
ugen0.3.0: uhid1:
ugen0.3.1: ums1:
ugen0.3.2: uhid2:
# jot 6 0 | xargs -n 1 usbconfig -u 0 -a 3 dump_string
STRING_0x00 = <>
STRING_0x01 =
STRING_0x02 =
STRING_0x03 =
STRING_0x04 =
STRING_0x05 =
# usbconfig -u 0 -a 3 dump_device_desc
ugen0.3: at usbus0, cfg=0 md=HOST spd=FULL
(12Mbps) pwr=ON
bLength = 0x0012
bDescriptorType = 0x0001
bcdUSB = 0x0200
bDeviceClass = 0x
bDeviceSubClass = 0x
bDeviceProtocol = 0x
bMaxPacketSize0 = 0x0008
idVendor = 0x4243
idProduct = 0xee08
bcdDevice = 0x0101
iManufacturer = 0x0001
iProduct = 0x0005
iSerialNumber = 0x
bNumConfigurations = 0x0001
# usbconfig -u 0 -a 3 dump_all_config_desc
ugen0.3: at usbus0, cfg=0 md=HOST spd=FULL
(12Mbps) pwr=ON
Configuration index 0
bLength = 0x0009
bDescriptorType = 0x0002
wTotalLength = 0x005b
bNumInterfaces = 0x0003
bConfigurationValue = 0x0001
iConfiguration = 0x0001
bmAttributes = 0x00a0
bMaxPower = 0x0032
Interface 0
bLength = 0x0009
bDescriptorType = 0x0004
bInterfaceNumber = 0x
bAlternateSetting = 0x
bNumEndpoints = 0x0001
bInterfaceClass = 0x0003
bInterfaceSubClass = 0x0001
bInterfaceProtocol = 0x0001
iInterface = 0x0002
Additional Descriptor
bLength = 0x09
bDescriptorType = 0x21
bDescriptorSubType = 0x11
RAW dump:
0x00 | 0x09, 0x21, 0x11, 0x01, 0x00, 0x01, 0x22, 0x3f,
0x08 | 0x00
Endpoint 0
bLength = 0x0007
bDescriptorType = 0x0005
bEndpointAddress = 0x0081
bmAttributes = 0x0003
wMaxPacketSize = 0x0008
bInterval = 0x000a
bRefresh = 0x
bSynchAddress = 0x
Interface 1
bLength = 0x0009
bDescriptorType = 0x0004
bInterfaceNumber = 0x0001
bAlternateSetting = 0x
bNumEndpoints = 0x0001
bInterfaceClass = 0x0003
bInterfaceSubClass = 0x0001
bInterfaceProtocol = 0x0002
iInterface = 0x0003
Additional Descriptor
bLength = 0x09
bDescriptorType = 0x21
bDescriptorSubType = 0x11
RAW dump:
0x00 | 0x09, 0x21, 0x11, 0x01, 0x00, 0x01, 0x22, 0x6a,
0x08 | 0x00
Endpoint 0
bLength = 0x0007
bDescriptorType = 0x0005
bEndpointAddress = 0x0082
bmAttributes = 0x0003
wMaxPacketSize = 0x0009
bInterval = 0x000a
bRefresh = 0x
bSynchAddress = 0x
Interface 2
bLength = 0x0009
bDescriptorType = 0x0004
bInterfaceNumber = 0x0002
bAlternateSetting = 0x
bNumEndpoints = 0x0002
bInterfaceClass = 0x0003
bInterfaceSubClass = 0x
bInterfaceProtocol = 0x
iInterface = 0x0004
Additional Descriptor
bLength = 0x09
bDescriptorType = 0x21
bDescriptorSubType = 0x11
RAW dump:
0x00 | 0x09, 0x21, 0x11, 0x01, 0x00, 0x01, 0x22, 0x24,
0x08 | 0x00
Endpoint 0
bLength = 0x0007
bDescriptorType = 0x0005
bEndpointAddress = 0x0083
bmAttributes = 0x0003
wMaxPacketSize = 0x0040
bInterval = 0x0001
bRefresh = 0x
bSynchAddress = 0x
Endpoint 1
bLength = 0x0007
bDescriptorType = 0x0005
bEndpointAddress = 0x0004
bmAttributes = 0x0003