usb/183505: [usb] Arduino Leonardo exposes three interface descriptors but no modem is attached to the first one (bInterfaceSubClass=2)
adrian chadd
adrian at FreeBSD.org
Wed Oct 30 22:40:00 UTC 2013
>Number: 183505
>Category: usb
>Synopsis: [usb] Arduino Leonardo exposes three interface descriptors but no modem is attached to the first one (bInterfaceSubClass=2)
>Confidential: no
>Severity: non-critical
>Priority: low
>Responsible: freebsd-usb
>State: open
>Quarter:
>Keywords:
>Date-Required:
>Class: sw-bug
>Submitter-Id: current-users
>Arrival-Date: Wed Oct 30 22:40:00 UTC 2013
>Closed-Date:
>Last-Modified:
>Originator: adrian chadd
>Release: 11-HEAD i386
>Organization:
>Environment:
FreeBSD lucy-11i386 11.0-CURRENT FreeBSD 11.0-CURRENT #0 r257371: Wed Oct 30 00:08:14 PDT 2013 adrian at lucy-11i386:/usr/home/adrian/work/freebsd/head/obj/usr/home/adrian/work/freebsd/head/src/sys/LUCY_11_i386 i386
>Description:
When plugging in the Arduino Leonardo, it doesn't stay connected as a modem.
It connects, shows a modem device, then disconnects and reappears as a device with three interfaces.
Unfortunately the only one which shows up is uhid.
>How-To-Repeat:
Plug in an Arduino Leonardo.
It comes up as a modem very briefly:
umodem0: <Arduino LLC Arduino Leonardo, class 2/0, rev 1.10/0.01, addr 3> on usbus4
umodem0: data interface 1, has CM over data, has break
. then it disconnects (I guess it loads in something) and comes back as multiple interfaces:
ugen4.3: <Arduino LLC> at usbus4 (disconnected)
umodem0: at uhub2, port 2, addr 3 (disconnected)
ugen4.3: <Arduino LLC> at usbus4
uhid2: <Arduino LLC Arduino Leonardo, class 2/0, rev 2.00/1.00, addr 3> on usbus4
I dumped the descriptor:
# usbconfig -d ugen4.3 dump_all_config_desc
ugen4.3: <Arduino Leonardo Arduino LLC> at usbus4, cfg=0 md=HOST spd=FULL (12Mbps) pwr=ON (500mA)
Configuration index 0
bLength = 0x0009
bDescriptorType = 0x0002
wTotalLength = 0x0064
bNumInterfaces = 0x0003
bConfigurationValue = 0x0001
iConfiguration = 0x0000 <no string>
bmAttributes = 0x0080
bMaxPower = 0x00fa
Additional Descriptor
bLength = 0x08
bDescriptorType = 0x0b
bDescriptorSubType = 0x00
RAW dump:
0x00 | 0x08, 0x0b, 0x00, 0x02, 0x02, 0x02, 0x01, 0x00
Interface 0
bLength = 0x0009
bDescriptorType = 0x0004
bInterfaceNumber = 0x0000
bAlternateSetting = 0x0000
bNumEndpoints = 0x0001
bInterfaceClass = 0x0002
bInterfaceSubClass = 0x0002
bInterfaceProtocol = 0x0000
iInterface = 0x0000 <no string>
Additional Descriptor
bLength = 0x05
bDescriptorType = 0x24
bDescriptorSubType = 0x00
RAW dump:
0x00 | 0x05, 0x24, 0x00, 0x10, 0x01
Additional Descriptor
bLength = 0x05
bDescriptorType = 0x24
bDescriptorSubType = 0x01
RAW dump:
0x00 | 0x05, 0x24, 0x01, 0x01, 0x01
Additional Descriptor
bLength = 0x04
bDescriptorType = 0x24
bDescriptorSubType = 0x02
RAW dump:
0x00 | 0x04, 0x24, 0x02, 0x06
Additional Descriptor
bLength = 0x05
bDescriptorType = 0x24
bDescriptorSubType = 0x06
RAW dump:
0x00 | 0x05, 0x24, 0x06, 0x00, 0x01
Endpoint 0
bLength = 0x0007
bDescriptorType = 0x0005
bEndpointAddress = 0x0081 <IN>
bmAttributes = 0x0003 <INTERRUPT>
wMaxPacketSize = 0x0010
bInterval = 0x0040
bRefresh = 0x0000
bSynchAddress = 0x0000
Interface 1
bLength = 0x0009
bDescriptorType = 0x0004
bInterfaceNumber = 0x0001
bAlternateSetting = 0x0000
bNumEndpoints = 0x0002
bInterfaceClass = 0x000a
bInterfaceSubClass = 0x0000
bInterfaceProtocol = 0x0000
iInterface = 0x0000 <no string>
Endpoint 0
bLength = 0x0007
bDescriptorType = 0x0005
bEndpointAddress = 0x0002 <OUT>
bmAttributes = 0x0002 <BULK>
wMaxPacketSize = 0x0040
bInterval = 0x0000
bRefresh = 0x0000
bSynchAddress = 0x0000
Endpoint 1
bLength = 0x0007
bDescriptorType = 0x0005
bEndpointAddress = 0x0083 <IN>
bmAttributes = 0x0002 <BULK>
wMaxPacketSize = 0x0040
bInterval = 0x0000
bRefresh = 0x0000
bSynchAddress = 0x0000
Interface 2
bLength = 0x0009
bDescriptorType = 0x0004
bInterfaceNumber = 0x0002
bAlternateSetting = 0x0000
bNumEndpoints = 0x0001
bInterfaceClass = 0x0003
bInterfaceSubClass = 0x0000
bInterfaceProtocol = 0x0000
iInterface = 0x0000 <no string>
Additional Descriptor
bLength = 0x09
bDescriptorType = 0x21
bDescriptorSubType = 0x01
RAW dump:
0x00 | 0x09, 0x21, 0x01, 0x01, 0x00, 0x01, 0x22, 0x65,
0x08 | 0x00
Endpoint 0
bLength = 0x0007
bDescriptorType = 0x0005
bEndpointAddress = 0x0084 <IN>
bmAttributes = 0x0003 <INTERRUPT>
wMaxPacketSize = 0x0040
bInterval = 0x0001
bRefresh = 0x0000
bSynchAddress = 0x0000
root at lucy-11i386:/home/adrian #
>Fix:
>Release-Note:
>Audit-Trail:
>Unformatted:
More information about the freebsd-usb
mailing list