[EN/DE] Framework 16: Visual freezes on Cinnamon/X11 (Idle & Load)

Thanks for the heads-up regarding the compatibility list! You make a fair point that AMD systems can be picky about RAM. However, since this specific kit served me perfectly for 18 months of heavy use, I am inclined to see this as a case of hardware fatigue rather than a fundamental incompatibility.

My goal here isn’t to debate the official support list, but to share a working solution for those who might be facing similar unexpected stability issues. It seems that keeping the RAM within its manufacturer-defined ‘high’ thermal limit of 55°C restores the stability I had for the first year and a half, which is a great result for now.


Vielen Dank für den Hinweis bezüglich der Kompatibilitätsliste! Das ist ein berechtigter Punkt, da AMD-Systeme beim Arbeitsspeicher sehr eigen sein können. Da dieses Kit jedoch 18 Monate lang unter intensiver Nutzung perfekt funktionierte, sehe ich die Ursache eher in einer schleichenden Materialermüdung als in einer grundsätzlichen Inkompatibilität.

Mir geht es hier weniger um die Diskussion der offiziellen Support-Liste, sondern vielmehr darum, eine funktionierende Lösung für alle zu teilen, die vor ähnlichen unerwarteten Stabilitätsproblemen stehen. Es zeigt sich, dass die Einhaltung des vom Hersteller definierten ‘High’-Limits von 55°C die Stabilität der ersten anderthalb Jahre wiederherstellt. Das ist für mich im Moment ein sehr zufriedenstellendes Ergebnis.

I actually considered a physical heatsink! However, the clearance inside the Framework 16 is extremely tight, and most DDR5 heatsinks are too thick to fit under the midframe. That’s why I chose this ‘active cooling’ approach via the system fans. By forcing the airflow based on the RAM’s internal SPD sensor, I’m effectively using the chassis’s thermal design as a heatsink without needing extra space.


Über einen physischen Kühlkörper habe ich tatsächlich nachgedacht! Allerdings ist der Platz im Framework 16 extrem begrenzt, und die meisten DDR5-Kühlkörper sind zu dick, um unter den Midframe zu passen. Deshalb habe ich mich für diesen Weg der ‘aktiven Kühlung’ über die Systemlüfter entschieden. Indem ich den Luftstrom basierend auf dem internen SPD-Sensor des RAMs steuere, nutze ich effektiv das thermische Design des Gehäuses als Kühlkörper, ohne zusätzlichen Platz zu benötigen.

[Solved] Framework 16: Visual freezes on KDE/Wayland (Idle & Load)

Hi everyone,

I want to share the final update regarding the visual freezes on the Framework 16 running KDE (Wayland) under Debian 13.

Contrary to initial assumptions, the system RAM was not the cause of these freezes. Stability was achieved by adjusting the fan-dependent thermal management. Additionally, I am running a custom kernel 7.0.6 with a specific patch applied to the dGPU (0x7480) that enforces a minimum graphics frequency and corrects the APU flag. The AMD graphics firmware is sourced directly from the official linux-firmware repository.

