Confusing USB device conflict

Mark Millard marklmi at yahoo.com
Tue Jun 9 02:19:34 UTC 2020


On 2020-Jun-8, at 17:38, bob prohaska <fbsd at www.zefox.net> wrote:

> On Mon, Jun 08, 2020 at 05:07:56PM -0700, Mark Millard wrote:
>> On 2020-Jun-8, at 16:03, bob prohaska <fbsd at www.zefox.net> wrote:
>> 
>>> On Sat, Jun 06, 2020 at 06:22:03PM -0700, Mark Millard wrote:
>>>> 
>>>> 
>>>> 
>>>> Does this happen with FreeBSD head? It looked like there
>>>> was a late 2019 check-in that was related to a context
>>>> that involved the above types of messages on a RPi*. If
>>>> you are lucky, may be there is something someone could
>>>> MFC back into 12 that would help. (I do not know the
>>>> details or if what I saw really would help if head
>>>> works okay.)
>>>> 
>>> [In sum, the new hub can't be hot-swapped. I thought that would
>>> be possible, but if not there's nothing wrong]
>> 
>> Interesting.
>> 
>> As I have my root file system for booting on the powered
>> hub, I do not ever hot-swap the powered hub. So I'd never
>> have noticed such behavior.
>> 
>> I can probably get access to another one at some point,
>> of the same type as is used at boot, and plug it in to
>> a separate port while the RPi3 is in operation.
>> 
>>> Now using a Pi3:
>>> 
>>> Head as of r361820 behaves differently than the Pi2 running 12.1, 
>>> but it does not seem better: Plugging the new hub and disk into 
>>> a running machine produces:
>>> 
>>> ugen0.6: <GenesysLogic USB2.0 Hub> at usbus0
>>> uhub2 on uhub1
>>> uhub2: <GenesysLogic USB2.0 Hub, class 9/0, rev 2.00/92.24, addr 6> on usbus0
>>> uhub2: MTT enabled
>>> uhub2: 4 ports with 4 removable, self powered
>>> usb_alloc_device: set address 8 failed (USB_ERR_IOERROR, ignored)
>>> usbd_setup_device_desc: getting device descriptor at addr 8 failed, USB_ERR_IOERROR
>>> usbd_req_re_enumerate: addr=8, set address failed! (USB_ERR_IOERROR, ignored)
>>> smsc0: warning: bulk read error, USB_ERR_IOERROR
>>> usbd_setup_device_desc: getting device descriptor at addr 8 failed, USB_ERR_IOERROR
>>> usbd_req_re_enumerate: addr=8, set address failed! (USB_ERR_IOERROR, ignored)
>>> smsc0: warning: Failed to read register 0x114
>>> smsc0: warning: MII is busy
>>> smsc0: warning: Failed to read register 0x114
>>> smsc0: warning: MII is busy
>>> smsc0: warning: Failed to read register 0x114
>>> smsc0: warning: MII is busy
>>> smsc0: warning: Failed to read register 0x114
>>> smsc0: warning: MII is busy
>>> usbd_setup_device_desc: getting device descriptor at addr 8 failed, USB_ERR_TIMEOUT
>>> smsc0: warning: Failed to read register 0x114
>>> smsc0: warning: MII is busy
>>> 
>>> The smsc0 complaints continued, so I unplugged the hub and disk .
>>> To my surprise the error messages didn't stop, but they did change:
>>> 
>>> usb_alloc_device: set address 2 failed (USB_ERR_TIMEOUT, ignored)
>>> usbd_setup_device_desc: getting device descriptor at addr 2 failed, USB_ERR_TIMEOUT
>>> usbd_req_re_enumerate: addr=2, set address failed! (USB_ERR_TIMEOUT, ignored)
>>> usbd_setup_device_desc: getting device descriptor at addr 2 failed, USB_ERR_TIMEOUT
>>> usbd_req_re_enumerate: addr=2, set address failed! (USB_ERR_TIMEOUT, ignored)
>>> usbd_setup_device_desc: getting device descriptor at addr 2 failed, USB_ERR_TIMEOUT
>>> usbd_req_re_enumerate: addr=2, set address failed! (USB_ERR_TIMEOUT, ignored)
>>> usbd_setup_device_desc: getting device descriptor at addr 2 failed, USB_ERR_TIMEOUT
>>> usbd_req_re_enumerate: addr=2, set address failed! (USB_ERR_TIMEOUT, ignored)
>>> usbd_setup_device_desc: getting device descriptor at addr 2 failed, USB_ERR_TIMEOUT
>>> ugen0.2: <Unknown > at usbus0 (disconnected)
>>> 
>>> This looked like an endless loop, so I rebooted.
>>> 
>>> Next, I tried the new 1TB disk with the old hub. worked fine.
>>> 
>>> Then I tried the new hub with the old 80GB disk. The console reported:
>>> uhub2: <GenesysLogic USB2.0 Hub, class 9/0, rev 2.00/92.24, addr 7> on usbus0
>>> uhub2: MTT enabled
>>> uhub2: 4 ports with 4 removable, self powered
>>> usb_alloc_device: set address 8 failed (USB_ERR_IOERROR, ignored)
>>> usbd_setup_device_desc: getting device descriptor at addr 8 failed, USB_ERR_IOERROR
>>> usbd_req_re_enumerate: addr=8, set address failed! (USB_ERR_STALLED, ignored)
>>> usbd_setup_device_desc: getting device descriptor at addr 8 failed, USB_ERR_STALLED
>>> usbd_req_re_enumerate: addr=8, set address failed! (USB_ERR_STALLED, ignored)
>>> usbd_setup_device_desc: getting device descriptor at addr 8 failed, USB_ERR_STALLED
>>> usbd_req_re_enumerate: addr=8, set address failed! (USB_ERR_STALLED, ignored)
>>> usbd_setup_device_desc: getting device descriptor at addr 8 failed, USB_ERR_STALLED
>>> usbd_req_re_enumerate: addr=8, set address failed! (USB_ERR_STALLED, ignored)
>>> usbd_setup_device_desc: getting device descriptor at addr 8 failed, USB_ERR_STALLED
>>> ugen0.8: <Unknown > at usbus0 (disconnected)
>>> uhub_reattach_port: could not allocate new device
>>> uhub_explore: illegal enable change, port 1
>>> 
>>> The error stream stopped, the disk didn't show up in /dev.
>>> Usbconfig reports 
>>> ugen0.7: <GenesysLogic USB2.0 Hub> at usbus0, cfg=0 md=HOST spd=HIGH (480Mbps) pwr=SAVE (100mA)
>>> Not sure how that gybes with address 8 in the console messages.
>>> 
>>> Finally, I tried leaving the new hub connected with the old disk
>>> and rebooting. Came up just fine. Unplugging the old disk and
>>> plugging the new disk in its place also works fine.
>>> 
>>> Likewise, with 12.1 the Pi3 works correctly provided the hub
>>> is connected before booting. Didn't try the other permutations.
>>> 
>>> So, if hot-swapping the hub isn't in the cards, things seem
>>> to work. 
>>> . . .
> . . .
>> . . .
> 
> FWIW, I did check the Pi2 running 12.1 at r360926. The new hub
> does not work, even if connected and powered before boot. It
> does not prevent boot, but somehow interferes with discovery
> of other USB devices. I believe the old hub did work, but that 
> was long ago. I haven't checked in the last year at least.

Unfortunately, the only pre-aarch64 RPi2 that I've
access to has its microsd card slot messed up: it
forces the card back out. (The RPI2 v1.1 no longer
latches the card in place but just ejects it.)

As for the aarch64 based RPi2 V1.2, I use the same
type of powered USB3-capable hub and USB3 SSD with
that RPi2 that I use with the RPi3. I do so in the
same way: the USB3 SSD is the root file system for
the boot. (I've not done any hot-plugging
experiments for this context.) I have done such
booting with the USB3 SSD having an armv7 system.
(Same media used to boot the OrangePi+ 2ed. The
OPi+2e does not need the powered hub, at least
when the USB3 SSD is the only external USB
connection.)

You may want to test the hub with a microsd card
reader and microsd card instead of the spinning
media and see if that makes a difference. (Unless
the hub alone [no media] is enough to mess things
up in your context.)

===
Mark Millard
marklmi at yahoo.com
( dsl-only.net went
away in early 2018-Mar)



More information about the freebsd-arm mailing list