Программное управление вентилятором ноутбука

Проблема шумного вентилятора ноутбука стоит обычно значительно острее, чем в случае десктопа. Кулеры портативных компьютеров чаще всего нестандартны, а в связи с этим дороги и малодоступны. Да и замена вентилятора нередко влечет полную разборку устройства, как это ни странно. Я не верю, что подобную головную боль могли создать по собственной инициативе инженеры-проектировщики, уж больно она лежит на поверхности. Ведь вентиляторы - это расходный материал, предполагающий замену через два-три года эксплуатации. Мне представляется, что виной всему отделы маркетинга, подстегивающие продажу новых моделей (помните анекдот о мерсе с забитой пепельницей), ну а на худой конец - обеспечивающие работой сервисные службы. Доходит до смешного - в модели Fujitsu Siemens ESPRIMO Mobile V5505 в огромной нижней панели, дающей доступ практически ко всем потрохам ноутбука, сделан специальный фигурный вырез, чтобы загородить именно вентилятор.

Но уменьшить шум можно не только путем замены кулера. Вот вам наш ответ Чемберлену. Тем более что вентиляторы нередко сильно шумят даже на абсолютно новых ноутбуках.

Здесь я опишу программы, которыми можно замедлять скорость вращения вентилятора и, стало быть, уменьшать шум. Все они абсолютно бесплатны. Само собой, эти программы пригодны и для прямо противоположной цели - агрессивного охлаждения при разгоне системы, но эта тема в настоящее время мне не особенно близка. 

Прежде чем читать дальше, лучше всего проверить, правильно ли выполнены штатные настройки. Политика управления вентилятором задается в двух местах - BIOS и операционной системе. То есть заходите в BIOS и смотрите, есть ли там пункты, посвященные вентилятору. Формулируются они по-разному: активный/пассивный режим; вентилятор всегда включен: да/нет; иногда можно задать несколько ступеней скорости вращения. Аналогично в операционке: Электропитание -> Управление питанием процессора -> Политика охлаждения системы = Пассивный. Там же можно уменьшить параметр Максимальное состояние процессора до 99%, что отключает турбо режимы работы CPU, в которых, естественно, энергопотребление резко возрастает. Иногда этого оказывается достаточно.

Внимание! Вмешательство в систему охлаждения ноутбука, предусмотренную производителем, потенциально небезопасно, и его не следует проводить бездумно. Например, если вы будете управлять скоростью вентилятора  исходя только из температуры процессора, то вполне можете перегреть дискретный графический чип. Для начала стоит обследовать свой компьютер с помощью диагностических утилит (например, перечисленных в статье Выбор бюджетного ноутбука: прагматический подход), заглянув внутрь корпуса или поискав информацию в Интернете.

1. SpeedFan (www.almico.com). Мне импонируют программы, которые выполняют только одну функцию и делают это хорошо. На десктопах я пользуюсь исключительно SpeedFan. К сожалению, ни на одном из моих ноутбуков она не заработала. Попробуйте, возможно, вам повезет больше. Если заработает - настройка ее достаточно очевидна, я вкратце описал это тут: Охлаждение настольного компьютера: тишина – залог здоровья. Даже если не заработает - вы сможете получить кое-какую полезную информацию об управляющих чипах и сенсорах (сравните с показаниями диагностических утилит).

2. RMClock (cpu.rightmark.org). Эта программа управлять вентилятором вовсе не умеет, однако помогает делать это косвенно, за счет управления тепловыделением. Настроек там очень много, но нужно немного понимать, как работает процессор. Не буду вдаваться в подробности, полагаю, что вы без труда найдете толковое описание (вот, парочка навскидку - RMClock: Описание и настройка, forum.ixbt.com). Если в двух словах, то уменьшить тепловыделение можно тремя способами (по "И"). Естественно, это также увеличивает время работы ноута от батареи.

а) Уменьшение напряжения питания (раздел "Profiles"). Способ всем хорош, однако может вызвать нестабильность работы. Подбирается экспериментально, то есть напряжение понижается до тех пор, пока все работает. Только рекомендую перед подобными манипуляциями сделать резервную копию системного раздела диска программой типа Norton Ghost. Кстати, это очень невредно практиковать в любом случае - нередко бывает, что операционка "протухает" и ставить потом все с нуля не очень-то приятно.

б) Управление частотой и троттлингом по запросу (нужно выбрать профиль "Performance on demand" и отметить галочками допустимые значения того и другого, для начала - все). При этом в моменты, когда процессор простаивает либо слабо загружен, частота автоматически понижается и пропускаются  процессорные такты (это и есть троттлинг), тем самым уменьшая тепловыделение. Если вы просто редактируете текст или просматриваете не особенно тяжелые странички в браузере, вентилятор будет молчать. Правда, этот способ не работает при длительной высокой нагрузке.

