LINUX.ORG.RU

изменеие температурного порога включения/отключения вентилятора

 ,


0

2

Здравствуйте, имеется ноут на atom n450, появилась необходимость увеличить значение температуры при котором бы начинал вращаться кулер.
...вот все что имеется

root@Lenovo-IdeaPad:/etc/init.d# sensors
acpitz-virtual-0
Adapter: Virtual device
temp1:        +54.0°C  (crit = +100.0°C)

coretemp-isa-0000
Adapter: ISA adapter
Core 0:       +51.0°C  (crit = +100.0°C)
, а вот вывод pwmconfig
/usr/sbin/pwmconfig: There are no pwm-capable sensor modules installed

Вентилятор начинает молотить при 55 градусах и выключается при 50, рылся в proc и sys, но чего-либо связанного с кулером не нашел.
...буду благодарен за любую идею


Ответ на: комментарий от unikum

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

Trauka
() автор топика

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

Trauka
() автор топика
Ответ на: комментарий от Trauka

...друзья, задам последний вопрос в этой теме, если получу четкий ответ «НЕТ», то помечу ее решенной и навсегда забуду про кулер. Сам вопрос: «Если я поставлю Intelовские драйвера вот от сюда, можно ли будет достучаться до вентилятора?» Вопрос, конечно, нубский, что-может быть проще «поставь-да-проверь», но тем немение, кто шарит в исходниках гляньте опытным глазом.

Trauka
() автор топика
Ответ на: комментарий от Trauka

Неа, это драйвера к видеоядру. Скорее всего, к вентилятору никак не подобраться, потому что он управляется прошивкой (подсистемой ACPI), на которую ни у кого нет документации.

intelfx ★★★★★
()
Последнее исправление: intelfx (всего исправлений: 1)
Ответ на: комментарий от Trauka

Хотя, судя по описанию этой программы, можно сделать костыль, который будет записывать фейковую температуру в указанное поле (_SB.PCI0.LPCB.EC0.RTMP).

intelfx ★★★★★
()
Ответ на: комментарий от Trauka

Да, есть способ (http://stackoverflow.com/a/7390330/857932). Модуль ядра под названием acpi_call; вроде бы, он умеет делать то, что нужно (в крайнем случае можно допилить).

Но это эпичный костыль. Зная название поля, можно уже и пореверсить DSDT и разобраться в том, как управляется вентилятор... Но это дело на пару дней минимум, и вообще, cast carasin.

intelfx ★★★★★
()
Ответ на: комментарий от intelfx

...спасибо, ток не бросайте на «один-на-один» c DSDT, ковырял его (на хабре нашел статью), но не разобрался. Помогите что сделать, что бы настроить порог.

Trauka
() автор топика
Ответ на: комментарий от intelfx

Вот что выдало при сборке

root@Lenovo-IdeaPad:/home/user/acpi_call# make
make -C /lib/modules/3.2.0-4-amd64/build M=/home/user/acpi_call modules
make: *** /lib/modules/3.2.0-4-amd64/build: Нет такого файла или каталога.  Останов.
make: *** [default] Ошибка 2
root@Lenovo-IdeaPad:/home/user/acpi_call#

Trauka
() автор топика
Ответ на: комментарий от intelfx

Хотя, судя по описанию этой программы, можно сделать костыль, который будет записывать фейковую температуру в указанное поле (_SB.PCI0.LPCB.EC0.RTMP).

...сори за офтоп, но специально установил другую операционку, что бы найти способ управления кулером и нашел, она работает подменой температуры, как это в linux реализовать

Trauka
() автор топика
Ответ на: комментарий от Trauka

Если бы я сам имел хоть какие-нибудь скиллы в реверсинге этой вещи. Я carasin'а позвал, может, что скажет — он любит треды про ACPI.

intelfx ★★★★★
()
Ответ на: комментарий от Trauka

А что за дистрибутив? Надо поставить заголовочные файлы для ядра.

Если Ubuntu Desktop и стандартное ядро, то sudo apt-get install linux-headers-generic. Потом ещё раз попробовать.

intelfx ★★★★★
()
Ответ на: комментарий от intelfx

А что за дистрибутив?

Debian Wheezy
давайте carasin'а позовем вместе

Trauka
() автор топика
Ответ на: комментарий от intelfx

Модуль acpi_call (если мы его соберём), по идее, должен такое уметь.

он это умеет- 100%, на офтопе такое работает

Trauka
() автор топика
Ответ на: комментарий от intelfx

Так я про то же и говорю. Модуль acpi_call (если мы его соберём), по идее, должен такое уметь.

модуль собран

root@Lenovo-IdeaPad:/home/user# cat /proc/acpi/call
not calledroot@Lenovo-IdeaPad:/home/user#

выполняю
root@Lenovo-IdeaPad:/home/user# echo '\_SB.PCI0.LPCB.EC0.RTMP' > /proc/acpi/call
root@Lenovo-IdeaPad:/home/user# cat /proc/acpi/call
0x35root@Lenovo-IdeaPad:/home/user#

Trauka
() автор топика
Ответ на: комментарий от intelfx

Ой не... Я пас.

Когда была у меня необходимость править DSDT, я кое-как вроде бы даже справился, но результат меня всё равно не удовлетворил. Да и необходимость вкомпиливать таблицу в ядро (с каждым апдейтом нужно постоянно пересобирать ядро самому) — явно не самый простой путь.

carasin ★★★★★
()
Ответ на: комментарий от carasin

Я на дебиане, апдейты не часто выходят. ...а что именно правили в DSDT и почему результат не удовлетворил?

Trauka
() автор топика
Ответ на: комментарий от Trauka

Посмотрите мои первые темы на этом форуме. Там речь про Asus EeePC 1201N. Мерзенькая довольно железка с кривущим ACPI. С одной стороны, всё железо в нём должно нормально поддерживаться а GNU/Linux, но из-за криворукости разработчиков в Asus'е всё было очень печально.

carasin ★★★★★
()
Ответ на: комментарий от Trauka

К сожалению, сей вопрос не по адресу. Я вообще в IT в общем и в GNULinux в частности скорее любитель, нежели профи. И уж тем более я не кодер :)

carasin ★★★★★
()
Ответ на: комментарий от Trauka

Теперь стоит, наверное, попытаться сделать так:

while true; do echo "\_SB.PCI0.LPCB.EC0.RTMP 0x28" > /proc/acpi/call || break; sleep 0.05; done

Это должно каждые 50 миллисекунд записывать 40 (0x28) в поле температуры внутри EC.

Если не сработает — значит, надо допиливать acpi_call. Просто исходно он предназначался для вызова функций, а не для изменения переменных...

intelfx ★★★★★
()
Ответ на: комментарий от intelfx

Теперь стоит, наверное, попытаться сделать так

сделал-ничего не поменялось, ...но это точно рабочая команда? я вместо " ставлю '. Хотя и так и сяк пробывал- ничего не меняется

Trauka
() автор топика
Ответ на: комментарий от Trauka

Должна быть рабочая.

Что ж, не взлетело. Поставь acpica-tools, запусти от рута acpidump > acpi_tables и выложи куда-нибудь полученный файл acpi_tables. Будем посмотреть на DSDT, хотя я ничего не гарантирую...

intelfx ★★★★★
()
Ответ на: комментарий от Trauka

Поглядел. Ничего такого, что можно было бы очевидно поправить, нет. Видимо, вентилятор управляется прошивкой, без вмешательства ACPI вообще. Сейчас посмотрю, можно ли поправить acpi_call, чтобы он делал что нужно.

intelfx ★★★★★
()
Ответ на: комментарий от intelfx

кстати, при обратной компиляции выдает

Compilation complete. 10 Errors, 9 Warnings, 6 Remarks, 803 Optimizations

- APCI у меня вообще кривой.
Это я так, к слову.
Может попробывать BIOS отредактировать, или хотя бы попытаться и поковыряться в нем, а если что не так- то я все равно новую «мамку» жду. Просто на новой материнке хочется иметь вылизанную систему. Самое обидное, что вроде все и настроил, а кулер стоит 3х-кантактный, т.е. должен даже обороты видеть, а он не только их не видит, вообще кулер не видно

Trauka
() автор топика
Ответ на: комментарий от Trauka

Всё, что можно отредактировать, — это как раз DSDT.

Железо-то наверняка видит обороты. Просто EC (микроконтроллер на материнской плате) не отдаёт эти данные операционной системе.

intelfx ★★★★★
()
Ответ на: комментарий от intelfx

А как это сделать?
Вообще, кулер начал молотить на низкой температуре после обновления BIOS, а я не сделал бэкап. В нете бэкап не найти. Пользователей моего бука- пару человек до которых не достучаться. Поддержка lenovo молчит. Заказал новую материнку из-за BIOS. Как получу- bios сразу запоролю и забуду пороль.

Trauka
() автор топика
Ответ на: комментарий от Trauka

Отредактировать DSDT? Ну это как раз тот исходник. Только там нечего редактировать.

Опять же, как будет время (пока что его особо нет), я посмотрю поглубже в acpi_call и модифицирую его так, чтобы можно было «корректировать» температуру (т. е. применять описанный выше костыль).

Одного не понимаю — зачем заказывать новую материнскую плату из-за BIOS. Не проще ли откатиться на старую версию?

И да, залочить настройки от самого себя — идея плохая. Зачем, если можно разобраться в них?

intelfx ★★★★★
()
Ответ на: комментарий от intelfx

Не проще ли откатиться на старую версию

...как оказалось старой версии нет ни у кого, даже на сайте техподдержки.

залочить настройки от самого себя — идея плохая

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

Trauka
() автор топика
Ответ на: комментарий от carasin

Да и необходимость вкомпиливать таблицу в ядро (с каждым апдейтом нужно постоянно пересобирать ядро самому) — явно не самый простой путь


вот на хабре самый простой путь, хотя бы что бы проверять DSDT

Trauka
() автор топика
Ответ на: комментарий от Trauka

...немного продвинулся

Store (\_SB.PCI0.LPCB.EC0.RTMP, Local1)
                    Release (MUTT)
                    Return (Add (0x0AAC, Multiply (Local0, 0x0A)))

если вместо 0x0AAC поставить какое-нибудь значение отличное от 0AAC, то отображаемая температура меняется на разность этих значений, можно температуру хоть в минус вывести- вентилятору пофиг всеравно

Trauka
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.