Share your ARM64/AARCH64 experience for FreeBSD

Mainly for setting up ARM 64-bit (ARM64/AARCH64) architecture systems which Single Board Computers (SBC's) or miniboards use. In my case, it's a Raspberry Pi 4.
rasp-hw.jpg

This case is under $10 and fits in a front shirt pocket. The MicroSD card didn't fit with the board into the hard case at first, so I had to cut the slot to be larger (on the underside, not shown in the image). The GPIO pins can be used for internal components as well, like cooling fans. This one uses USB-C, and a micro-HDMI cable for connections. It has wifi, Bluetooth and a wired ethernet port. There's a few more components, which you can see the specs for any particular model online. This is funny, because this is the first computer that I could almost put together at a fast food table, after buying it.

rasp-bootload.jpg

This system will let you download a bootstrap through an Internet connection, then you can install an Operating System to MicroSD or a flashdrive, from either the Internet or through one of those disks. That's handy when you don't have a flashcard reader or access to another computer to download an operating system.
rasp-os.jpg
The screen that lets you choose an OS from the Internet, or from an img on your MicroSD or USB drive.

The Linux distributions which were readily available were slow on the desktop, and intensive programs like Firefox or gaming applications crashed easily on this. This means it's a case use for BSD's.

This is the first part of the basic setup of a Raspberry Pi for others to see, and to continue to install FreeBSD. On mine, I may go with a desktop BSD like Fugu-ita dedicated on the MicroSD card. Then, I'll use the usbdrives to experiment with FreeBSD and other operating systems.

When looking for images to install to boards like this, look for ARM64, AARCH64 or Raspberry in the downloads. They're the same architecture with the exception that some are for more specialized boards within the ARM64 category.

At this point, share your experience with ARM64/AARCH64 SBC's (mini computers) including Raspberry Pi's on FreeBSD. I intend to do this later from this initial starting point. How do you use FreeBSD on your mini ARM64 computer?
 
How do you use FreeBSD on your mini ARM64 computer?
Look you can download this FreeBSD image, burn to a USB flash drive and put into your Raspberry Pi 4B,3B,or 400 Keyboard and boot that image.
It was asking what you do with FreeBSD on an SBC, not how to install it. That information is more detail on installing it, which is ok. Some install instructions for FreeBSD on an SBC, more details on Raspberry Pi 4, was already hinted above.

For further information, I looked up that Raspberry Pi 5 doesn't have the over Internet bootloader and install capabilities that Raspberry Pi 4 has, as described above. Not sure if this is true. I haven't seen an image for Raspberry Pi 5 from FreeBSD, and don't know if the ARM image for Raspberry Pi 4 would work on it. Information on these and other SBC boards would be good for discussion too.

GhostBSD examples can be at:
Thread those-of-you-who-have-used-ghostbsd-please-share-your-experience.83989. It's good to be aware that GhostBSD can be installed on an SBC though. There's something to learn about GhostBSD in comparison to FreeBSD in terms of available drivers and systems. For other specific BSD examples for comparison to FreeBSD: https://forums.freebsd.org/tags/share-bsd-experience/. A thread could be started for SBC (ARM and Risc) mini computers for all other BSD's in comparison to FreeBSD.

It's about what cool projects and other tasks people do with FreeBSD on an SBC, including Raspberry Pi. Which hatboards, GPIO projects, accessories. Also caveats.

One example of a caveat would be which power supplies are used for your SBC. For instance, Raspberry Pi 4 uses USB-C for power, and Raspberry Pi 3 may need a USB-B connection. However these connections need a higher output rating than typical USB connectors.

Edit: a post was moved to GhostBSD related thread, which is listed in this post.
 
Last edited:
Generally speaking, I love FreeBSD on ARM64. My only regret is not having more enterprise arm systems in my homelab, though I'm building a nice cluster at work. Here's a short list of my fbsd/arm focus, ranging from personal work on embedded systems engineering to ${megaCorpCDN} architect projects.

MakeModelQuantityPurpose
SolidRun / NXPHoneycomb LX2160a1SDN & TLS Traffic-Manager/Content-Director
SolidRun / NXP
Honeycomb LX2160a
1Poudriere building arm64 versions of FreeBSD, HardenedBSD, GhostBSD
Gigbyte / AmpereAltra EMAG 80-Core, 1TB RAM, ConnectX-5 100G6HCI nodes in a private cloud
NanoPiR4SE2dev/test
NanoPiR5S2dev/test/clustering
NanoPiR6S3dev/test/clustering
RPiCM4 / various carrier boards3dev/test/clustering
RPiCM4 / TuringPi 22
dev/test/clustering
 
I am currently using a quartz64 8g edition with edk2-uefi on acpi mode, it is used as a backup with zrepl running in a jail.
For the network I opted to an usb ethernet dongle, since I am no longer able to build the eqos driver on 14.0 (it was working on 13.1 if I recall, but unstable).
 
Generally speaking, I love FreeBSD on ARM64. My only regret is not having more enterprise arm systems in my homelab, though I'm building a nice cluster at work. Here's a short list of my fbsd/arm focus, ranging from personal work on embedded systems engineering to ${megaCorpCDN} architect projects.

MakeModelQuantityPurpose
SolidRun / NXPHoneycomb LX2160a1SDN & TLS Traffic-Manager/Content-Director
SolidRun / NXPHoneycomb LX2160a1Poudriere building arm64 versions of FreeBSD, HardenedBSD, GhostBSD
Gigbyte / AmpereAltra EMAG 80-Core, 1TB RAM, ConnectX-5 100G6HCI nodes in a private cloud
NanoPiR4SE2dev/test
NanoPiR5S2dev/test/clustering
NanoPiR6S3dev/test/clustering
RPiCM4 / various carrier boards3dev/test/clustering
RPiCM4 / TuringPi 22
dev/test/clustering
I have a couple OrangePi5b and have installed and tried Armbian,Debian,WOR, and Android so familiar with RKDevTool and installing those to eMMC and SDCard etc but FreeBSD my preferred OS is not supported on Orange Pi 5b. So wanting to buy a NanoPi R6S and install FreeBSD for both desktop and router/firewall experimentation... is there a how to on how to get this up and running as there doesn't seem to be a u-boot port for this model or does the r4s port work or is there another method? Thanks
 
Last edited:
PersonalBSD.com supports OrangePi 5 plus I believe, Read SleepWalkers Telegram channel. https://t.me/PersonalBSD or his webpage https://personalbsd.org/download ?? https://personalbsd.org/ https://personalbsd.org/?p=1561 Orange Pi 5 plus runs FreeBSD. SleepWalker uses UEFI firmware and uboot . Some support for FriendlyElec NanoPi boards there too. Really interested in what you achieve, So do reply back here with your Results for others to follow your path to running FreeBSD.org on Orange Pi 5 plus SBC RK3588 SOC.
 
PersonalBSD.com supports OrangePi 5 plus I believe, Read SleepWalkers Telegram channel. https://t.me/PersonalBSD or his webpage https://personalbsd.org/download ?? https://personalbsd.org/ https://personalbsd.org/?p=1561 Orange Pi 5 plus runs FreeBSD. SleepWalker uses UEFI firmware and uboot . Some support for FriendlyElec NanoPi boards there too. Really interested in what you achieve, So do reply back here with your Results for others to follow your path to running FreeBSD.org on Orange Pi 5 plus SBC RK3588 SOC.
Yeah I installed the edk2 RK3588 uefi image to get Windows to run on the OrangePi (was trying to get DRM working on arm) and got Windows to boot but no drivers for networking, Android was clunky, so went back to Armbian which allows me to run winbox under armhf. Anyway I digress, I looked up the instructions to install UEFI boot for WOR and found a nanopi-r6s_UEFI_Release_v0.9.1.img at https://github.com/edk2-porting/edk2-rk3588/releases. I guess the best option is to buy the board and spend some time figuring it out. Does anyone have ideas where is the best place to start, the uefi image or u-boot?
 
Share your ARM64/AARCH64 experience for FreeBSD
I rarely get to play with ARM stuff. I have a collection of loads of ex-business surplus Intel hardware which is hard to justify not using for personal projects and home servers.

That said, I did make this aarch64 powered, err, "owl" for my wife a while back:

hootle.png

It's arms flap about and it makes hooting noises.

Inside, is a Raspberry Pi 3 (absolute overkill!), USB speaker, 2 servo motors, USB wifi dongle and a USB mobile phone charger. Mostly all off-the-shelf stuff.

It ran FreeBSD 13 (albeit a custom install rather than the slightly messy premade images) which ironically, compared to Raspbian was a little bit fiddly to get the servo motors working via a slightly hacky approach to PWM. There was a lot of jitter compared to the i.e Pi-GPIO C library using hardware timed servo pulses.

Perhaps the coolest part is that it was effectively a wifi access point. You can connect wirelessly to it and SSH in. Great for debugging.
 
how did you configure that?
Nothing too special. Just hostapd(8) and dhcpd(8).

The only thing was, obviously I had to use a usb wifi dongle rather than the Broadcom wifi chip inside the Pi. I recall the interface came up as run(4). Not all chips support Host AP mode; though I am sure we all have buckets of these things by now, just grab another one and try that ;)

There is a section in the handbook about setting this up.
 
That is funny kpederson said "I rarely get to play with ARM stuff. I have a collection of loads of ex-business surplus Intel hardware which is hard to justify not using for personal projects and home servers." This morning I looked up what is required to run OPNSense and it suggested old intel hardware. That reminded me a couple years ago I installed pfsense on an old SFF PC, it worked great, and I have a few of those laying around doing nothing. Must be getting dumb in my old age but still there is the advantage that the mini arm boards are compact and generally use less power. I'm kinda thinking I should have bought the OPi5+ rather than the OPi5B since looks like personalbsd got that working.
 
FreeBSD my preferred OS is not supported on Orange Pi. So wanting to buy a NanoPi R6S and install FreeBSD for both desktop and router/firewall experimentation.
I thought FreeBSD would have had it, but there's no generic or OrangePi listed for SD Card aarch 64 downloads at https://www.freebsd.org/where/#download-rel140.
This morning I looked up what is required to run OPNSense and it suggested old intel hardware. That reminded me a couple years ago I installed pfsense on an old SFF PC
OPi5B since looks like personalbsd got that working.
PersonalBSD might be considered actual FreeBSD; not sure. It fits close enough for describing FreeBSD use on arm for this thread.

You can share your experiences about any firewall/router BSD distribution or dedicated firewall/router BSD at Thread share-your-router-firewall-bsd-distribution-or-dedicated-bsd-box-experience-for-freebsd-users.93274/. Mentioned in that thread: any BSD which IPF can be used on, can be used the same way as one of those dedicated BSD firewall distributions. Your use about the image from Personal BSD on your OrangePi can be described there, if you got that firewall/router to work.

NetBSD can also be tried for using a firewall/router BSD on OrangePi, as they have generic images for ARM 32 and 64, and additional images for OrangePi boards. As for video DRM, NetBSD has video drivers which FreeBSD doesn't have. You can share about NetBSD use for various purposes aside from firewall/routing at Thread share-your-netbsd-experience-for-freebsd-users.89800.
 
My experience running FreeBSD on arm is it didn't on OrangePi5b *grin*. My aim is to get FreeBSD running on an arm board and have been trying to decide on which board to try, and also possibly try out some other FreeBSD based distros. At this point it is pretty clear that a nuc or old pc (free) will provide better performance for the price so using an arm board is choice borne out of interest in the tech not economics. One application is I've successfully connected 2 Microtik routers to openvpn running on generic FreeBSD and at work we have 3 offices where one of the vpn connections is not working right. I'm thinking to try the hub and spoke setup with a FreeBSD distro, so looking for a board where I could also do some testing, though I think I've decided to use an old SFF with a 4 port network card that I dug up.

From the PersonalBSD webpage it looks like FreeBSD tweaked to run on various arm boards. In short I was looking for an 8 core 16GB RAM arm board to run FreeBSD as a desktop as well as other os's since I can't seem to get FreeBSD or Windows running on the OrangePi5b (yet). I reviewed a few boards the BananaPi spp, RaspberryPi 5, OrangePi5 Plus, NanoPi r6s/c, NanoPC T6, and threw in a Ryzen 7 nuc just for comparison. The RaspberryPi5 and OrangePi5 Plus and the Nano boards all have the edk2 uefi which might be able to boot FreeBSD. There was a video comparing WOR on both the Raspberry Pi 5 and OrangePi5 Plus so I could run that as an alternate OS for DRM support. But after all things considered the OrangePi5 Plus had the best computer power according to passmark (and it was one that personalbsd said he got working) though quite a bit more expensive than the RP5 with 8GB RAM. A OrangePi5 Plus 16GB RAM 256GB eMMC kit plus a 500GB Cruical nvme is $266 compared to $280 for the ryzen 7 nuc on Amzn though for the final build I may choose a bigger nvme.
 
i played with various boards (opi 3b, rockpi-s, opi zero3, nano pi zero, even an android tv box (h616)). i only use them over serial console.
i hacked various kernel drivers (mostly adapted from linux source) and it was kind of cool
they mostly work except for video / wifi so you could use them for home automation, cheap printserver, etc
 
I intended to run FreeBSD on this Raspberry Pi. There's an interesting advanced bootloader that can be installed through its default basic NOOBS bootloader. This image of NOOBS bootloader install options is the same one as the one in the first post:
rasp-os-jpg.18785

Through NOOBS, there's an option to install the advanced PINN bootloader, which is for Pinn Is Not Noobs. Under NOOBS, if I didn't format the SD card correctly, I had to start the Pi without the MicroSD card, to get to the boot menu, then insert the card afterwards. It kept rushing to booting, if I didn't do that, including if I formatted it incorrectly. A caveat about NOOBS for installing a custom OS, is that the install image has to be in the root directory of the USB drive for it to be used. PINN seems to be better as a boot loader with a few exceptions.

Unfortunately, I didn't find FreeBSD or any other BSD distributions available from PINN:
PINN-1.jpg

Make sure you verify that it's selected to install to the correct location: in this case, to the MicroSD card. Wireless could be set up from PINN, however, this didn't seem to carry on into any booted operating system to treat it as a wired connection. This is still great for bootstrapping, as long as PINN stays as the default over NOOBS. The Configuration tab for Wifi can be seen in this menu above.

It allows an install of different operating systems, though I try to stay away from Debian based ones. I selected Manjaro and the simple RISC OS. There are a few multimedia center distributions available, but aren't represented in this screenshot:
PINN-2.jpg

It also has options to install swap and an Ext4 partitiion.

If there's a way to custom install FreeBSD, NetBSD and Fugu-Ita through that multiboot of PINN, I'll do that. They're available to be custom installed through Raspberry's NOOBS bootloader. If PINN has way for installing other operating systems, it's not obvious.

Here's my boot selection screen (this may be of a different install, than in another screenshot):
PINN-boot.jpg

If I want to change the options, I either have to replace one operating system, or do a fresh install of everything. It has a confirmation screen as a safety measure. As long as no custom data is there, it's ok until finding ones preferred way of installing it. XBian implies Debian through its name, however, I'll see about using another multimedia distribution. Reinstalling through PINN is better than using NOOBS, except that it doesn't offer an obvious way to install custom operating systems and the inconvenience of sometimes having to start all over.

Even though this veered off from FreeBSD use, some ins and outs of the Raspberry Pi are on this thread to help others use the Raspberry on FreeBSD. If there's a way to use it with PINN, that would be perfect. In fact, this will help bring it to others attention that selections for BSD's aren't available in the PINN installer. This may rather also be about some lack of being able to use FreeBSD with a few desired features on ARM64 boards. It also may be necessary as a backup computer or for using tasks which your install of FreeBSD is unavailable to do at the time.

Debian based operating systems are slow. It's odd that these are the default or are many of the most readily available, when they stall the mini computer so readily. Manjaro is much faster on an under-powered SBC, so it doesn't stall as easily. I have to resort to the command line for some tasks, which is ok, bc the GUI's can stall. FreeBSD and other BSD's would be good, when I get them installed.

I'll get another MicroSD card to have NOOBS on one to play with FreeBSD, NetBSD and Fugu-Ita, and with PINN to have multiple Linux distributions on the other.

As for the Raspberry case, I also drilled a few holes in the top for ventilation, so I can keep the lid on to protect it. The board gets hot easily. It may need a fan, but that may require a new case, or customizing the existing case so that the fan sits outside on top, with a larger ventilation opening.

Edits: NOOBS actually does have setup for wifi. It's in the boot install menu somewhere. Also, MicroSD cards over 32GB may not work well with the Raspberry Pi for a few operating systems especially with NOOBS, unless custom installation steps are taken. I overlooked AOSP which is an Android operating system in the PINN install. Lineage is another Android OS.

Reinstalling, such as to netinstall, may require removing the MicroSD card and reconnecting power. Sometimes, it takes a few tries, especially if network boot was selected as the bootloader/bootmanager. The USB keyboard and mouse work better on the USB2 port.
 
Last edited:
The Raspberry Pi wifi (bwfm(4)) still seems to be missing on FreeBSD. I have always been curious why, in this occasion, it has lagged behind NetBSD and OpenBSD by almost half a decade for such a popular bit of hardware. So I did a bit of searching.

Some info here suggests that the main developer got busy with general life and never returned to it. Perhaps another developer is unsure if they should take it over?

It seems based on this info that he was brought onto the LinuxKPI based Intel Wifi drivers instead. Perhaps because these are paid for / sponsored by the FreeBSD foundation, they are more of a priority to him?

For a while there was a wait on SDIO being implemented before the driver could be supported (used the same bus). This was completed a number of years ago now. Though its strange that the other BSDs managed without it or that FreeBSD's was so under-developed in comparison.

That said, its kind of missed the boat now. Its nice to have but the hardware is now a little obsolete compared to i.e a USB 3.0 wifi dongle.

Edit: The OpenBSD and NetBSD versions were brought up by Patrick Wildt. Very impressive work. I feel his talents might be wasted working for Google!
 
Here is my blog about using FreeBSD / GhostBSD kernel on Raspi4B, 400, or 3B sbc. I have implemented HDMI Audio to play YouTube videos with sound coming out the TV speakers ( HDMI Audio sysctl sndxxx=2 )

search on separate words like: hdmi, audio, kernel, compile, 500, ssd, free sd, ghostbsd on that blogpost


Arm Open-Source telegram group has the 699mb image file in the file section area and a DYI GhostBSD Workstation document.





Use this information about patching Freebsd kernel to use VCHIQ system to play hdmi audio sound on TV speakers. also works with GhostBSD kernel to use VCHIQ system to play Audio out TV speakers.




Enjoy FreeBSD desktop with HDMI audio on Raspberry Pi 4B, 400, 3B
 
The Raspberry Pi wifi (bwfm(4)) still seems to be missing on FreeBSD. I have always been curious why, in this occasion, it has lagged behind NetBSD and OpenBSD by almost half a decade for such a popular bit of hardware. So I did a bit of searching.

Some info here suggests that the main developer got busy with general life and never returned to it. Perhaps another developer is unsure if they should take it over?

It seems based on this info that he was brought onto the LinuxKPI based Intel Wifi drivers instead. Perhaps because these are paid for / sponsored by the FreeBSD foundation, they are more of a priority to him?

For a while there was a wait on SDIO being implemented before the driver could be supported (used the same bus). This was completed a number of years ago now. Though its strange that the other BSDs managed without it or that FreeBSD's was so under-developed in comparison.

That said, its kind of missed the boat now. Its nice to have but the hardware is now a little obsolete compared to i.e a USB 3.0 wifi dongle.

Edit: The OpenBSD and NetBSD versions were brought up by Patrick Wildt. Very impressive work. I feel his talents might be wasted working for Google!
here is NetBSD 10.0 install to Raspberry Pi 4B
 
yes, I have interest in porting bfwm openbsd driver to run on FreeBSD Arm64 kernel. I say interest cause I have no reasonable idea of time and effort to port from openbsd to freebsd operating system. I just moved and have to setup my RasPi BSD 4B /8 gigs with SSD computer systems again. Others with ability and interest on porting can comment here below or over at Arm64 Open-Source telegram group channel

my blog on Arm64
search on words like ssd, compile, kernel, 500, hdmi, audio
 
Last time I tinkered with aarch64 (other than Rpi's) was with 14-CURRENT on one of these: https://www.unibia.com/unibianet/un...erx2-56-core-arm64-rack-mount-server-r281-t91

FreeBSD didn't work too well on it. Lack of drivers, hardware instability. It's sitting on the rack waiting to have 15-CURRENT tested.
Related bugs: PR 254651, PR 268995
That's not unexpected. The Cavium TX and TX2 were never meant for production workloads in the manner which the industry has come to expect of modern hyperscaler-grade rackmount hardware, and perhaps more unfortunately those chipsets suffer from performance issues which have been solved in later iterations of the ARMv8.2 product development timeline. Quite a shame ... I was about to buy one a few years ago but noped out of it after engaging with some dev/eng friends who had been using them with Linux -- and even there they had stability and perf issues. Time and place, those were effective building blocks in the larger scheme of ARM64 dominance, brought in a lot of engineering talent to work on enterprise class ARM64 development, and so 3-4 years later we're seeing better results with hosts running ARM64 v8.2+

Some reference notes on the TX2 arch:
- https://en.wikichip.org/wiki/cavium/thunderx2

References for the ARM ABI spec:
- https://developer.arm.com/Architectures/ABI
- https://github.com/ARM-software/abi-aa
 
Back
Top