в) Понижение максимальной частоты процессора. Пометьте в том же профиле только те значения частоты, которые считаете нужными. Либо выберите профиль "Power saving" и отметьте максимально допустимую частоту. Естественно, это снижает производительность ноутбука, но тут уж вам выбирать, что важнее. По моему мнению, ситуация, когда максимальная производительность не особенно важна, является достаточно типичной.

Перейдите на вкладку "CPU info" и понаблюдайте за изменением частоты в зависимости от нагрузки для того чтобы проверить,  правильно ли вы все настроили.

Единственная беда RMClock заключается в том, что она довольно древняя и не поддерживает новые процессоры. Впрочем, проблема шумного кулера чаще всего актуальна именно для не особенно свежих ноутов.

3. Notebook Hardware Control, NHC (www.pbus-167.com). Вот о ней следует рассказать более подробно, там не все так прозрачно.

Во-первых, есть две версии: 2.0 и 2.4.3. Если вам нужно всего лишь замедлить вентилятор, лучше установить версию 2.0, поскольку в ней имеется инсталлятор. Во-вторых, есть платный профессиональный вариант, но в нем никакого особенного смысла нет, так что тратить время на поиски кряка не стоит.

NHC имеет многие функции RMClock, но возможностей там поменьше, в частности отсутствует динамическое управление троттлингом. Но во многих случаях это и не нужно. Тем более - частенько случается, что включение троттлинга приводит к прямо противоположному результату - увеличению нагрева процессора. В крайнем случае можно использовать обе программы совместно, никаких конфликтов я при этом не наблюдал.

По функционалу управления шумом NHC в корне отличается от SpeedFan. Если последняя не кастомизируется и умеет работать лишь со знакомым ей оборудованием (хотя спектр и достаточно широк), то Notebook Hardware Control управляет вентиляторами не непосредственно, а через специальные плагины. Несколько плагинов включено в поставку, они расположены в каталоге Program Files\Notebook Hardware Control\acpi\. Вероятность, что какой-то из них вам подойдет, не очень велика, зато их можно отыскать в интернете или в крайнем случае написать самим. Трудоемкость, конечно, сильно зависит от вашей квалификации и модели ноутбука. Вместе с тем,  достаточно часто нужно бывает лишь немного подкорректировать уже имеющийся модуль.

Вкратце опишу этот процесс.

Для начала нужно, чтобы программа опознала плагин, делается это так. При старте NHC ищет в упомянутом каталоге acpi файл с расширением .xml, совпадающий по названию с производителем ноутбука. В нем каждой строчке соответствует определенная модель. Анализируется пара атрибутов "location" (это раздел описания ноутбука) и "Model name" (это как раз и есть наименование модели). Описание ноутбука можно посмотреть на вкладке "Info" программы, в секции "Show Computer Hardware Detail". Например, если нужно опознать модель ноутбука по материнской плате, используется location="MAINBOARD", тогда атрибут "Model name" в .xml файле должен соответствовать параметру "Product" раздела "MAINBOARD:" описания вашего ноутбука. Полный список разделов описания ноутбука и правил соответствия имен приведен в справке, поставляемой с программой версии 2.0 (раздел "Advanced information").

Если соответствие установлено, в этой же строчке файла .xml ищется атрибут "file" с исходным текстом плагина. Исходник компилируется, в результате образуется одноименный исполняемый файл с расширением .dll. NHC загружает исполняемый модуль и передает управление программной секции с именем, полученным из атрибута "class".

После первого запуска программы NHC зайдите в каталог Program Files\Notebook Hardware Control\acpi\ и посмотрите, образовался ли файл .dll. Если нет, то можно с уверенностью сказать, что плагин для вашей модели ноутбука не найден.

В общем-то чтобы плагин все же запустить, большого ума не надо. Нужно найти в комплекте поставки или в интернете модуль для близкой модели и исправить имя в атрибуте "Model name", взяв его из соответствующего раздела описания вашего ноутбука. Учтите только, что в версиях 2.0 и 2.4.3 набор плагинов несколько различается и модули одной версии не всегда работают с другой. Кстати, близкая модель может быть совершенно от другого производителя, но об этом мы еще поговорим.

Вопрос только в том, будет ли загруженный плагин правильно функционировать.

Вначале (здесь уже предполагается, что плагин скомпилировался успешно) зайдите на вкладку "Settings" программы и нажмите на "Show all NHC options and settings". Откроются дополнительные вкладки, из которых нужно выбрать вкладку "ACPI". Убедитесь в том, что включен флажок "Enable ACPI Control System". Если нет сообщения о том, что функция ACPI не активна, нажмите на "Show ACPI Control System details". Содержимое этой секции зависит от разработчиков плагина. Например, у меня на ноуте Sony Vaio SZ там был флажок "Notebook Fan Control", активизировав который я тут же услышал, что вентилятор сбросил обороты. Стало быть, все в порядке.

Если у вас подобного не произошло, не все еще потеряно. Придется засучить рукава и немного попрограммировать. Вот здесь и начинается самое интересное.

Что же это за зверь такой, ACPI? Advanced Configuration and Power Interface (усовершенствованный интерфейс конфигурации и управления питанием) - это стандарт, разработанный совместно рядом компаний для программного управления конфигурацией аппаратуры и внешних устройств компьютера. Документацию можно легко найти в интернете, для начала можете ознакомиться с той, что находится в комплекте версии 2.4.3 NHC. А можете и не знакомиться, чтобы написать несколько строчек кода, это вовсе не обязательно.

Как, собственно, должна выглядеть программа управления вентилятором? В пределе очень просто: вы читаете показание температурного датчика и в зависимости от него задаете скорость вращения кулера, чтобы обеспечить нормальное охлаждение. Вопрос за малым - как считать, как записать и как интерпретировать числа.

Это, конечно, сильно зависит от модели ноутбука, но выглядит приблизительно одинаково - с помощью вызова функций считываются или модифицируются определенные объекты ACPI.

Вот, например, строчки из плагинов для ноутбуков различных производителей, позволяющие определить текущую температуру процессора.

ASUS:
ACPI.FIELD.Read("_TZ.THRM._TMP", ref temperature_current);

Sony:
ACPI.FIELD.Read("_SB.PCI0.LPCB.EC0.A1TP", ref value); // Get current temperature value

Samsung:
ACPI.FIELD.ReadByOffset("_SB.PCI0.LPCB.H_EC.ECR", ref temp_cpu, 0xC0, 8); // get CPU Temperature

IBM:
ACPI.FIELD.Read(_SB.PCI0.LPC.EC.TMP, ref tempval);

HP:
ACPI.METHOD.GetValue("_TZ.TZ0._TMP", ref temp1);    // read actual processor temperature
ACPI.METHOD.GetValue("_TZ.TZ2._TMP", ref temp2);    // read actual graphics temperature

Аббревиатура  TZ означает Thermal Zone, SB - System Bus, EC - Embedded Controller, LPC - Low Pin Count (шина для подключения низко-скоростных устройств), PCI - Peripheral Component Interconnect (шина ввода-вывода для подключения периферийных устройств).

Какие объекты ACPI имеются в вашем конкретном ноутбуке, можно определить, используя версию 2.4.3 программы NHC. В нее встроен замечательный ACPI Object Explorer, позволяющий не только просматривать таблицу объектов ACPI ноутбука, но также считывать и устанавливать значения атрибутов и даже вызывать функции. Изучайте и ищите знакомые слова. Вот как, к примеру, выглядит установка скорости вращения вентилятора для Sony Vaio SZ: ACPI.FIELD.Write("_SB.PCI0.LPCB.EC0.FAN0", minFan). FAN - он и в Африке вентилятор.

Фактически то же самое располагается в так называемой DSDT (Differentiated System Description Table). Посмотреть ее можно заглянув в соответствующие разделы утилит AIDA-EVEREST, R&W Everything (см. ниже), а также с помощью специальной программы DSDT editor.

Бывает, что объекты, отвечающие за вентилятор, размещаются непосредственно в Thermal Zone. Например, в Acer TravelMate 800 имеются целых два Fan Device - _TZ.FAN0 и _TZ.FAN1.

С этим ноутбуком я подробно не разбирался, поскольку укротить его вентилятор удалось с помощью RMClock, но кое-что о нем все же расскажу. Похоже, что пропеллер здесь может либо работать на всю катушку, либо отдыхать. ACPI-модуль для этой модели найти не удалось, зато в коллекции скриптов (ссылку см. в самом конце) есть плагин для похожего аппарата - TravelMate 660. Заменяем имя в атрибуте "Model name" управляющего .xml-файла - и вперед. Модуль скомпилировался успешно, но при загрузке выдалось сообщение об ошибке: "ACPI Control System problem detected". Ничего страшного, заходим на вкладку ACPI, открываем пункт "Show ACPI Control System details" и снимаем галочки "Enable" со всех разделов, которые разместили там разработчики модуля - Temperatures, Audio Control, Hardware Control, Manufacturer. Перезапускаем программу - все в порядке: появилась заветная надпись "OK - ACPI Control System running". Включаем теперь раздел Temperatures - и снова все замечательно, ошибка не там.

Как и следовало ожидать, плавной автоматической регулировки оборотов там нет, но можно изменить температурные пороги включения-выключения кулера. Понижаем верхнюю ниже текущей - и вентилятор радостно заверещал. Хорошо, но нам, в принципе, нужно обратное - поднять пороги. И вот тут-то вышел полный облом - при разогреве процессора вентилятор включался при тех же 55 градусах, игнорируя установленные значения. Что за ерунда? Лезу в ACPI Object Explorer и выясняется следующее. Ноутбук реагирует на флажок управления вентилятором _SB.PCI0.LPC0.EC0.FANC только в качестве команды принудительного включения, отключить пропеллер с его помощью нельзя. Другие регистры Embedded Controller, относящиеся к делу (FPR1, VFAN, FAN2, SFN2, FSPD) тоже не поддавались воздействию. Регистры RG5A и RG5B, которым даже поскупились дать внятные имена, содержат температурные пороги - 55 и 50 градусов. Но их корректировка тоже ничего не дает, а после перезагрузки они спокойно возвращаются в первоначальное состояние. Объекты Fan Device термальной зоны тоже, похоже, не рабочие. Видимо, помещены здесь на будущее, а может быть, разработчикам было лениво вычистить хвосты.

Что же делать в подобном случае? Первым делом стоит обновить BIOS ноутбука, иногда  это помогает. Либо самостоятельно править в BIOS температурные пороги. Хорошее введение в тему есть на форуме IXBT, ссылка в конце статьи. Хотя в данном случае, думаю, что это не даст кардинального улучшения - все равно при более или менее приличной нагрузке вентилятор включится, вопрос чисто времени. Если бы проблема с этим ноутбуком была актуальна до сих пор, я бы сделал так - впаял в разрыв цепи вентилятора сопротивление и включил его с помощью упомянутого модуля NHC на постоянную работу.

Кстати, это тоже вариант, на десктопах я пользуюсь таким приемом постоянно, и не нужно даже ничего паять: компания Zalman комплектует свои отличные вентиляторы готовыми переходниками (раньше, насколько я помню, все вентиляторы этой компании шли с переходниками, сейчас нужно уточнять). Для особо ответственных случаев имеется даже отдельное изделие с реостатом - Zalman FAN MATE 2, регулятор при желании можно вынести из корпуса наружу. Существуют ли подобные решения для ноутбуков - не знаю. Впрочем, именно в случае ноутбука здесь есть один недостаток - резистор жрет лишнюю энергию, что нежелательно при работе от батареи.

Понятно, что сопротивление будет работать только при управлении вентилятором путем изменения уровня напряжения. Вместе с тем многие системы используют другой принцип - широтно-импульсную модуляцию (ШИМ, PWM). Поскольку все это выходит за рамки чисто программного подхода, ограничусь лишь несколькими ссылками в конце статьи.

Впрочем, чтобы вышеприведенный абзац не был понят превратно, придется здесь все же изложить принципы управления вентилятором. Буквально в двух словах.

2-х проводное подключение. Управление может: а) отсутствовать (всегда подается номинальное напряжение питания); б) быть линейным (напряжение питания изменяется от номинального до нуля); в) быть низкочастотной ШИМ (номинальное напряжение подается импульсами переменной длины, если выражаться по-русски, а если технократически - то как раз той самой "ширины"). Cопротивление будет работать однозначно в первых двух случаях и по всей видимости в третьем (но поручиться не могу, не проверял). По моим наблюдениям, чаще всего используется вариант б).

3-х проводное подключение. Все абсолютно то же самое, просто добавляется тахометр, используемый для измерения реальной скорости вращения пропеллера.

4-х проводное подключение. По двум проводам подается питание, причем линейное управление может либо присутствовать, либо отсутствовать. Третий провод - тахометр. Четвертый - управляющие импульсы высокочастотной ШИМ. На десктопах обычно ставят разъемы, позволяющие подключить как четырех-проводные, так и трех-проводные вентиляторы, в последнем случае, естественно, без ШИМ-управления. И чаще всего линейное управление при этом тоже недоступно, хотя, честно говоря, логика разработчиков мне здесь совершенно непонятна. Потому что пропеллер будет всегда вращаться на максимальных оборотах, что не есть здорово. Соответственно, внешнее сопротивление будет тут работать без проблем (само собой, при включении в цепь питания, а не управления).

Но вернемся к NHC. Версия 2.4.3 позволяет даже разработать костяк нужного вам плагина. Как это сделать, очень подробно описано в пошаговых инструкциях, посвященных разработке  модуля управления вентилятором для моделей ASUS M2400N и  Apple MacBookPro - help.notebookhardwarecontrol.net.

Теперь о том, как интерпретировать числа. Ну, с температурой более или менее понятно - читаете в ACPI Object Explorer показание датчика и сравниваете с тем, что NHC выдает в человеческом виде. Бывает и совсем просто - в том же TravelMate 800 температура выдается сразу в градусах Цельсия. С управляющим воздействием на обороты вентилятора все решается экспериментально - подается какое-то значение и на слух или на вид при снятой нижней панели определяется скорость вращения.

