Earlier this month, I shared my first impressions of the Framework Laptop.

As a reminder, Framework set out to deliver a laptop that encourages home servicing and incremental upgrades. I ordered the “DIY Edition”, with the following specification:

  • Framework Laptop DIY Edition
  • Intel i7-1185G7 4.80GHz (4C/8T)
  • 64GB Crucial DDR4 PC4-25600C22 3200MHz RAM
  • 1TB Western Digital Black SN850 NVMe (7GB/s Read)
  • Intel Iris Xe Graphics
  • 13.5-inch LCD Display (2256x1504 @ 60Hz)
  • 2x USB4 (USB-C), 1x USB 3.2 G2 (USB-A), 1x HDMI 2.0b

The assembly process was incredibly straightforward, supported by smart design decisions from Framework, specifically, well-organised internals, labels and instructions for each serviceable part, as well as the inclusion of a handy T5/PH0 double-sided bit screwdriver.

The build quality of the laptop is very good, but not what I would consider premium. The Framework Laptop does not have the same dense, refined feel as an Apple MacBook or Dell XPS. Instead, I would compare it to a mid-range Dell, with a focus on practical usage vs. aesthetics.

For example, the chassis is made from 50% post-consumer recycled (PCR) aluminium, but it is not overly rigid, resulting in some screen flex and wobble when typing. The same can be said for the trackpad, which lacks the “precision feel” of a Dell XPS or Razer Blade.

With that said, these are minor complaints that do not impede the daily usage of the laptop.

Since my purchase and following their promise, Framework has released newly upgraded parts and open-source accessories.

The most significant is the Intel 12th Generation mainboard, which remains compatible with the original chassis.

There have also been some interesting community modifications, using the published schematics to 3D print accessories, such as a standalone case for the mainboard.

In short, the hardware continues to impress and it is great to see Framework deliver new updates/parts, helping to build trust in their promise to enable home servicing and incremental upgrades.

Framework and Fedora

Complimenting the “open” nature of the hardware, I felt it was only right to install an open-source operating system.

The Framework Laptop is fully Windows 10/11 compatible and the likely option for most users. However, as a Linux fanatic, there was only one choice for me!

Initially, I planned to install Pop!_OS 22.04, which includes Linux Kernel 5.16.19, delivering native compatibility for the Framework Laptop.

Frustratingly, I encountered an issue with the WiFi driver. In theory, this can be fixed by installing the backport Intel WiFi driver package using the command below.

sudo apt install backport-iwlwifi-dkms


However, the included Intel AX210 vPro WiFi simply refused to connect. I tried multiple workaround options (following guides on Reddit), but no luck.

Although I have grown to love Pop!_OS, I decided to switch to my old faithful, Fedora. The timing was good, as Fedora 36 had just been released and I was eager to check it out.

I am pleased to report the installation of Fedora 36 was perfect, with full drive encryption and every driver, including WiFi and the fingerprint reader, detected natively.

Framework and Fedora

This is a great example of how good Linux can be, with no need to install/configure third-party proprietary drivers, etc.

I suspect my issue with Pop!_OS was simply a bug, which I am confident will be resolved soon.

Once up and running, I installed my default software. Thanks to the growing popularity of immutable operating systems such as Silverblue and the recent launch of the Steam Deck, the majority of my software is available as a flatpak.

Therefore, the installation was as simple as running the following commands.

flatpak remote-add --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo

flatpak install flathub org.onlyoffice.desktopeditors
flatpak install flathub com.simplenote.Simplenote
flatpak install flathub com.visualstudio.code
flatpak install flathub org.gimp.GIMP
flatpak install flathub org.kde.krita
flatpak install flathub org.flozz.yoga-image-optimizer
flatpak install flathub com.obsproject.Studio
flatpak install flathub com.getpostman.Postman
flatpak install flathub org.videolan.VLC
flatpak install flathub fr.handbrake.ghb
flatpak install flathub org.cryptomator.Cryptomator
flatpak install flathub org.godotengine.Godot
flatpak install flathub com.prusa3d.PrusaSlicer
flatpak install flathub com.valvesoftware.Steam
flatpak install flathub com.heroicgameslauncher.hgl
flatpak install flathub com.discordapp.Discord
flatpak install flathub us.zoom.Zoom
flatpak install flathub com.microsoft.Teams


Outside of flatpak, I installed Docker Engine and Docker Desktop. Fedora includes Podman, which is an excellent container engine.

However, I am most familiar with Docker and haven’t invested the time (yet) to migrate my workloads.

Getting Docker up and running is a little more involved, achieved via the following commands.

sudo dnf -y install dnf-plugins-core

sudo dnf config-manager \
    --add-repo \
    https://download.docker.com/linux/fedora/docker-ce.repo

sudo dnf install docker-ce docker-ce-cli containerd.io docker-compose-plugin

sudo systemctl start docker


Docker Desktop is available as an “rpm” download, which I installed using the following command.

sudo dnf install ./docker-desktop-<version>-<arch>.rpm


The login for Docker Desktop relies on the “pass” password manager to store credentials as gpg2-encrypted files.

Therefore, before authenticating via Docker Desktop, “pass” must be initialised.

gpg --generate-key

pass init <key>


1Password, is my prefered password manager. It is available as an rpm package, installed via the following commands.

sudo rpm --import https://downloads.1password.com/linux/keys/1password.asc

sudo sh -c 'echo -e "[1password]\nname=1Password Stable Channel\nbaseurl=https://downloads.1password.com/linux/rpm/stable/\$basearch\nenabled=1\ngpgcheck=1\nrepo_gpgcheck=1\ngpgkey=\"https://downloads.1password.com/linux/keys/1password.asc\"" > /etc/yum.repos.d/1password.repo'

sudo dnf install 1password


Finally, I install a few “tweaks” to ensure reliable media playback and font compatibility.

Starting with RPM Fusion, which is a repository of add-on packages for Fedora. It includes some useful packages that are not directly included with Fedora.

The following command enables the “free” and “non-free” repositories.

sudo dnf install https://mirrors.rpmfusion.org/free/fedora/rpmfusion-free-release-$(rpm -E %fedora).noarch.rpm https://mirrors.rpmfusion.org/nonfree/fedora/rpmfusion-nonfree-release-$(rpm -E %fedora).noarch.rpm


With RPM Fusion enabled, the following commands install common multimedia libraries.

sudo dnf install gstreamer1-plugins-{bad-\*,good-\*,base} gstreamer1-plugin-openh264 gstreamer1-libav --exclude=gstreamer1-plugins-bad-free-devel

sudo dnf install lame\* --exclude=lame-devel

sudo dnf group upgrade --with-optional Multimedia


Next is fonts, where I install the standard Microsoft fonts for improved Microsoft Office compatibility.

sudo dnf install mscore-fonts-all -y

sudo dnf install curl cabextract xorg-x11-font-utils fontconfig

sudo rpm -i https://downloads.sourceforge.net/project/mscorefonts2/rpms/msttcore-fonts-installer-2.6-1.noarch.rpm


Throughout the setup process, I noticed the sleep/suspend state was not ideal, essentially resulting in a high battery drain whilst the laptop lid was closed.

By default, Fedora does not support hibernate (although it can be configured). Therefore, the default sleep state is “s2idle”, which is not well optimised. This can be confirmed using the following command.

cat /sys/power/mem_sleep


Although not perfect, I switched the sleep state to “deep” by modifying the file ‘/etc/default/grub’, inserting the parameter ‘mem_sleep_default=deep’ at the end of the line containing the ‘GRUB_CMDLINE_LINUX’ string.

The final string should read:

GRUB_CMDLINE_LINUX="mem_sleep_default=deep"


Once added, I rebuilt the grub file using the following command (specific to UEFI).

sudo grub2-mkconfig -o /boot/efi/EFI/fedora/grub.cfg


Upon reboot, the sleep state should now default to “deep”, which in my testing significantly reduces the battery drain with the lid closed, with the only caveat being a slightly slower resume time (approximately 15 seconds).

That’s it! My Framework Laptop is now fully set up, running Fedora 36.

Overall, the process was fairly painless, primarily thanks to the “Linux friendly” hardware choices and the modern Linux Kernel (Linux Kernel 5.17) included as part of Fedora 36.

Over the coming weeks, I plan to put the Framework Laptop through its paces. Therefore, be sure to stay tuned for updates regarding performance, reliability and usability.