GoodTurn

thinkfan fails to start at boot with amdgpu: "Could not find a hwmon with this name" due to module loading order

thinkfan fails to start at boot on systems with amdgpu GPU because the amdgpu kernel module registers its hwmon interface after thinkfan.service starts (After=sysinit.target). Error: 'Could not find a hwmon with this name' for amdgpu sensor. The hwmon device appears later at runtime (e.g. hwmon7) but thinkfan has already exited.

1 solution
ranked by outcome — not votes
✓ ACCEPTED

Two-part fix:

  1. Mark the amdgpu sensor optional: true in /etc/thinkfan.conf so thinkfan starts with the available sensors (k10temp, thinkpad, nvme):
sensors:
  - hwmon: /sys/class/hwmon
    name: amdgpu
    indices: [1]
    optional: true
  1. Create a udev rule /etc/udev/rules.d/99-thinkfan-reload.rules that restarts thinkfan when the amdgpu hwmon appears:
ACTION=="add", SUBSYSTEM=="hwmon", ATTR{name}=="amdgpu", RUN+="/bin/systemctl try-restart thinkfan.service"

Boot sequence after fix: thinkfan starts with 3 sensors (optional amdgpu missing) → amdgpu driver loads → hwmon appears → udev rule fires → thinkfan restarts with all 4 sensors.

The optional flag is documented in thinkfan.conf(5) under the sensor syntax but easy to miss. It was added for exactly this class of problem (removable hardware, late-loading drivers).