Framework 13 AMD Setup with FreeBSD
The FreeBSD Foundation exists to support the FreeBSD community and the FreeBSD project. Some of its projects are aimed at improving the experience of FreeBSD on specific hardware. There is an ongoing, and expanding, laptop experience project. To expand that project further, the foundation has provided Framework laptops to a bunch of developers working on the FreeBSD laptop and desktop experience. I’m one of those developers, and here are some initial notes on the process. The notes assume experience with FreeBSD.
Some disclaimers up front: the FreeBSD foundation is a lot like KDE e.V., which supports the KDE community and project. I wear a board hat for KDE e.V., but on the FreeBSD side I’m “just a ports developer”. Of course, the ports I try to work on are the KDE ones, so there’s a happy synergy here.
An anonymous donor sponsored these machines. While I am part of the FreeBSD donations@ team, I was not involved in the overall decision-making around this donation.
The machine I got is a Framework 13 with an AMD 7000 series CPU. That’s not the very-very latest one, which has a Ryzen 300 series in it, but it is at least 3 CPU generations newer than any other machine I have. For me in particular of interest is that it has the same GPU series, AMD Polaris 12, as my FreeBSD 14-STABLE desktop machine, so I can share experimentation with graphics drivers between them.
I picked the 2.8K display with rounded corners, because that’s potentially an interesting edge-case for the KDE Plasma 6 desktop; if there’s any funny-stuff needed for those corners, then we need to know about it.
Let’s Get Physical
Although it’s completely irrelevant for the long-term use of the laptop, I’ve got to hand it to the Framework folks: the packaging is really nice. Recyclable cardboard, well-laid-out, understandable boxes. I don’t often get a “huh, that’s clever” reaction when unpacking consumer electronics.
There’s a screwdriver included, cunningly hidden beneath the do-it-yourself-installation memory modules. That’s clever.
When it comes to putting the machine together, the installation guide with videos is both comprehensive and easy-to-follow. “Put DDR5 SO-DIMM modules in corresponding sockets” and “insert NVMe into socket” is straightforward, I do that all the time when (re)building desktop machines.
The bezel, on the other hand …
The bezel around the screen is just a thin bit of plastic. I got a red one, because FreeBSD (there is no KDE Blue option). It is essential to place it correctly, with all the screen-cables nicely aligned. I did not, and just clicked the bezel in place, pushed down on it and then closed the laptop, “per the instructions”. Except the bezel stuck out about 2mm, and on re-opening the laptop, it just about tore the bezel in half.
After 20 tricky minutes I could get the laptop open again and removed the bezel, repaired it, and tried again. I don’t really have a suggestion to improve the bezel installation except “try very carefully to close the laptop a bit, re-open, close a bit further, re-open, …” until it’s clear that the lid closes properly. Take some time to (re)route the cables to the screen so that they are as flat as possible.
Accessories
The little modules for the Framework laptop are pretty nifty. I’m already thinking I should have gotten an additional USB-C one. I selected one unusual module, RJ-45 wired ethernet, because my experience with FreeBSD and WiFi is not a good one. However, that’s what this whole laptop project is for. The FreeBSD Foundation has already funded work on laptop WiFi, so it’s probably over-cautiousness on my part.
With all the physical bits in place, the big question…
Will it run Doom?

Of course. Don’t be silly.
Will it run FreeBSD?
Yes, but that takes a little bit of effort. Download a FreeBSD 14.2 image and write it to a USB stick on some other machine. Leave it on your desk for now.
Boot the Framework laptop for the first time and let it do memory training and whatnot. Do not connect any devices and let it complain that there’s nothing to boot.
Reboot, still with nothing attached, and spam F2 during boot. You have to do this to get to the EFI shell / system configuration before it tries to boot anything. Disable secure boot. Linuxes have a signed GRUB shim nowadays, or other bits and pieces so they work with secure boot. FreeBSD 14.2 does not, yet.
Now insert the USB stick, reboot, and go through the installer process. It’s a text installer (still, as I still haven’t built FreeBSD support in Calamares) and gets you to a working system in about 5 minutes. Having the wired ethernet helps avoid any trouble here.
Reboot after installation and you can get a text console. All that technology for a late-80s user experience.
Will it run X11?
Yes, but the 14.2-RELEASE Errata point out that DRM kernel modules do not work if you grab the pre-built ones. This was true on March 12th 2025, so:
- Run
pkg
to install the package manager (initially it is a stub) - Run
pkg install git
to install git (this pulls in a surprising amount of other stuff) - Get the system sources (with git)
- Rebuild the world and install it
- Get the ports tree (with git)
- Build
graphis/drm-61-kmod
from ports (justmake ; make install
, and the port itself is a real quick build) - Build
graphics/gpu-firmware-amd-kmod
from ports
After that, enable the amdgpu
module in rc.conf
, or load it by hand.
Any old X11 stuff will do, but I suggest installing x11/kde
and x11/sddm
.
Will it run KDE Plasma 6 Wayland?
Hahaha. No. But yes.
KDE Plasma 6 on Wayland in general works. But on this specific machine, with this specific grapics card, Plasma starts, all the processes of a KDE Plasma desktop are running, and the screen displays a single white text-cursor in the upper-left corner.
It’s not this-specific-machine, either, since I have a desktop with Intel CPU and an AMD RX550 video card that behaves the same.
Last time I dug into KWin internals in an attempt to figure this out I ended up with “some part of the OpenGL stack is lying” and then gave up. Now with a fresh laptop that just cries out for a modern desktop, I’m going to try again.