[РЕШЕНО] Принудительное включение кулеров

Прошу прощенияобманул. Давно не игрался с этой штукой.
Сам же писал же — обратно возвращаю в ручную, а почему именно, и забыл. Прошу не винить.
Но в принципе, нужно больше экспериментировать.
Для удобства вывода я использую следующую команду -
sudo perl acer_ec.pl regs | awk '(NR == 6)' | awk '{print $18,$19}'
..... подставляйте свои значения (вывожу регистры и чтения и записи, хотя достаточно одного значения)
Для повышения температуры применяю утилиту stress (подбирать свои значения запуска - см. --help)
stress --cpu 2 --io 4 --vm 2 --vm-bytes 128M --timeout 10s
Итак, если изменили в ручную (скриптом), то и дальше нужно также менять или писать свой скрипт — ссылка дана в блоге.
И, главное, это будет действовать, пока не выключить комп — перегрузка, вроде бы, не помогает.
Я скрипт не стал писать, хотя там ничего сложного нет. Просто у меня имеется набор
3-х значений, которыми я и оперирую, если уж пришлось активировать скрипт.
Вот мои нормальные значения (вывожу обычно оба регистра — и чтение и запись)
$ sudo perl acer_ec.pl regs | awk '(NR == 6)' | awk '{print $18,$19}'
74 74
Вот значения седующих 2-х ступенек
$ sudo perl acer_ec.pl regs | awk '(NR == 6)' | awk '{print $18,$19}'
65 65
$ sudo perl acer_ec.pl regs | awk '(NR == 6)' | awk '{print $18,$19}'
60 59
.... удалил лишнее, как не относящееся к делу, чтобы не путать ....
PS ... самое главное, если Вам это не нужно, то лучше не делать. Поиграться, это можно.
Это нужно делать если имеются проблемы с охлаждением или еще что то и Вам понятно, что Вы делаете.
И как сказал Aivar
Aivar
Зачем, если скорость вращения кулера должна быть привязана к показанию датчика, т.е. к температуре. Лично я сделал так и сделал, ничего не ставлю, не поднимаю и т.д. Зимой вентиляторы практически не слышны, летом жужжат сильнее.
Вывод - не трожь нормально работающий механизм.
Ошибки не исчезают с опытом - они просто умнеют
vasek
подставляйте свои значения (вывожу регистры и чтения и записи, хотя достаточно одного значения)
А подскажите, пожалуйста, неопытному, как получить значения? Если я правильно понял, то:
1. Замерить значения sudo perl acer_ec.pl regs
2. Заставить напрягаться CPU утилитой stress или чем-то другим
3. Посмотреть какие значения поменялись, они мне и нужны.
Так?
Shatur
PS ... самое главное, если Вам это не нужно, то лучше не делать. Поиграться, это можно.
Если я правильно понял, то после выключения компьютера все равно все значения сбросятся, так что плохо я навряд ли сделаю. Тем более, я не хочу понижать скорость вращения, перегрев не грозит. А поиграться хочется :)
Shatur, есть несколько вариантов, и, для надежности, лучше перепроверить
1) загрузить модуль ec_sys а потом команду # watch od -Ax -t x1 /sys/kernel/debug/ec/ec0/io
и получаем динамическую, непрерывно меняющуюся таблицу значений регистров. Любым способом изменяем температуру (самое простое stress) и зорко смотрим меняющиеся цифирки.
2) в спокойном режиме снимаем таблицу (sudo perl acer_ec.pl regs) и в файл (типа libreoffice, альбом, шрифт уменьшить, чтобы таблица уместилась полностью) — это будет эталон. Далее изменяешь температуру, лучше в несколько этапов, ступеньками — вывод каждой ступеньки опять в файл — и смотри, где меняется, лучше выделяй красным, измения на 1-2 еденицы можешь не учитывать — в конце должны остаться два значения.
В принципе уже их можно и попробовать (как я писал, вывод только двух регистров).
Не уверен, можно уточнять дальше.
3) Если есть винда, то есть очень хорошая утилита - RW-Everything — выводит очень много инфы, вплоть до таблиц DSDT и EDID монитора (если не перепутал). Там также есть таблица EC (embedded controller) - таблица регистров и их значений, в которой непрерывно меняются значения. Остается опять же только изменять температуру и смотреть глазками.
4) выше давал ссылку на сайт, найти там конфиг для своего ноута — там эти регистры будут прописаны. Вот кусок для моего ноута
 <FanControlConfig>
<UniqueId>HP ProBook 4530s</UniqueId>
<NotebookModel>HP ProBook 4530s</NotebookModel>
<ReadRegister>46</ReadRegister>
<WriteRegister>47</WriteRegister>
<MinSpeedValue>88</MinSpeedValue>
<MaxSpeedValue>48</MaxSpeedValue>
…........ и так далее ….............
И как видим мои регистры 46 и 47, что соответствует 2E и 2F в 16-ричном исчислении.
Shatur
Если я правильно понял, то после выключения компьютера все равно все значения сбросятся, так что плохо я навряд ли сделаю. Тем более, я не хочу понижать скорость вращения, перегрев не грозит. А поиграться хочется :)
Сбросятся. Один совет - рекомендую иметь вывод значений температуры перед глазами - я его обычно делаю 3-х цветным - зеленый/желтый/красный в зависимости от значений температуры.
Ну и не стоит при экспериментах очень сильно изменять значения регистров.
PS ... вроде бы я в блоге давал ссылку на сайт, как написать скрипт на данный метод, если, конечно, тебе не подходит ACPI.
PSS ... если не нравится stress, есть утилиты для мониторинга температуры, позволяющие изменять эту температуру за счет изменения мощности куллера. Но в этом случае, тебе достаточно одной этой утилиты и не нужна вся эта морока .
Эта утилита, вроде бы, называется NBFC (NoteBook FanControl) и она, если не ошибаюсь, тоже построена на embedded controller - приведенный выше конфиг для нее и предназначен. Одно но - в винде эта утилита работает превосходно (правда, если не ошибаюсь, конфликтует с RW-Everything), а вот в Linux запустить ее проблематично - нужно много читать и пробовать.
Ошибки не исчезают с опытом - они просто умнеют
Забыл отметить небольшое дополнение - в части перевода вентилятора в автоматический режим (от ACPI), чтобы сбросить значения без выключения компьютера. У некоторых типов ноутбуков рядышком с этими регистрами (чтения и записи) находится еще один регистр, изменяя значения которого можно перевести обратно кулер в автоматический режим.
Я у себя такого не нашел, но особо и не занимался этим. Все некогда этим заняться вплотную. И не знаю даже, имеется ли такой регистр у всех ноубуков или только у некоторых типов.
PS ... т. е. этот регистр отвечает за переключение между автоматическим и ручным режимом.

