A lightweight utility that forces the fan on Lenovo laptops to run at a constant maximum speed. Designed for enthusiasts, gamers, and professionals who require stable, high-performance cooling under heavy loads—something unattainable with standard Lenovo software.
This project was born out of the need to tame the cooling system of a Lenovo Ideapad Z580 and has since evolved into a universal solution for many models suffering from the same core issue.
Many Lenovo laptops use a proprietary Embedded Controller (EC) that is inaccessible to standard utilities like SpeedFan. The official Energy Management driver offers a "Dust Removal" feature, but this is a marketing gimmick, not a real cooling tool. When activated, it runs a hard-coded, self-terminating program on the EC:
- The fan spins at max speed for ~9 seconds.
- It then pauses for 2 full seconds.
- This cycle repeats for only 2 minutes before shutting down completely.
For sustained heavy tasks, this is utterly useless.
This utility transforms the flawed "Dust Removal" feature into a reliable, continuous turbo mode. Instead of waiting for the fan to stop, we act proactively:
- The max speed mode is activated.
- A high-precision timer counts down for ~8.8 seconds.
- Milliseconds before the EC's internal schedule can trigger the 2-second pause, the utility sends an instantaneous reset command (
Normal->Fast). - This action resets the controller's internal timer, starting a new 9-second cycle.
The result is stable, uninterrupted maximum-speed fan operation, with the annoying 2-second pause replaced by an imperceptible, millisecond-long "hiccup" that has no impact on overall cooling performance.
- The Lenovo Energy Management Driver must be installed. Ensure that
Lenovo ACPI-Compliant Virtual Power Controlleris present under "System devices" in Device Manager. - Download the latest release from the Releases page.
Simplicity is key.
- Run
FanControl.exe: The fan will immediately spin up to maximum speed. An icon will appear in the system tray. - Exit the program: To return control to the system, simply right-click the tray icon and select "Exit".
Why can't we just turn it on and forget it? Because Lenovo doesn't give us that option. What this utility does is not a compromise; it's the pinnacle of what is technically achievable with the provided API.
This conclusion is based on an exhaustive reverse-engineering effort of the AcpiVpc.sys driver.
Our investigation revealed that the AcpiVpc.sys driver does not manage hardware directly. It is a filter driver, a middle-man whose job is to accept a command from an application and pass it down the system stack to the real executor (most likely the system's acpi.sys).
Decompiled initialization function in Ghidra, demonstrating the creation of a virtual device (IoCreateDevice) and its attachment to the device stack (IoAttachDeviceToDeviceStack).
AcpiVpc.sys creates a virtual device \\.\EnergyDrv so our applications can "see" it, but it does not know or process the control commands itself. It merely ensures their transit.
Because the problem is the API, not our code. We cannot eliminate the brief dip in RPM because the API provided by Lenovo does not offer a function like "set fan speed to 100%". The only command available to us is "run the dust removal program." We can't change that program; we can only restart it in time.
- No Alternative ACPI Methods: A full analysis of the laptop's DSDT tables confirmed that no other methods for direct fan control are exposed.
- Spoofing Data is Impossible: The driver's API does not allow writing to arbitrary EC memory addresses, which would be necessary to, for example, fake temperature sensor data.
- Modifying EC Firmware is a Path to a Brick: Any attempt to alter the Embedded Controller's firmware is almost guaranteed to permanently damage the laptop.
The "proactive reset" strategy is the most effective and safest method that could be developed within the existing constraints. This utility represents its most optimized implementation.
This software is provided "as is." Use at your own risk. The author is not responsible for any potential consequences.
Легковесная утилита, которая заставляет вентилятор на ноутбуках Lenovo работать на постоянной максимальной скорости. Создана для энтузиастов, геймеров и профессионалов, которым требуется стабильное охлаждение под высокими нагрузками, недостижимое со стандартным ПО от Lenovo.
Проект родился из необходимости обуздать систему охлаждения Lenovo Ideapad Z580 и с тех пор превратился в универсальное решение для множества моделей, страдающих от одной и той же проблемы.
Многие ноутбуки Lenovo используют проприетарный Встроенный Контроллер (EC), закрытый для стандартных утилит вроде SpeedFan. Официальный драйвер Energy Management предлагает функцию «Очистка от пыли», но это лишь маркетинговый трюк, а не реальный инструмент охлаждения. При ее активации в контроллере запускается жестко запрограммированный цикл:
- ~9 секунд работы на пределе.
- 2 секунды полной остановки.
- Повторение цикла в течение всего 2 минут, после чего — полное отключение.
Для продолжительной работы под нагрузкой это абсолютно бесполезно.
Эта утилита превращает ущербную функцию «Очистки от пыли» в надежный, непрерывный турбо-режим. Вместо того чтобы ждать, пока вентилятор остановится, мы действуем на опережение:
- Активируется режим максимальной скорости.
- Высокоточный таймер отсчитывает ~8.8 секунд.
- За доли секунды до того, как контроллер по своему расписанию уйдет на 2-секундную паузу, утилита отправляет мгновенную команду сброса (
Normal->Fast). - Это действие обнуляет внутренний таймер контроллера, запуская новый 9-секундный цикл.
В результате мы получаем стабильную, непрерывную работу вентилятора на максимуме, а раздражающая двухсекундная пауза превращается в едва уловимый, миллисекундный "провал", который не влияет на общую эффективность охлаждения.
- Установленный Драйвер Lenovo Energy Management. Убедитесь, что в "Диспетчере устройств" -> "Системные устройства" есть
Lenovo ACPI-Compliant Virtual Power Controller. - Скачайте последнюю версию со страницы Releases.
Простота — ключ к успеху.
- Запустите
FanControl.exe: Вентилятор немедленно раскрутится до предела. Иконка появится в системном трее. - Закройте программу: Чтобы вернуть управление системе, просто кликните правой кнопкой по иконке в трее и выберите "Выход".
Почему нельзя просто сделать "вкл" и забыть? Потому что Lenovo не дает нам такой возможности. То, что делает эта утилита — не компромисс, а вершина того, что в принципе возможно достичь с помощью предоставленного API.
Этот вывод основан на исчерпывающем реверс-инжиниринге драйвера AcpiVpc.sys, который мы провели.
Наше исследование показало, что драйвер AcpiVpc.sys не управляет оборудованием напрямую. Это фильтрующий драйвер-посредник, чья работа — принять команду от приложения и передать ее дальше вниз по системному стеку, настоящему исполнителю (скорее всего, системному acpi.sys).
Декомпилированный код функции инициализации в Ghidra, демонстрирующий создание виртуального устройства (IoCreateDevice) и его присоединение к стеку (IoAttachDeviceToDeviceStack).
AcpiVpc.sys создает виртуальное устройство \\.\EnergyDrv, чтобы наши приложения могли его "видеть", но сам он не знает и не обрабатывает команды управления. Он просто обеспечивает их транзит.
Потому что проблема в самом API, а не в нашем коде. Мы не можем устранить короткое падение оборотов, так как API от Lenovo не предоставляет функции "установить скорость на 100%". Единственная доступная нам команда — "запустить программу очистки от пыли". Мы не можем изменить эту программу, мы можем лишь вовремя ее перезапускать.
- Нет альтернативных методов ACPI: Полный анализ DSDT-таблиц ноутбука подтвердил — других методов для прямого управления вентилятором просто не существует.
- Невозможность подмены данных: API драйвера не позволяет записывать данные в произвольные адреса контроллера, чтобы, например, обмануть датчик температуры.
- Модификация прошивки EC — путь к "кирпичу": Любая попытка изменить прошивку Встроенного Контроллера почти гарантированно приведет к необратимой поломке ноутбука.
Стратегия "опережающего сброса" — это самый эффективный и безопасный метод, который только можно было разработать в рамках существующих ограничений. Данная утилита является его наиболее оптимизированной реализацией.
Программное обеспечение предоставляется «как есть». Используйте на свой страх и риск. Автор не несет ответственности за возможные последствия.