A shell-based smart fan control daemon for Lenovo Legion 7 (Gen 10+) laptops using acpi_call for direct ACPI/WMI fan speed control. Works without the full LLL kernel module stack — just needs acpi_call.
acpi_call — pure bash, no Python, no GUI toolkit\_SB_.GZFD.WMAE fan control methodQuiet, balanced, performance and extreme Default is balanced, if you need more agressive fan curves run sudo smartfan performance You can tweak it in your bath, which is in /usr/local/bin/smartfan | just look for the string with the fan speeds and cpu temps The daemon starts in balanced, adjust on the fly and they do not persist, so just edit the .service file and reinstall, it’s much easier. NOTE IF YOU’RE HAVING ISSUES: This entire repo is a mess honestly, this worked for my 83KY while the GUI didn’t, so if you’re having trouble i recommend using this smartfan and ignore all the rest.
cd extra/smartfan
sudo ./install.sh
This installs:
/usr/local/bin/smartfan — fan control daemon/usr/local/bin/workmode — interactive mode switcher TUI/usr/local/bin/turboon — force max fan speed/usr/local/bin/turbooff — restore normal fan operationsmartfan.service — systemd unit (enabled on boot)# Debian/Ubuntu/Parrot
sudo apt install acpi-call-dkms
# Arch
sudo pacman -S acpi_call-dkms
# Fedora
sudo dnf install acpi_call
workmode
Shows a TUI menu with current temps, fan speeds, and mode selection.
# Start daemon in a specific mode
sudo smartfan start quiet
# Switch mode on the fly (no restart needed)
smartfan mode performance
# Check status
smartfan status
# Stop daemon (returns fans to EC auto control)
sudo smartfan stop
# Turbo mode (max fans now) - the daemon is auto-paused in workmode so the
# override sticks; 'turboon' on its own is overwritten by the daemon
# within ~2 seconds unless you pause it first
workmode # select option 5 (turbo) which pauses the daemon
sudo smartfan pause # hand the fans over manually
sudo turboon
sudo turbooff # or: sudo smartfan restore
# Back under daemon control
sudo smartfan resume
Runtime state (PID, mode, stop flag, log) lives in root-owned
/run/smartfan/ rather than /tmp, so local users cannot stop the daemon
or plant symlinks the root daemon would append its log to. Flip the mode
on the fly with smartfan mode performance.
The daemon uses \_SB_.GZFD.WMAE ACPI method to write fan speed targets directly to the EC (Embedded Controller), bypassing the firmware’s built-in fan curve. Each mode defines:
The daemon reads CPU and GPU temps from hwmon, averages them over 8 samples, and smoothly adjusts fan speed using linear interpolation between thresholds.
sudo systemctl disable --now smartfan.service
sudo rm /usr/local/bin/{smartfan,workmode,turboon,turbooff}
sudo rm /etc/systemd/system/smartfan.service
Same as LenovoLegionLinux — GPLv2.