I found a workaround using fw-fanctl.
By changing the temperature reading module to use the k10temp AMD sensor, I’ve made the laptop usable.
The modified module is src/fw_fanctrl/hardwareController/EctoolHardwareController.py
Function:
def get_temperature(self):
# Priority: k10temp -> EC sensors -> fallback
# k10temp
try:
with open('/sys/class/hwmon/hwmon8/temp1_input', 'r') as f:
temp_millidegrees = int(f.read().strip())
temp_celsius = temp_millidegrees / 1000.0
return float(round(temp_celsius, 2))
except:
pass
# EC Sensors
if self.noBatterySensorMode:
raw_out = "".join(
[
subprocess.run(
"ectool temps " + x,
stdout=subprocess.PIPE,
shell=True,
text=True,
).stdout
for x in self.nonBatterySensors
]
)
else:
raw_out = subprocess.run(
"ectool temps all",
stdout=subprocess.PIPE,
shell=True,
text=True,
).stdout
raw_temps = re.findall(r"\(= (\d+) C\)", raw_out)
temps = sorted([x for x in [int(x) for x in raw_temps] if x > 0], reverse=True)
# safety fallback
if len(temps) == 0:
return 50
return float(round(temps[0], 2))