From owner-freebsd-usb@freebsd.org Tue Sep 19 14:22:34 2017 Return-Path: Delivered-To: freebsd-usb@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id EE6EBE15911 for ; Tue, 19 Sep 2017 14:22:34 +0000 (UTC) (envelope-from mandrews@bit0.com) Received: from bit0.com (chunkhead.bit0.com [IPv6:2600:1f16:25b:8032:362b:314d:48b4:975d]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id C89C681A73 for ; Tue, 19 Sep 2017 14:22:34 +0000 (UTC) (envelope-from mandrews@bit0.com) Received: from chunkhead.bit0.com (localhost [127.0.0.1]) by bit0.com (Postfix) with ESMTP id C175AD86F for ; Tue, 19 Sep 2017 10:22:33 -0400 (EDT) X-Virus-Scanned: amavisd-new at bit0.com Received: from bit0.com ([127.0.0.1]) by chunkhead.bit0.com (chunkhead.bit0.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id PO1OhBOf_Sks for ; Tue, 19 Sep 2017 10:22:32 -0400 (EDT) Received: from [2607:fcc8:bd52:1800:225:90ff:fed1:89d2] (unknown [IPv6:2607:fcc8:bd52:1800:225:90ff:fed1:89d2]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by bit0.com (Postfix) with ESMTPSA for ; Tue, 19 Sep 2017 10:22:32 -0400 (EDT) Date: Tue, 19 Sep 2017 10:22:26 -0400 (EDT) From: Mike Andrews X-X-Sender: mandrews@beast.int.bit0.com To: freebsd-usb@freebsd.org Subject: umodem0, Cisco USB serial console, and quirks Message-ID: User-Agent: Alpine 2.21 (BSF 202 2017-01-01) MIME-Version: 1.0 Content-Type: text/plain; format=flowed; charset=US-ASCII X-BeenThere: freebsd-usb@freebsd.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: FreeBSD support for USB List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 19 Sep 2017 14:22:35 -0000 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: 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: at usbus4, cfg=0 md=HOST spd=FULL (12Mbps) pwr=ON (100mA) ugen4.3.0: umodem0: # usbconfig -d ugen4.3 dump_device_desc ugen4.3: at usbus4, cfg=0 md=HOST spd=FULL (12Mbps) pwr=ON (100mA) bLength = 0x0012 bDescriptorType = 0x0001 bcdUSB = 0x0200 bDeviceClass = 0x0002 bDeviceSubClass = 0x0000 bDeviceProtocol = 0x0000 bMaxPacketSize0 = 0x0008 idVendor = 0x05a6 idProduct = 0x0009 bcdDevice = 0x0000 iManufacturer = 0x0001 iProduct = 0x0002 iSerialNumber = 0x0000 bNumConfigurations = 0x0001 # usbconfig -d ugen4.3 dump_all_config_desc ugen4.3: 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 bmAttributes = 0x00c0 bMaxPower = 0x0032 Interface 0 bLength = 0x0009 bDescriptorType = 0x0004 bInterfaceNumber = 0x0000 bAlternateSetting = 0x0000 bNumEndpoints = 0x0001 bInterfaceClass = 0x0002 bInterfaceSubClass = 0x0002 bInterfaceProtocol = 0x0001 iInterface = 0x0000 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 bmAttributes = 0x0003 wMaxPacketSize = 0x0008 bInterval = 0x0002 bRefresh = 0x0000 bSynchAddress = 0x0000 Interface 1 bLength = 0x0009 bDescriptorType = 0x0004 bInterfaceNumber = 0x0001 bAlternateSetting = 0x0000 bNumEndpoints = 0x0002 bInterfaceClass = 0x000a bInterfaceSubClass = 0x0000 bInterfaceProtocol = 0x0000 iInterface = 0x0000 Endpoint 0 bLength = 0x0007 bDescriptorType = 0x0005 bEndpointAddress = 0x0082 bmAttributes = 0x0002 wMaxPacketSize = 0x0040 bInterval = 0x0000 bRefresh = 0x0000 bSynchAddress = 0x0000 Endpoint 1 bLength = 0x0007 bDescriptorType = 0x0005 bEndpointAddress = 0x0003 bmAttributes = 0x0002 wMaxPacketSize = 0x0020 bInterval = 0x0000 bRefresh = 0x0000 bSynchAddress = 0x0000