← К R&D-разработкамOpen-source · v1.1.0

macpro-fanctl

Управление вентиляторами Apple SMC на Mac Pro и MacBook Pro под Windows 10/11.

Если у вас Mac под Windows и под нагрузкой ноутбук перегревается либо вентиляторы крутятся непредсказуемо — это решение моей собственной проблемы, которое я решил выложить. CLI + GUI для управления оборотами через драйвер applesmc.sys; драйвер и инструкция запуска уже внутри архива.

Windows 10 / 11 (64-bit)Python 3.10+ (для исходника)Драйвер в комплектеOpen-source

Решал для себя — оставляю в открытом доступе

У меня старый MacBook Pro, на нём установлена Windows — для рабочих программ удобнее. И есть знакомая многим «маководам на Windows» история: вентиляторы работают «как-нибудь». То ноутбук гудит на максимуме без нагрузки, то наоборот тихо греется до троттлинга под сборкой проекта или IDE.

Решил написать своё. Сначала это была пара скриптов «для себя», потом — полноценная утилита: CLI для скриптов, GUI с кривыми «температура → обороты», автозапуск при логоне, иконка в трее. Открытый Python, читаемый код, драйвер сразу в комплекте. Если у вас та же проблема — велком, пользуйтесь.

macpro-fanctl — главное окно GUI

CLI и GUI в одном пакете

GUI с tray-иконкой. В графическом окне настраиваются правила под каждый вентилятор: режим Auto / Const RPM / Sensor-based, выбор CPU и GPU-сенсоров, агрегатор сенсоров (max или avg) и кривая «температура → обороты» в виде четырёх параметров: Low °C / High °C / Min RPM / Max RPM. Кнопка ▶ Start / ■ Stop запускает и останавливает фоновый контроллер. При закрытии окно сворачивается в трей. Автозапуск при логоне настраивается через Windows Task Scheduler с уровнем HighestAvailable — UAC спрашивается один раз, дальше всё стартует автоматически.

CLI для автоматизации и скриптов. Команды install и uninstall регистрируют и удаляют драйверный сервис через sc.exe. fans, temps и status показывают обороты, температуры и состояние сервиса. fan set <i> <RPM|auto> — ручной контроль отдельного вентилятора. get и set <KEY> — чтение и запись произвольных SMC-ключей для тонкой работы. monitor даёт живой мониторинг с настраиваемым интервалом, а autostart enable/disable/status — управление задачей логона.

Безопасно для железа. Любая остановка контроллера возвращает все захваченные вентиляторы под управление OS — ничего «зависнуть на 500 RPM после падения утилиты» не может. Команда fan set <i> auto моментально восстанавливает OS-режим в любой момент. Драйвер фильтрует невалидные записи через KMDF. Sensor-based режим работает на линейной интерполяции между двумя точками кривой с выбором политики агрегации сенсоров.

Что умеет командная строка

:: Посмотреть состояние
macpro-fanctl status
macpro-fanctl fans
macpro-fanctl temps

:: Принудительно вентилятор 0 на 1500 RPM
macpro-fanctl fan set 0 1500

:: Вернуть вентилятор 0 под управление OS
macpro-fanctl fan set 0 auto

:: Живой мониторинг
macpro-fanctl monitor

:: Открыть GUI с per-fan правилами
macpro-fanctl-gui.exe

GUI запускается с UAC-elevated правами (один запрос — и дальше живёт в трее). В окне настраиваются правила под каждый вентилятор, сохраняются в %APPDATA%\macpro-fanctl\config.json, включается автозапуск при логоне через Task Scheduler — дальше можно забыть.