umodem0, Cisco USB serial console, and quirks
Mike Andrews
mandrews at bit0.com
Tue Sep 19 14:22:35 UTC 2017
I'm trying to get the USB console of a Cisco ASA 5506-X firewall (not
terribly obscure hardware) talking to FreeBSD, and having some trouble.
The relevant dmesg at probe time is:
umodem0 on uhub7
umodem0: <Cisco Cisco USB Console, class 2/0, rev 2.00/0.00, addr 3> on usbus4
umodem0: data interface 1, has no CM over data, has no break
...and /dev/cuaU2 is created, and I can connect to it using cu, but then
nothing happens. As in, hitting enter to get a prompt just sits there.
(cuaU1 and cuaU0 are a separate two-port USB serial adapter and that one
works fine, it's using uftdi instead of umodem...)
The "has no CM over data" looks worrying. I attempted to add a quirk, but
either it isn't working or I didn't do it right. In /boot/loader.conf I
tried:
hw.usb.quirk.0="0x05a6 0x0009 0 0xffff UQ_ASSUME_CM_OVER_DATA"
and I also tried
# usbconfig -d ugen4.3 add_quirk UQ_ASSUME_CM_OVER_DATA
but it doesn't make any difference. It does show up as a new entry in
"usbconfig dump_device_quirks" but doesn't solve the problem.
Connecting the firewall to a Mac with the same cable works fine, so I know
the cable is good and that I'm using the right bit rate (9600).
Here are some other usbconfig dumps if these are useful in pointing me in
the right direction (sorry these have lines longer than 80 columns):
# usbconfig -d ugen4.3 show_ifdrv
ugen4.3: <Cisco Cisco USB Console> at usbus4, cfg=0 md=HOST spd=FULL (12Mbps) pwr=ON (100mA)
ugen4.3.0: umodem0: <Cisco Cisco USB Console, class 2/0, rev 2.00/0.00, addr 3>
# usbconfig -d ugen4.3 dump_device_desc
ugen4.3: <Cisco Cisco USB Console> at usbus4, cfg=0 md=HOST spd=FULL (12Mbps) pwr=ON (100mA)
bLength = 0x0012
bDescriptorType = 0x0001
bcdUSB = 0x0200
bDeviceClass = 0x0002 <Communication device>
bDeviceSubClass = 0x0000
bDeviceProtocol = 0x0000
bMaxPacketSize0 = 0x0008
idVendor = 0x05a6
idProduct = 0x0009
bcdDevice = 0x0000
iManufacturer = 0x0001 <Cisco>
iProduct = 0x0002 <Cisco USB Console>
iSerialNumber = 0x0000 <no string>
bNumConfigurations = 0x0001
# usbconfig -d ugen4.3 dump_all_config_desc
ugen4.3: <Cisco Cisco USB Console> at usbus4, cfg=0 md=HOST spd=FULL (12Mbps) pwr=ON (100mA)
Configuration index 0
bLength = 0x0009
bDescriptorType = 0x0002
wTotalLength = 0x0043
bNumInterfaces = 0x0002
bConfigurationValue = 0x0001
iConfiguration = 0x0003 <USB-UART Configuration>
bmAttributes = 0x00c0
bMaxPower = 0x0032
Interface 0
bLength = 0x0009
bDescriptorType = 0x0004
bInterfaceNumber = 0x0000
bAlternateSetting = 0x0000
bNumEndpoints = 0x0001
bInterfaceClass = 0x0002 <Communication device>
bInterfaceSubClass = 0x0002
bInterfaceProtocol = 0x0001
iInterface = 0x0000 <no string>
Additional Descriptor
bLength = 0x05
bDescriptorType = 0x24
bDescriptorSubType = 0x00
RAW dump:
0x00 | 0x05, 0x24, 0x00, 0x10, 0x01
Additional Descriptor
bLength = 0x04
bDescriptorType = 0x24
bDescriptorSubType = 0x02
RAW dump:
0x00 | 0x04, 0x24, 0x02, 0x02
Additional Descriptor
bLength = 0x05
bDescriptorType = 0x24
bDescriptorSubType = 0x06
RAW dump:
0x00 | 0x05, 0x24, 0x06, 0x00, 0x01
Additional Descriptor
bLength = 0x05
bDescriptorType = 0x24
bDescriptorSubType = 0x01
RAW dump:
0x00 | 0x05, 0x24, 0x01, 0x00, 0x01
Endpoint 0
bLength = 0x0007
bDescriptorType = 0x0005
bEndpointAddress = 0x0081 <IN>
bmAttributes = 0x0003 <INTERRUPT>
wMaxPacketSize = 0x0008
bInterval = 0x0002
bRefresh = 0x0000
bSynchAddress = 0x0000
Interface 1
bLength = 0x0009
bDescriptorType = 0x0004
bInterfaceNumber = 0x0001
bAlternateSetting = 0x0000
bNumEndpoints = 0x0002
bInterfaceClass = 0x000a <CDC-data>
bInterfaceSubClass = 0x0000
bInterfaceProtocol = 0x0000
iInterface = 0x0000 <no string>
Endpoint 0
bLength = 0x0007
bDescriptorType = 0x0005
bEndpointAddress = 0x0082 <IN>
bmAttributes = 0x0002 <BULK>
wMaxPacketSize = 0x0040
bInterval = 0x0000
bRefresh = 0x0000
bSynchAddress = 0x0000
Endpoint 1
bLength = 0x0007
bDescriptorType = 0x0005
bEndpointAddress = 0x0003 <OUT>
bmAttributes = 0x0002 <BULK>
wMaxPacketSize = 0x0020
bInterval = 0x0000
bRefresh = 0x0000
bSynchAddress = 0x0000
More information about the freebsd-usb
mailing list