System Configuration

  • OS / Desktop: Debian 13 (Trixie) | KDE (Wayland)
  • Kernel Base: v7.0.6 (Sources from kernel.org)
  • Graphics Firmware: AMD firmware via https://kernel.googlesource.com/pub/scm/linux/kernel/git/firmware/linux-firmware
    • Deployed and loaded via:
      git clone https://kernel.googlesource.com/pub/scm/linux/kernel/git/firmware/linux-firmware
      sudo cp -v linux-firmware/amdgpu/* /lib/firmware/amdgpu/
      sudo update-initramfs -u -k all
      
  • Graphics Hardware:
    • iGPU: AMD/ATI Phoenix1 [1002:15bf] (Driver: amdgpu)
    • dGPU: AMD/ATI Navi 33 [Radeon RX 7700S] [1002:7480] (Driver: amdgpu)
  • Power Management: power-profiles-daemon.service & upower.service
  • Active GRUB Boot Options (/proc/cmdline):
    amd_pstate=active iommu=pt amdgpu.hdcp=1 amdgpu.dcdebugmask=0x110 amdgpu.gpu_recovery=1 amdgpu.sg_display=0 pcie_port_pm=off amdgpu.psr=0 idle=nomwait amdgpu.ppfeaturemask=0xfffd7fff amdgpu.runpm=0
    

The Applied Patch (kernel/7.0.6_dgpu_stable_min.patch)

--- drivers/gpu/drm/amd/pm/swsmu/smu13/smu_v13_0_7_ppt.c_orig	2026-05-11 08:21:59.000000000 +0200
+++ drivers/gpu/drm/amd/pm/swsmu/smu13/smu_v13_0_7_ppt.c	2026-05-14 05:19:18.668076817 +0200
@@ -473,6 +473,10 @@
        struct smu_table_context *smu_table = &smu->smu_table;
        struct amdgpu_device *adev = smu->adev;
        int ret = 0;
+   if (adev->pdev->device == 0x7480) {
+       adev->flags &= ~AMD_IS_APU;
+       smu->gfx_actual_hard_min_freq = 800;
+   }
 
        /*
         * With SCPM enabled, the pptable used will be signed. It cannot

Hardware Limits & Automation (cpu-limit-90.service)

To control the temperatures and force proper GPU power management, ryzenadj is used to limit the CPU temperature to 90°C. Additionally, both GPUs are explicitly set to auto level. Thanks to the custom kernel patch, the iGPU remains safely locked at a minimum of 800 MHz while allowing standard energy management policies.

1. Create the systemd service file

Save the following configuration into /etc/systemd/system/cpu-limit-90.service:

[Unit]
Description=Set CPU Temperature Limit to 90C
# Wait until the system is fully up
After=multi-user.target
# If power-profiles-daemon is running, wait for it
After=power-profiles-daemon.service

[Service]
Type=exec
ExecStart=/usr/local/bin/ryzenadj --tctl-temp=90

# Set both GPUs to 'auto'
# The iGPU will stays at 800 MHz minimum
ExecStartPost=/bin/sh -c 'echo auto > /sys/class/drm/card0/device/power_dpm_force_performance_level'
ExecStartPost=/bin/sh -c 'echo auto > /sys/class/drm/card1/device/power_dpm_force_performance_level'

RemainAfterExit=yes
CPUSchedulingPolicy=idle
IOSchedulingClass=idle

[Install]
WantedBy=graphical.target

2. Enable and start the daemon

Run these commands to reload the systemd manager configuration, enable the service to start automatically at boot, and trigger it immediately:

sudo systemctl daemon-reload
sudo systemctl enable cpu-limit-90.service
sudo systemctl start cpu-limit-90.service

Downloads / Resources

Since adjusting the fan control and switching to the custom patched kernel with up-to-date firmware, no further visual freezes have occurred.


[Gelöst] Framework 16: Visual freezes on KDE/Wayland (Idle & Load)

Hallo zusammen,

ich möchte hier den abschließenden Bericht zur Lösung der visuellen Freezes auf dem Framework 16 unter KDE (Wayland) und Debian 13 zur Verfügung stellen.

Der Arbeitsspeicher (RAM) war entgegen anfänglicher Annahmen nicht die Ursache für diese Freezes. Die Stabilisierung des Systems wurde ist stattdessen durch die Anpassung der lüfterabhängigen Temperatursteuerung erreicht. Zusätzlich verwende ich einen angepassten Kernel 7.0.6 mit einem spezifischen Patch für die dGPU (0x7480), der die minimale Grafikfrequenz festlegt und das APU-Flag korrigiert. Die AMD-Grafik-Firmware wird direkt aus dem offiziellen linux-firmware Repository bezogen.

Systemkonfiguration

  • OS / Desktop: Debian 13 (Trixie) | KDE (Wayland)
  • Kernel-Basis: v7.0.6 (Sourcen von kernel.org)
  • Grafik-Firmware: AMD-Firmware via https://kernel.googlesource.com/pub/scm/linux/kernel/git/firmware/linux-firmware
    • Bereitgestellt und geladen via:
      git clone https://kernel.googlesource.com/pub/scm/linux/kernel/git/firmware/linux-firmware
      sudo cp -v linux-firmware/amdgpu/* /lib/firmware/amdgpu/
      sudo update-initramfs -u -k all
      
  • Graphics Hardware:
    • iGPU: AMD/ATI Phoenix1 [1002:15bf] (Treiber: amdgpu)
    • dGPU: AMD/ATI Navi 33 [Radeon RX 7700S] [1002:7480] (Treiber: amdgpu)
  • Energiemanagement: power-profiles-daemon.service & upower.service
  • Aktive GRUB-Bootoptionen (/proc/cmdline):
    amd_pstate=active iommu=pt amdgpu.hdcp=1 amdgpu.dcdebugmask=0x110 amdgpu.gpu_recovery=1 amdgpu.sg_display=0 pcie_port_pm=off amdgpu.psr=0 idle=nomwait amdgpu.ppfeaturemask=0xfffd7fff amdgpu.runpm=0
    

Der angewendete Patch (kernel/7.0.6_dgpu_stable_min.patch)

--- drivers/gpu/drm/amd/pm/swsmu/smu13/smu_v13_0_7_ppt.c_orig	2026-05-11 08:21:59.000000000 +0200
+++ drivers/gpu/drm/amd/pm/swsmu/smu13/smu_v13_0_7_ppt.c	2026-05-14 05:19:18.668076817 +0200
@@ -473,6 +473,10 @@
        struct smu_table_context *smu_table = &smu->smu_table;
        struct amdgpu_device *adev = smu->adev;
        int ret = 0;
+   if (adev->pdev->device == 0x7480) {
+       adev->flags &= ~AMD_IS_APU;
+       smu->gfx_actual_hard_min_freq = 800;
+   }
 
        /*
         * With SCPM enabled, the pptable used will be signed. It cannot

Hardware-Limits & Automatisierung (cpu-limit-90.service)

Um die Temperaturen zu kontrollieren und das Energiemanagement der GPUs sauber zu regeln, wird ryzenadj genutzt, um das CPU-Temperaturlimit fest auf 90°C zu drosseln. Zusätzlich werden beide Grafikkarten auf auto gesetzt. Dank des Kernel-Patches verbleibt die iGPU trotzdem stabil bei ihren minimalen 800 MHz, erlaubt dem System aber das ganz normale Standard-Energiemanagement.

1. Systemd-Service-Datei anlegen

Speichere die folgende Konfiguration unter dem Pfad /etc/systemd/system/cpu-limit-90.service ab:

[Unit]
Description=Set CPU Temperature Limit to 90C
# Wir warten, bis das System wirklich bereit ist
After=multi-user.target
# Falls der power-profiles-daemon läuft, warten wir auf ihn
After=power-profiles-daemon.service

[Service]
Type=exec
ExecStart=/usr/local/bin/ryzenadj --tctl-temp=90

# Setzt beide GPUs auf 'auto'.  
# Dank des Kernel-Patches bleibt die iGPU trotzdem bei 800 MHz,
ExecStartPost=/bin/sh -c 'echo auto > /sys/class/drm/card0/device/power_dpm_force_performance_level'
ExecStartPost=/bin/sh -c 'echo auto > /sys/class/drm/card1/device/power_dpm_force_performance_level'

RemainAfterExit=yes
# Sorgt dafür, dass der Dienst andere wichtige Boot-Prozesse nicht stört
CPUSchedulingPolicy=idle
IOSchedulingClass=idle

[Install]
WantedBy=graphical.target

2. Daemon einbinden und aktivieren

Nutze die folgenden Befehle, um die systemd-Konfiguration neu zu laden, den automatischen Start des Dienstes beim Booten einzurichten und ihn direkt im laufenden Betrieb zu aktivieren:

sudo systemctl daemon-reload
sudo systemctl enable cpu-limit-90.service
sudo systemctl start cpu-limit-90.service

Downloads / Ressourcen

Seit den Anpassungen an der Lüftersteuerung und dem Einsatz des gepatchten Kernels inklusive der aktuellen Firmware traten keine visuellen Freezes mehr auf.