I haven’t tried the “fix” above in bullseye, but a stock setup with latest official bullseye live cd the fan didn’t work for me.
I wrapped my command in a systemd service to make sure its restated if it happens to die:
Description=Enables Chuwi Larkbox Fan Control
ExecStart=/bin/sh -c 'while true ; do cat /sys/class/thermal/thermal_zone?/temp > /dev/null ; sleep 2 ; done'
systemctl enable chuwifan.service
systemctl start chuwifan.service
I’ll live with this fix for now. I haven’t testing if passive cooling (cpu thermal throttling), or critical temperature power-offs work.
If I’m curious, I’ll poke around kernel’s acpi/thermal.c some more.
cat /sys/class/thermal/thermal_zone0/temp does nothing but delegate to a read of the temperature variable via ACPI.
Random guess: The dptf bios configuration for sensor 4 requests the driver (OS?) read the sensor every 0.5 seconds. Maybe due to lack of complete dptf support linux isn’t doing that, but the larkbox requires it. That could explain why manually reading the temp fixes the problem.