LXDE в Debian Squeeze (Температурный монитор (плагин для lxpanel))

Knoppix

Модераторы: Warderer, Модераторы разделов

Аватара пользователя
Hephaestus
Сообщения: 3728
Статус: Многоуважаемый джинн...
ОС: Slackware64-14.1/14.2

LXDE в Debian Squeeze

Сообщение Hephaestus »

В KDE3 мне было удобно видеть на панели рядом с часами циферки, отражающие температуру.
Перейдя в LXDE я начал искать подобный инструмент. Нашелся плагин для lxpanel по имени Температурный монитор. Но рано я обрадовался. Оказалось, что он не работает. Постоянно показывает NA.
Начав разбираться, в чем дело, я выяснил, что этот плагин нацелен брать данные из /proc/acpi/thermal_zone. Данный каталог у меня оказался пустым. Поискав в гугле, нашел, что эта схема не используется уже довольно долгое время. Попробовал свои линуксовые LiveCD прошлых лет (разные дистрибутивы) и убедился что везде этот каталог пуст. Как выяснилось, вместо него используется /sys/devices/platform/<имя_чипа>/ в котором находятся файлы, содержащие данные температуры, оборотов вентилятора и пр. Плагин, естественно, ничего об этом не знает. Я вздохнул, почесал репу и начал переделывать-переписывать этот плагин. Переписал. Скомпилировал. Вроде работает.

Из всей этой истории вытекает три вопроса:

1. Используется ли в Debian (на каком-нибудь железе) /proc/acpi/thermal_zone? Т.е. актуален ли плагин в исходном виде?

Если не актуален, то
2. Нужен ли исправленный плагин сообществу, т.е. кому-нибудь, кроме меня? (вопрос, прежде всего к форумчанам - пользователям LXDE).

Если нужен, то
3. Имеет ли смысл связываться с мантейнером пакета, писать баг-репорт, отсылать патч и т.д.?
Я никогда раньше этого не делал и, кроме того, это мой первый опыт кодинга на Си вообще и для Linux, в частности. Но поскольку задача оказалась несложная (это всего лишь исправления к плагину), то результат получился вполне рабочий.

Для всех, кому интересно, прилагаю архив.

Содержание архива:
thermal.c.orig - первоначальный исходник плагина
thermal.c - исправленный исходник плагина
thermal.patch - патч
thermal.so - скомпилированный модуль, располагается в /usr/lib/lxpanel/plugins/

Коротко о том, что именно я сделал.
1. Переписаны функции считывания данных о текущей и критической температуре.
2. Добавлена аналогичная функция считывания данных о максимальной температуре.
3. Поскольку каталог <имя_чипа> расположен в /sys/proc/devices/platform вместе с другими каталогами и может называться по-разному (для разных чипов), то автоматическое определение сенсоров работает неправильно.
На данный момент достойного решения я не придумал. Поэтому в диалоге настроек необходимо отключать автоматическое определение сенсоров и вручную указывать имя файла текущей температуры. Также в диалог добавлены поля для указания имен файлов максимальной и критической температуры. Это требуется для автоматической установки порогов предупреждений (см. ниже).
Имена файлов необходимо указывать полностью, например, /sys/devices/platform/it87.3328/temp1_input.
4. Изменен принцип автоматической установки порогов предупреждений (Warning1 и Warning2).
Изначально они устанавливались относительно критической температуры. Warning1 устанавливался на 10 градусов ниже критической температуры, а Warning2 на 5 градусов. Теперь Warning1 считывается из файла с максимальной температурой, а Warning2 считывается из файла с критической температурой. Сохранена возможность отключить автоматическую установку и выставить пороги вручную.
5. Исправлена ошибка, в результате которой инвертировалось состояние флажка автоматической установки порогов.

P.S. Если у матёрых кодеров - адептов С/С++ возникнет желание поматериться, назвать меня быдлокодером, говнокодером и прочими лестными прозвищами, прошу делать это в отдельной теме где-нибудь в Разговорах со ссылкой сюда. А также прошу учесть, что основная часть кода не моя, я только вносил исправления.
Да, я плохо знаю Си. Однако, плагин этот существует с 2007 года. С какого времени он не работает - не знаю, но судя по всему уже давно. За это время никто из матёрых не потрудился его переписать. Поэтому переписывать приходится тому, кому он понадобился, т.е. мне. А значит, материться ни к чему.
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Пускай скрипят мои конечности.
Я - повелитель бесконечности...
Мой блог
Спасибо сказали:
Аватара пользователя
44616e
Сообщения: 211
ОС: Debian testing

Re: LXDE в Debian Squeeze

Сообщение 44616e »

Проверил температурный апплет у себя на asus eeepc 901 - работает "искаропки", даже настроек не потребовалось. Показания похожи на правду: лежа на диване 55, на крыльце при -5 на улице упала до 37.
Система: Debian Squeeze, ядро 2.6.32-5-686.
Спасибо сказали:
Аватара пользователя
Hephaestus
Сообщения: 3728
Статус: Многоуважаемый джинн...
ОС: Slackware64-14.1/14.2

Re: LXDE в Debian Squeeze

Сообщение Hephaestus »

44616e писал(а):
03.03.2011 10:35
Проверил температурный апплет у себя на asus eeepc 901 - работает "искаропки", даже настроек не потребовалось.
Это тот, который в lxpanel, я правильно понял? Стало быть, работает. Хм, интересно.

А покажите вывод

Код: Выделить всё

$ls -R /proc/acpi/thermal_zone

Пускай скрипят мои конечности.
Я - повелитель бесконечности...
Мой блог
Спасибо сказали:
Аватара пользователя
44616e
Сообщения: 211
ОС: Debian testing

Re: LXDE в Debian Squeeze

Сообщение 44616e »

Да, апплет из lxpanel'и, все верно.

Код: Выделить всё

dan@debian-book:~$ ls -R /proc/acpi/thermal_zone
/proc/acpi/thermal_zone:
TZ00

/proc/acpi/thermal_zone/TZ00:
cooling_mode  polling_frequency  state  temperature  trip_points
dan@debian-book:~$ ls -la /proc/acpi/thermal_zone/TZ00/
итого 0
dr-xr-xr-x 2 root root 0 Мар  4 00:17 .
dr-xr-xr-x 3 root root 0 Мар  4 00:17 ..
-rw-r--r-- 1 root root 0 Мар  4 00:17 cooling_mode
-rw-r--r-- 1 root root 0 Мар  4 00:17 polling_frequency
-r--r--r-- 1 root root 0 Мар  4 00:17 state
-r--r--r-- 1 root root 0 Мар  4 00:17 temperature
-r--r--r-- 1 root root 0 Мар  4 00:17 trip_points
dan@debian-book:~$

Второе - это на всякий случай, мало-ли там симлинки какие лежат...
Спасибо сказали: