zmeyjr
@zmeyjr
Дисклеймер в профиле.

Есть ли возможность управлять скоростью вращения cooler'a CPU на (X)Ubuntu 14.04 на ноутбуке Lenovo B590?

Здравствуйте.
Такая проблема. Вентилятор охлаждения всегда работает на 100%, т.е. не зависимо от нагрузки скорость вращение неизменна.

Установленна OS Xubuntu 14.04, kernel 3.15.0-031500-generic.
Windows не ставил, не проверял, работает ли в данной ОС управление вентилятором.
Утилита sensors просто показывает "0 RPM"
@Lenovo:~$ sensors
acpitz-virtual-0
Adapter: Virtual device
temp1: +39.0°C (crit = +88.0°C)
temp2: +35.0°C (crit = +126.0°C)

coretemp-isa-0000
Adapter: ISA adapter
Physical id 0: +38.0°C (high = +72.0°C, crit = +90.0°C)
Core 0: +38.0°C (high = +72.0°C, crit = +90.0°C)
Core 1: +35.0°C (high = +72.0°C, crit = +90.0°C)

thinkpad-isa-0000
Adapter: ISA adapter
fan1: 0 RPM

Характеристики здесь: www.ulmart.ru/goods/603874#properties_full
Если нужно дополнительная информация, я добавлю.

UPD:
1. Это staff.science.uva.nl/~kholshei/thinkfan_guide установлено. С виду работает, но скорость вращения без изменения

sudo thinkfan -n
WARNING: Using default fan control in /proc/acpi/ibm/fan.
sleeptime=5, tmax=43, last_tmax=43, biased_tmax=43 -> fan="level 0"
sleeptime=2, tmax=45, last_tmax=41, biased_tmax=52 -> fan="level 2"
sleeptime=3, tmax=40, last_tmax=45, biased_tmax=44 -> fan="level 0"

2. Laptop-mode-tools менял на TLP - не помогает
3. Ядро, как написано выше, обновил до последнего.
4. pwmconfig - ругается:
Found the following fan sensors:
hwmon2/device/fan1_input current speed: 0 ... skipping!
There are no working fan sensors, all readings are 0.
Make sure you have a 3-wire fan connected.
  • Вопрос задан
  • 10634 просмотра
Решения вопроса 1
@pkkk
Решил эту проблему на своем b590 (модель с процессором Pentium 2020M, видео встроенное), линукс. Для Windows, полагаю, все аналогично, но инструменты придется использовать другие.

Пришлось порыться, в итоге выяснилось, что модуль ядра thinkpad_acpi (именно его использует утилита sensors и другие) работает некорректно на этой модели. Т.е. информацию о температуре он читает правильно (похоже эти данные находятся там же где и у Think Pad-ов), а вот скорость вентилятора считывает/устанавливает неверно.

Помогла утилита acer_ec.pl (чтение и запись в регистры Embedded Controller-а), описание

Итак, выполняем команду (тут и далее всё делаем от рута):
perl acer_ec.pl regs
вывод будет примерно такой
__ |   00	01	02	03	04	05	06	07	|	08	09	0A	0B	0C	0D	0E	0F
  	__	__	__	__	__	__	__	__	|	__	__	__	__	__	__	__	__
00 |	0	0	20	0	0	0	0	0	|	0	0	4	20	0	0	0	48	
10 |	3	0	4	0	0	0	0	0	|	0	0	0	0	0	0	0	0	
20 |	0	0	0	0	0	0	0	0	|	0	0	0	0	0	0	0	0	
30 |	0	0	0	0	0	0	0	0	|	0	0	0	0	0	0	0	0	
40 |	0	0	0	0	0	0	0	0	|	0	8	9	0	0	0	0	0	
50 |	35	0	163	108	0	0	1	0	|	140	0	4	24	1	29	11	14	
60 |	0	0	0	0	0	0	0	0	|	0	0	0	0	0	0	0	0	
70 |	98	51	20	0	8	97	0	0	|	8	1	0	65	0	0	0	0	
80 |	0	0	0	0	0	0	0	0	|	137	0	0	6	0	0	0	0	
90 |	0	2	0	4	196	199	0	0	|	0	177	0	0	0	0	4	11	
A0 |	129	128	128	128	128	128	128	128	|	39	35	35	0	57	14	37	33	
B0 |	128	128	128	0	0	0	0	0	|	26	0	11	0	0	0	0	3	
C0 |	4	2	176	4	4	0	0	0	|	0	0	0	0	0	0	0	0	
D0 |	45	27	60	55	78	73	84	80	|	85	81	87	72	88	89	0	0	
E0 |	0	0	0	0	0	0	0	0	|	0	0	0	0	0	0	0	0	
F0 |	72	57	69	67	48	57	87	87	|	40	49	46	48	50	41	32	0


Обратим внимание на значения в ячейках [0x93],[0x94],[0x95], если они ненулевые и [0x93] == 4, а [0x94] и [0x95] примерно в районе 200 (хотя эти 2 значения могут варьироваться), то у вас мой случай и далее надо читать следующий пост (да-да, именно в ветке про acer aspire):
forum.notebookreview.com/threads/acer-aspire-timel... (там же пользователи Windows могут почитать про аналоги acer_ec.pl для этой ОС)

В частности, там можно найти следующее:
[0x93] - CPU fan: Fan mode. 0x04 Auto, 0x14 Manual
[0x94] - CPU fan: Desired fan speed. 0x00-0xFF. With 0x00 being max speed and 0xFF means fan is off
[0x95] - CPU fan: Actual fan speed (in %? See note below).
следовательно, выходит, у нас вентилятор в автоматическом режиме (т.к. [0x93] == 0x04), а чтобы понизить обороты необходимо выставить ручной и далее задать самому скорость.

Несколько примеров (опять запускаем из-под рута):
#поставить небольшую скорость
perl acer_ec.pl := 0x93  0x14
perl acer_ec.pl := 0x94  0xe0   #можно поэкспериментировать с этим значением
#выключить вентилятор вовсе
perl acer_ec.pl := 0x93  0x14
perl acer_ec.pl := 0x94  0xff
#перевести обратно в автоматический режим
perl acer_ec.pl := 0x93  0x04


Мой скрипт, который вызывается cron-ом раз в минуту
root@b590:~# crontab -l
* * * * * PATH="$PATH:/root/ec" fan_control.sh

и выставляет обороты вентилятора в зависимости от температур возващаемых командой sensors. Не уверен, что этот вариант самый красивый и безопасный, но патчить thinkpad_acpi или что-то подобное желания не было.
fan_control.sh (название скрипта) и acer_ec.pl (с правами на запуск chmod +x acer_ec.pl) должны находиться в /root/ec
#!/bin/bash
temp= -- текущая температура CPU, опубликую позже
ec95=`acer_ec.pl ?= 0x95| grep 0xff`

if [ $temp -lt 64 ]; then
        val=0xff #off
        if [ -z "$ec95" ] && [ $temp -gt 44 ]; then
                val=0xe0 #lite
        fi
elif [ $temp -lt 70 ]; then
        val=0xc0 #medium
fi

echo `date` ${temp}C $val >> /tmp/fan_control.log

if [ -z $val ]; then
        acer_ec.pl := 0x93  0x04
else
        acer_ec.pl := 0x93  0x14
        acer_ec.pl := 0x94  $val
fi
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
arcman
@arcman
Разработчик
Та же проблема: B590, стоит две системы, в винде ноут существенно тише работает.
В Lubuntu 14.04 активнее гоняет вентилятор, хотя дует холодным.
Что пока раскопал:
В системе уже есть модуль "thinkpad_acpi", который умеет управлять вентилятором, но по умолчанию это отключено.
Об этом узнал из dmesg:
[   10.413043] thinkpad_acpi: ThinkPad ACPI Extras v0.25
[   10.413044] thinkpad_acpi: http://ibm-acpi.sf.net/
[   10.413045] thinkpad_acpi: ThinkPad BIOS H9ET74WW(1.11), EC unknown
[   10.413045] thinkpad_acpi: Lenovo Lenovo B590, model 20206
[   10.431897] thinkpad_acpi: detected a 8-level brightness capable ThinkPad
[   10.432021] thinkpad_acpi: This ThinkPad has standard ACPI backlight brightness control, supported by the ACPI video driver
[   10.432022] thinkpad_acpi: Disabling thinkpad-acpi brightness events by default...
[   10.478519] thinkpad_acpi: rfkill switch tpacpi_bluetooth_sw: radio is unblocked
[   10.480087] thinkpad_acpi: Standard ACPI backlight interface available, not loading native one
[   10.480151] thinkpad_acpi: Console audio control enabled, mode: monitor (read only)
[   10.486415] input: ThinkPad Extra Buttons as /devices/platform/thinkpad_acpi/input/input7


Собственно в логе есть ссылка на сам проект на SF (ibm-acpi.sourceforge.net/), где можно найти документ с его описанием (ibm-acpi.sourceforge.net/README).
Ещё нашёл how-to тут (www.thinkwiki.org/wiki/How_to_control_fan_speed).
Там приводится вариант для Ubuntu 8.04, но у меня так не работает (нет указанных файлов).
Как я понял нужно вначале разрешить управление скоростью вентилятора, передав модулю параметр "fan_control=1", после чего можно будет порулить.

Кстати, после починки регулятора вентилятора можно будет попробовать понизить напряжение на процессоре, что бы меньше грелся:
"Понижение рабочего напряжения процессора, или тюнинг Enhanced Intel SpeedStep"
habrahabr.ru/post/228233
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы