Пользователь
0,0
рейтинг
11 января 2013 в 05:00

Администрирование → Управляем вентилятором ноутбука через DSDT в Linux и не только

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

Нет, конечно, я слышал про всякие программы, которые могут вмешиваться в управление охлаждением и вроде кто-то ими успешно пользуется, но лично мне с ними вечно не везло, точнее не везло с железом, на котором я пытался их завести. Например, какое-то время назад я пробовал настроить fancontrol на довольно старом ноутбуке HP nc8430 с Убунтой. В итоге, известный скрипт sensors-detect не смог найти ни одного вентилятора в системе, а без этого fancontrol не работает. На разных форумах периодически появляются люди с похожими проблемами, но никто им толком помочь не может.

Тогда я в очередной раз забросил эту тему и вернулся к ней только на днях, когда читал обзоры, подыскивая себе новый ноутбук, и уже вроде бы выбрал почти всем хороший Sony S15, как опять в одном из обзоров читаю про него, что вентилятор в нем вообще не останавливается никогда, даже когда точно можно. Постоянно шумящий ноутбук я больше не хочу, а выбирать как всегда особо не из чего, учитывая, что надо 15", что TN матрицу я тоже больше не хочу, и бюджет ограничен. Ну сами знаете, как оно бывает. Может быть на нем все-таки заведется fancontrol и все будет хорошо, но а если нет? Никаких отчетов по его установке на этот ноутбук найти не удалось. Это побудило меня еще раз копнуть тему программного управления вентиляторами и пройти довольно непростой, но очень увлекательный квест.

Как оно в Windows


Я решил, что если мне удастся разобраться с охлаждением моего HP, то и с новым Sony скорее всего справлюсь. Если нет, придется искать другой ноутбук. Погуглив немного, удалось узнать, что под Windows есть замечательная программа Notebook Hardware Control, она бесплатная, её все хвалят. Что же, надо попробовать. Перезагрузился в Windows, скачал, запустил – программа действительно работает. Можно задать температуры, при которых вентилятор будет выключен совсем, работать на низких оборотах, средних и высоких, а самое главное можно задать мощности моторчика вентилятора в процентах для всех трех режимов. Именно мощности, а не обороты в секунду, но какая разница.

Оказалось, что в этом ноутбуке по умолчанию самым низким оборотам соответствует 55% мощности. Т. е. либо вентилятор молчит совсем, либо довольно громко гудит на своих 55%, а при повышении температуры еще громче: 70%, 80% и 100%. При этом молчит он только до 50 градусов, а потом сразу начинает работать. Процессор стоит довольно горячий – Core 2 Duo T7600, меньше 50 градусов он бывает только сразу после включения, потом температура быстро становится выше, даже при нулевой нагрузке, и уже ни в какую не хочет опускаться ниже 50 C, только если раскрутить вентилятор на полную и оставить так на несколько минут, и то когда в комнате не очень жарко. На дефолтных 55% у вентилятора просто нет никаких шансов охладить процессор обратно ниже 50 С. Хотя может быть надо просто попробовать термопасту поменять, но сейчас речь не об этом.

С помощью программы я просто установил минимальную мощность равной 30% и поднял минимальную температуру, при которой включается вентилятор до 60 С. Температура корпуса при этом на ощупь почти не изменилась, как было довольно горячо, так и осталось, а вот тише стало намного. Днем вентилятор на 30% мощности можно услышать только если поднести к нему ухо. Ночью в тихой комнате его вполне слышно, но терпимо. Это гораздо лучше, чем было. Если еще чуть-чуть поднять минимальную температуру и перевести процессор и видеокарту в режим энергосбережения, можно получить абсолютно тихий ноутбук, только жесткий диск слышно как вращается, но это решается только заменой его на SSD, что вобщем-то в любом случае хорошо бы сделать. Короче, оказывается возможность полностью контролировать температуру и шум есть. Тут бы и сказочки конец, но это же под Windows, а мне надо под Linux!

Как оно под Linux


Под Linux такой программы нет. И как она работает, я честно говоря до сих пор до конца не понимаю, а на тот момент я там только подсмотрел ключевые слова, которые потом очень пригодились: ACPI и DSDT. К ним я еще вернусь позже. А пока, я перезагрузился обратно в Ubuntu и начал внимательно изучать предварительно нагугленный путь в sysfs: /sys/class/thermal. Там оказалось вот что:
lrwxrwxrwx 1 root root 0 Jan 11  2013 cooling_device0
lrwxrwxrwx 1 root root 0 Jan 11  2013 cooling_device1
lrwxrwxrwx 1 root root 0 Jan 11  2013 cooling_device2
lrwxrwxrwx 1 root root 0 Jan 11  2013 cooling_device3
lrwxrwxrwx 1 root root 0 Jan 11  2013 cooling_device4
lrwxrwxrwx 1 root root 0 Jan 11  2013 cooling_device5
lrwxrwxrwx 1 root root 0 Jan 11  2013 cooling_device6
lrwxrwxrwx 1 root root 0 Jan 11  2013 cooling_device7
lrwxrwxrwx 1 root root 0 Jan 11  2013 cooling_device8
lrwxrwxrwx 1 root root 0 Jan 10 21:26 cooling_device9
lrwxrwxrwx 1 root root 0 Jan 11  2013 thermal_zone0
lrwxrwxrwx 1 root root 0 Jan 11  2013 thermal_zone1
lrwxrwxrwx 1 root root 0 Jan 11  2013 thermal_zone2
lrwxrwxrwx 1 root root 0 Jan 11  2013 thermal_zone3
lrwxrwxrwx 1 root root 0 Jan 11  2013 thermal_zone4
lrwxrwxrwx 1 root root 0 Jan 11  2013 thermal_zone5


Целых 10 cooling_devices и 6 thermal_zones. С термальными зонами более менее все ясно, температуры CPU, GPU, какие-то еще три точки, не особо важно. А последняя thermal_zone5 – это вовсе не температура, как выяснилось опытным путем, а текущая мощность вентилятора. Браво HP! Теперь понятно почему sensors-detect ничего не нашел, тут такой бардак, что черт ногу сломит. Вот так вот просто записав какое-нибудь число в thermal_zone5/temp поменять мощность нельзя. Файл только для чтения, оно и понятно.

Теперь посмотрим на cooling_device*, зачем их 10? Внутри каждой папки примерно вот такое содержание:
drwxr-xr-x 2 root root    0 Jan 10 21:35 power
-rw-r--r-- 1 root root 4.0K Jan 10 21:35 cur_state
lrwxrwxrwx 1 root root    0 Jan 10 21:35 device
-r--r--r-- 1 root root 4.0K Jan 10 21:35 max_state
lrwxrwxrwx 1 root root    0 Jan 11  2013 subsystem
-r--r--r-- 1 root root 4.0K Jan 10 21:35 type
-rw-r--r-- 1 root root 4.0K Jan 11  2013 uevent


В файлах type для cooling_device c 0 по 6 написано Fan, в 7-8 — Processor, а в 9 — LCD. Хм, я точно знаю, что у меня в ноутбуке только один вентилятор. Процессоров, можно сказать, действительно два и есть один LCD экран, это правда. Но это же не cooling devices, зачем они тут? Ладно, будем пробовать разбираться дальше в этом бардаке. В файлах cur_state бывает либо 0, либо 1. Ага, похоже на какую-то такую развесистую битовую маску. Если попробовать во все cur_state записать нули с помощью «echo 0 | sudo tee /sys/thermal/cooling_device*/cur_state», то вентилятор остановится. А если записать единицу в cooling_device3/cur_state, то вентилятор закрутится на 55%. Ура, у меня получилось управлять вентилятором вручную в Убунте. Тут бы можно было бы сколхозить какой-нибудь демон на Питоне, который бы ставил нужные мощности при определенных температурах, но во-первых, так можно установить только «стандартные» мощности из набора 0, 55, 70, 80, 100, а мне теперь надо 30. А во-вторых, что-то же еще в системе меняет эти биты. Надо бы попробовать разобраться, что именно этим занимается и как на это можно влиять. Иначе говоря, «we have to go deeper». Тут я вспомнил про первое ключевое слово подсказанное той программой под Windows: ACPI.

ACPI


Вроде есть такой демон в Убунте acpid. Может это он управляет всем этим? Но нет, судя по описанию он только следит за нажатием на кнопку выключения, опусканием крышки и всем таким прочим. И действительно, даже если его остановить, вентилятор продолжит работать как ни в чём не бывало, точно также меняя мощность в зависимости от температуры. Но я же видел в той программе, что в ACPI есть много чего, в том числе некая таблица DSDT (Differentiated System Description Table), которая на самом деле не совсем таблица, а скорее код на языке, который называется AML (ACPI Machine Language). Точнее, код пишется на ASL (ACPI Source Language), а потом компилируется в AML, т. е. AML — это байт-код, его, в свою очередь, легко декомпилировать обратно в ASL. Надеюсь я вас не запутал, уважаемые читатели. Кроме DSDT есть и другие таблицы — SSDT и т.д., в них тоже AML-код и данные, но самое интересное обычно содержится в DSDT. В коде этих таблиц находится описание всех устройств компьютера и алгоритмы управления их питанием, в том числе, конечно же, и вентилятора.

Раз есть байт-код, значит где-то должен быть интерпретатор, который будет его исполнять. И действительно, ядро каждой ОС, которая поддерживает ACPI, должно содержать виртуальную машину для выполнения AML-кода DSDT и других таблиц. Есть она и в Linux. Вот и нашлось то, что меняет эти битики в файлах cur_state, это само ядро.

Код таблиц можно взять в sysfs, в директории /sys/firmware/acpi/tables/. Но сначала надо установить интеловский компилятор для ASL/AML, в Debian-based системах это делается так: «sudo apt-get install iasl». Потом просто сделав «sudo cat /sys/firmware/acpi/tables/DSDT > /tmp/dsdt.dat» и «iasl -d /tmp/dsdt.dat», мы получим исходный код DSDT в файле /tmp/dsdt.dsl. ASL хоть и трудно читаемый, но довольно простой сам по себе язык, видимо, специально спроектированный так, чтобы было легче писать его интерпретаор, т. к. для каждой ОС он должен быть свой. Я довольно быстро разобрался как мне поменять мощности вентилятора, просто поискал те самые мощности (55, 70, 80, 100) переведя в шестнадцатеричную ситему и они сразу нашлись. Сборка делается командой «iasl -tc /tmp/dsdt.dsl».

При этом могут вылезти ошибки и предупреждения, причем в тех строках, которые вы и не трогали. Все говорят, что происходит это потому что почти все производители биосов пользуются компилятором от Microsoft, а он просто игнорирует многие ошибки, интеловский гораздо строже. Но у меня есть версия, что программисты просто отказываются нормально писать на этом дурацком языке. Помимо прочего, я в своем DSDT нашел довольно досадную опечатку в названии метода, который возвращает текущий уровень подсветки экрана из-за этого ядро при загрузке всегда ругалось «[Firmware Bug]: ACPI: No _BQC method, cannot determine initial brightness», и при выходе из сна настройки подсветки всегда сбивались. Так что даже если с охлаждением у вас все в порядке, повод посмотреть на свой DSDT все равно есть. В сети полно рецептов, как исправлять те или иные ошибки в DSDT, здесь я не буду на этом подробно останавливаться.

Получается, что если мы можем декомпилировать, редактировать и компилировать обратно в байт-код DSDT и другие таблицы, то мы можем делать всё что угодно с питанием любых устройств. Теперь надо только как-то подсунуть ядру патченный DSDT. Делать это опасно, можно что-нибудь сжечь по неосторожности, поэтому 100 раз подумайте нужно ли оно вам, прежде чем делать что-либо из описанного ниже.

Как заставить ядро выполнять пропатченный DSDT


Весь AML-код хранится в BIOS и ядро, по умолчанию, берет его оттуда. Первое, что приходит в голову, сделать свой образ BIOS с патченной DSDT и прошить его. Риск получить кирпич очень велик, зато при удачном исходе все изменения будут доступны сразу во всех ОС, которые вы используете. Но, конечно, есть способы получше и побезопаснее.

Перед тем, как писать эту статью поискал, что есть на Хабре на эту тему и очень позавидовал тому, как просто это делается во FreeBSD.
Для Linux во всяких HowTo чаще всего советуют пересобрать ядро из исходников интегрировав туда свой DSDT. Таких инструкций много, там ничего сложного, на Хабре тоже про это есть, так что не буду про это ещё раз.

