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