PSS ... Вообщем занялся вплотную переводом управления куллером из ручного режима в автоматический — для своего ноута, нашел — нужно записать в регистр 2F (регистр записи) значение FF
sudo perl acer_ec.pl := 0x2F 0xFF
Проверил несколько раз.
Подсказку дал упоминаемый выше конфиг для NBFC (для моего ноута), а точнее строка
<FanSpeedResetValue>255</FanSpeedResetValue>
Ошибки не исчезают с опытом - они просто умнеют
vasek, большое спасибо! Пробую замерить значения. Заметил, что меняются значения:
2d менялось на 2e периодически, а потом становилось снова 2d. Такое ощущение, как будто бы срабатывает переключатель на следующую скорость.
Больше ни одно значение не меняется во время стресс-теста. А еще одно значение меняется иногда на совершенно случайные в третьей снизу строке.
Проверял много раз, может же такое быть, что не управляется оно через embeeded controller?
Было бы здоро
vasek
регистр отвечает за переключение между автоматическим и ручным режимом.
Было бы здорово его найти. Без этого сделать скрипт, который включает принудительно охлаждение не получится :(
Shatur
2d менялось на 2e периодически, а потом становилось снова 2d. Такое ощущение, как будто бы срабатывает переключатель на следующую скорость
Что то слишком мало меняется, всего на единицу (2D это 45 в 10-ричной системе, а 2E - 46. Может у тебя не значительно поднималась температура? Неужели у тебя нет вывода температуры - если нет, выведи. Температуру желательно поднять градусов на 15.
Опишу еще раз, более подробно. В принципе определить регистры очень легко:
- запускаем два терминала-эмулятора
- в одном загружаем модуль (sudo modprobe ec_sys) и запускаем команду для динамического вывода таблицы
sudo watch od -Ax -t x1 /sys/kernel/debug/ec/ec0/io
и смотрим внимательно на ячейки, в которых менятся значения — эти ячеки из расмотрения выкинуть (если температура неизменна, то и меняться ничего не должно). А лучше поищи 2 рядом расположенные ячейки с одинаковыми значениями (возможно отличие на 1, ориентируйся в 16-ричной системе). Если заметили переходим к следующему этапу (но если и не заметили, всеравно лучше перейти к следующему этапу).
- во втором терминале запускаем утилиту stress (достаточно 10с, чтобы температура прыгнула градусов на 15-20)
stress --cpu 2 --io 4 --vm 2 --vm-bytes 128M --timeout 10s (можно менять количество cpu, время и мегабайты)
- переводим взгляд на первый терминал и ищем ячейки, обычно две рядышком, в которой меняются значения — лучше смотреть на две ячейки с одинаковыми значениями, замеченными до поднятия температуры.
Привожу мой вывод (только одной строки) до поднятия температуры
000020 ff ff 00 00 00 00 1d 01 00 00 00 00 00 00 4a 4a
и после
000020 ff ff 00 00 00 00 1e 01 00 00 00 00 00 00 3e 3b
И хорошо видно — были значения 4a 4a, а стали 3e 3b
Определяем номера ячеек (вертикаль — горизонталь) и получаем 2E 2F — это мои ячейки/регистры (чтения и записи)
Если не смог заметить, увеличь время действия stress до 20с, но лучше ориентируйся по значению температуры и изменению шума куллера.
Shatur
Было бы здорово его найти.
Как пишут, у разных типов ноутбуков по разному. У моего, как писал выше, такого отдельного регистра нет, а для перевода в автоматический режим используется тот же самый регистр записи, с записью в него значения FF. Так что можешь попробовать этот способ. Но сначала найди ячейки/регистры чтения и записи.
Shatur
может же такое быть, что не управляется оно через embeeded controller?
Может, но вероятность маленькая. Я пока такого не встречал.
Ошибки не исчезают с опытом - они просто умнеют
vasek
Что то слишком мало меняется, всего на единицу (2D это 45 в 10-ричной системе, а 2E - 46. Может у тебя не значительно поднималась температура? Неужели у тебя нет вывода температуры - если нет, выведи. Температуру желательно поднять градусов на 15.
Да за температурой следил, поднял с 60 до 80 градусов. Этот параметр (значение) как переключатель какой-то. Меняется туда-сюда во время разгона и становится на начальное значение во время максимальной скорости кулера. Так странно. Стресс я делал без таймера, просто врубал и смотрел в табличку, ожидая, пока нагреется до максимума. Задействовал все ядра, так что нагревал его быстро, секунд за 10. Потом останавливал опять, сравнивал и получил описанные в предыдущем сообщении результаты:(
Shatur
Этот параметр (значение) как переключатель какой-то. Меняется туда-сюда во время разгона и становится на начальное значение во время максимальной скорости кулера.
Странно. Эти значения связаны с мощностью куллера, которая, я думаю, не прыгает туда-сюда во время разгона, а только увеличивается.
А вообще то у тебя хоть мощность (обороты) куллера меняются? Это ведь можно определить по звуку. Я, например, четко слышу переход на следующую ступеньку.
1. Нужно выяснить - меняется ли мощность куллера при разгоне - попытайся выяснить это по звуку.
2. Я так и не понял - каковы максимальные и минимальные значения в этих ячейках.
3. Имеются ли ячейки, имеющие одинаковые значения (могут немного и отличаться, например, на 1), как без нагрузки, так и с нагрузкой.
4. Тип ноутбука - полное наименование и обозначение. И что то мне припоминается, что ты делал замену, не помню чего. Тогда, возможно, причина может быть и в этом.
5. Если так ничего и неопределится, пробуй поработать с утилитой NBFC (NoteBook FanControl) — она построена на этом же принципе - может эта утилита определит что там у тебя. В AUR nbfc нет, бери с GitHub.

PS ... если не получится, значит не судьба и причина в твоем переделанном железе.
Ошибки не исчезают с опытом - они просто умнеют
Shatur
А вообще то у тебя хоть мощность (обороты) куллера меняются? Это ведь можно определить по звуку. Я, например, четко слышу переход на следующую ступеньку.
Да, конечно, я четко слышу перемены.
Сейчас еще раз перепроверил - тоже самое. Вот мой файл с дампом, первое состояние "до", второе - "средняя скорость вращения", третье - "максимальная".
Отвечая на вопросы:
1. Да)
2. На единичку меняется с 39 на 40. В файле можно это увидеть.
3. Нет, другие ячейки не меняются вообще. В первый раз я писал, что еще одно значение на единичку прыгало все время вперед, в независимости от скорости кулера. При сегодняшнем тесте такого не наблюдал.
4. Имеются, но, как я написал выше, не меняются :(
5. Попробую) Уточню по поводу сборки - просто выполнить build.sh?

vasek
PS ... если не получится, значит не судьба и причина в твоем переделанном железе.
Странно, если так. Но я уже ничему не удивляюсь)
Shatur
Странно, если так. Но я уже ничему не удивляюсь)
Да, такое впечатление, что вентилятор не управляется через embedded controller, читал, что такое случается на определенных типах ноутбуков, но сам сталкиваюсь с таким впервые. Получается, что нет смысла пробовать и утилиту NBFC.
Что то у тебя со своим железом все не так как у других.
Правда вспомнился один совет на одном из топиков - у ТС то же ничего не находилось и ему посоветовали обновить BIOS - вероятность небольшая, но есть.
Ошибки не исчезают с опытом - они просто умнеют
 
Зарегистрироваться или войдите чтобы оставить сообщение.