Раньше, до версии ядра 2.6, был удобный способ загрузки через initrd, но потом пришел Линус и сказал, что так делать плохо, а надо либо хорошо, либо никак, и способ убрали. Линусу придется поверить, раз он говорит, что так надо, значит надо.
Говорят, что ещё можно через GRUB2 ядру передать нужный DSDT. Ядро мне пересобирать очень не хотелось и я решил попробовать. Сначала я прописывал в конфиг груба только DSDT, у автора той статьи так работало, но ядро вообще его не грузило, в логе было примерно следующее:
ACPI Exception: AE_NO_ACPI_TABLES, While loading namespace from ACPI tables (20110623/tbxface-642)
ACPI: Unable to load the System Description Tables
PM: Registering ACPI NVS region at d7fe5600 (76288 bytes)
ACPI: Interpreter disabled.


Соответственно, ACPI вообще не работал. Страшное дело, между прочим. Wi-fi у меня при этом не работал, кнопка выключения выключала все сразу, а не запускала нормальный shutdown. Короче, пользоваться совсем нельзя. Потом я еще попробовал вообще все таблицы передать в параметрах, получилось так:
ACPI: RSDP 0009f500 00024 (v03       )
ACPI: XSDT d74ad95c 00084 (v01                 00000000      00000000)
ACPI: SSDT d74aca78 004B9 (v01 HP        CpuPm 00003000 INTL 20100528)
ACPI: SSDT d74acf31 000A0 (v01 HP      Cpu1Tst 00003000 INTL 20100528)
ACPI: SSDT d74acfd1 00232 (v01 HP      Cpu0Tst 00003000 INTL 20100528)
ACPI: SSDT d74ad203 002E0 (v01 HP       HPQSAT 00000001 INTL 20100528)
ACPI: SSDT d74ad4e3 00059 (v01 HP       HPQNLP 00000001 INTL 20100528)
ACPI: TCPA d74ad53c 00032 (v02 HP     30A3     00000001 HP   00000001)
ACPI: MCFG d74ad56e 0003C (v01 HP     30A3     00000001 HP   00000001)
ACPI: APIC d74ad5aa 00068 (v01 HP     30A3     00000001 HP   00000001)
ACPI: HPET d74ad612 00038 (v01 HP     30A3     00000001 HP   00000001)
ACPI: SLIC d74ad64a 00176 (v01 HPQOEM SLIC-MPC 00000001 HP   00000001)
ACPI: FACS d74ad7c0 00040
ACPI: FACP d74ad800 000F4 (v04 HP     30A3     00000003 HP   00000001)
ACPI: DSDT d749d420 0F658 (v01 HP       nc8430 00010000 INTL 20100528)
ACPI Error: Null physical address for ACPI table [FACS] (20110623/tbutils-459)
<...>
ACPI Warning: Could not map the FACS table (20110623/utxface-168)
ACPI: Unable to enable ACPI


На этот раз была попытка загрузить DSDT, но там видимо есть какая-то ссылка на таблицу FACS, которую в данном окружении не получается разрешить. Немного помучившись с этим, раз 20 перезагрузив систему, мне так и не удалось заставить все работать этим способом. Плюнув на всё, поставил пересобираться ядро и лег спать, с утра все заработало как надо:
ACPI: RSDP 000f96a0 00024 (v02 HP    )
ACPI: XSDT d7fe57c8 0007C (v01 HPQOEM SLIC-MPC 00000001 HP   00000001)
ACPI: FACP d7fe5684 000F4 (v04 HP     30A3     00000003 HP   00000001)
ACPI: Override [DSDT-  nc8430], this is unsafe: tainting kernel
ACPI: DSDT @ 0xd7fe5acc Table override, replaced with:
ACPI: DSDT c181c9e0 0F658 (v01 HP       nc8430 00010000 INTL 20100528)
ACPI: FACS d7ff7e80 00040
ACPI: SLIC d7fe5844 00176 (v01 HPQOEM SLIC-MPC 00000001 HP   00000001)
ACPI: HPET d7fe59bc 00038 (v01 HP     30A3     00000001 HP   00000001)
ACPI: APIC d7fe59f4 00068 (v01 HP     30A3     00000001 HP   00000001)
ACPI: MCFG d7fe5a5c 0003C (v01 HP     30A3     00000001 HP   00000001)
ACPI: TCPA d7fe5a98 00032 (v02 HP     30A3     00000001 HP   00000001)
ACPI: SSDT d7ff5e97 00059 (v01 HP       HPQNLP 00000001 MSFT 0100000E)
ACPI: SSDT d7ff5ef0 00326 (v01 HP       HPQSAT 00000001 MSFT 0100000E)
ACPI: SSDT d7ff6a6b 0025F (v01 HP      Cpu0Tst 00003000 INTL 20060317)
ACPI: SSDT d7ff6cca 000A6 (v01 HP      Cpu1Tst 00003000 INTL 20060317)
ACPI: SSDT d7ff6d70 004D7 (v01 HP        CpuPm 00003000 INTL 20060317)
<...>
ACPI: Interpreter enabled


