Using FreeBSD on the Beelink SER5

I recently (January,2025) bought a Beelink SER5 mini-computer on Amazon. It was quite reasonably priced, and I wanted to replace a tower I'd had since 2007 or so.

It has a 1TB NVME drive and 32GB of RAM, though by default, it uses 4GB of RAM for the GPU which can be adjusted in the BIOS. I decided to run it with FreeBSD.

I should mention that its power cord has a huge plug, which takes up two outlets on a surge protector, but one can use an extension cord to deal with that.

The SER5 may be being discontinued; it was a very good price on Amazon, and I don't see any more SER5's at https://bee-link.com. There are several other SER models there, so it's my hope that this page might help people who bought others in the SER series, though I've not tried any of them. Maybe Beelink will see this page and offer me samples, but I think that's just for youtube influencers.

This will be a short page, because there were only a couple of issues. The machine comes with Windows, which I never used. At first boot, as soon as one sees the Beelink logo, hit delete to choose boot method or F7 to get into the BIOS. I booted from a USB and installed FreeBSD-14.2-RELEASE choosing to format the drive with ZFS.

Everything went smoothly. I used wireless to install, it had no problem with the card, and at the end of installatio it pulled in files to support the card and the AMD GPU.

As most FreeBSD users know, wireless on FreeBSD is much slower than Linux, so, although it was plenty fast enough to watch videos, I moved it over to wired ethernet and began installing the packages I wanted.

My two issues were audio and video. I just followed the Handbook's article to install X. I used xorg-minimal and then installed drm-kmod. However, when I added the kld_list="amdgpu" to /etc/rc.conf, the screen went black. I remembered something similar on an install to a laptop, where it turned out the package didn't match the kernel version. So I used git to get /usr/src and ports, removed the package, and built it from ports. (With drm-kmod, it seems you need /usr/src to build the port). I then installed the port, put the kld_list="amdgpu" in my /etc/rc.conf, and startx worked.

The one that took me longer to figure out was getting sound working. I tried a few solutions I found on the web, but nothing worked, though it didn't seem to have anything special, and sound had worked a on a Fedora install I'd tried. (It also worked on Arch, but I had to do a bit of web searching first, and wound up installing pavucontrol and found the output device way at the bottom. A friend who really likes Arch pointed out that wasn't that hard, and that I should have used pipewire, but I digress.

Eventually, I found a post from January, 2024 on the FreeBSD forums, by user nvit. The secret was to add these two lines to /boot/device.hints.
hint.hdaa.1.nid20.config="as=1"
hint.hdaa.1.nid27.config="as=1 seq=15"

Once I did that, sound worked with no problems both with mpv and any videos in firefox.

As I wrote above, this is a short article as there were very few problems. I put this up in case people run into similar issues with any of Beelink's SER series.