Только не останавливайте вентилятор совсем - работать на пассивном охлаждении даже при минимальной нагрузке могут только специально заточенные под это модели (есть и исключения - Acer TravelMate 800 с понижением напряжения работал у меня  при выполнении обычных задач в чисто пассивном режиме). Но большинство устройств будут постоянно останавливать и запускать кулер, что для него совсем не полезно. Пусть лучше крутится постоянно на минимальных оборотах, думаю, что вы его не услышите. А вот в старт-стопном режиме - скорее всего как раз услышите. Но даже минимальное значение должно быть достаточным для уверенного запуска электродвигателя. Просто несколько раз принудительно остановите вентилятор спичкой или зубочисткой, а затем отпустите. Если напряжение питания слишком мало, то вы увидите, что пропеллер иногда не стартует, а начинает вместо этого дергаться. Такого лучше не допускать.

Само собой разумеется, что с помощью ACPI-плагинов программы Notebook Hardware Control можно управлять не только вентилятором, но и много еще чем другим на вашем ноутбуке.

4. NoteBook FanControl, NBFC (www.computerbase.de). Программа, как это следует из названия, предназначена исключительно для управления ветилятором и к тому же относительно несложно кастомизируется.  Конфигурационные файлы для четырех десятков моделей находятся там же по ссылке (Cofigs), при желании можно составить конфигурацию и самостоятельно.

Главная прелесть этой программы заключается в том, что с ее помощью можно научиться управлять вентилятором многих ноутбуков, не обладая при этом ни малейшими навыками программирования. Я довольно подробно опишу создание конфигурации для модели Fujitsu-Siemens ESPRIMO Mobile V5505, чтобы процедуру смог повторить даже человек, далекий от компьютерной техники.

Идеология NoteBook FanControl очень проста. Кулером ноутбука управляет так называемый Embedded Controller. При этом используется два регистра - в один записывается значение, соответствующее нужной скорости, а с другого считываются реальные показания скорости вращения. Иногда регистр может быть только один. Сколько регистров используется в вашем ноутбуке, можно косвенно определить, открутив несколько винтов нижней панели. Если кабель, соединяющий вентилятор с материнской платой, имеет только два провода, то в вентиляторе отсутствует тахометр, позволяющий измерять обороты пропеллера. Стало быть, читать показания просто неоткуда и управляющий регистр только один. Если проводов больше двух (обычно так оно и есть), то тахометр присутствует, значит - регистра должно быть два.

По большому счету, составление конфигурации для NBFC заключается в нахождении этой пары регистров и задании их программе. Скачайте утилиту Read & Write Everything (rweverything.myweb.hinet.net), запустите ее и откройте вкладку Embedded Controller. Теперь загрузите какое-нибудь тяжелое приложение типа CPU Burn (ссылку я уже приводил здесь - Выбор бюджетного ноутбука) и поищите в окне смежную пару синхронно меняющихся ячеек. При этом обычно одно значение "пляшет" относительно другого, то отставая, а то опережая его. Это и есть регистр чтения, поскольку вентилятор обладает определенной инерционностью и не всегда точно соответствует установленному извне значению.

Проделав эти процедуры, я выявил двух возможных кандидатов: регистры с адресами 94-95 и A8-A9. Как же понять, который из них? Я поступил очень просто - просунул в щель воздухозаборника иголку и остановил на мгновение вентилятор (иногда нужно бывает его немного подержать). Регистр с адресом 95 тут же сбросился в значение "FF". Все ясно - вот вам и регистр чтения, стало быть запись идет в регистр 94. Честно говоря, я ожидал значения 00, значит - инверсия и большим значениям соответствует медленное вращение (и наоборот).

Понаблюдаем теперь за поведением встроенной системы управления оборотами вентилятора. На моем ноутбуке при нормальной температуре устанавливалось значение скорости B6, где-то в районе 60 градусов оно повышалось до 9E и достигало 8C после 70 градусов.

Можно составлять конфигурацию. Только вначале нужно перевести значения адресов из шестнадцатеричного в десятичный вид. Открываем калькулятор из комплекта Windows, переводим его в инженерный вид, щелкаем на Hex, вводим значение и переключаемся на Dec. Получаем 148-149.

Теперь запускаем NBFC, она сообщает, естественно, что конфигурация для моего ноутбука не найдена и выдает имя модели. Само собой, оно совпадает с показаниями программы  NHC, которой я пытался решить проблему ранее (причем безуспешно, поскольку никаких интересных объектов с помощью ACPI Object Explorer в ESPRIMO Mobile V5505 найти не удалось).

Жму на кнопку Add new config, появляется окно с предложением задать имя модели, причем имя уже вписано - и все! Все - в плохом смысле, поскольку окно висит и не реагирует ни на какие действия. Ну, бета-версия, все понятно. Придется воспользоваться текстовым редактором. Перехожу в каталог Configs и копирую первый попавшийся файл в имя, совпадающее с наименованием модели. Затем открываю файл и заменяю значения тегов UniqueId и NotebookModel на то же самое имя. И только я занес руку исправить значения регистров (теги ReadRegister и WriteRegister), как с удивлением обнаружил, что там указаны нужные значения.

