Custom Fedora OCI images for Framework laptops

Hey folks,

I wanted to share that I have been running my own custom Kinoite image for the Framework 13 AMD. It’s still a work in progress, but it is at a pretty decent state thus far. This is not meant to be an official distribution per se, but thought I would share what I did with the group in case it’s helpful. It is based off of the awesome work that the universal blue team has done creating the Kinoite-main image. Huge thanks to Jorge for this project.

Copied from my repo:

Changes to Kinoite-Main Image

  • Add PCIE and USB power saving configurations to /etc/udev/rules.d/
  • Add wifi power saving configuration to /etc/sysctl.d/
  • Add wifi power saving configuration for intel wifi to /etc/udev/modprobe.d/
  • Add AMD s2idle and psr debugging scripts to /usr/share/ublue-os/scripts
  • Add udev rules to change AMD EPP Hints on AC Power / Battery
  • Add sysctl.d rules for vm.dirty_writeback_centisecs and kernel.nmi_watchdog parameters for power saving
  • Make scripts / kernel parameters available via just script
    • just fw13-amd to update default kernel parameters (cpufreq.default_governor=powersave, pcie_aspm.policy=powersupersave)
    • just check_sleep to run amd_s2idle.py debug script
    • just check_psr to run psr.py debug script
    • just epp_power to set AMD EPP Hints to Power Saving
    • just epp_balance_power to set AMD EPP Hints to Balance Power
    • just epp_balance_performance to set AMD EPP Hints to Balance Performance
    • just epp_performance to set AMD EPP Hints to Performance
  • Install powertop, kernel-tools, fprintd, fwupd, tailscale, 1password and other apps by default
  • Install AMDGPU_TOP by default
  • Make some commonly installed Flatpaks available to install on first boot, these are completely optional

After first install be sure to run just fw13-amd to set the kernel parameters. If you want the ideal power saving mode run just epp_power to set the power saving mode. If you want to switch back to balanced use just epp_balance_power. This is needed because power-profiles-daemon does not set these properly which significantly contributes to poor battery life on linux by default.

I didn’t run any of the other kernel params (disable scatter gather / iommu, etc) since I didn’t see a need for it myself yet.

Running this image on power saving mode, I can get ~3.5-4 watts at idle, ~6.3 watts during offline video playback. And ~5-8 watts web browsing. The main goals of the image were to create optimized defaults. A lot of the power saving tweaks are what tlp would have done, and are also taken from Archwiki.

The Github repo has the instructions to switch to this image. You can always switch back or to another, which is the beauty of ostree systems. Happy to accept any tweaks or best practices I have missed as I am still new to this. Obviously it’s also forkable / modifiable if you want to use it as a reference for your own image.

7 Likes