My journey setting up my Framework 13 AMD, Arch Linux and OpenBSD

On, December 16th, 2023, I got my shipment of Framework 13 that I ordered 3 days ago. Wow that's fast! But getting it working to my needs was another story. Things just.. go wrong at every turn. I don't blame Framework, I do have some specific needs that I recognized I will have to solve myself.

I ordered the DIY edition of AMD Ryzen 7 7840U. And no RAM, no SSD. I checked the price and buying from my local store id just cheaper. I plan on installing both Arch Linux and OpenBSD on this machine. A friend of mine saw my last post and told me the included MediaTek MT7922 is not supported by OpenBSD, yet. So I bought myself an Intel AX210. All is set and the machine is delivered.

It's a beautiful and lightweight machine. Before the 1st boot. I did the following modifications:

  • Installed 2x32GB Kingston DDR5 5600MT RAM
  • Installed Kingston 2TB PCIe4.0 NVMe SSD
  • Swapped MT7922 for Intel AX210 WiFi card (Later to AX200 because Arch is having issues)

Along with the following expansion cards from Framework

  • Ethernet x1
  • USB Type-C x2
  • USB Type-A x1
  • HDMI x1

My plan is to use this laptop as my OpenBSD development enviroment. And a trustible machine when I need a computer outside of my home. And some lite gaming.

The scorching hot power button

After I put everything together, I booted into the BIOS and notice a weird smell. That ain't good so I pressed the power button to force a shutdown. Ouch! It's HOT. The power button is SCORCHING. The machine got shutdown and I let it cool down for a while. I tried plugging my USB charger in and.. it's hot again. After a few experiments, Googling and talking to a friend who also own a Framework. He says I got unlucky and likely the power LED is shorted. I've contacted Framework support and is waiting for a reply.

Resolved

Some pretty bad timing. I ordered my laptop about a week before Christmas. I sent a message to the support team and they got back to me in a few hours. However, it took a few days to clarify the issue and getting Framework to send me a replacement. Due to the holiday season, the replacement got shipped on Dec 27th, 2023 and delivery on 28th. I was visiting my family. I got back on Jan 1st, 2024 and got the replacement that day from the post office. I swapped out the keyboard and touch-pad assembly and everything works fine now.

It's a long delay. But I'm glad Framework support is very responsive and my machine is working now.

Wifi

With the Day 1 power button issue. I unplugged entire keyboard/touchpad assembly and plugged in my own keyboard. Plugged in an Arch Linux Live USB and boot. Annnnnd.. Bluetooth: hci0: hardware error 0x10 got spammed all over the screen at a rate of a few Hz. I tried to run ip a and it confirms Wifi also did not show up. I don't know at this point, if it's the WiFi card itself, not compatible with the AMD motherboard, or Linux's issue. Judging by the fact I bought it from a local store and comes with a sketchy container. I'm leaning towards the WiFi card. But for good measure, I made a OpenBSD Live USB - FuguIta - didn't use the official image as that does not come preinstalled with firmware. The WiFi card actually works! I don't exactly know what's the cause, either it's Linux's issue or Bluetooth on the card I bought is broken, dragging down the entire card. I returned the AX210 and got an AX200.

Error message I got when booting into Arch Linux (see the bottom of the screen)
Image: Error message I got when booting into Arch Linux (see the bottom of the screen)

Resolved

I ended up buying an AX200. Works perfectly.

Arch Linux

Here's my game plan. I need some Linux. I don't trust OpenBSD to manage and update the EFI firmware for me. And I do plan on using this machine for gaming and Netflix sometimes. As well as managing the multi boot environment. Arch is my 1st choice. I installed Arch Linux after getting the WiFi and keyboard issue resolved. Everything is encrypted and I've allocated enough extra space for Arch that in the future, if I need to, I can reduce the size of the BTRFS partition and install Windows.

I ran into issues installing encrypted Arch. archinstall simply bugs out and crash when FDE is enabled. With manual partitioning, can install but GRUB complains about unable to find the root partition UUID with error message.

error: disk `cryptouuid/<UUID>` not found.
Entering rescue mode...
grub rescue>

With much googling, which all suggests either reinstalling GRUB but that doesn't help. Later on I found an obscure QA that suggests cryptsetup has been set to defaulting to LUKS2 + Argon2id lately but GRUB only supports PBKDF2. I ran the key conversion command on the Arch Wiki and GRUB is able to boot correctly. However, unlocking the encrypted partition is slow. Like 20 seconds after typing in the password. Then I got stuck on initramfs not even attempting to mount the encrypted root partition. Managed to make it work after some random fiddling later, not knowing what exactly fixed it.

But I ended up reinstalling Arch again due to the 20s decoding time needed for GRUB, I could have dropped the KDF iteration count. But I feel that's even worse as my actual data is now in danger. And I'm predicting it'll be a pain when I installed OpenBSD and have to walk through 2 layers of disk passwords to even boot. One for GRUB's boot menu and another to boot OpenBSD. Not fun at all.

OpenBSD

It took one try to get OpenBSD fully encrypted installed on the spare space I left for it. The guides from "The OpenBSD Guy" helped a lot. The guides are not up to date. But along with some guess work I'm lucky enough to first shot the installation process. I have to give it to the OpenBSD team - installing OpenBSD with encryption is a breeze. Compared to Arch's archinstall that is.

Youtube video: The OpenBSD Guy: Dual boot OpenBSD and Linux (n00b friendly)
Youtube video: The OpenBSD Guy: OpenBSD custom partitioning (in 2 minutes)

