LenovoLegionLinux

SmartFan — Lightweight Fan Control for Lenovo Legion 7

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.

Features

Supported Hardware

Fan Speed Ranges by Mode

Quiet, 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.

Installation

cd extra/smartfan
sudo ./install.sh

This installs:

Prerequisites

# Debian/Ubuntu/Parrot
sudo apt install acpi-call-dkms

# Arch
sudo pacman -S acpi_call-dkms

# Fedora
sudo dnf install acpi_call

Usage

Interactive Mode Switcher

workmode

Shows a TUI menu with current temps, fan speeds, and mode selection.

Direct Commands

# 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.

How It Works

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.

Uninstall

sudo systemctl disable --now smartfan.service
sudo rm /usr/local/bin/{smartfan,workmode,turboon,turbooff}
sudo rm /etc/systemd/system/smartfan.service

License

Same as LenovoLegionLinux — GPLv2.