Lenovo Yoga Slim 7 Pro running Fedora 34 (with WiFi)


I’ve been on the hunt for a $1000 Linux UltraBook for personal use. I finally decided on a Lenovo Yoga Slim 7 Pro, with a Ryzen 7 5800 CPU and 16 GB RAM. I’ll leave the in-depth hardware review for others, but I’ll offer a nano-review: I’m happy with both build quality and specs. Best value for money I’ve seen in a while!

I’m less happy about the Realtek 8852 WiFi module not having built-in support in the 5.13 Linux kernel. Everything else worked out of the box with a fresh installation of Fedora 34 (my distro of choice).

Drivers for the Realtek 8852 module can be downloaded here, but the included Makefile doesn’t work with Fedora if you’re using secure boot. I’ll provide some quick notes below on how to install the drivers on Fedora 34.

You’ll still need to install a few packages, and get code on your computer. Try using your phone as a USB tethered modem. If you need to purchase additional hardware (USB network interface), consider just replacing the WiFi module at probably the same cost.

Step 1: Enrolling a MOK (Machine Owner Key)

If you are using secure boot, you will need to cryptographically sign the drivers. You’ll also need to enroll the keys used into the UEFI, so drivers signatures can be verified on boot. If you’re not using secure boot, you can skip this step.

  • mkdir -p ~/drivers/mok
  • cd ~/drivers/mok
  • Create file ~/drivers/mok/configuration_file.config with the following contents (changing O, CN and emailAddress fields if you like):
[ req ]
default_bits = 4096
distinguished_name = req_distinguished_name
prompt = no
string_mask = utf8only
x509_extensions = myexts

[ req_distinguished_name ]
O = Acme Inc.
CN = acme.inc
emailAddress = hi@acme.inc

[ myexts ]
basicConstraints=critical,CA:FALSE
keyUsage=digitalSignature
subjectKeyIdentifier=hash
authorityKeyIdentifier=keyid
  • openssl req -x509 -new -nodes -utf8 -sha256 -days 36500 -batch -config configuration_file.config -outform DER -out public_key.der -keyout private_key.priv
  • sudo mokutil --import public_key.der

mokutil will prompt you for a password. Enter a temporary password that will be used for the enrollment process, reboot, and follow the MOK enrollment guide that should appear (here’s where you’ll need to enter that password again). At this point, you’re done with step 1.

Step 2: Download, compile, sign & install drivers

  • sudo dnf install kernel-devel kernel-headers

  • cd ~/drivers

  • git clone https://github.com/lwfinger/rtw89.git

  • cd rtw89

  • make (this might take a bit of time)

Note: The next two steps cryptographically sign the drivers. You can skip them if you don’t use secure boot (and didn’t enroll a MOK earlier).

  • /usr/src/kernels/$(uname -r)/scripts/sign-file sha256 ~/drivers/mok/private_key.priv ~/drivers/mok/public_key.der ~/drivers/rtw89/rtw89core.ko

  • /usr/src/kernels/$(uname -r)/scripts/sign-file sha256 ~/drivers/mok/private_key.priv ~/drivers/mok/public_key.der ~/avitus/drivers/rtw89/rtw89pci.ko

And finally, regardless of whether you use secure boot or not: - sudo make install - sudo modprobe rtw89pci (or just reboot, and the driver should load automatically).

At this point you’re done, and the WiFi module should work. Verify the module was loaded with lsmod | grep rtw89.

Note that you’ll have to recompile every time you upgrade the kernel. You can automate this using DKMS, but that’s a topic for another time. Personally, I’ll just wait for mainline kernel support.

A note on resolution & scaling

I got the version with the matte 14-inch 2240×1400 display. Display scaling in Gnome/Wayland is limited to integer values, which is unfortunate, as 1x is tiny and 2x way too large. Scaling text only to fractional values is possible, and in the end, the UI looks great using: gsettings set org.gnome.desktop.interface text-scaling-factor 1.5 with a display scale of 1x.

linux