Running OpenBSD on the Framework 13 AMD is great! Everything just works. That is, besides the GPU. Before buying, I checked Phoronix and found OpenBSD 7.3 supports RDNA3 GPUs. And thinking to myself: "The 7850U also runs on RDNA3. It should work just fine".. And it didn't. Turns out even on Linux, Framework recommends using Linux >= 6.5. But OpenBSD 7.4 uses DRM from Linux 6.1. So I'm stuck with llvmpipe. Good news is backlight control still works, the CPU is powerful enough to do most of the work and I'm hopeful OpenBSD 7.5 will have the updated DRM (Luckly kernel 6.5 is LTS and released Oct 2023, there's a good chance OpenBSD 7.5 will have it).

Audio, touchpad, keyboard, USB, Ethernet all works out of the box. I'm very happy with the OpenBSD experience on the Framework 13. I won't be using it wihout plugged in due to the lack of GPU support. But I'm happy to finally have a physical machine to run OpenBSD on. Power consumption wise, OpenBSD with obsdfreqd runs at around 7.3W idle without X. I am not sure how much of that is the GPU spinning since DRM does not support it. But 7.3W is also around the same as Linux wihtout power optimization. With tuning from powertop, Linux can get down to 4.5W idle. I hope I can find some way to get OpenBSD to that level.

| Device                    | works |
|---------------------------|-------|
| USB                       | ✓     |
| Ethernet (expansion card) | ✓     |
| Keyboard                  | ✓     |
| Trackpad                  | ✓     |
| Integrated GPU            |       |
| Wifi                      |       |
| SSD                       | ✓     |
| backlight control         | ✓     |
| Audio                     | ✓     |

As of now I've successfully ran OpenBSD 7.4 on the laptop with uptime of 8 hours doing daily tasks like browsing, music and some coding. It's fair to claim it's stable enough for daily use (again, without GPU support). I ran into audio suddenly dropping from Firefox twice. But disappeared after a reboot (or it's a YouTube Music specific thing?). And some bugs seemingly related to the missing GPU support. My real usability complain is there's no gesture support. But.. that's known to not work in X11 so it's not 100% OpenBSD's fault.

I find the latency of typing in the terminal to be high when playing YouTube on Firefox in the background to be very noticeable. Enabling SMT seems to alleviate it somewhat.

Please visit my older blog post to see what performance optimizations and tuning I do.

Here's a photo

OpenBSD 7.4 running on Framework 13
Image: OpenBSD 7.4 running on Framework 13

My Framework 13 running OpenBSD 7.4 at a local hackerspace
Image: My Framework 13 running OpenBSD 7.4 at a local hackerspace

Installing the Intel AX200 firmware

The OpenBSD isntaller does not come with firmware preinstalled. I'm lucky enough to have bought the Ethernet expansion card. So I can connect to the internet and install the firmware from there. PSA: The Ethernet expansion card uses USB-C on the rear end. You can just plug in into one of your USB-C ports and it'll work. No need to swap out the expansion cards.

Dualbooting OpenBSD from GRUB

I added the following entry to /etc/grub.d/40_custom to boot the OpenBSD EFI bootloader from GRUB.

menuentry "OpenBSD" {
    search --fs-uuid --no-floppy --set=root <UUID of the EFI partition>
    chainloader /EFI/boot/bootx64.efi
}

WiFi performance

I'm getting around 300Mbits/sec on the AX200 over WiFi 6 on OpenBSD and 500Mbits/sec on Linux. The laptop is acting as the server and my desktop is the client. The following is the output of iperf from my desktop. OpenBSD is slower but still plenty fast for my use case (will saturate my internet connection anyway).

# OpenBSD
❯ iperf -c 192.168.0.12
------------------------------------------------------------
Client connecting to 192.168.0.12, TCP port 5001
TCP window size: 16.0 KByte (default)
------------------------------------------------------------
[  1] local 192.168.0.122 port 46382 connected with 192.168.0.12 port 5001 (icwnd/mss/irtt=14/1448/6241)
[ ID] Interval       Transfer     Bandwidth
[  1] 0.0000-10.1125 sec   408 MBytes   338 Mbits/sec

# Linux
❯ iperf -c 192.168.0.12
------------------------------------------------------------
Client connecting to 192.168.0.12, TCP port 5001
TCP window size: 16.0 KByte (default)
------------------------------------------------------------
[  1] local 192.168.0.122 port 56462 connected with 192.168.0.12 port 5001 (icwnd/mss/irtt=14/1448/58969)
[ ID] Interval       Transfer     Bandwidth
[  1] 0.0000-10.0519 sec   642 MBytes   535 Mbits/sec

Framework 13 Hardware

I love it! Many, many useful features are handled by hardware instead of some driver in the OS. Battery charge limiting, keyboar backlight, microphone and webcam kill switches. All in hardware. Build quality is solid. 4:3 solves my issue with 13inch laptops not having enough screen real estate.

In the past people complains about the display be flimsy. I can totally see that. But it's more then sturdy enough for normal use. Disassembling it is truly easy. The laptop comes with a screw driver and everything can be taken apart with just that.

I think I found the laptop company I'll be sticking with for a long while.

Author's profile. Photo taken in VRChat by my friend Tast+
Martin Chang
Systems software, HPC, GPGPU and AI. I mostly write stupid C++ code. Sometimes does AI research. Chronic VRChat addict

I run TLGS, a major search engine on Gemini. Used by Buran by default.


  • marty1885 \at protonmail.com
  • Matrix: @clehaxze:matrix.clehaxze.tw
  • Jami: a72b62ac04a958ca57739247aa1ed4fe0d11d2df