Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 30 May 2021 12:59:52 -0500
From:      William Carson via freebsd-arm <freebsd-arm@freebsd.org>
To:        marklmi@yahoo.com
Cc:        freebsd-arm@freebsd.org
Subject:   Re: Boot from USB on RPi4 8GB?
Message-ID:  <2F58272B-BD9C-464B-9A98-BF638971BA86@dsllsn.net>
In-Reply-To: <43FAEEAC-EE36-4810-88AA-FF82AFBCC128@yahoo.com>
References:  <4F3EE8D2-649B-4522-AD5A-7C308291802F@dsllsn.net> <43FAEEAC-EE36-4810-88AA-FF82AFBCC128@yahoo.com>

next in thread | previous in thread | raw e-mail | index | archive | help
Thank you for the quick and thorough reply!

> On May 30, 2021, at 3:55 AM, Mark Millard via freebsd-arm =
<freebsd-arm@freebsd.org> wrote:
>=20
> On 2021-May-29, at 22:17, William Carson <freebsd@dsllsn.net> wrote:
>=20
>> Hello Mark, sorry to unicast you but I keep getting rejected from =
freebsd-arm@. I was hoping you could give me some guidance, as it seems =
you've made quite a bit of progress in this area.
>>=20
>> Is there any documentation or a howto in order to get FreeBSD to boot =
from a USB3 disk on the RPi4 8GB? I dd'd the latest 13.0-RELEASE image =
(FreeBSD-13.0-RELEASE-arm64-aarch64-RPI.img) to the USB3 SSD, but it =
does not boot. (The same image works just fine when written to the =
sdcard.) It looks like it's unable to locate the USB disk and then gets =
stuck in a loop trying for network boot. When I get to U-Boot prompt, it =
says there are no USB storage devices. If I issue "usb start", there are =
still no devices.
>=20
> You report:
>=20
>> If I try "usb reset", it seems to find it, but then it displays an =
error ("scanning bus xhci_pci for devices... Setup ERROR address device =
command for slot 1. USB device not accepting new address =
(error=3D80000000)" and then locks up. I checked that I have the latest =
bootloader:
>=20
> (I assume no microsd card was in the microsd card slot.)

Correct.

> I've not seen or heard of that U-Boot report before.
> But you made it to U-Boot so the RPi4B firmware
> worked for getting U-Boot from the USB3 drive.
>=20
> This suggests the U-Boot stage is having the problem.
>=20
> So I've no specific solutions, not having seen the
> kind of report before. I've just more generic notes
> and questions.
>=20
> [I'll note that I've had no problem with USB3 SSD
> booting the RPi4B's that I have access to (no
> microsd card involved).]

I'm trying to use a SAMSUNG (MZ-V7E500BW) 970 EVO SSD 500GB - M.2 NVMe, =
attached via the Geekworm X872 M.2 NVMe 2280/2260/2242/2230 SSD =
Expansion Board.

> One test is to use the microsd card that boots
> via the microsd card slot and instead put it in
> a USB3 microsd card reader, plug the reader into
> a USB3 port, and try to boot from just that.

Hmm, this worked just fine.

