Framwork 16 - AMD dGPU fan at 0 RPM on Linux

I’m on latest LTS Neon (24.04) on my AMD Framework 16, and no matter what I do I can’t get the AMD dGPU fan to run. I got to run yesterday for 10 seconds after “hacking” the installer for the amdgpu by bypassing checking the OS version, but that caused to many other issues.

I’ve tried just about every fan control solution (LACT, fanctonrol-fw, ectool, etc etc) and the fan just does not turn on.

Output off the sensors command:

k10temp-pci-00c3
Adapter: PCI adapter
Tctl:         +44.5°C  

amdgpu-pci-c500
Adapter: PCI adapter
vddgfx:      877.00 mV 
vddnb:       658.00 mV 
edge:         +41.0°C  
PPT:           9.18 W  (avg =   8.17 W)

ucsi_source_psy_USBC000:002-isa-0000
Adapter: ISA adapter
in0:           0.00 V  (min =  +0.00 V, max =  +0.00 V)
curr1:       680.00 mA (max =  +0.00 A)

mt7921_phy0-pci-0500
Adapter: PCI adapter
temp1:        +44.0°C  

nvme-pci-0400
Adapter: PCI adapter
Composite:    +34.9°C  (low  = -40.1°C, high = +83.8°C)
                       (crit = +87.8°C)
Sensor 1:     +46.9°C  (low  = -273.1°C, high = +65261.8°C)
Sensor 2:     +34.9°C  (low  = -273.1°C, high = +65261.8°C)

BAT1-acpi-0
Adapter: ACPI interface
in0:          17.60 V  
curr1:         0.00 A  

ucsi_source_psy_USBC000:004-isa-0000
Adapter: ISA adapter
in0:          20.00 V  (min =  +5.00 V, max =  +0.40 V)
curr1:         5.00 A  (max =  +3.56 A)

ucsi_source_psy_USBC000:003-isa-0000
Adapter: ISA adapter
in0:           5.00 V  (min =  +5.00 V, max =  +5.00 V)
curr1:         0.00 A  (max =  +1.50 A)

amdgpu-pci-0300
Adapter: PCI adapter
vddgfx:      828.00 mV 
fan1:           0 RPM  (min =    0 RPM, max = 4900 RPM)
edge:         +34.0°C  (crit = +100.0°C, hyst = -273.1°C)
                       (emerg = +105.0°C)
junction:     +42.0°C  (crit = +100.0°C, hyst = -273.1°C)
                       (emerg = +105.0°C)
mem:          +39.0°C  (crit = +105.0°C, hyst = -273.1°C)
                       (emerg = +110.0°C)
PPT:          37.00 W  (cap = 100.00 W)

ucsi_source_psy_USBC000:001-isa-0000
Adapter: ISA adapter
in0:           0.00 V  (min =  +0.00 V, max =  +0.00 V)
curr1:         0.00 A  (max =  +0.00 A)

nvme-pci-0600
Adapter: PCI adapter
Composite:    +36.9°C  (low  =  -5.2°C, high = +89.8°C)
                       (crit = +93.8°C)

acpitz-acpi-0
Adapter: ACPI interface
temp1:        +40.8°C  
temp2:        +41.8°C  
temp3:        +43.8°C  
temp4:        +43.8°C  

Screenshot of LACT:


When I boot into the Windows 11 OS the fan works…but opposite. When AMD software switches to dGPU the fans are essentially at 100% the entire time.

Update:
After installing oem kernel, LACT now shows fan controls. However when I try to set a static fan speed I get the following error message:
ould not set fan control

Caused by:
0: Got error from daemon, end of client boundary
1: Failed to edit GPU config
2: Could not apply settings
3: Failed to set static fan control
4: could not set fan speed
5: io error: Invalid argument (os error 22)

I don’t remember having this issue on the previous 2 LTS releases of Neon or Ubuntu.

Update 2:
The issue was PEBCAK,… I was using my 65W charger. After plugging in the 125W charger, the fans are working now. I still can’t set the speed or curve for it.

The fans on the Framework 16 as far as I know, isn’t able to have a custom fan curve with fan control. However there is a systemd service called fw-fanctl that is allow you to choose between some preset profiles. You can theoretically change the profile by editing config.json of the service too but I haven’t tested it personally.

Also I should mention this, the framework doesn’t have a GPU fan per se, it just has 2 fans that cool both the CPU and GPU.

Hope this is helpful :slight_smile:

Thanks, the dGPU has it’s own fans. fw-fantctl didn’t work for me. I believe fw-fanctl, LACT, CoreCtrl essentially work the same under the hood. Setting fans to static or creating a custom fan curve just don’t work. Same thing on Windows, not sure why they aren’t.