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 16:13:42 -0800
Newsgroups gmane.os.freebsd.devel.arm
Message-ID <[email protected]>
On 2/19/26 13:36, Mark Millard wrote:
> 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

Notes about the above files, as I remember:

) All the files with dates 2025-06-10/11 are from the RPI5-D0v1
release's RPI5_D0.zip .

) I added the empty timeout file because of properties of some USB3
media that I sometimes boot from.

) Later below I'd already shown the contents of the config.txt file.

) As I remember, RPI_EFI.fd from the test release or from the PI5_D0.zip
should work. But my saving configuration changes updated the RPI_EFI.fd
file so the date shown does not track which I used.

I will note that RPI5_D0.zip was updated again after the 2025-05-06
source code was last updated for that release: they mismatch. As I
remember, RPI_EFI.fd from the test release is also from after the source
code listed with it, although the differences were which EDK2 submodule
vintages were referenced, as I remember.


I've replaced a couple of comments in the below for better
identification of context.

> 
> 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 ('Update UEFI space' and later, no release yet):
> #device_tree_address=0x3e0000
> #device_tree_end=0x400000
> #
# For OLDER "D0" EDK2 (RPI5-DOv1 and test 2025-06-11 .. 2025-07-13):
> 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