Date: Sun, 28 Aug 2016 11:52:57 -0400 From: Adam Stylinski <kungfujesus06@gmail.com> To: Hans Petter Selasky <hps@selasky.org>, freebsd-usb@freebsd.org Subject: Re: USB 3.0 devices negotiate to spd=HIGH for all ports Message-ID: <CAJwHY9U1b0BOEVGgy9phiiQ2fRAPRDH=1tvtqKsvC0CVQJj0tQ@mail.gmail.com> In-Reply-To: <CAJwHY9UEFFv-Wo%2BB8X=XYxHeXH0tKx_1T2R=-MCQtiPYLSTzmQ@mail.gmail.com> References: <CAJwHY9Wv2_VfeuZwzfBtxgZxkSXDHfXNK0SEAoGjtunrHqKxGA@mail.gmail.com> <2a28aa4b-3256-b091-9a6e-c2a29f993d6c@selasky.org> <CAJwHY9WEjoMnwnDtF8Fnq9rgQobPAt9eQh77U4zFYS09REH6KA@mail.gmail.com> <CAJwHY9UEFFv-Wo%2BB8X=XYxHeXH0tKx_1T2R=-MCQtiPYLSTzmQ@mail.gmail.com>
next in thread | previous in thread | raw e-mail | index | archive | help
On Sun, Aug 28, 2016 at 10:18 AM, Adam Stylinski <kungfujesus06@gmail.com> wrote: > Looking at my motherboard's manual, this is what my BIOS exposes: > > USB 2.0 Controller Use this item to enable or disable the use of USB 2.0 > controller. USB 3.0 Controller Use this item to enable or disable the use > of USB 3.0 controller. Legacy USB Support Use this option to select legacy > support for USB devices. There are four con guration options: [Enabled], > [Disabled], [Auto] and [UEFI Setup Only]. The default value is [Enabled]. > Please refer to below descriptions for the details of these four options: > [Enabled] - Enables support for legacy USB. [Disabled] - USB devices are > not allowed to use under legacy OS and UEFI setup when [Disabled] is > selected. If you have USB compatibility issue, it is recommended to select > [Disabled] to enter OS. [Auto] - Enables legacy support if USB devices are > connected. [UEFI Setup Only] - USB devices are allowed to use only under > UEFI setup and Windows / Linux OS. Legacy USB 3.0 Support Use this option > to enable or disable legacy support for USB 3.0 devices. > > I believe 3.0 controller is enabled, or I wouldn't be able to use those > ports at all. Now the Legacy USB 3.0 option is a bit vaguely named, as it > could be taken to mean, use USB 3.0 ports in legacy mode. It could also > mean, "allow USB 2.0 devices with 3.0 ports". The default for that option > is disabled, but it may have been misconstrued and enabled at one point. > Getting to the BIOS unfortunately requires me installing a video card in > there that's not 15 years old, unfortunately, as it's one of those > sophisticated new BIOSes that work with a mouse and require fancier VGA > BIOSes than what this S3 Virge card provides. It's definitely worth a > look, though. > > On Sat, Aug 27, 2016 at 2:05 PM, Adam Stylinski <kungfujesus06@gmail.com> > wrote: > >> The only quirk specific code I can find in Linux's kernel for XHCI is >> this: >> http://lxr.free-electrons.com/source/drivers/usb/host/pci-quirks.c >> >> I believe I have one of the SBxxx AMD chipsets, though I can't recall >> which one. I don't see anything in there referring to my PCI IDs, unless >> I'm looking at the wrong outputs in pciconf -lv. I see one quirk in >> particular regarding power management but that seems to be more about >> stability rather than speed. I'm sure I'm missing something. >> >> On Sat, Aug 27, 2016 at 1:43 PM, Hans Petter Selasky <hps@selasky.org> >> wrote: >> >>> On 08/27/16 18:41, Adam Stylinski wrote: >>> >>>> Hello, >>>> >>>> I definitely have a USB 3.0 controller that is being recognized by XHCI: >>>> >>>> [adam@nasbox ~]$ sudo usbconfig >>>> ugen0.1: <XHCI root HUB 0x1b6f> at usbus0, cfg=0 md=HOST spd=SUPER >>>> (5.0Gbps) pwr=SAVE (0mA) >>>> ugen2.1: <OHCI root HUB ATI> at usbus2, cfg=0 md=HOST spd=FULL (12Mbps) >>>> pwr=SAVE (0mA) >>>> ugen1.1: <XHCI root HUB 0x1b6f> at usbus1, cfg=0 md=HOST spd=SUPER >>>> (5.0Gbps) pwr=SAVE (0mA) >>>> ugen3.1: <EHCI root HUB ATI> at usbus3, cfg=0 md=HOST spd=HIGH (480Mbps) >>>> pwr=SAVE (0mA) >>>> ugen4.1: <OHCI root HUB ATI> at usbus4, cfg=0 md=HOST spd=FULL (12Mbps) >>>> pwr=SAVE (0mA) >>>> ugen5.1: <EHCI root HUB ATI> at usbus5, cfg=0 md=HOST spd=HIGH (480Mbps) >>>> pwr=SAVE (0mA) >>>> ugen7.1: <OHCI root HUB ATI> at usbus7, cfg=0 md=HOST spd=FULL (12Mbps) >>>> pwr=SAVE (0mA) >>>> ugen6.1: <OHCI root HUB ATI> at usbus6, cfg=0 md=HOST spd=FULL (12Mbps) >>>> pwr=SAVE (0mA) >>>> ugen8.1: <EHCI root HUB ATI> at usbus8, cfg=0 md=HOST spd=HIGH (480Mbps) >>>> pwr=SAVE (0mA) >>>> ugen0.2: <Extreme SanDisk> at usbus0, cfg=0 md=HOST spd=HIGH (480Mbps) >>>> pwr=ON (200mA) >>>> >>>> >>>> xhci0@pci0:3:0:0: class=0x0c0330 card=0x70231849 chip=0x70231b6f >>>> rev=0x01 >>>> hdr=0x00 >>>> vendor = 'Etron Technology, Inc.' >>>> device = 'EJ168 USB 3.0 Host Controller' >>>> class = serial bus >>>> subclass = USB >>>> xhci1@pci0:4:0:0: class=0x0c0330 card=0x70231849 chip=0x70231b6f >>>> rev=0x01 >>>> hdr=0x00 >>>> vendor = 'Etron Technology, Inc.' >>>> device = 'EJ168 USB 3.0 Host Controller' >>>> class = serial bus >>>> subclass = USB >>>> >>>> However, when I connect a USB 3.0 device into a USB 3.0 port, it only >>>> gives >>>> me spd=HIGH. This is a Sandisk CZ80, but I've other devices in the past >>>> and have had the same behavior. Plugging a device in with >>>> hw.usb.xhci.debug=1 doesn't appear to print too many useful things, at >>>> least not to an end user. I won't yet paste the full output, but it >>>> looks >>>> something like this: >>>> >>>> xhci_transfer_insert: qh_pos = 2 >>>> xhci_check_transfer: slot=1 epno=3 stream=256 remainder=0 status=1 >>>> xhci_check_transfer: stream_id=0 >>>> xhci_check_transfer: TD is last >>>> xhci_check_transfer: slot=1 epno=3 stream=256 remainder=0 status=1 >>>> xhci_check_transfer: stream_id=0 >>>> xhci_device_generic_enter: >>>> xhci_setup_generic_chain_sub: NTRB=1 >>>> xhci_setup_generic_chain_sub: LINK=0x241ff800 >>>> xhci_setup_generic_chain: first=0xfffff800241ff980 >>>> last=0xfffff800241ff980 >>>> xhci_device_generic_start: >>>> xhci_transfer_insert: qh_pos = 2 >>>> xhci_check_transfer: slot=1 epno=4 stream=256 remainder=0 status=1 >>>> xhci_check_transfer: stream_id=0 >>>> xhci_check_transfer: TD is last >>>> xhci_check_transfer: slot=1 epno=4 stream=256 remainder=0 status=1 >>>> xhci_check_transfer: stream_id=0 >>>> xhci_device_generic_enter: >>>> xhci_setup_generic_chain_sub: NTRB=1 >>>> xhci_setup_generic_chain_sub: LINK=0x55fc6a300 >>>> xhci_setup_generic_chain: first=0xfffff8055fc6a480 >>>> last=0xfffff8055fc6a480 >>>> xhci_device_generic_start: >>>> xhci_transfer_insert: qh_pos = 0 >>>> xhci_check_transfer: slot=1 epno=3 stream=256 remainder=0 status=1 >>>> xhci_check_transfer: stream_id=0 >>>> xhci_check_transfer: TD is last >>>> xhci_check_transfer: slot=1 epno=3 stream=256 remainder=0 status=1 >>>> xhci_check_transfer: stream_id=0 >>>> xhci_device_generic_enter: >>>> xhci_setup_generic_chain_sub: NTRB=1 >>>> xhci_setup_generic_chain_sub: LINK=0x3d958d000 >>>> xhci_setup_generic_chain: first=0xfffff803d958d180 >>>> last=0xfffff803d958d180 >>>> xhci_device_generic_start: >>>> xhci_transfer_insert: qh_pos = 1 >>>> xhci_check_transfer: slot=1 epno=3 stream=256 remainder=0 status=1 >>>> xhci_check_transfer: stream_id=0 >>>> xhci_check_transfer: TD is last >>>> xhci_check_transfer: slot=1 epno=3 stream=256 remainder=0 status=1 >>>> xhci_check_transfer: stream_id=0 >>>> xhci_device_generic_enter: >>>> xhci_setup_generic_chain_sub: NTRB=1 >>>> xhci_setup_generic_chain_sub: LINK=0x7d676f000 >>>> xhci_setup_generic_chain: first=0xfffff807d676f180 >>>> last=0xfffff807d676f180 >>>> xhci_device_generic_start: >>>> xhci_transfer_insert: qh_pos = 0 >>>> xhci_check_transfer: slot=1 epno=4 stream=256 remainder=0 status=1 >>>> xhci_check_transfer: stream_id=0 >>>> xhci_check_transfer: TD is last >>>> xhci_check_transfer: slot=1 epno=4 stream=256 remainder=0 status=1 >>>> xhci_check_transfer: stream_id=0 >>>> >>>> What can I do to end this frustrating issue of USB 2.0 only-ness? >>>> >>> >>> Try to google the PCI IDs of your device and see if Linux has any quirks >>> for your card. Sometimes these cards need special register writes to enable >>> USB 3.0. >>> >>> --HPS >>> >>> >> > Alright, so I went through the crazy hurdles to actually get to the BIOS, and the USB legacy support for USB 3.0 was enabled. I disabled it, and it has no apparently effect, other than the fact that setting up the device takes a lot longer now: usbd_setup_device_desc: getting device descriptor at addr 1 failed, USB_ERR_TIMEOUT usbd_setup_device_desc: getting device descriptor at addr 1 failed, USB_ERR_TIMEOUT usbd_setup_device_desc: getting device descriptor at addr 1 failed, USB_ERR_TIMEOUT usbd_setup_device_desc: getting device descriptor at addr 1 failed, USB_ERR_TIMEOUT usbd_setup_device_desc: getting device descriptor at addr 1 failed, USB_ERR_TIMEOUT ugen0.2: <Unknown> at usbus0 (disconnected) uhub_reattach_port: could not allocate new device ugen0.2: <SanDisk> at usbus0 umass0: <SanDisk Extreme, class 0/0, rev 2.10/0.10, addr 1> on usbus0 umass0: SCSI over Bulk-Only; quirks = 0x0100 umass0:14:0:-1: Attached to scbus14 da23 at umass-sim0 bus 0 scbus14 target 0 lun 0 da23: <SanDisk Extreme 0001> Removable Direct Access SPC-4 SCSI device da23: Serial Number [PROBABLY NOT IMPORTANT ENOUGH TO SCRUB, BUT DOING SO ANYWAY] da23: 40.000MB/s transfers da23: 59840MB (122552320 512 byte sectors) da23: quirks=0x2<NO_6_BYTE> [adam@nasbox ~]$ sudo usbconfig ugen0.1: <XHCI root HUB 0x1b6f> at usbus0, cfg=0 md=HOST spd=SUPER (5.0Gbps) pwr=SAVE (0mA) ugen2.1: <OHCI root HUB ATI> at usbus2, cfg=0 md=HOST spd=FULL (12Mbps) pwr=SAVE (0mA) ugen1.1: <XHCI root HUB 0x1b6f> at usbus1, cfg=0 md=HOST spd=SUPER (5.0Gbps) pwr=SAVE (0mA) ugen3.1: <EHCI root HUB ATI> at usbus3, cfg=0 md=HOST spd=HIGH (480Mbps) pwr=SAVE (0mA) ugen4.1: <OHCI root HUB ATI> at usbus4, cfg=0 md=HOST spd=FULL (12Mbps) pwr=SAVE (0mA) ugen6.1: <OHCI root HUB ATI> at usbus6, cfg=0 md=HOST spd=FULL (12Mbps) pwr=SAVE (0mA) ugen5.1: <EHCI root HUB ATI> at usbus5, cfg=0 md=HOST spd=HIGH (480Mbps) pwr=SAVE (0mA) ugen7.1: <OHCI root HUB ATI> at usbus7, cfg=0 md=HOST spd=FULL (12Mbps) pwr=SAVE (0mA) ugen8.1: <EHCI root HUB ATI> at usbus8, cfg=0 md=HOST spd=HIGH (480Mbps) pwr=SAVE (0mA) ugen0.2: <Extreme SanDisk> at usbus0, cfg=0 md=HOST spd=HIGH (480Mbps) pwr=ON (200mA) Which steps are next? I apologize to the list for top-posting, it's been a while since I've been to a mailing list and I decided to do it through Gmail for whatever reason instead of mutt.
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?CAJwHY9U1b0BOEVGgy9phiiQ2fRAPRDH=1tvtqKsvC0CVQJj0tQ>