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