Re: u-boot debug, was: Re: U-boot on RPI3, sees disk but won't boot it

From: Mark Millard <>
Date: Sun, 25 Sep 2022 23:43:15 UTC
On 2022-Sep-25, at 12:34, bob prohaska <> wrote:

> On Sun, Sep 25, 2022 at 10:39:23AM -0700, Mark Millard wrote:
>> On 2022-Sep-25, at 09:05, bob prohaska <> wrote:
>>> On Wed, Sep 21, 2022 at 06:45:00PM -0700, bob prohaska wrote:
>>>> After setting initial_turbo=60 in config.txt the first reboot
>>>> found the disk, the second did not. Running usb reset then
>>>> found the disk, but run bootcmd_usb0 seemingly caused a reset
>>>> that  _then_ found the disk. 
>>> It looks as if u-boot is somehow restarting itself unexpectedly.
>>> This is an RPi3B running stable-13, system and ports up to date
>>> as of yesterday.
>>> Here's an example session following a failed boot attempt:
>>> U-Boot> usb reset
>>> resetting USB...
>>> Bus usb@7e980000: USB DWC2
>>> scanning bus usb@7e980000 for devices... 6 USB Device(s) found
>>>      scanning usb for storage devices... 1 Storage Device(s) found
>> For:
>>> U-Boot> usb part
>>> [I think some information about the disk should have been displayed]
>>> U-Boot 2022.04 (Sep 23 2022 - 17:28:32 -0700)
>>> DRAM:  948 MiB
>>> [...usual startup output]
>> This could suggest power problems. Was this with powered-hub?
>> Without? Powered enclosure? Without?
> USB 3 powered hub driving USB 3 powered enclosure. I've checked
> voltages on the Pi and found no evidence of power trouble.
> There's no ready access to the hub and disk power leads.

I'll note that if replacing a RPi3B with a RPi4B (without
other changes to the configuration) leads to a working
context, this again could suggest power problems.

But a test here is if that "working" status applies both
to when a USB3 port is used on the RPi4B and when a
USB2 port is used on the RPi4B. The USB2 standard does
not require as much current to be supplied. However,
if I understand right, the RPi4B (not otherwise loaded)
easily supplies more current on USB2 than a RPi3B can
reliably supply --and more than the USB2 standard
specifies. (Similarly for keeping the voltage up.) Still,
there might be some distinction for USB2 on the RPi4B.
(I doubt the RPi4B USB2 ports could supply as much as
the USB3 standard says is required to be allowed. But
I could be wrong.)

Because USB3 introduces various differences, some testing
via the RPi4B USB2 ports is appropriate.

>> Was this a full RPi* reboot, going back through the RPi*
>> firmware stages before U-Boot started again? Or did the
>> RPi3B avoid starting the firmware sequence again?
> I think the sequence was a full shutdown -r, u-boot didn't find the
> disk but usb reset did find the disk. Then the usb part command
> seemed to restart u-boot. 
> Repeating the experiment just now the sequence was shutdown -r now,
> no disk found, usb reset, disk found, usb part, u-boot restarted
> and successfully booted to multi-user.
>>> Are there any debug switches for u-boot? I've looked a bit and
>>> what I find is either stale or not implemented. There's a reference
>>> to a "log" command, but it does not seem to be recognized.
>>> It does seem clear that the presence of a timeout file makes no
>>> meaningful difference. Boot succeeds rate is less than 50%
>>> This is using an unmodified u-boot-rpi-arm64 built locally. The
>>> system has no microSD installed, u-boot is started from the USB
>>> disk (which is found by firmware without trouble). 
>>> If setting up a microSD to start u-boot alone would simplify 
>>> matters that seems worth a try. Hints much appreciated! 
>>> Once the machine boots into freebsd it seems to work just fine.
>>> The problem appears to be with u-boot only.
>> If I understand right this is the same JMICRON context we had
>> an exchange about back in late 2022-Jan (and before). Back then
>> there were two RPi*'s to potentially involve in testing.
>> The enclosure is simply marked SABRENT EC_UASP, 
>> The usb-sata bridge is marked   JMS576
>>                            2026 QH8A3A A
>>                            E76H20013
>> Back then I warned that:
>> reported (and still does):
>> Sabrent and Orico both have the worst track records for working storage
>> adapters for the Pi. I don???t recommend them at all but they can sometimes
>> be fixed.
>> The following Sabrent JMicron adapters can be updated with their official
>> tool:
>> 	??? EC-SSHD*
>> 	??? EC-UASP*
>> 	??? EC-UK30*
>> 	??? EC-UM3W*
>> 	??? EC-DFLT*
>> 	??? EC-NVME*
>> 	??? EC-TFNE*
>> 	??? EC-TFNB*
>> Important Note: After the update the Sabrent adapters often work but
>> usually only with quirks mode enabled (see bottom Quirks section of
>> article). 
>> For Sabrent???s version of the JMicron firmware update tool: Sabrent
>> JMicron Update Tool
>> As I remember, there was some discussion of possibly getting and
>> trying alternate equipment not based on the EC-UASP, for example.
>> Possibly a powered enclosure, avoiding a need for a powered hub.
>> Back then I had requested various device swapping tests to see
>> what the problem followed vs. what it did not. The types of
>> tests could be (all are worded in comparison to your existing
>> configuration, not relative to each other):
>> A) Swap just the bridges between the RPi*'s: does the problem
>>   follow the bridge? The RPi*/disk combination ?
> Far as I recall the trouble followed the bridge.
>> B) Swap just the RPi* 's leaving the disks and bridges paired as they are:
>>   does the problem follow the RPi* ? The bridge/disk combination?
>> C) Swap just the disks, leaving the bridges and RPi* 's paired as they are:
>>   does the problem follow the disk? The RPi*/bridge combination?
>> (Other context held constant, such as the powered hub status
>> of the disk drive.)
>> With 3 devices involved, it takes multiple tests to try to see if,
>> overall, just 1 device is always involved across the failing
>> configurations or if it is always a combination of, say, 2 specific
>> devices.
>> As I remember, no results of such tests were reported.
> I did a few experiments but didn't find a way to clearly
> record/report the various combinations and behavior. 
> Very roughly, the Sabrent enclosures work fine on Rpi4's,
> both RasPiOS-32bit and FreeBSD-current. On RPi3 the Sabrent
> enclosure isn't reliably discovered but works once found.
> My setup makes swapping hardware around somewhat awkward,
> as the Pi's are daisy-chained via serial console. The Sabrent
> equipped Pi3 is the terminal server for the Startech-equipped
> -current Pi3 that has been my reference.  There are only two
> Pi3's available for experimentation, plus one Pi4. I'll have
> to think carefully before making much in the way of wiring
> changes, lest the confusion grow worse.
> IIRC I did try replacing the Sabrent enclosure with the Startech
> enclosure, which worked and seemed to implicate the Sabrent as
> the culprit.  Thus my interest in u-boot debug information.  

I've no clue what information to enable to learn about the
type of failure in the Sabrent enclosure (if that is where
the problem is).

But, again, if RPi4B works via USB2 but RPi3B does not, the
difference once U-Boot is started on the two is likely(?)
mostly power quality/sufficiency as far as I can tell.

Going the other way, if the RPi4B failed via USB2 use,
that likely would point in a different direction than
power quality/sufficiency and might suggest USB3 handling
is required for some reason.

Mark Millard
marklmi at