- Охлаждение в linux не работает или работает не полностью.
- unixforum.org
- Решено: При установке Линукса на ноутбук отключается кулер.
- Решено: При установке Линукса на ноутбук отключается кулер.
- Re: Решено: При установке Линукса на ноутбук отключается кулер.
- Re: Решено: При установке Линукса на ноутбук отключается кулер.
- Re: Решено: При установке Линукса на ноутбук отключается кулер.
- Управляем вентилятором ноутбука через DSDT в Linux и не только
- Как оно в Windows
- Как оно под Linux
- Как заставить ядро выполнять пропатченный DSDT
Охлаждение в linux не работает или работает не полностью.
netbook, linuxmint (пробовал debian, ubuntu), от десктопа не зависит пробовал KDE, mate, gnome, lxde, xfce.
Я уже писал подобное, там надавали много ссылок. Вменяемое применял, что-то недоступное пониманию не трогал. Особого результата не заметил, точнее практически его нету.
Но! Я попробовал win 7, выставил на максимум все, кроме частоты ЦП (её не ставил в 100%, оставил меняться динамически) и ноут в 2 раза холоднее, даже в «тяжелых» играх он холоднее. То же самое наблюдаю на совершенно другом железе, тоже ноут. У меня AMD Radeon, на другом intel atom.
Это очень похоже на какую-то массовую проблему. Еще пробовал ставить acpi=force — тоже самое. Пробовал аплет gnome (mate) для управления частотой ЦП, минимальная там частота 750 гц и всего 3и варианта частоты на выбор (т.е. прыгает 750/1300/1600 гц), пробовал устанавливать режим «консервативный» — не помогло.
В общем вопрос простой. Что делать с перегревом в linux? Идеальным решением будет аплеты управления частотой ЦП или вентилятором в несколько кликов — прошу ссылки.
Какой-то поток сознания. Нормальное железо не перегревается. Вообще.
fancontrol нужен за тем, чтобы вентиляторы замедлять, чтобы меньше шумели, а не наоборот. Cpufreq нужен за тем, чтобы не жрать батарею когда не надо, а не исправлять косяки железа.
Ответ тоже простой: переехать на win7, раз там розовые пони успешно маскируют проблему железа.
Я изложил все подробно и структурированно и даже выделил, что проблема на двух ноутах с абсолютно разным железом. Очевидно, что ты просто ничего не прочитал и писал для того чтобы писать.
Нечего сказать — не флуди.
Как я понял, laptop-tools не использовал. ССЗБ.
Повторить, что в win 7 все на максимуме и без перегрева, а частота настроена аплетом mate?
Вангую использование свободных дровишек для видео.
Ноут не будет греться и жрать батарейку если:
1) Стоят проприетарные дрова на GPU.
2) Стоит laptop-mode-tools, с соотв. зависимостями в виде cpufreq-utils.
3) Отсутствие кривых дров/кривых железок/кривых ручек.
Ты будешь продолжать тупить и уныло вбрасывать, или все-таки посмотришь предложенный мною пакет?
1 — что в твоём понимании перегрев? перегрев насколько?
2 — может тебе не повезло и обоими ноутами?
всё просто
у меня нет проблем с перегревом / меня это не беспокоит — я пользуюсь
у тебя проблемы в перегревом и тебя это беспокоит — не пользуйся
так что поддерживаю первый камент — «переехать на win7»
Я смотрел пакет, там все те же настройки, что в win 7 (повторюсь, настройки точно по списку и их даже больше). Вот только в win 7 я все выставил на максимум, кроме частоты ЦП, её оставил меняться. Процессор кстати AMD Dual Core, то есть вроде как в ядре должно быть нормальное управление частотой.
поставь hardinfo, помониторь тепературу как процессора , так и видео. Тоже самое в винде. После этого можешь задавать вопросы, если сам не поймешь. Ну а я думаю, что дело в кривых дровах на видео, и греется у тебя видеокарта. У меня интеловская всроенная видео на ноуте, что в винде, Что в линуксе все одинаково.
1) Стоят. 2) Стоит. Но его не настраивал. 3) Система ни на что не ругается, из проприетарных ставил только GPU.
Я смотрел пакет, там все те же настройки, что в win 7
Не ври, или расскажи как ты настраивал ядро и модули win7.
Клик Правой левой по значку батареи > Центр управлениея > Дополнительные параметры.
Там есть все тоже, что в списке по ссылке. В win 7 есть, то чего нету в том списке: управление PCI Express 3 режима. (одна разница — в linux команды набирать, а не выбирать из списка меню).
Единственное, что заметил в списке Laptop_Mode_Tools есть управление режимами SATA и схемы сброса/набора частот ЦП (но как я уже писал даже на минимуме linux греется, так что даже если в win7 минимум причина не в режимах).
Всякие яркости, и другая мелочевка тоже есть.
Я изложил все подробно и структурированно
Охренеть. Ты не показал вообще никаких цифр, не рассказал абсолютно ничего о юзкейсах. Почти ничего о железе. Мы даже не в курсе, что у тебя там перегревается. И размазал сопли о «перегреве в linux».
Вон из техразделов.
Про laptop-mode-tools уже сказали. На amd лучше ставить catalyst, со свободным драйвером греться будет сильнее.
Покажи хоть показания сенсоров для начала.
Field Value Sensor Properties Sensor Type CPU, HDD, ACPI GPU Sensor Type Diode (ATI-Diode) Temperatures CPU 44 °C (111 °F) CPU #1 / Core #1 44 °C (111 °F) CPU #1 / Core #2 44 °C (111 °F) GPU Diode 44 °C (111 °F) TOSHIBA MK3276GSX 32 °C (90 °F) Voltage Values CPU Core 1.087 V Battery 12.386 V Power Values Battery Charge Rate AC Line
win — 1 час игры в казуалку, но тяжелую
Field Value Sensor Properties Sensor Type CPU, HDD, ACPI GPU Sensor Type Diode (ATI-Diode) Temperatures CPU 55 °C (131 °F) CPU #1 / Core #1 55 °C (131 °F) CPU #1 / Core #2 55 °C (131 °F) GPU Diode 56 °C (133 °F) TOSHIBA MK3276GSX 36 °C (97 °F) Voltage Values CPU Core 1.350 V Battery 12.386 V Power Values Battery Charge Rate AC Line
linux больше 1 часа
GPU — не показывает (драйвера проприетарные) Касание рукой (горячо) и температура ЦП такая же, как на win говорит, что проблема скорее всего действительно в GPU.
hardinfo — в разделе sensors пусто, тепмературу смотрел через аплеты mate. Когда KDE докачается, через него попробую.
Остальные вроде поняли, если кто-то еще так считает из уже ответивших, то поправлю.
Источник
unixforum.org
Форум для пользователей UNIX-подобных систем
- Темы без ответов
- Активные темы
- Поиск
- Статус форума
Решено: При установке Линукса на ноутбук отключается кулер.
Модератор: Bizdelnick
Решено: При установке Линукса на ноутбук отключается кулер.
Сообщение Grohot69 » 29.09.2007 20:32
Re: Решено: При установке Линукса на ноутбук отключается кулер.
Сообщение vr13 » 29.09.2007 20:42
Re: Решено: При установке Линукса на ноутбук отключается кулер.
Сообщение Grohot69 » 29.09.2007 20:55
вообщето нет. я начинающий пользователь. в биосе только загрузочный список изменять могу. спасибо за совет вам. попробую разобраться с этим. но например когда загружаюсь с винды или устанавливаю винду, то кулер работает нормально. автоматически включаясь и выключаясь.
Re: Решено: При установке Линукса на ноутбук отключается кулер.
Сообщение vr13 » 29.09.2007 21:14
на самом деле, я не знаю что такое nx6125 (у меня hp nw-series, который на core2duo), просто по аналогии: если производитель один — то биос должен быть приблизительно одинаковым
у меня включенная опция означает, что при включенном питании кудер процессора всегда крутится. на батарейках — нет
вероятно, что-то не опознает он про acpi. но про это пока лучше не думать 🙂
еще хорошо порыться тут: http://tuxmobil.org/hp_compaq.html
я сейчас заглянул и сразу увидел, что там проблемы с acpi и соответственно нужно что-то патчить: http://gentoo-wiki.com/HARDWARE_HP_Compaq_nx6125
это не про mandriva и suse. но суть ясна — нужно ядро повыше версии. кстати, у меня на nw-series работает suse 10.2, ядро там 2.6.18. вполне вероятно что проблема там уже решилась
Источник
Управляем вентилятором ноутбука через 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. Там оказалось вот что:
Целых 10 cooling_devices и 6 thermal_zones. С термальными зонами более менее все ясно, температуры CPU, GPU, какие-то еще три точки, не особо важно. А последняя thermal_zone5 – это вовсе не температура, как выяснилось опытным путем, а текущая мощность вентилятора. Браво HP! Теперь понятно почему sensors-detect ничего не нашел, тут такой бардак, что черт ногу сломит. Вот так вот просто записав какое-нибудь число в thermal_zone5/temp поменять мощность нельзя. Файл только для чтения, оно и понятно.
Теперь посмотрим на cooling_device*, зачем их 10? Внутри каждой папки примерно вот такое содержание:
В файлах 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.
Вроде есть такой демон в Убунте 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 вообще не работал. Страшное дело, между прочим. Wi-fi у меня при этом не работал, кнопка выключения выключала все сразу, а не запускала нормальный shutdown. Короче, пользоваться совсем нельзя. Потом я еще попробовал вообще все таблицы передать в параметрах, получилось так:
На этот раз была попытка загрузить DSDT, но там видимо есть какая-то ссылка на таблицу FACS, которую в данном окружении не получается разрешить. Немного помучившись с этим, раз 20 перезагрузив систему, мне так и не удалось заставить все работать этим способом. Плюнув на всё, поставил пересобираться ядро и лег спать, с утра все заработало как надо:
Можно было бы открывать шампанское и праздновать успех, но в голове свербила мысль, что можно же сделать как-то лучше. Ведь та программа под 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 на досуге и подумать, что еще можно улучшить в ноутбуке. Программных проблем в системах охлаждения ноутбуков я теперь точно не боюсь. Надеюсь, что и вы теперь тоже, если вдруг боялись раньше.
Источник