It’s taken me quite a while and a lot of wipe-and-reinstall cycles to finally get my Framework 13 AMD system into a state I’m reasonably happy with so I thought I’d share my notes and experiences.
I’ve installed a whole bunch of Debian-derived distros to work out what was going wrong. What I finally worked out is that “officially supported” Ubuntu isn’t really any improvement over distros that don’t for you to use the godawful Snap garbage, so I’m now on PopOS. But this would work just as fine with Linux Mint and probably others.
All those reinstalls consumed a LOT of bandwidth from my ever suffering ISP. I redownloaded all the active games I’m playing from Steam each time, played with it for a few days, then ran into another problem and had to start again from scratch. I’ve consumed 6TB of data this month and still only halfway through the billing cycle.
My requirements:
- 4K monitors coupled with the internal screen so I need HiDPI support, thus basically Wayland
- Work flawlessly with my CalDigit TS4 dock
- Steam to run (Windows) games reasonably well
- Suspend/Wake working perfectly
- Whole drive encryption
Hibernate doesn’t work anywhere OOTB
What I discovered is that Hibernate just doesn’t seem to work on any of the distros by default. Hibernate is where your computer dumps RAM contents to disk and goes into a very low power mode. By default the hardware enables suspend-then-hibernate, meaning it just goes to low power mode then at a set time (180 minutes by default) dumps to disk. But none of the distros set up a swap partition big enough to hold modern amounts of RAM, so the hibernate just fails.
Symptom of this is that the device suspends just fine until you leave it overnight, then you wake up with the system either booted to the HD encryption password or just off–it varied even for the same distro.
The ONLY way to resolve this I’ve found that works is to set up a swap that’s as big as your RAM manually. To do this you need to boot into a recovery mode, or keep the live USB image running post install and amend it. You can’t amend encrypted partitions when they’re mounted and in use.
I got this working finally with a combination of these PopOS instructions and these instructions from the always-awesome Arch wiki.
Basically, you install from scratch with encryption to get everything set up, boot into recovery or keep the live session going, decrypt the LVM partitions, delete the puny swap partition, shrink the main partition, create a bigger swap partition and off you go.
Special kernel?
The Ubuntu instructions call for installing an OEM kernel but I think these instructions are outdated from when the laptop first launched. I have a feeling that the mainstream kernels shipping now are okay for AMD. Would love clarification on this and others’ experiences.
Kernel params
It took me far too long to work out that you need special kernel params for the AMD graphics stuff or you have huge problems. To add these in PopOS:
sudo kernelstub -a amdgpu.graphics_sg=0
sudo kernelstub -a amdgpu.sg_display=0
Fingerprint reader
Way easier than I expected, in the end at least. That is, once you’ve upgraded the firmware (described elsewhere on the Framework site).
Install the PAM module:
sudo apt install libpam-fprintd
Enroll your finger:
fprintd-enroll
Set up fingerprint login method:
sudo pam-auth-update
Works a treat!
Wayland
Final piece is to set up Wayland. PopOS uses gdm
for the login screen by default.
Edit /etc/gdm3/custom.conf' and set 'WaylandEnable=true
. Then:
systemctl restart gdm.service
You’ll be kicked out to the login screen. Click the little cog icon to change your windowing session to the Wayland variant.
This has had mixed success. Wayland is still very new. But mixing DPIs on screens is a non-starter in X so I have to stick with Wayland really.
Workspace navigation
Final annoyance has nothing to do with Framework and everything to do with the decisions the Gnome team keep making to remove features from the GUI. If you have more than 5 workspaces, you can’t assign keyboard shortcuts to them for switch-to-workspace or move-window-to-workspace. You have to do it manually. I assign one to each of my number keys so you need to do something like this to get keys for them:
dconf write /org/gnome/mutter/dynamic-workspaces false
dconf write /org/gnome/desktop/wm/preferences/num-workspaces 10
dconf write /org/gnome/desktop/wm/keybindings/switch-to-workspace-1 "['<Alt>1']"
dconf write /org/gnome/desktop/wm/keybindings/switch-to-workspace-2 "['<Alt>2']"
dconf write /org/gnome/desktop/wm/keybindings/switch-to-workspace-3 "['<Alt>3']"
dconf write /org/gnome/desktop/wm/keybindings/switch-to-workspace-4 "['<Alt>4']"
dconf write /org/gnome/desktop/wm/keybindings/switch-to-workspace-5 "['<Alt>5']"
dconf write /org/gnome/desktop/wm/keybindings/switch-to-workspace-6 "['<Alt>6']"
dconf write /org/gnome/desktop/wm/keybindings/switch-to-workspace-7 "['<Alt>7']"
dconf write /org/gnome/desktop/wm/keybindings/switch-to-workspace-8 "['<Alt>8']"
dconf write /org/gnome/desktop/wm/keybindings/switch-to-workspace-9 "['<Alt>9']"
dconf write /org/gnome/desktop/wm/keybindings/switch-to-workspace-10 "['<Alt>0']"
dconf write /org/gnome/desktop/wm/keybindings/move-to-workspace-1 "['<Alt><Shift>1']"
dconf write /org/gnome/desktop/wm/keybindings/move-to-workspace-2 "['<Alt><Shift>2']"
dconf write /org/gnome/desktop/wm/keybindings/move-to-workspace-3 "['<Alt><Shift>3']"
dconf write /org/gnome/desktop/wm/keybindings/move-to-workspace-4 "['<Alt><Shift>4']"
dconf write /org/gnome/desktop/wm/keybindings/move-to-workspace-5 "['<Alt><Shift>5']"
dconf write /org/gnome/desktop/wm/keybindings/move-to-workspace-6 "['<Alt><Shift>6']"
dconf write /org/gnome/desktop/wm/keybindings/move-to-workspace-7 "['<Alt><Shift>7']"
dconf write /org/gnome/desktop/wm/keybindings/move-to-workspace-8 "['<Alt><Shift>8']"
dconf write /org/gnome/desktop/wm/keybindings/move-to-workspace-9 "['<Alt><Shift>9']"
dconf write /org/gnome/desktop/wm/keybindings/move-to-workspace-10 "['<Alt><Shift>0']"
Summary
I think I’ve covered all the annoyances. I started documenting the tricks because I’d forget things on reinstall cycles once I’d done it a few times. Ask questions if there’s anything I haven’t detailed!