Ничего себе! И какую же модель я избрал прототипом? Acer Aspire S3. Так что же, неужели все ноутбуки в этом смысле одинаковы? Нет, конечно, просто - повезло. Бегло просматриваю все включенные в поставку конфигурации. Нашлась еще одна точно такая же модель - Medion Akoya P6630. Да и другие четко разделяются на несколько групп, причем независимо от производителя.

В принципе, результат вполне можно было бы спрогнозировать - ведь все это кажущееся разнообразие моделей сводится лишь к небольшому количеству платформ, которые клепают несколько OEM-изготовителей. То есть нередко ноутбуки разных производителей гораздо ближе друг к другу, чем иные модели в рамках одного бренда. Примите этот факт во внимание и при поиске плагина для Notebook Hardware Control.

Кроме регистров чтения-записи программе NBFC необходимо задать еще минимальную и максимальную скорости вращения, а также значение для сброса управления вентилятором в заводской режим. Поскольку я отыскал для своей модели подходящий прототип, то особенно экспериментировать не стал и оставил значения, которые были там. Если для вашей модели прототипа найти не удалось - ничего страшного. Возьмите для начала ту максимальную скорость, которую вам удалось достичь на встроенной системе управления оборотами при полной нагрузке на процессор. В качестве минимальной скорости можно взять 0 или 255 в зависимости от того, растет или уменьшается скорость вращения при увеличении значения в регистре.

Теперь о сбросе управления вентилятором в заводской режим. Попробуйте установить с помощью RW Everything в регистре записи какие-то значения и понаблюдайте за поведением системы - переходит ли она с ручного управления на встроенное. Начать стоит с числа 255, оно используется в подавляющем числе моделей. Применяются также значения 0, 9, 30, 128, 196.  Если вы нашли крайнее значение - 0 или 255, лучше не использовать его для минимальной скорости, задайте лучше 1 или 254 соответственно.

Составив конфигурацию, запустите NBFC, вы окажетесь в режиме ручного управления вентилятором. Установите ползунок в различные положения, нажмите кнопку Set и послушайте шум лопастей пропеллера. В левом нижнем углу отображается температура процессора, а также заказанная и реальная скорость вращения. Убедитесь, что все работает правильно. Проверьте переход во встроенный режим - для этого переместите ползунок в крайнее правое положение и опять же нажмите Set. В поле "Target fan speed" должно появиться "BIOS Controlled", стало быть, значение для сброса вентилятора подобрано верно. Нагрейте процессор и убедитесь, что управление вентилятором встроенное на самом деле, а не только по мнению NBFC.

Теперь осталось самое приятное - сформировать собственный автоматический режим управления кулером. Установите нужные температурные пороги и скорость вращения (ползунком) и нажмите кнопку "+". Повторите манипуляцию для задания нужного вам числа градаций. Переведите NBFC в автоматический режим (это делается на иконке в трее).

Не стоит останавливать вентилятор совсем. Я об этом уже упоминал, и как раз здесь можно наглядно проиллюстрировать сказанное. Попробуйте сделать так, и вы услышите, что при запуске вентилятор начинает нешуточно реветь. Дело в том, что пусковое напряжение пропеллера существенно выше того, которое необходимо для поддержания минимальных оборотов. Поэтому NBFC по всей видимости и формирует скачок, чтобы запустить вентилятор наверняка. И такие периодические "взревывания" мне, например, очень неприятны.

Теперь о паре заморочек в NoteBook FanControl, с которыми мне пришлось столкнуться. Последняя версия 0.14.4.60 вылетала у меня при завершении работы Windows (XP SP2), какой-то конфликт с _NET Framework 4.  Нажимать каждый раз при выходе лишнюю кнопочку мне вовсе не улыбается. Я поискал среди старых версий вариант без этого дефекта и нашел - 0.12.5.43.  Но там оказалась другая засада - неверно формировалось задание для шедулера при автостарте программы. Поэтому пришлось отказаться от автостарта в самой NBFC и вручную поместить ее с ключами /auto и /tray в автозапуск Windows. Кстати, автор программы Stefan Hirschmann сообщил мне, что собирается устранить вышеуказанную проблему в следующей версии.

Если вам удалось составить или адаптировать конфигурацию для своей модели - не поленитесь переслать ее по почтовому адресу, указанному в руководстве пользователя программы (NotebookFanControl@t-online.de), чтобы модуль выложили в общий доступ.

Update 2018: NBFC Alive!
По прошествии определенного времени мне пришлось заняться вопросом еще раз на новом ноутбуке - HP 17-x010ur X5W72EA. В принципе система охлаждения там вполне приличная (а сам ноут и вовсе шикарный), и первые пару лет я не обращал на его шум вообще никакого внимания. А потом он стал немного раздражать: то ли вентилятор поизносился, то ли я сам начал на нем больше работать (вообще-то это компьютер супруги).