> If that boots, then there would seem to be some
> device incompatibility with your specific USB3
> "boot" drive. If, instead, booting via the reader
> fails, then things are rather odd. (See later
> notes about SOC vintages.)
>=20
>> # rpi-eeprom-update
>> BOOTLOADER: up to date
>> CURRENT: Thu 29 Apr 16:11:25 UTC 2021 (1619712685)
>>  LATEST: Thu 29 Apr 16:11:25 UTC 2021 (1619712685)
>> RELEASE: stable (/lib/firmware/raspberrypi/bootloader/stable)
>>          Use raspi-config to change the release.
>>=20
>> VL805_FW: Using bootloader EEPROM
>>   VL805: up to date
>> CURRENT: 000138a1
>>  LATEST: 000138a1
>=20
> Since you got to U-Boot the RPI4B's bootloader worked.
> The above is what I currently use in the RPi4B's,
> 8 GiBYte and 4 GiByte ones.
>=20
>> If I dd Raspberry Pi OS (2021-05-07-raspios-buster-armhf-lite.img) to =
the same disk, it boots up no problem. I'm thinking this is a =
U-Boot/rpi-firmware problem, but I don't really know where to begin.
>=20
> FYI: if you ever want to use both a 64-bit kernel and
> a 64-bit user space, there are BETA's of such (Debian
> Buster based):
>=20
> https://downloads.raspberrypi.org/raspios_lite_arm64/images/
> https://downloads.raspberrypi.org/raspios_arm64/images/
>=20
> (I'm not claiming any gain from such for the problem at hand.)
>=20
>> I tried building my own image using crochet,
>=20
> https://wiki.freebsd.org/arm/ reports about crochet:
>=20
> "Alternatively, images for many boards can be built by crochet =
(deprecated) or using FreeBSD's release build infrastructure."
>=20
> There were no commits at https://github.com/freebsd/crochet
> between 2019-Oct-06 and 2021-Apr-23. But there are some
> on 2021-Apr-24.

Yes, this is very disappointing, but I was able to copy the =
board/RaspberryPi3 and modify it to use the appropriate ports/firmware =
files. I used a similar process for my ROCKPRO64 and Khadas EDGE-V =
boards and they both worked. I'm happy to confine my testing to an =
official FreeBSD image if it makes things easier to troubleshoot :)

