-
Notifications
You must be signed in to change notification settings - Fork 5k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Failure enumerating USB devices through a Hub - device descriptor read/64, error -71 #2692
Comments
Hi, With reference #2408 I'm seeing the same basic problem still, just don't see the intr:68 error messages anymore : https://gist.github.com/mypiandrew/f99dc51884ee7575bfbfbf078036d2e6 Again it appears to me the problem is related to non-usb 2.0 (480M) devices |
Does the behaviour change at all if you add |
Hi, Yes adding dwc_otg.fiq_fsm_mask=0x0 appears to improve things Did some basic reboot testing that's usually caused the problem to eventually appear before https://gist.github.com/mypiandrew/f928f459a6b9372e0fc4fa9a0d727947 Will do 10-in-a-row reboots and power ups to check before continuing Is there one of the values that you have a hunch on or is it just a case of test/repeat x 10 for each setting? |
My suspicion is that one of these bits (which each enable different FIQ optimisations) will cause a definite recurrence of the issue. I'd say 10 reboots with one particular setting should be enough to confirm that the bit is "ok". |
This is still with dwc_otg.fiq_fsm_mask=0x0 See last one, maybe spoke too soon ? https://gist.github.com/mypiandrew/cb8f8fee74f08b3b12202ec41a82ac6c Do you want me to still try others? |
Oh dear, I created a spreadsheet to keep track of the settings and 0x0 failed on first power up this time https://gist.github.com/mypiandrew/f97f7186742cfb8ddf4a5e287b215c17 Will plough on and see how far I get on each of the other ones |
Right then have done the same test schedule checks on each setting. Start cold boot then 10 soft reboots then 4 power off/on/off cycles finally then 3 soft reboots. If a setup gives enumeration or device descriptor error that test run is ended 0x0, 0x1, 0x4 & 0x08 fail either straight away or v.quickly 0x2 is much better only failing three times on odd errors [ 5.173805] rtc rtc0: __rtc_set_alarm: err=-22 [ 5.017155] ftdi_sio ttyUSB3: Unable to write latency timer: -71 [ 3.929411] usb 1-1.4: New USB device found, idVendor=1199, idProduct=6832 0x10 is the clear winner, I've not been able to "break" the setup at all using that one I do occasionally see this message at the end but it's not red so I can't say if it's a fault [ 16.750450] random: crng init done Does that help at all? EDIT : Dropped back in the office this morning to pick something up, noticed I'd forgotten to to 0x08 so retested. On first power up with setup still on 0x10 saw this error [ 3.475621] usb 1-1.4: string descriptor 0 read error: -32 So I don't have anything 100% working, but 0x10 appears the best of the bunch FWIW I don't think this prioblem is the same as OPs |
I have done all of the settings, 0,1,2,4,8,10. All of them failed immediately.
|
@malacalypse Just to check:
Going through a passive hub will incur a voltage drop which will increase with load, so I just wanted to confirm it's not a simple power issue. |
None of these devices have ever worked on the pi through the hub but I only started at version 4.14.70. I have no reference for past versions. They work fine without the hub and they work fine through the hub on all my other devices. The hub is active, fully powered, and none of these devices pull significant current. Only the Arturia is USB powered and it draws only 100mA or so. I have also tried with it external power. It does not matter. The others are externally powered. Note that the Arturia is a USB 1.1 device and all of my problems (there are many other devices that exhibit the same problem - some externally powered) are with USB 1.1 devices. Power source makes no difference. I have tried a 3 port unpowered hub as well with similar negative results on the pi and positive results with other equipment. |
Ok, new data point: after rebooting with the 3 port hub, it works: lsusb -v dmesg Still does not work on the 7 port hub, regardless of combination of ports plugged into or other devices plugged into the ports. And what's REALLY odd is that of two different kinds of devices which reliably don't work, one of them (the Eventide pedals) is USB 1.1 (12M) explicitly. The other (Arturia Keystep) reports a bcdUSB of 2.0, but shows up in lsusb as a 12M device. |
This morning we have been testing the setup without any of the dwc_otg.fiq_fsm_mask settings to try and find a reliable combination that triggers the fault I have been able to reproduce the error using 2 x FTDI 230XS USB 1.1 (12M) parts attached to the GL850 (STT) Hub That should be pretty reproducible from a hardware perspective This shows the fault https://gist.github.com/mypiandrew/6058fc1e76f5b9d7a0e8f4dcfc1962bf We also used the same setup on a board fitted with a GL852 (MTT) USB hub part rather than an GL850 part, which appears a bit better but still eventually fails with errors https://gist.github.com/mypiandrew/189102fb48e83eeb11dcfb468154d9bd Next we tested the GL850 (STT) setup with only one of the 12M FTDI devices attached. which also failed pretty quickly. https://gist.github.com/mypiandrew/256c138ab9fe48a0f21375cb81d4fd44 |
The fact that the issue's still there with the FIQ effectively disabled, and that control transfers are failing (which are the first transfers used to probe the device) suggests something more fundamental is broken. @mypiandrew Is there a way you can reset the on-board hub externally after the CM has booted? I.e. keep the electrical connections the same but force a hub reset. |
@P33M I can solder a flying wire to the chip's reset pin and then touch it to 0V temporarily after the system booted if you think that helps you? I don't know of a software command that will reset the chip EDIT: I remember we did test on the original bug report that resetting one of the attached devices that failed at boot caused the device to be re-detected OK https://gist.github.com/mypiandrew/5e0f5bf0f029c86214c79aef7fe699c4 |
Yes, I was thinking hardware reset. |
A bit of trial and error later https://gist.github.com/mypiandrew/1bb543ae5d70483c66ec76774bdd1ff1 |
This looks like a hardware initialisation issue to me. Key suspects for this sort of thing are stable voltages and stable clocks - given that you can blip the reset and it magically starts working (or reboot the Pi with the hub connected). It could be several things - the hub could either be in a bad state and not performing downstream traffic correctly, or downstream devices could be in a bad state if the hub's reporting connect events before the downstream ports have settled. Can you repeat the test by booting with the hub connected and holding the downstream FTDI device in reset for ~10 seconds, while still connected to Vbus and DP/DN? |
It is strange I'll give you that.. But I can't immediately see why it would be a HW problem as this has only appeared since the change 4.14. This issue doesn't appear with 4.9.80, and 4.1.x and 4,4.x before that There was this problem #1633 (with 4.4,x early on) which appeared to sort it's self out, but I can't say if this is related. In case it's of interest we've also been using SuSE SLES 15 (which runs with 4.12.14) recently which seems stable and can't fault that. I have to get another job out this afternoon, but I'll look into that FTDI test later on and post the results. I'll also double check it's not a 4.14+Jessie issue (not that I think that matters). |
With major version changes in the kernel, we have found in the past that there is enough code churn to cause significant timing differences. This typically manifests as e.g. some driver now being faster to initialise itself and probe a device, but the device isn't ready yet. rpi-update firmwares are reasonably bisectable - You could start with the last version that shipped a 4.9 kernel from https://github.com/hexxeh/rpi-firmware and step forward until the first broken one. If it's just due to the 4.14 bump, then I'd start to look more closely at timing between the two versions. |
Hi Yes I recall we have historically always seen a bumpy road when a new major kernel revision is released (4.1 =>4.4 =>4.9) These things are usually resolved ultimately, I try to imagine it akin to moving house. What you say about timing makes sense. Running Raspbian Stretch 5c80565c5c0c7f820258c792a98b56f22db2dd03 (4.9.80 = Good) 4.14.18 also gives int:68 error incase that's interesting.
|
This is going to be hard to debug if this is a custom board that does not have a breakout between the SoC USB lines and the hub chip in question. Is there a reference board available that you can plug into a CMIO board? |
FYI switching to a different STT hub with a different (non-VIA) chipset completely resolved the issue. Devices enumerate correctly. Both of my VIA VL812 chipset hubs have this problem. |
Ah. VIA labs usb hubs are incompatible with the Pi. They violate the USB2.0 spec for inter-packet gap acceptance (Pi generates an inter-packet gap that is larger than PC, but still acceptable). |
FWIW... BRANCH=next rpi-update Appears to have fixed the issue we were seeing with 4.14. Will keep an eye on it for now..just wanted to update this with our findings |
I have the same issure too, when i plug my raspberry pi pico, it does not show
and my OS:
and when i use this command to show the device :
nothing show up .
no /dev/ttyACM0 show up.when i use
How can i solve this problem ? My other Pico works fine in same Raspberry Pi 4B |
On 4.14.71+ if I plug a device in through the hub:
Whereas if I plug the same device in directly:
Here is another device, plugged in through the hub:
And plugged in directly to the pi:
Both devices work fine with this hub on other systems.
The text was updated successfully, but these errors were encountered: