Just last week (as of the date on this post) I ordered an AMD RX 6700XT graphics card. I saw it at a great price, probably $20 above what it COULD have been if prices were normal for graphics cards. I couldn’t pass it up, I had been wanting a new card anyways, and I was wanting OpenCL on FreeBSD. Well bad news for me, FreeBSD only uses AMD drivers from Linux kernel 5.7, and it turns out the RX 6000 series landed in the kernel at kernel 5.10. I was very sad finding this out because I had just set up poudriere to do weekly builds, I had a custom kernel, and FreeBSD was ripping fast. I wasn’t ready to table my new shiny card. I have been wanting to try an OpenBSD desktop for years anyways but I always had roadblocks that would prevent me from using it (in addition to my last GPU being an Nvidia), and I rely on my desktop for work since I work from home.
Well, here I am today, a few days into using OpenBSD 7.1-current and I wanted to compare both my FreeBSD and OpenBSD desktop, what I love, what I miss, what I don’t know, and yeah.
Here are my hardware specs right now:
Intel i7 10700K
MSI Z490 chipset motherboard
32GB DDR4 ad 2666MHz…ECC but can’t use it cuz Intel
OS drive: 500GB WD Black SN750 m.2 drive
Extras: Different OS on a 480GB SATA SSD and 2TB WD Blue
MSI RX 6700XT
ZSA Ergodox EZ keyboard
Elecom HUGE trackball
FiiO E10K USB DAC/amp
Currently I primarily use:
i3 (w/ i3bar and i3status)
Strawberry (Clementine on OpenBSD since Strawberry isn’t in OpenBSD ports)
In here, I’m going to compare/contrast setting up Free/OpenBSD on my desktop since the setup experience stood out to me.
What didn’t work (or work right) after install:
Ethernet: I have a 2.5Gbps Realtek RTL8125 which I had to get the pkg on a different computer, copy it over, then
pkg installto get ethernet
No xorg, but that is no issue
No graphics driver (had to install)
No U2F support
What worked after install:
keyboard/mouse worked as expected (though not all Elecom buttons work, I blame Elecom)
So, with all the other times I’ve poked around with OpenBSD, everything Just Worked(tm). Same case here:
Got the AMD drivers and my screen defaulted to 1440p/144Hz right away
Now, this is after install impressions. As I take you down my journey I’ll explain everything I’ve had to change or fix.
I’ve been a FreeBSD desktop user for 3 years. I love it. For the most part, there is little I would want changed. There’s a lot of good software, performance, good security controls, virtualization and jails are the absolute bomb, the FreeBSD Handbook is great. As far as general use goes, the only real papercuts I have are around enabling Nvidia drivers, but after that in these last 2 years Nvidia drivers have been totally painless for me. I loved how easy it was to compile the OS. Poudriere is mildly frustrating and could be documented a bit better I think, but eventually it was up and running. ZFS snapshots were pretty big for me, as I would snapshot my home dir and borg backup the snapshots.
What I Have Absolutely Hated
FreeBSD has had 2 total pain points for me.
Now, the FreeBSD Foundation has sponsored WiFi work for FreeBSD, and that is exciting. It will be awesome when FreeBSD sees something better than G wireless speeds. Really, what has required any medium amount of downloading has been painful.
OSS is amazing. I loved all the knobs I could touch with
sysctl and how obvious different settings were. I didn’t have one
single weird sound issue with FreeBSD….except on my Ryzen desktop when I had the Ryzen 3600. Not sure why, but sometimes audio
would cut out. Not sure if that’s fixed today or not, I’m on Intel again.
But…the BIGGEST pain of them all: turn on some music and play a song, then unplug your DAC,I dare ya. Oh oops, the programs didn’t properly release the audio device, go and kill every process that used your DAC, otherwise you aren’t getting your DAC back. This wasn’t a HUGE problem for me with i3, I usually had just Firefox and Strawberry to kill then life was back to normal. But with a desktop like KDE, you’re better off restarting your computer than killing the processes and finding out how to get KDE Plasma to a clean state again.
All in all, FreeBSD was a dream on my desktop, just don’t unplug the DAC. It was also very smooth on my Thinkpad T480 just get over the wireless speeds.
This is my first time ever getting OpenBSD on my desktop. Aside from the Nvidia card, there was always a couple things that didn’t quite sit right with me to trust it for my day do day work OS. I think now a lot of that has changed.
Earlier I said everything Just Worked(tm), and that is mostly true. However, here’s some of the things I have had to change:
/etc/login.conf`and add myself to staff group to get enough max files/mem for stuff like Firefox
Audio stuttered like a dying car
Some sysctl flags
Really, this wasn’t much. I regularly pull some bits and pieces from here to set up OpenBSD. The audio though…yikes. Sounds great, but that stutter was (is) awful! I think it’s 95% fixed now. I eventually discovered that the way OpenBSD handles CPU scheduling (I guess) would cause interrupts if anything is too taxing at any give time. Now, most software I used hasn’t been taxing to the point where it cuts out my audio. But Firefox is the one.
Fun fact: out of the box, Firefox wants 8 processes. That’s all 8 of my CPU cores, and probably all 8 of your 4 CPU cores. My solution:
about:config → change
dom.ipc.processCount to something lower than your core count. I set mine to 5. Audio problems gone.
This still isn’t fully resolved for me either. I’ve been trying to tweak everything I can think of. I’m about to the point where I’m near going against my conscience and using chromium because chromium does not induce the stuttering audio issues the way running Firefox does. There’s one issue with chromium though, which I’ll get to.
Couple notes I have here on Firefox are namely that it can be finicky getting it to point to your Downloads directory. At least make sure it is present so it can download since unveil actually does what it says it does. This goes for using the keepassxc-proxy too. For a while, unveiling it didn’t work for me. Now it appears to work. Yay!
Now for the worst of it. I still cannot figure this one out. Seems no one on Reddit, Matrix, or the mailing list has an answer to this. But for whatever reason, Firefox constantly interrupts audio on OpenBSD. Audio, and even other USB input gets totally murdered by Firefox. Tried a TON of stuff. Nothing fixes the issue. At this point, I have to abandon Firefox until this is resolved, which sucks a lot because, I think Firefox is technically and feature-wise a better browser than chromium.
Chromium is chromium. Works just fine out of the box, no weird issues in terms of regular use. The one thing that does suck is I can’t get keepassxc-proxy working with it. It seems even with some unveil tweaking I can’t get it to properly communicate with NativeMessagingHost, and, I think there’s some other unveil issues that are keeping it from working right. Don’t know what it is yet.
Where’s Muh Erlang?
What has been AWESOME about FreeBSD is how it has Erlang 21-24. OpenBSD is on Erlang 21, and I think the last time it got any
love was in 2020. Well, I am grateful to the Erlang people, it seems they have some love for OpenBSD, despite it not being
up to date in the ports tree. But downloading the source code, installing gmake, then
and there. You have current Erlang. Similar steps for rebar3. I’ve never maintained a port before, but I use Erlang regularly,
and Elixir. So if I can, I may see about maintaining the Erlang/Elixir port in OpenBSD some day.
Not a Fan of vmm
Between bhyve and vmm, bhyve wins every time in my opinion. To be fair, I haven’t tried vmm but when I look at what it supports, it always looks to be very lacking. That’s okay though, my server will be running FreeBSD indefinitely so I can utilize ZFS, jails, and bhyve.
Me No Like OpenBSD’s Wireguard Client
A few months ago, I tried to get OpenBSD to be a Wireguard client…didn’t go well. I have 2 Wireguard OpenBSD SERVERS and they have been champs. For some reason though, can’t get the client to pass through traffic. Tried a lot of stuff and for some reason the answer I always get is "use OpenIKED".
On the bright side: I did get everything working great now with wg-quick. I could probably shim that into using hostname.if, but the problem with hostname.if is I don’t think I can selectively enable interfaces. So, the wg-quick package does what I need best.
sndiod is great…and not
OpenBSD’s sndiod has solved my USB audio issue I have complained about for years. In FreeBSD, even inadvertently unplugging the USB DAC will result in a blow up. It used to completely hang every single USB device which required a force restart. Now as I said, you have to restart or kill every single process that held onto that device. In OpenBSD I can plug/unplug my DAC as many times as it wants. No explosions, and on plug in my audio works again no problem.
The not-so-great is it takes more to understand sndio than OSS. OSS was very straightforward to me. But sndio…it’s a must that you read the mixerctl(8), sndioctl(1), sndiod(8), and multimedia FAQ to get anything working or understand what a lot of the settings are in mixerctl and sndioctl output, configuring sndiod, understanding what rsnd/X is vs snd/X and so on.
Also, maybe my USB microphone is unsupported, but it SHOULD be rsnd/2 (or audio2, or uaudio1 because I have 2 USB audio devices but 3 audio devices), but whatever I try doesn’t seem to produce any working input and I just get errors even though the device shows up in dmesg.
Mouse is Missing Button Functions
I have an Elecom HUGE. I haven’t had all the buttons work right on Linux or FreeBSD either because I guess some of the buttons only work Right with their desktop Windows software. However, the forward/back buttons worked right on every OS except OpenBSD. They’re scroll up/down. And I can’t go in and make X11 edits because then my scroll wheel will misbehave, since according to X11 (I’m no display server expert), they’re the same button. So that sucks, I have to actually click the back/forward button in the GUI now.
I have to say, I love both operating systems for both their places. On one hand, I want to shake a stick at FreeBSD for being behind on graphics and wireless, but they’ve done such a great job at shipping a performant operating system with some awesome features. Likewise too, OpenBSD is SLOW often times and has some IO quirks sometimes it seems, it performs worse on weaker hardware by a lot (at least with browsers, an old dual core refused to run OpenBSD well), but without browsers it runs fine.
Currently, I am super happy with OpenBSD on my laptop. In fact, I think it will stay like that for the foreseeable future. I am not happy with it on my desktop though. Really, it all circles around to Firefox throat punching OpenBSD it seems when I do something as simple as open a new tab.
My conclusions for now:
OpenBSD, great on laptop. Better than FreeBSD for me. Maybe it also has similar audio issues to my desktop, but I don’t use my laptop for audio of any sorts really. Maybe I will play something from the speakers on occasion.
I’ll probably switch back to FreeBSD on my desktop though once the RX 6700XT is properly supported. Really, I see no future for my audio problem being solved. Maybe some day, but I have my doubts it will happen in 2022. I work from home, so I listen to music for a majority of the day. If I’m constantly being battered by poor audio, I can’t work. I also far prefer Firefox…one big reason is because Firefox has better features and screw Google.
I think though, if this issue were solved today I would stay here on OpenBSD. Not out of any disdain or dislike for FreeBSD…I do think it has a leg up right now. But I really appreciate OpenBSD’s simplicity and security controls.
I forgot to add what WiFi has been like on OpenBSD. Wireless worked out of the box, got 180Mbps down, which is excellent compared to the 25Mbps I get on FreeBSD.