И вот, пустясь в путь по местам боевой славы, я с удовлетворением обнаружил, что NBFC жива и до сих пор поддерживается. И даже обросла кое-каким сервисом: например, вы можете протестировать, к какому из известных программе ноутбуков ваша система ближе всего. Насколько это автоопределение адекватно - не берусь судить; впрочем, то же самое можно сделать вручную путем просмотра готовых конфигураций (их, конечно, стало изрядно больше, чем в прошлый раз). Ну, и описание получше стало.

 В общем, все то же самое, и здесь я лишь отмечу некоторые моменты, которые могут кому-то пригодиться.

1. На моей системе Windows 10 Fall Creators Update (1709) наблюдался периодический самопроизвольный уход в сон (NBFC 1.5.0 и 1.5.3 beta). Я пошел проверенным путем - стал опробовать предыдущие версии. На релизе 1.3.4 все работает отлично.

2. В системном журнале после установки NBFC вы можете увидеть два новых события - Источник: ACPI, Код события: 13, Описание: Встроенный контроллер (EC) не ответил в отведенный период времени. Это может означать ошибку в контроллере, его прошивке или неправильном доступе BIOS к контроллеру. Рекомендуется связаться с производителем компьютера для получения обновленной версии BIOS. В некоторых случаях эта ошибка может привести к некорректной работе компьютера; а также Источник: ACPI, Код события: 15, Описание: встроенный контроллер (EC) возвратил данные при отсутствии запроса на них. BIOS пытается получить доступ к встроенному контроллеру без синхронизации с операционной системой. Эти данные будут проигнорированы. Никаких действий не требуется, но рекомендуется связаться с производителем компьютера для получения обновленной версии BIOS. Не беспокойтесь и ничего не предпринимайте - так операционка реагирует на работу с Embedded Controller в обход стандартного API ACPI.

3. Ранее я призывал не останавливать вентилятор, установив на нем минимальные обороты. Не отрекаясь от этой общей рекомендации, в данном конкретном случае я ей пренебрег. HP 17-x010ur вполне способен работать в чисто пассивном режиме. При интернет-серфинге и просмотре роликов вентилятор запускается крайне редко - не чаще чем один-два раза в неделю.

4. Пытаясь снизить общее энергопотребление ноутбука, я отключил в диспетчере устройств дискретную графику. В том режиме, что работает этот компьютер, она совершенно не нужна. В итоге получил обратное - существенно большее тепловыделение. По всей видимости, драйвер в этом случае лишается возможности включения экономного режима работы чипа. Полагаю, что если бы возможность отключения второй графической карты была предусмотрена в БИОС, все было бы нормально.

5. Не помню как было раньше, но сейчас есть возможность управлять несколькими вентиляторами (сам я таких ноутбуков не встречал, но, видимо, они существуют).


И в заключение несколько полезных ссылок. Модули NHC для управления вентилятором  Sony Vaio SZ можно найти здесь - forum.hardware.fr, Fujitsu-Siemens Amilo Xi 1546/1554 здесь - forums.laptopvideo2go.com, коллекция скриптов (не только для Acer) - acerfans.ru. Принципы управления кулером моделей ThinkPad описаны здесь - www.thinkwiki.org. Много интересного об аппаратной части системы охлаждения ноутбуков, а также перечень узкоспециализированных программ управления вентиляторами конкретных моделей можно почерпнуть отсюда - Форум IXBT: Система охлаждения ноутбука. Изменение скорости вращения вентилятора ноутбука. О методах регулирования оборотов можно почитать тут - Типы вентиляторов, Управление вентилятором, Технологии управления скоростью вращения вентиляторов, Опыты по корректировке скорости вращения ШИМ-вентилятора.


Февраль 2013 г.

Добро пожаловать в мой литературный проект - роман «Постоянная времени»




На главную страницу 


15 комментариев:

An10s комментирует...

Очень полезная статья!!!! Благодарствую за сей эпический труд! Честно говоря более менее понял только про NBFC, сейчас вот пробую, проблемма в том что я совершенно ничего не шарю в 16ричных системах и тому подобном скачал Read & Write Everything, нашел EC, там скачут значения и ничего отследить не удается(, к тому-же при остановке кулера система считает что он вращается со скоростью 100RPM, подсмотренно в AIDA, в 16ричной системе это вроде как 64 - но такого значения не наблюдаю.... Буду благодарен если поясните нубу) An10sxz@Gmail.com

Николай Боевкин комментирует...

An10s
То, что сразу приходит в голову - либо aida смотрит неправильно, либо вентилятор управляется не через ec. Попробуйте, остановив пропеллер, поискать значения 00 или ff (ну, или кто резко прыгает при этом). Посмотрите, что пишут про охлаждение про вашу конкретную модель. Ну, и здесь ее поищите - http://sdrv.ms/RSl0RJ.

An10s комментирует...