Можно было бы открывать шампанское и праздновать успех, но в голове свербила мысль, что можно же сделать как-то лучше. Ведь та программа под Windows позволяла все менять вообще на ходу. Оказывается и в Linux так тоже можно сделать, вот документация. Об этом способе на форумах почти не пишут, а способ на самом деле замечательный. Обычно-то и надо переопределить один-два метода, а если при этом ещё и перезагружаться не надо, то это же вообще красота.

Я подготовил .aml файл с переписанным методом управления вентилятором и, радостно предвкушая как сейчас все замечательно заработает набираю «sudo cat ./fan-speeds.aml > /sys/kernel/debug/acpi/custom_method» и… получаю «zsh: permission denied: /sys/kernel/debug/acpi/custom_method». Как так permission denied? Я не забыл сделать sudo, директория /sys/kernel/debug/acpi/ судя по permissions открыта на запись для рута, нет никаких там immutable атрибутов и прочего. WTF? Оказалось, что эту фичу объявили дырой, т. к. якобы бывают такие окружения, где рут может не всё. Например, не может грузить модули ядра после того, как система полностью загрузится. Зачем и кому такое нужно, я честно говоря даже предполагать боюсь, но факт. Вроде бы в любой Убунте рут точно может делать все, что угодно, поэтому не очень понятно почему их Security Team тоже считает, что это очень серьезная уязвимость. К счастью, совсем это не выпилили из ядра, а просто выключили в конфиге по умолчанию и сделали возможность грузить отдельно, как модуль. Ну что же, собрать один модуль, это не тоже самое, что все ядро, а подключение модулей нам в Убунте, слава богу, пока не запретили.

Исходники ядра у меня уже были, поэтому по инструкции я собрал, поставил и включил модуль custom_method. Теперь все работало просто прекрасно.

Осталось как следует, а не по диагонали почитать спецификацию ACPI на досуге и подумать, что еще можно улучшить в ноутбуке. Программных проблем в системах охлаждения ноутбуков я теперь точно не боюсь. Надеюсь, что и вы теперь тоже, если вдруг боялись раньше.
Urevic @Urevic
карма
33,0
рейтинг 0,0
Реклама помогает поддерживать и развивать наши сервисы

Подробнее
Реклама

Самое читаемое Администрирование

