FreeBSD 14 Pi 5 - BYO-NTP/recipes GitHub Wiki

date server os
2025 Raspberry Pi 5 FreeBSD 14

INSTALL

The Pi 5 is not yet supported by FreeBSD but there's a mostly working workaround. You'll need a USB Ethernet adapter or an Ethernet hat for connectivity. See details at the FreeBSD Forums. With that caveat out of the way...onwards!

Write the latest release of FreeBSD 14 to a SD card.

export PI_IMG="FreeBSD-14.2-RELEASE-arm64-aarch64-RPI.img.xz"
export PI_ISO="https://download.freebsd.org/releases/arm64/aarch64/ISO-IMAGES"
curl -o $PI_IMG -z $PI_IMG $PI_ISO/14.2/$PI_IMG
xzcat $PI_IMG | sudo dd of=/dev/disk4 conv=sync status=progress

add PI 5 support

If you're not doing this part on a macOS system, adjust /Volumes/EFI to match where the EFI partition is mounted on your OS.

  • Download rpi5-uefi
  • copy the files into place:
cd ~/Downloads/RPi5_UEFI_Release_v0.3 && \
  cp bcm2712-rpi-5-b.dtb RPI_EFI.fd /Volumes/EFI/
cat > /Volumes/EFI/config.txt <<EOF
[pi5]
armstub=RPI_EFI.fd
device_tree_address=0x1f0000
device_tree_end=0x210000
framebuffer_depth=32
disable_overscan=1
usb_max_current_enable=1
force_turbo=0

[pi4]
arm_64bit=1
hdmi_safe=1
armstub=armstub8-gic.bin

dtparam=audio=on,i2c_arm=on,spi=on
dtoverlay=mmc
dtoverlay=disable-bt
device_tree_address=0x4000
kernel=u-boot.bin

[all]
EOF

Configure a static IP

The Waveshare PCIe Ethernet board I have doesn't have a MAC address burned into the EEPROM. On each boot, FreeBSD assigns a new MAC, which then gets assigned a different DHCP pool address. One way to solve this is assign the NIC a static MAC address and add that to your DHCP server. Eg:

sysrc ifconfig_re0="DHCP ether nn:nn:nn:nn:nn:nn"

Another way to address this is to assign a static IP address:

sysrc ifconfig_re0="inet 10.0.N.NNN netmask 255.255.N.N"
sysrc defaultrouter="10.0.N.1"

boot

Insert the SD card into the Pi 5 and boot onto it.

CONFIGURE

remote login

Set up root user w/ssh key access and disable password logins.

ssh-copy-id -i ~/.ssh/id_ed25519 freebsd@pi5  # pass: freebsd
ssh freebsd@pi5
su -  # password: root
passwd root  # set the root password
mv /home/freebsd/.ssh /root/ && chown -R root:wheel /root/.ssh
sysrc sshd_flags="-o PermitRootLogin=without-password -o KbdInteractiveAuthentication=no"
service sshd restart
exit; exit  # disconnect
ssh root@pi5
rmuser -y freebsd

localize

Pick and choose from the FreeBSD settings page. Some settings are fairly important (like updating).

Add this to config.txt so my HD KVM switch works better:

cat >> /boot/efi/config <<EOUSB
# avoid USB resets
usb_max_current_enable=1
EOUSB
⚠️ **GitHub.com Fallback** ⚠️