Благодарю за ответ! Aida абсолютно адекватно регистрирует обороты - они поднимаются при повышении температуры и слышно что быстрее начинает кулер работать. А вот в RW при принудительной остановке кулера к сожалению не нахожу значений ff, а на ноль вроде-бы ничего тоже не сбрасывает. Как-бы понять что в моем случае управляет этим кулером и где всё это зашито? В реестре есть копия таблицы DSDT... ещё вопрос, можно-ли менять в RWE любые значения или это черевато последствиями? Вроде как опасная штука)

An10s комментирует...

Я нашел всё таки нужные регистры как мне кажется - пара которая сбрасывается в ноль при принудительной остановке кулера. нашел не сразу т.к. значения меняются с задержкой в несколько секунд... попытался записать эти значения в NBFC, оно вроде как не работает(( Скорость не меняется( причем в RWE если поменять значения, они сразу-же сбрасываются, можно-ли как либо их попробовать зафиксировать?? Что ещё можно сделать? Благодарю за советы!

Николай Боевкин комментирует...

An10s
К сожалению, ничем новым порадовать не могу.
- Попробуйте обновить BIOS.
- Поищите специализированные программы для вашей модели - ссылку я приводил.
- NHC.
- Поэкспериментируйте с понижением напряжения на процессоре, бывает, что это снимает остроту проблемы.
- Сопротивление в разрыв цепи вентилятора.
- Правка DSDT/EC в BIOS (на том же форуме ixbt).

Potyam@ya.ru комментирует...

Статья полезная, беспорно.
Ноут Asus K50AB, не новый и не раз перегретый. в итоге появилось такое хроническое заболевание, как постоянный перегрев, а кулер после запуска уходит в штатный режим и ничем из под оси не регулируется. И при нагреве за 80 тупит и дохнет
разве что нагрев процессора ограничил частотой в пол мощьности, но тоже не приятно, ноут становится совсем ущербным. И не работает толком и тупит при нагрузке ЦП и GPU(охлаждение реализованно на одном теплоотводе)
перепробовал всякое, от полной перепрошивки и переустановки всего для чего не понадобился программатор, до установки разнообразного софта, гуманного и не очень.
По итогу забил на гуманные методы и отключил управление кулером "аппаратно".
На всех четырёх пиновых кулерах управление оборотами не через питание, а через ШИМ, то есть убрал из схемы ШИМ и получил МАКСИМАЛЬНЫЕ обороты.
Как правило, это СИНИЙ провод.
Немного шумит)))) зато работать стал адекватно. Если кому не лень, можно реализовать переключателем)
Спасибо за статью, много полезного.

Анонимный комментирует...

ясно остается только 1 способ для всех ноутов (а так не хотелось пломбу срывать) но походу придется,разобрать нотик и припаять куллер к USB. не секрет что производители нотиков устанавливают ниже холод чем нужно,на маломощных эт без разницы, а вот мултимедия и выше уже грусть... да процы и чипы могут терпеть высокие температуры, а здыхает всегда одно и тоже отвалился мост, чип видика, от перегрева, и это касается всех нотиков любых фирм (правда не скажу про панасоники, не держал даже не говоря уже о покупке, стоимость которых раз в 10 выше других!

Николай Боевкин комментирует...

Анонимный
Странный вывод, мне, например, с помощью описанных программ удалось решить вопрос на всех трех моих ноутах, где шумел кулер.

Анонимный комментирует...

Помогите мне, нечего не получается, нашел регистры, дальше не понятно, поскольку вы тоже дальше не стали подробней описать процесс. Хоть голову пеплом заливай, ни чего не получается, please help me.

Николай Боевкин комментирует...

Анонимный
Почему же не описано - все описано достаточно подробно. Нажимаете Add new config, создается новая конфигурация, в нее нужно вбить найденные регистры. Если так не работает - нужно в каталоге Configs найти какую-нибудь готовую конфигурацию и заменить там теги UniqueId и NotebookModel на имя модели, а теги ReadRegister и WriteRegister на десятичные номера регистров чтения и записи соответственно. Ну и дальше все по тексту.

Олег101 комментирует...

Спасибо! Одна из утилит помогла!!!

Анонимный комментирует...

NBFC - помог. Спасибо.

ningreen комментирует...

после долгих мучений - мои уши наконец-то отдыхают!!! с помощью вашей статьи удалось "успокоить" бешеный кулер на моём сони вайо! спасибище!

Leonid комментирует...

БОЛЬШОЕ ВАМ СПАСИБО! Теперь я отдыхаю в тишине.
Спасибо за наводку Read & Write Everything и NBFC, благодарю!

Евгений комментирует...

Спасибо большое, просто отличная статья по notebook fancontrol, принесли старый ноут оживить, сменил процессор -после чего понадобилось отрегулировать запуск вентилятора и отключить его остановку, иначе нагревал внутри все из-за полной остановки. Как раз пришлась кстати, актуальна и в 2020!