Комментарии (34)

  • 0
    Как это нет? А fancontrol тогда что?

    Упс, невнимательно читал :)
  • +1
    набираю «sudo cat ./fan-speeds.aml > /sys/kernel/debug/acpi/custom_method» и… получаю «zsh: permission denied: /sys/kernel/debug/acpi/custom_method». Как так permission denied? Я не забыл сделать sudo, директория /sys/kernel/debug/acpi/ судя по permissions открыта на запись для рута, нет никаких там immutable атрибутов и прочего. WTF?

    sudo в этой команде относится только к cat, он и выполнился под рутом. А вот перенаправление выполнилось под обычным текущим пользователем, и, соответственно, permission denied. Правильная идиома для такого случая:
    sudo tee /sys/kernel/debug/acpi/custom_method < ./fan-speeds.aml > /dev/null
    • 0
      А чтобы не ломать голову, для таких вещей советую включить рута и делать всё под ним.
      • 0
        В смысле включить? Просто sudo -s и Вы root! ;-)
        • –1
          Или так. Но я предпочитаю задать пароль руту, и пользоваться как обычно…
        • +5
          Лучше sudo -i
    • 0
      Да, вы правы, я наверное на самом деле набирал:
      sudo zsh -c "cat ./fan-speeds.aml > /sys/kernel/debug/acpi/custom_method"
      

      А при написании статьи ошибся, т. к. часто на этом спотыкаюсь.
  • 0
    Насчёт сильно горячего процессора — странное у вас. У меня в старом ноутбуке Cor2Duo стоял T7300, вроде бы от вашего не сильно отличается; но из опыта офисной работы могу сказать, что когда (зимой) температура в комнате падала до 19-20 градусов, вентилятор даже и вовсе не включался (ноут Acer Aspire 5720G, если я ничего не путаю)
    • 0
      Ну я там упомянул, что возможно у меня что-то не то с термопастой, много тепла просто не доходит до радиатора и получается, что вентилятор вообще почти в холостую работает.
  • +1
    Не по теме: если ищите 15 ноут с хорошей матрицей, посмотрите на thinkpad t530 (w530) с FullHD матрицей. Там хоть и TN но очень хорошая, 95% цветовой охват, отличные углы обзора, яркость.
    Я тоже смотрел на эту соньку, но у нее хоть и IPS, но субьективно экран хуже.
    Система охлаждения совсем не шумит, даже в играх шум минимален (у меня версия с nvidia). Единственный минус конечно вес.
    • 0
      Спасибо, действительно интересный вариант. Как раз думал, что вот в макбуки же ставят хорошие TN и выглядит все очень пристойно. Про то, что в thinkpad'ах оно может быть также как-то и не задумывался. Только эта модель с Nvidia дороговата получается, но может она и не нужна в рабочем ноуте. На разницу в цене можно какую-нибудь xbox купить и радоваться.
      • 0
        Есть модель и без nvidia, матрица там та же, главное чтобы была FHD, так как HD там обычная отстойная. А шуметь только меньше должно :)
      • 0
        Обманул — похоже на российском рынке нету модели с fhd и без NVidia :(
        • 0
          Да вроде есть, стоит около 46 килорублей. Правда смотрю пишут про него, что действительно тихий, но довольно сильно греется, даже при простое. У вас есть такое?

          Эх, лучше бы производители вместо оптических приводов стали ставить большие низкооборотистые кулеры, тогда бы было действительно холодно и тихо.
  • +1
    Например, не может грузить модули ядра после того, как система полностью загрузится. Зачем и кому такое нужно, я честно говоря даже предполагать боюсь, но факт.

    Защита от руткитов. У меня, например, на серверах ядро всегда собрано вообще без поддержки загружаемых модулей, а все подобные места (работа напрямую с памятью) закрыты на запись и, по возможности, на чтение через grsecurity и PaX, а сервисы ограничены через RBAC. Тогда при взломе каких-либо сервисов, работающих с правами рута (которых, кстати, совсем немного) на работу остальной системы взломщик повлиять не может.

    За статью спасибо.
    • 0
      А, вот оно что. Ну ограничить сервисы, это да. Но ведь у интерактивного рута должна же остаться возможность, скажем, вообще пересобрать и поставить новое ядро. Или это делается только после перезагрузки в какой-нибудь специальный режим?
      • 0
        Ну для начала у SSH есть немного другие права, чем у, например, postfix. Во-2, все обслуживание производится после перевода grsecurity в «инженерный режим», на который установлен совсем отдельный пароль.
        • –1
          Ну, если у вас там военные тайны на серверах, то наверное такая схема оправдана.
          • 0
            Военные (гос. тайны) охраняются намного серьезнее. Обычно даже в большую сеть не выпускаются.

            А то, что я описал — это желательно сделать любому администратору сервера, которым пользуются другие люди.
  • +2
    Спасибо, было интересно узнать как это в линуксе.

    Теперь вы практически хакинтошник :)
    Чтобы нормально грузить MacOS на обычном железе — нужно тоже активно править DSDT, притворяясь железом от Apple. Правда там с загрузкой проще — альтернативным bootloader-ам можно подсунуть готовый aml
    • 0
      Да, пока читал всякое про ACPI часто натыкался на форумы хакинтошников, довольно интересное развлечение оказывается.
  • +1
    Копался как-то с аналогичной задачей в ноутбуке от Сасмунга — нашлась родная утилита под убунту с управлением скоростью вентилятора. А вот перегрев так побороть и не удалось. Греется чипсет, на котором вообще нет никакого охлаждения…
    • 0
      У Делла есть какие-то утилиты, у Асуса есть, у Самсунга вот тоже оказывается, а у HP ничего нет. Я, пожалуй, их ноуты я больше покупать не буду.
      • 0
        У HP есть вот такое:

        • 0
          Это под Linux? Если да, то где брать? Гугл ничего не находит. Плюс, я так понимаю CoolSense, это какая-то технология, которая есть только в новых ноутах. В моем старом, вроде бы такой нет.

          А ещё мне кажется, что эта «технология» не более чем marketing bullshit. Это просто управление режимами энергопотребления. Оно уже давно везде есть стандартными средствами ОС.
          • 0
            Не, это виндовое. Подробностей работы не знаю, но кулер после переключения в coolest mode начинает реветь сразу же.
            • 0
              А, ну я про Linux говорил. Но в любом случае, с этой утилитой и технологией все понятно. Там единственная относительно полезная штука, это датчик, который определяет на столе стоит ноут или на коленках у человека, и можно менять режимы охлаждения в зависимости от этого.
  • +3
    Modern PCs are horrible. ACPI is a complete design disaster in every way. But we're kind of stuck with it. If any Intel people are listening to this and you had anything to do with ACPI, shoot yourself now, before you reproduce. © Linus.
  • 0
    У меня плата intel dp67bg, так вот там датчики температуры и вентиляторов не работают, и включить их впринципе не получился, т.к. пространство адресов конфиликтует с адресами ядра linux (в новых ядрах вроде уже не конфиликтует).
    • 0
      Это странно, т.к. в ACPI для каждого устройства описываются все ресурсы, которые оно может использовать, специально для того, чтобы ядро их не занимало ничем другим. Ну и датчики, по идее, не должны никаких ресурсов использовать вообще.

      Там может просто баг в ядре просто был, который проявлялся на вашем биосе. Ну или, что скорее, баг в биосе, который старое ядро не умело обходить, а потом в новой версии научилось. В ACPI коде разных производителей есть много однотипных багов, которые и виндовое и линуксовое ядра умеют фиксить автоматически.
      • 0
        может я с терминологией что напутал, в общем нашёл пруф

        > ACPI: I/O resource w83627ehf [0x295-0x296] conflicts with ACPI region HWRE [0x290-0x299]
        bugs.launchpad.net/ubuntu/+source/linux/+bug/382211

        > With previous kernels hwmon drivers used to drive IO ranges which were potentially used by the ACPI code in your BIOS
        www.lm-sensors.org/wiki/FAQ/Chapter3#Mysensorshavestoppedworkinginkernel2.6.31
        • 0
          Судя по всему, это была ошибка в драйвере чипа, который контролирует температурные датчики на вашей плате.
  • 0
    Очень увлекательно. У меня тоже была проблема с вентилятором на старом Sony FZ11MR. Стал вообще загинаться. Оказалось, что нужно было банально почистить, в Пекине он полностью забился пылью. Жив до сих пор, но все равно шумный и при этом всегда сильно грелся. В общем, я как-то решил, что Sony больше не буду покупать, хоть он и спасал иногда от холода :) Может быть просто мне неудачная модель попалась, но ты тоже упомянул, что пользователи жалуются на вентилятор, ну и статья, можно сказать, благодаря Sony. На 13-ти дюймовом мне гораздо удобнее работать, более легкий и компактный, а за столом можно монитор подключить. Ты в результате купил новый ноутбук?
    • 0
      Ну пыль, понятно, какой бы ноут ни был, раз в год по-любому надо чистить. Пока так ничего и не купил, все никак не выберусь никуда, чтобы вживую посмотреть thinkpad'ы.

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