Re: Raspberry Pi 500 Keyboard with 8 GB dram, trying to boot FreeBSD 15.0-CURRENT ALPHA5 RPI(3/4) Image

Mark Millard <[email protected]> Thu, 19 Feb 2026 13:36:15 -0800
Newsgroups gmane.os.freebsd.devel.arm
Message-ID <[email protected]>
On 2/19/26 11:29, Fred Finster wrote:
> Hello FreeBSD Arm users,
> 
> Sorry that I ask too many questions on this one issue of booting 
> FreeBSD on a Raspberry Pi 500 Keyboard model (based on the RPI 5
> design).  I did read Mark Millards freebsd-arm mail list responses to 
> booting FreeBSD on RPI5., looking for examples and help.
> 
> I am wishing to boot FreeBSD on a raspberry Pi 500 Keyboard model with 8
> GB dram.  I should use the RPI FreeBSD 14.2 version image suggested in
> the FreeBSD RPI5 Wiki.  I did give a test using the FreeBSD 15.0-CURRENT
> Alpha5 RPI image.
> 
> Attached a screen shot picture with the message invalid kernel.  So I am
> missing something in the image creation process from the Wiki entry. 
> How do you test the newer built RPI images? https://wiki.freebsd.org/
> arm/Raspberry%20Pi%205
> 
> 
> So how does the FreeBSD Continuous Integration Arm64 scripts that build
> the RPI (3/4) image or who keeps track of quality control (QC) on the
> binary images created for the various Raspberry PI 4 and Raspberry Pi 5
> models of hardware?   Does someone sign off and say this image works and
> supports these items in the System On a Chip (SOC) RPI hardware
> design?   Yes, I am probably missing some dot or missed crossing a 'T'
> in creating this image to boot FreeBSD on the RPI 500 keyboard model
> hardware.
> 
> .
> 
> Does anybody run  md5deep  Audit checks, so that one person can confirm
> this is the exact image I used to boot from,  using these audited files.  ?
> 
> Here is the master firmware files from Raspberry Pi dot com website
> 
> https://github.com/raspberrypi/firmware/tree/master/extra
> 
> https://github.com/raspberrypi/firmware
> 
> 
> Here is my blog post on using md5deep audit tool on raspberry Pi files.
> https://ghostbsd-arm64.blogspot.com/2021/05/audit-your-boot-files-with-
> md5deep.html
> 
> Here is my blog post on following the step by step directions listed on
> the FreeBSD Wiki RPI 5 site:
> 
> https://ghostbsd-arm64.blogspot.com/2025/09/setting-up-freebsd-on-
> raspberry-pi-5.html
> 
> https://wiki.freebsd.org/arm/Raspberry%20Pi%205 Raspberry Pi 5 Boot step
> by step directions.  I am struggling to follow exactly these steps. I
> have the microSD card with files from FreeBSD RPI4 image, and the USB
> FAT32 MSDOS partition with the files from RPI UEFI.
> 
> 
> I obtained device tree blobs for the BCM2712 SOC raspberry Pi 500 from
> the master firmware RPI github site.
> 
> You can verify the MD5DEEP checksums at my blogpost website GhostBSD-
> Arm64.blogspot.com
> 
> Auditing the files written into the USB Flash drive FAT32 MSDOS root
> directory and creating a text file with md5 hashes.
> 
> md5deep -z -b * > ~/audit_bootfiles_raspi500_oct12.md5
> 
> 
> 
> So several people have Raspberry Pi 5s running  FreeBSD.  May I compare
> your files with the standard files using MD5 checksums from the MD5 DEEP
> audit output list text file?
> 
> https://ghostbsd-arm64.blogspot.com/2021/05/audit-your-boot-files-with-
> md5deep.html
> 
> md5deep -z -b * > ~/audit_bootfiles_raspi500_oct12.md5
> 
> Has someone actually booted FreeBSD 15.0-CURRENT on the Raspberry Pi 500
> keyboard model or the Raspberry Pi 5 model?
> 
> There are a couple more blog sites to read up, about installing FreeBSD
> Arm64 to a Raspberry Pi model 5. https://ghostbsd-
> arm64.blogspot.com/2025/09/setting-up-freebsd-on-raspberry-pi-5.html
> 
> 2.)  Is there opportunity to see how that RPI 4/5 image is created with
> shell scripts in the build process for creating those RPI 4/5 images?  I
> would like to see HDMI Audio working on the RPI5 or RPI500 keyboard.
> ( RPI 4B and RPI400 keyboard model)  have the FreeBSD review D43399 to
> help with using HDMI Audio.
> 
> https://deepwiki.com/raspberrypi/linux/2.3-bcm2712-soc-(raspberry-pi-5)
> more information
> 
> 3.)  Other useful websites documenting how to boot / install FreeBSD on
> Raspberry Pi hardware.??  Any good ones to share here.
> 
> I am trying my best to help myself and test setups first before asking
> questions and asking for help from FreeBSD-Arm forum mailing list.
> 
> Fred Finster
> 
> https://ghostbsd-arm64.blogspot.com blog about using Raspberry Pi ARM
> SBCs with FreeBSD / and some GhostBSD.

I've no clue if any version of the EDK2 draft can work for any of the
RPi500's. I also have no test environment for such. (This is not a
FreeBSD specific point at all.)


I will warn that md5deep use including RPI_EFI.fd will generally find
mismatches if one has changed and then saved: any EFI setting changes
are written back into the RPI_EFI.fd file.


Your screen shot shows not getting anywhere near having FreeBSD code
involved, not even the FreeBSD loader. Any FreeBSD issues would come later.

FreeBSD does not provide the contents of where RPi* firmware related
files go or RPI_EFI.fd for where it goes. You must deal with such
separately.

For the below example information from my context: I've not updated any
media involved in some time. But it should give a clue what to expect
before the FreeBSD loader gets involved.



My RPi5 EEPROM is configured to try the microsd card first.

I boot via use of a microsd card that has just:

# gpart show -p /dev/mmcsd0
=>      63  62333889    mmcsd0  MBR  (30G)
        63      8129            - free -  (4M)
      8192  62325760  mmcsd0s1  fat32lba  (30G)

# df -m /mnt
Filesystem    1M-blocks Used Avail Capacity  Mounted on
/dev/mmcsd0s1     30424    2 30421     0%    /mnt

# find -s /mnt/ -print
/mnt/
/mnt/RPI_EFI.fd
/mnt/bcm2712-d-rpi-5-b.dtb
/mnt/bcm2712-rpi-5-b.dtb
/mnt/bcm2712-rpi-500.dtb
/mnt/bcm2712-rpi-cm5-cm4io.dtb
/mnt/bcm2712-rpi-cm5-cm5io.dtb
/mnt/bcm2712-rpi-cm5l-cm4io.dtb
/mnt/bcm2712-rpi-cm5l-cm5io.dtb
/mnt/bcm2712d0-rpi-5-b.dtb
/mnt/config.txt
/mnt/overlays
/mnt/overlays/bcm2712d0.dtbo
/mnt/timeout

# ls -gdt /mnt/* /mnt/*/*
-rwxr-xr-x  1 wheel 2031616 Feb  7 15:12 /mnt/RPI_EFI.fd
-rwxr-xr-x  1 wheel     623 Nov  4 17:17 /mnt/config.txt
drwxr-xr-x  1 wheel   32768 Jun 11  2025 /mnt/overlays
-rwxr-xr-x  1 wheel    1363 Jun 11  2025 /mnt/overlays/bcm2712d0.dtbo
-rwxr-xr-x  1 wheel   78377 Jun 11  2025 /mnt/bcm2712-rpi-5-b.dtb
-rwxr-xr-x  1 wheel   78373 Jun 10  2025 /mnt/bcm2712-d-rpi-5-b.dtb
-rwxr-xr-x  1 wheel   78333 Jun 10  2025 /mnt/bcm2712-rpi-500.dtb
-rwxr-xr-x  1 wheel   79091 Jun 10  2025 /mnt/bcm2712-rpi-cm5-cm4io.dtb
-rwxr-xr-x  1 wheel   79157 Jun 10  2025 /mnt/bcm2712-rpi-cm5-cm5io.dtb
-rwxr-xr-x  1 wheel   79132 Jun 10  2025 /mnt/bcm2712-rpi-cm5l-cm4io.dtb
-rwxr-xr-x  1 wheel   79198 Jun 10  2025 /mnt/bcm2712-rpi-cm5l-cm5io.dtb
-rwxr-xr-x  1 wheel   78381 Jun 10  2025 /mnt/bcm2712d0-rpi-5-b.dtb
-rwxr-xr-x  1 wheel       0 Sep 13  2020 /mnt/timeout

Everything else is on the other media, via either M.2 or USB3, M.2 in
the example below.

For reference:

# cat /mnt/config.txt
armstub=RPI_EFI.fd
#
# For NEW "D0" EDK2 (debug):
#device_tree_address=0x3e0000
#device_tree_end=0x400000
#
# For OLDER "D0" EDK2 (non-debug):
device_tree_address=0x1f0000
device_tree_end=0x210000

# Force 32 bpp framebuffer allocation.
framebuffer_depth=32

# Disable compensation for displays with overscan.
disable_overscan=1

# Force maximum USB power regardless of the power supply.
usb_max_current_enable=1

# Force maximum CPU speed.
force_turbo=1

# Local additions:
enable_uart=1
uart_2ndstage=1
dtdebug=1
disable_commandline_tags=1
#
[pi5]
over_voltage_delta=100000
arm_freq=2600
[all]
program_usb_boot_timeout=1


I have more RPi5/RPi500 firmware debugging enabled than you do, both via
the EEPROM content and via the above config.txt file it seems. So the
example below shows more lines for some sub-ranges that I show. I have
removed some escape sequences towards the end. My context will not
reference bcm2712-rpi-500.dtb .

Note the: Loading 'RPI_EFI.fd' to 0x00000000 offset 0x0
Note the lack of any armstub8-2712.bin references.

Your screen shot shows not finding RPI_EFI.fd at all --and so it keeps
looking.

Note that your "BOOT ERROR:" message is from the RPi500 firmware and has
nothing to do with FreeBSD's kernel: the RPi500 should have been
configured to find RPI_EFI.fd from the EDK2 draft that you are using.
I've no clue if you are using the debug variant vs. the non-debug
variant of RPI_EFI.fd . I do not get the "BOOT ERROR:" message and
booting works, despite a different firmware message about a (linux?)
kernel not being found: "No compatible kernel found"


  0.77 RPi: BOOTSYS release VERSION:57db150d DATE: 2025/11/05 TIME: 17:37:18
  0.77 BOOTMODE: 0x06 partition 0 build-ts BUILD_TIMESTAMP=1762364238
serial *REDACTED* boardrev e04171 stc 779048
. . .
  3.77 RPi: BOOTLOADER release VERSION:57db150d DATE: 2025/11/05 TIME:
17:37:18
  3.78 BOOTMODE: 0x06 partition 0 build-ts BUILD_TIMESTAMP=1762364238
serial *REDACTED* boardrev e04171 stc 3786296
. . .
  4.88 Read config.txt bytes      623 hnd 0x773
  4.79 [sdcard] pieeprom.upd not found
  4.93 usb_max_current_enable forced to 1
  4.05 Read bcm2712-rpi-5-b.dtb bytes    78377 hnd 0x378
  4.80 dt-match: compatible: raspberrypi,5-model-b match: brcm,bcm2712
  4.81 dt-match: compatible: brcm,bcm2712 match: brcm,bcm2712
  4.83 MESS:00:00:04.830707:0: *** Restart logging
  4.36 Read /config.txt bytes      623 hnd 0x773
  4.83 MESS:00:00:04.838476:0: board: boardrev e04171 otp e04171
  4.47 Read /config.txt bytes      623 hnd 0x773
  4.85 MESS:00:00:04.852365:0: Initial voltage 800000 temp 65307
  5.05 MESS:00:00:05.052750:0: avs_2712: AVS pred 8908 890800 temp 67506
  5.05 MESS:00:00:05.056357:0: vpred 890 mV +0
  5.06 MESS:00:00:05.065071:0: FB framebuffer_swap 1
  5.08 MESS:00:00:05.085585:0: Select resolution HDMI0/2 hotplug 0
max_mode 2
  5.08 MESS:00:00:05.089636:0: Select resolution HDMI1/2 hotplug 0
max_mode 2
  5.09 BMD "kernel_2712.img" not found
  5.00 fs_open: 'kernel_2712.img'
  5.10 BMD "kernel8.img" not found
  5.06 fs_open: 'kernel8.img'
  5.10 BMD "kernel8_rt.img" not found
  5.12 fs_open: 'kernel8_rt.img'
  5.11 MESS:00:00:05.115624:0: dtb_file 'bcm2712-rpi-5-b.dtb'
  5.12 MESS:00:00:05.121053:0: dtdebug: Trying Device Tree file
'bcm2712-rpi-5-b.dtb'
  5.12 Loading 'bcm2712-rpi-5-b.dtb' to 0x00000000 offset 0x1f0000
  5.42 Read bcm2712-rpi-5-b.dtb bytes    78377 hnd 0x378
  5.16 MESS:00:00:05.160741:0: dtdebug: delete_node(/__local_fixups__)
  5.17 [sdcard] /overlays/overlay_map.dtb not found
  5.73  /overlays/overlay_map.dtb
  5.17 MESS:00:00:05.176363:0: dtdebug: using platform 'bcm2712'
  5.18 MESS:00:00:05.182116:0: dtdebug: overlay map not loaded
  5.91 Read /overlays/bcm2712d0.dtbo bytes     1363 hnd 0x38f
  5.19 MESS:00:00:05.194500:0: dtdebug: Opened overlay file
'overlays/bcm2712d0.dtbo'
  5.22 MESS:00:00:05.222181:0: Loaded overlay 'bcm2712d0'
  5.23 MESS:00:00:05.233535:0: dtdebug:
merge_fragment(/soc@107c000000/gpio@7d508500,/fragment@0/__overlay__)
  5.24 MESS:00:00:05.240383:0: dtdebug:   +prop(brcm,gpio-bank-widths)
  5.24 MESS:00:00:05.247713:0: dtdebug: merge_fragment() end
  5.25 MESS:00:00:05.254487:0: dtdebug:
merge_fragment(/soc@107c000000/gpio@7d517c00,/fragment@1/__overlay__)
  5.26 MESS:00:00:05.261765:0: dtdebug:   +prop(brcm,gpio-bank-widths)
  5.26 MESS:00:00:05.269132:0: dtdebug: merge_fragment() end
  5.27 MESS:00:00:05.277360:0: dtdebug:
merge_fragment(/soc@107c000000/pinctrl@7d504100,/fragment@2/__overlay__)
  5.28 MESS:00:00:05.284470:0: dtdebug:   +prop(compatible)
  5.29 MESS:00:00:05.290788:0: dtdebug:   +prop(reg)
  5.29 MESS:00:00:05.295495:0: dtdebug: merge_fragment() end
  5.30 MESS:00:00:05.304721:0: dtdebug:
merge_fragment(/soc@107c000000/pinctrl@7d510700,/fragment@3/__overlay__)
  5.31 MESS:00:00:05.311820:0: dtdebug:   +prop(compatible)
  5.31 MESS:00:00:05.318106:0: dtdebug:   +prop(reg)
  5.32 MESS:00:00:05.322814:0: dtdebug: merge_fragment() end
  5.32 MESS:00:00:05.329578:0: dtdebug:
merge_fragment(/soc@107c000000/serial@7d001000,/fragment@4/__overlay__)
  5.33 MESS:00:00:05.337130:0: dtdebug:   +prop(interrupts)
  5.34 MESS:00:00:05.343533:0: dtdebug: merge_fragment() end
  5.35 MESS:00:00:05.351485:0: dtdebug:
merge_fragment(/soc@107c000000/spi@7d004000,/fragment@5/__overlay__)
  5.35 MESS:00:00:05.358236:0: dtdebug:   +prop(dmas)
  5.36 MESS:00:00:05.364074:0: dtdebug: merge_fragment() end
  5.37 MESS:00:00:05.371849:0: dtdebug:
merge_fragment(/soc@107c000000/hdmi@7ef00700,/fragment@6/__overlay__)
  5.37 MESS:00:00:05.378686:0: dtdebug:   +prop(dmas)
  5.38 MESS:00:00:05.384540:0: dtdebug: merge_fragment() end
  5.39 MESS:00:00:05.392416:0: dtdebug:
merge_fragment(/soc@107c000000/hdmi@7ef05700,/fragment@7/__overlay__)
  5.39 MESS:00:00:05.399264:0: dtdebug:   +prop(dmas)
  5.40 MESS:00:00:05.405111:0: dtdebug: merge_fragment() end
  5.43 MESS:00:00:05.436482:0: dtparam: nvme=1
  5.44 MESS:00:00:05.441942:0: dtdebug: found override nvme
  5.44 MESS:00:00:05.444427:0: dtdebug:   override nvme: string target
'status'
  5.71 Read /config.txt bytes      623 hnd 0x773
  5.53 [sdcard] /cmdline.txt not found
  5.36  /cmdline.txt
  5.53 MESS:00:00:05.538913:0: Failed to open command line file
'cmdline.txt'
  5.70 MESS:00:00:05.706700:0: dtparam: cam0-pwdn=34
  5.71 MESS:00:00:05.712794:0: dtdebug: /__overrides__ has no cam0-pwdn
property
  5.71 MESS:00:00:05.717093:0: Unknown dtparam 'cam0-pwdn' - ignored
  5.72 MESS:00:00:05.723218:0: dtparam: cam1-pwdn=46
  5.73 MESS:00:00:05.732183:0: dtdebug: /__overrides__ has no cam1-pwdn
property
  5.73 MESS:00:00:05.736489:0: Unknown dtparam 'cam1-pwdn' - ignored
  5.75 MESS:00:00:05.750769:0: RPM 7256, max RPM 7256
  5.75 MESS:00:00:05.752715:0: dtparam: cooling_fan=1
  5.76 MESS:00:00:05.761506:0: dtdebug: found override cooling_fan
  5.76 MESS:00:00:05.764604:0: dtdebug:   override cooling_fan: string
target 'status'
  5.78 MESS:00:00:05.785672:0: dtdebug:   override cooling_fan: string
target 'status'
  5.79 MESS:00:00:05.797727:0: dtdebug: delete_node(/hat)
  5.80 MESS:00:00:05.804437:0: dtdebug: delete_node(/hat_type1)
  5.81 MESS:00:00:05.811652:0: dtdebug: delete_node(/hat_type2)
  5.81 MESS:00:00:05.818866:0: dtdebug: delete_node(/hat_type3)
  5.84 Loading 'RPI_EFI.fd' to 0x00000000 offset 0x0
  5.34 Read RPI_EFI.fd bytes  2031616 hnd 0x733
  5.93 MESS:00:00:05.935424:0: No compatible kernel found
  5.94 MESS:00:00:05.940562:0: Device tree loaded to 0x1f0000 (size 0x13897)
  5.94 PCI1 reset
  5.95 PCI2 reset
  5.96 set_reboot_order 0
  5.96 set_reboot_arg1 0
  5.97 USB-OTG disconnect
  6.01 MESS:00:00:06.012604:0: Starting OS 6012 ms
  6.01 MESS:00:00:06.018457:0: 00000040: -> 00000480
  6.02 MESS:00:00:06.020309:0: 00000030: -> 00100080
  6.02 MESS:00:00:06.025021:0: 00000034: -> 00100080
  6.02 MESS:00:00:06.029734:0: 00000038: -> 00100080
  6.03 MESS:00:00:06.034447:0: 0000003c: -> 00100080

NOTICE:  BL31: v2.10.0(release):v2.10.0-462-g682607fbd
NOTICE:  BL31: Built : 21:02:57, Jul 13 2025
UEFI firmware (version v0.1-15-g7ce91f3 built at 21:04:33 on Jul 13 2025)
DESC (setup), F1 (shell), ENTER (boot)..
Consoles: EFI console
. . .


The last part of that is from RPI_EFI.fd . I do not show anything here
involving the FreeBSD loader or later.


You need to get to the point that you get the likes of:

Loading 'RPI_EFI.fd' to 0x00000000 offset 0x0
Read RPI_EFI.fd bytes  2031616 hnd 0x733

before you starting worrying about the FreeBSD loader or later stages.
(I do not claim the numeric values would all match.) Right now the
RPi500 never leaves the RPi500 firmware code, not even getting into the
EDK2 code, much less into the FreeBSD loader or FreeBSD kernel or world
code.


-- 
===
Mark Millard
marklmi at yahoo.com