> I do my own builds based on using make commands but I do
> not use the release scripts for building. I build for a
> variety of systems.
>=20
>> but that didn't work either.
>=20
>> I'm also not sure whether I should be using sysutils/u-boot-rpi4 (I =
used this) or sysutils/u-boot-rpi-arm64?
>=20
> Either should generally work. (But see later notes
> about RPi4B SOC vintages.)
>=20
> FreeBSD-13.0-RELEASE-arm64-aarch64-RPI.img was based on
> sysutils/u-boot-rpi-arm64 . I've historically built and
> used a variant of sysutils/u-boot-rpi4 but my history
> goes back before sysutils/u-boot-rpi-arm64 existed. I
> do not do anything were the configuration variations
> involved matter so I'm not familiar with the distinctions.
>=20
> I've used both a previous 2020.10 based U-Boot and a
> more recent 2021.04 based U-Boot.
>=20
>> After installing sysutils/rpi-firmware (1.20210303.g20210303), should =
I just copy /usr/local/share/rpi-firmware/* to the boot partition and =
rename config_rpi4.txt to config.txt?
>=20
> I assume you mean the msdos file system partition when
> you reference "boot partition". The msdos file system
> needs to contain:
>=20
> A) copies of /usr/local/share/rpi-firmware/* materials,
>   using config_rpi4.txt content as the config.txt
>   content. The copy should be recursive, to pick up
>   the likes of the overlay/ subdirectory tree.
>=20
> B) a copy of an appropriate u-boot.bin  ( from
>   /usr/local/share/u-boot/u-boot-rpi-arm64/ or
>   /usr/local/share/u-boot/u-boot-rpi4/ ).
>   (See later notes as well.)
>=20
> C) A copy of /boot/loader.efi (the FreeBSD loader)
>   placed at/as efi/boot/bootaa64.efi in teh msdos
>   file system.
>=20
> I use a USB3 SSD that has small enough power requirements
> to not require a powered hub. (I also use a 5.1V 3.5A
> power supply as part of that context.) I've never tried
> spinning rust or higher powered USB3 media.

I can confirm those are the steps I followed. I'm not sure what's =
considered "high powered" but the Samsung tech specs say this particular =
model uses 5.7 W on average and 10.0 W maximum. But it does seem curious =
that the Raspberry PI OS will boot this disk without issue, so I don't =
think it's the drive. I also tried a Samsung 950 PRO using a different =
enclosure (QNINE NVME Enclosure, M.2 PCIe SSD (M Key) to USB 3.0 =
External Case), but it behaved the same.

> It is unclear what the dd command details were like for
> the transfer to the USB3 media. So I just assume that
> it was okay.
>=20
> You may want to have an empty file named timeout in
> the msdos file system. It allows for extra time.
> (I doubt it helps, since U-Boot did load and start.)

Correct - the empty timeout file did not help. However I was able to =
capture the beginning of the boot process:

"scanning bus xhci_pci for devices... Device NOT ready
    Request Sense returned 02 04 01
3 USB Device(s) found
        scanning usb for storage devices... 0 Storage Device(s) found
Hit any key to stop autoboot: 0
Card did not respond to voltage select! : -110

Device 0: unknown device
ethernet@7d580000 Waiting for PHY auto negotiation to complete.."

(This was with the USB3 disk attached and no sdcard in the slot; no =
ethernet attached either.)

> What does:
>=20
> # rpi-eeprom-config=20
> [all]
> BOOT_UART=3D0
> WAKE_ON_GPIO=3D1
> POWER_OFF_ON_HALT=3D0
> DHCP_TIMEOUT=3D45000
> DHCP_REQ_TIMEOUT=3D4000
> TFTP_FILE_TIMEOUT=3D30000
> ENABLE_SELF_UPDATE=3D1
> DISABLE_HDMI=3D0
> BOOT_ORDER=3D0xf41
>=20
> report in your context? (An equivalent command is
> "vcgencmd bootloader_config". I show example output
> above.)

root@raspberrypi:~# rpi-eeprom-config
[all]
BOOT_UART=3D0
WAKE_ON_GPIO=3D1
POWER_OFF_ON_HALT=3D0

> Can you see the top of the SOC? Or is there a
> heatsink or some such on it? (There is something
> there to read if it can be seen.)
>=20
> One possibility is that you have newer hardware that
> the normal U-Boot vintages that FreeBSD has used do
> not handle.
>=20
> https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=3D255080
> is about someone that instead of having only:
>=20
> QUOTE
> Old Pi has the following identifying marks on the SOC package:
> BROADCOM
> 2711ZPKFSB06BOT
> TE1919
> 045-23 B3 W
> END QUOTE
>=20
> the person also had an example of a 2 GiByte:
>=20
> QUOTE
> New Pi has the following identifying marks on the SOC package:
> BROADCOM
> 2711ZPKFSB06C0T
> TA2105
> 054-05 B3 W
> END QUOTE
>=20
> The:
>=20
> 2711ZPKFSB06BOT
> vs.
> 2711ZPKFSB06C0T

Mine reads 2711ZPKFSB06B0T.

> is significant. If you have a 8GiByte "C0T" RPi4B it
> would be the first known example. In such a case, you
> might want to try the u-boot referenced in Comment 15 of
> https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=3D255080 .
> It got the 2 GiByte "C0T" to boot. (But that context
> could not even boot via the microsd card slot with the
> normal media content from 13.0-RELEASE .)
>=20
> I do not know if the 2021.04 U-Boot that the since
> updated port now provides would work for this context
> or not. I've no access to any "C0T" RPi4B's (or any
> Pi400's or CM4's).
>=20
> There is a category of USB device that U-Boot still does
> not support as far as I know: those where the one device
> has multiple storage LUNs (instead of just one Logical
> Unit Number identifying storage).
>=20
> https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=3D253983
> is about such a context, where we eventially figured out
> the "multiple storage LUN" issue.
>=20
> But the error messages from the U-Boot of the time was
> not what you report.
>=20
>=20
> =3D=3D=3D
> Mark Millard
> marklmi at yahoo.com
> ( dsl-only.net went
> away in early 2018-Mar)
>=20
>=20




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?2F58272B-BD9C-464B-9A98-BF638971BA86>