Port-arm archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

Re: [EXT] no HDMI on rpi4b NetBSD 10.1





El 14/7/25 a las 23:00, Steve Rikli escribió:
On Mon, Jul 14, 2025 at 04:21:50PM +0000, Kulesa, Craig A - (ckulesa) wrote:
The "generic" system does support UEFI but it does not come with the
RPI4 UEFI firmware -- it's 'generic'.

I believe that makes sense. I was (unconsciously) thinking like the
NetBSD img was for Rpi (the previous OS I used on this rpi4 was FreeBSD,
and they offer an rpi-specific img), but of course there are also Rocks
and Pines and Bananas etc. in the world.  :-)

Absent this additional RPI4 UEFI firmware, is there a way to tell what
firmware version comes with the NetBSD .img file?

In general, is there a way to check what version a file from a given
UEFI firmware bundle is (e.g. from commandline or similar), other than
"just knowing" which .zip file you downloaded?

Good question. I do not know...


When you install the RPI4 UEFI firmware to SD card, NetBSD will pick
up and support the residual hardware like HDMI that doesn't come up
without UEFI and ACPI.   See this link for the firmware:

https://github.com/pftf/RPi4

OK. The installation instructions from that page says:

"Extract all the files from the archive onto the partition you created
above.  Note that outside of this Readme.md, which you can safely
remove, you should not change the names of the extracted files and
directories."

Which sounds like the zip archive expects to be unpacked as-is into
a fat/msdos partition, e.g. like the /boot/ partition from the NetBSD
img file -- more on this below, where you discuss options.

yes.


There are a couple options here:

- install the RPI4 UEFI firmware to micro-SD card, install the NetBSD
   image file to a USB-attached device (such as a flash drive or SSD).
   This is cleaner since UEFI firmware and NetBSD are on independent
   devices -- and certainly faster if an SSD is used.

I wasn't planning to use additional storage with this rpi4 aside from
the microSD sysdisk, so it sounds like I'll try your 2nd option:

- Install the NetBSD image file to microSD, then mount its msdos
   partition and unzip the RPI4 UEFI files into it.  Then you can boot
   both UEFI and NetBSD from the same microSD.  This minimizes hardware
   footprint at the expense of more complexity and a large hit to drive
   speed.

Is is possible to simply unzip the RPi4_UEFI_Firmware_v1.42.zip archive
into a running NetBSD system's msdos /boot/ directory, and then reboot?
Or it it better to do that "offline", with the microSD mounted in
another system?

I have done it in a running system and reboot without problems. Also Offline.


I note that the zip archive and msdos partition /boot/ directory from
the NetBSD img have different layouts and content, but there's some
overlap; here's what I have from the booted NetBSD arm64.img
installation:

rpi4# uname -v
NetBSD 10.1 (GENERIC64) #0: Mon Dec 16 13:08:11 UTC 2024  mkrepro%mkrepro.NetBSD.org@localhost:/usr/src/sys/arch/evbarm/compile/GENERIC64

rpi4# df -h /boot
Filesystem     Size   Used  Avail %Cap Mounted on
/dev/dk0        79M    32M    47M  40% /boot
rpi4# mount | grep dk0
/dev/dk0 on /boot type msdos (local)

rpi4# ls -l /boot
total 23155
drwxr-xr-x  1 root  wheel      1024 Dec 17  2024 EFI
-rwxr-xr-x  1 root  wheel      1594 Dec 17  2024 LICENCE.broadcom
-rwxr-xr-x  1 root  wheel     52476 Dec 17  2024 bootcode.bin
-rwxr-xr-x  1 root  wheel        33 Jul 13 17:08 cmdline.txt
-rwxr-xr-x  1 root  wheel       155 Jul 12 12:23 config.txt
drwxr-xr-x  1 root  wheel      1024 Dec 17  2024 dtb
-rwxr-xr-x  1 root  wheel      7269 Dec 17  2024 fixup.dat
-rwxr-xr-x  1 root  wheel      5412 Dec 17  2024 fixup4.dat
-rwxr-xr-x  1 root  wheel      3180 Dec 17  2024 fixup4cd.dat
-rwxr-xr-x  1 root  wheel      3180 Dec 17  2024 fixup_cd.dat
-rwxr-xr-x  1 root  wheel  16775144 Dec 17  2024 netbsd.img
-rwxr-xr-x  1 root  wheel   2979264 Dec 17  2024 start.elf
-rwxr-xr-x  1 root  wheel   2254944 Dec 17  2024 start4.elf
-rwxr-xr-x  1 root  wheel    808060 Dec 17  2024 start4cd.elf
-rwxr-xr-x  1 root  wheel    808060 Dec 17  2024 start_cd.elf
rpi4# ls -l /boot/dtb/broadcom/
total 158
-r-xr-xr-x  1 root  wheel  37735 Jul 12 04:03 bcm2711-rpi-4-b.dtb
-r-xr-xr-x  1 root  wheel  37679 Jul 12 04:03 bcm2711-rpi-400.dtb
-r-xr-xr-x  1 root  wheel  20741 Jul 12 04:03 bcm2837-rpi-3-a-plus.dtb
-r-xr-xr-x  1 root  wheel  21610 Jul 12 04:03 bcm2837-rpi-3-b-plus.dtb
-r-xr-xr-x  1 root  wheel  21142 Jul 12 04:03 bcm2837-rpi-3-b.dtb
-r-xr-xr-x  1 root  wheel  20465 Jul 12 04:03 bcm2837-rpi-cm3-io3.dtb

And here's what I see in the zip archive bundle before unpacking:

rpi4# unzip -l /tmp/RPi4_UEFI_Firmware_v1.42.zip
Archive:  /tmp/RPi4_UEFI_Firmware_v1.42.zip
   Length     Date   Time    Name
  --------    ----   ----    ----
   3997696  05-25-25 02:21   RPI_EFI.fd
     54264  05-25-25 02:21   bcm2711-rpi-4-b.dtb
     54353  05-25-25 02:21   bcm2711-rpi-400.dtb
     54873  05-25-25 02:21   bcm2711-rpi-cm4.dtb
       243  05-25-25 02:14   config.txt
      5454  05-25-25 02:21   fixup4.dat
   2264064  05-25-25 02:21   start4.elf
         0  05-25-25 02:21   overlays/
      2775  05-25-25 02:21   overlays/upstream-pi4.dtbo
      1566  05-25-25 02:21   overlays/miniuart-bt.dtbo
      4885  05-25-25 02:14   Readme.md
         0  05-25-25 02:14   firmware/
         0  05-25-25 02:14   firmware/brcm/
    631467  05-25-25 02:14   firmware/brcm/brcmfmac43455-sdio.bin
      7163  05-25-25 02:14   firmware/brcm/brcmfmac43455-sdio.clm_blob
      2074  05-25-25 02:14   firmware/brcm/brcmfmac43455-sdio.Raspberry
      2172  05-25-25 02:14   firmware/brcm/brcmfmac43455-sdio.txt
       502  05-25-25 02:14   firmware/Readme.txt
      9136  05-25-25 02:14   firmware/LICENCE.txt
  --------                   -------
   7092687                   19 files

If I simply unpack the zip archive directly into /boot/, it will
overwrite the config.txt which came with NetBSD img; and also end up
with different copies of at least bcm2711-rpi-4-b.dtb in /boot/ as well
as in /boot/dtb/broadcom/ .

I think that config.txt overwritting is needed in order to make UEFI work. Compare UEFI firmare zip file config.txt with the NetBSD supplied one and you will see the difference. Keep a copy of yours just in case you need something. I have only changed arm_boost=1 to arm_boost=0 to not stress my RPi too much on long compilation.

I believe that the UEFI firmware is RPI_EFI.fd. Also think that fixup4.dat and start4.elf come tweaked by the UEFI firmare ZIP file to work.

This is the config.txt supplied with the UEFI firmware:

netbsd-raspa4$ cat config.txt
arm_64bit=1
arm_boost=0
enable_uart=1
uart_2ndstage=1
enable_gic=1
armstub=RPI_EFI.fd
disable_commandline_tags=1
disable_overscan=1
device_tree_address=0x1f0000
device_tree_end=0x200000
dtoverlay=miniuart-bt
dtoverlay=upstream-pi4
netbsd-raspa4$


Should the existing /boot/ content be removed first? I.e. empty out
the /boot/ directory which came with NetBSD img, and then unzip the
new UEFI archive into it?

Good question, UEFI instructions say it should work, but I have not tested. I have never understood dtb files. My understanding of all of this subject is very limited. Hope not having said something wrong. All of this is very is a bit difficult for me to understand. We need better documentation.




The existing /boot/config.txt appears to have NetBSD specific settings
in it, so I'm guessing those should be preserved in some fashion rather
than entirely overwritten by the config.txt from UEFI zip archive, no?

Regardless, I recommend booting to the UEFI screen (via serial console
or HDMI) and configuring UEFI as desired (to remove the 3 GB RAM
limit, set boot order, verify the ACPI mapping to allow the wifi chip
to attach, etc) -- then have it boot NetBSD from whichever device
holds NetBSD.   Doing it in two stages helps debugging later.

I don't know how to "boot to the UEFI screen" yet, but perhaps this
will become clearer after installing and booting the UEFI zip bundle?

You will see inmediately at boot a screen with a big raspberry from which you can enter UEFI, similar to a PC BIOS (pressing F2 perhaps? I do not remember exactly the keys).

I'm happy to experiment here, since this rpi4 system isn't deployed
yet, while I work out the installation and config procedures.

That's a quick start.   I just did this recently, so if you get stuck
on anything feel free to give a holler.

Thanks very much; even just the clarification about the NetBSD .img file
contents being "generic" UEFI is helpful. It already explains some of
the behavior I see so far.

Cheers,
sr.

On Jul 14, 2025, at 8:26 AM, Steve Rikli <sr%genyosha.net@localhost> wrote:

I've used NetBSD for a while, but this is my first time with ARM. My
setup:

- Raspberry pi4 model B, 8GB RAM, microSD sysdisk, serial HAT with db9

- connected serial console, plus HDMI monitor and USB keyboard,mouse

- installed with dd image NetBSD-10-aarch64--generic.img.gz from
     https://nycdn.netbsd.org/pub/arm/
   as I understand it, these images come with UEFI.

During first boot I watched both serial and HDMI consoles. At poweron,
the serial console quickly showed output, but while the HDMI monitor
woke up right away, like it was getting a signal, no output ever
appeared there.

I was able to complete setup on serial console, and since that's how
I run most of my servers this is good enough to get started.

Is HDMI supposed to work at this point?

I'm confident in the HDMI monitor and cables, and the rpi4's HDMI; they
work with the original Raspbian OS, and I see rpi bootloader text output
on the monitor when I remove the microSD and power on.

 From NetBSD, the 'drvctl -l wsdisplay0' rc.conf routine doesn't find a
device, and 'dmesg' doesn't list anything that looks like "display"; I
do see these lines:
[ 1.000004] /soc/hdmi@7ef00700 at simplebus1 not configured
[ 1.000004] /soc/hdmi@7ef05700 at simplebus1 not configured

Presumably that's all related, but I don't know what to expect here.

I've sysupgrade to the daily NetBSD from Jul 12 as a matter of course,
but it didn't change HDMI behavior.

Do I need to add to (or replace?) any UEFI files which came along with
the NetBSD-10-aarch64--generic.img ? Also, is there a way to check
the version of the UEFI file(s) there?

Newer/different kernel required? Or load some additional module?

Fwiw the full 8GB RAM appears available, I didn't have to do anything
to enable it.

I tried a few suggestions from rpi forums and wikis, e.g. hdmi_safe=1
in /boot/config.txt and similar things; no change. I don't know how
much NetBSD makes use of some of those settings -- I'm guessing some
functionality from NetBSD /boot.cfg is handled there for evbarm?

I'm thinking of updating the rpi4 bootloader using the "Raspberry Pi
Imager", the version this unit came with is dated 2022/01/25.

I'm not roadblocked without HDMI, but it'd be nice to know what I'm
missing here -- ideas and suggestions always welcome.




Home | Main Index | Thread Index | Old Index