Форум русскоязычного сообщества Ubuntu


Хотите сделать посильный вклад в развитие Ubuntu и русскоязычного сообщества?
Помогите нам с документацией!

Автор Тема: Скрипт для сохранения/восстановления уровня яркости Ubuntu 12.04 - 14.10  (Прочитано 24070 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн norbert

  • Новичок
  • *
  • Сообщений: 28
    • Просмотр профиля
Tamir,
что-то я ничего не понял.
А попробуйте понаблюдать в режиме реального времени за изменением значения в файле brightness с помощью команды
watch -n1 cat /sys/class/backlight/*/brightnessКоманда запускается в терминале и каждую секунду читает файл яркости.
Если при этом нажимать кнопки изменения яркости, то значения должны меняться. Попробуйте пройти от минимального значения до максимального - значения должны меняться.

Потом можно попробовать открыть второй терминал и выполнить в нем последовательно команды записи файла яркости (терминал с командой watch должен быть рядом, записываемые и читаемые значения должны совпадать, яркость должна меняться, индикатор Unity тоже)
sudo tee /sys/class/backlight/radeon_bl0/brightness <<< 0
sudo tee /sys/class/backlight/radeon_bl0/brightness <<< 1
sudo tee /sys/class/backlight/radeon_bl0/brightness <<< 2
sudo tee /sys/class/backlight/radeon_bl0/brightness <<< 3
# до максимального

Если запись работает неправильно, то проблема в драйвере AMD (у меня нет устройств AMD, посоветовать могу только официальную документацию на русском или английском ), а не в моем скрипте.
« Последнее редактирование: 28 Декабря 2014, 00:44:28 от norbert »

Оффлайн Tamir

  • Активист
  • *
  • Сообщений: 782
    • Просмотр профиля
    • PDF формы
norbert,
Всё меняется идентично в двух терминалах, кроме одного уровня, а именно "0", то есть на команду
sudo tee /sys/class/backlight/radeon_bl0/brightness <<< 0
реакции вообще нет, не с начальной позиции не с самой максимальной в 2 терминалах.

P.S. Проприетарный драйвер не установлен. Работает тот что в ядре по умолчанию (напомню, проверяю сейчас на ядре 3.16, войдёт в Ubuntu 14.04.2 LTS). На ядре 3.13 скрипт работает как часы, но там и папка acpi_video0 есть.
« Последнее редактирование: 28 Декабря 2014, 01:11:35 от Tamir »

Оффлайн norbert

  • Новичок
  • *
  • Сообщений: 28
    • Просмотр профиля
Tamir,
так и оставайтесь на 3.13 :)
Самое новое ядро нужно только в случае очень нового железа или в специфических редких случаях. Может быть под 3.16 AMD-драйвер не доделан или сломан. В любом случае спасибо за тестирование.

Оффлайн Tamir

  • Активист
  • *
  • Сообщений: 782
    • Просмотр профиля
    • PDF формы
norbert,
да я и остаюсь на ядре 3.13, пока оно будет поддерживаться). Установил ради эксперимента :). Правда признаю, что чем новее ядро тем отзывчее и быстрее работает графическая часть ОС на лептопе...так что на ядре 3.2Х будет летать))). Однако могут быть и другие обстоятельства, которые потребуют нового ядра, но это всё уже лирика)).
« Последнее редактирование: 28 Декабря 2014, 01:45:06 от Tamir »

Оффлайн norbert

  • Новичок
  • *
  • Сообщений: 28
    • Просмотр профиля
Я обновил скрипт для сохранения/восстановления уровня яркости.
Прошлая версия скрипта теперь не актуальна.
Файлы от старой версии можете удалить командой
sudo rm /etc/rc?.d/?25backlight
Новая версия сохраняет в файлы уровни яркости всех адаптеров, которые есть в каталоге /sys/class/backlight/ в соответствующие файлы (например, для acpi_video0 и acpi_video1 файлы с сохраненными значениями имеют имена /var/lib/brightness-level-acpi_video0 и /var/lib/brightness-level-acpi_video1).

Установка скрипта аналогична прошлой версии:
sudo tar -zxvf upstart_brightness.tar.gz -C /
Известные проблемы:
* при использовании дисплейного менеждера MATE яркость сбрасывается на максимум сразу после входа.

Провел поиск дубликатов нашего бага на launchad'е - после этого оказалось что он бесит не 21-го пользователя, а 156. Температура бага существенно выросла.

Вразумительного ответа в списках рассылки от разработчиков пока получить не удалось (писал в Ubuntu laptop devel, Debian pkg-sysvinit-devel, Ubuntu devel-discuss, Ubuntu upstart-devel, Debian laptop).
« Последнее редактирование: 30 Декабря 2014, 00:09:20 от norbert »

Оффлайн Tamir

  • Активист
  • *
  • Сообщений: 782
    • Просмотр профиля
    • PDF формы
norbert,
спасибо большое за труды  :coolsmiley:.
У меня вопрос:
С новым вариантом архива все символьные ссылки в силе? То есть какие необходимы для Ubuntu 12.04, а какие для Ubuntu 14.04?

Оффлайн norbert

  • Новичок
  • *
  • Сообщений: 28
    • Просмотр профиля
Tamir,
все ссылки сделаны универсальными (для 12.04 и 14.04). Под 14.04 я не тестировал, надеюсь, что работает.

Оффлайн Tamir

  • Активист
  • *
  • Сообщений: 782
    • Просмотр профиля
    • PDF формы
Всё же уточню. То есть вот такие действия:
Цитировать
Для работы скрипта вы должны создать символические ссылки для уровней запуска 0, 6 и S:
sudo ln -s /etc/init.d/brightness /etc/rc0.d/S25backlight
sudo ln -s /etc/init.d/brightness /etc/rcS.d/S25backlight
sudo ln -s /etc/init.d/brightness /etc/rc6.d/S25backlight
не нужны?

Оффлайн norbert

  • Новичок
  • *
  • Сообщений: 28
    • Просмотр профиля
Tamir,
Да, действия не нужны.
На всякий случай удалить старые файлы ссылок и распаковать архив.
Команды:

sudo rm /etc/rc?.d/?25backlight
sudo tar -zxvf upstart_brightness.tar.gz -C /

После этого все должно продолжить работать :)

Оффлайн victor00000

  • Старожил
  • *
  • Сообщений: 15568
  • Глухонемой (Deaf)
    • Просмотр профиля
Wars ~.o

Оффлайн norbert

  • Новичок
  • *
  • Сообщений: 28
    • Просмотр профиля
victor00000,
Спасибо за наводку! Раньше для этого использовал rcconf.

Я-то создавал легкий в разворачивании архив, а по-хорошему можно было обойтись только самим скриптом и дальше просить пользователя выполнить команду
sudo update-rc.d brightness disable
sudo update-rc.d brightness enable
« Последнее редактирование: 28 Декабря 2014, 16:37:11 от norbert »

Оффлайн Tamir

  • Активист
  • *
  • Сообщений: 782
    • Просмотр профиля
    • PDF формы
victor00000,
спасибо за наводку :).
norbert,
Спасибо! Избавили от лишних действий, настоящий сервис... причём с пометкой GNU/GPL :).
(Нажмите, чтобы показать/скрыть)

Оффлайн norbert

  • Новичок
  • *
  • Сообщений: 28
    • Просмотр профиля
Здравствуйте, друзья!

У меня есть две хорошие новости:
1. Разработчики системы ElementaryOS сделали upstart-скрипт для сохранения и восстановления уровня яркости. Однако эта система стоит не у всех, поэтому есть и вторая новость.
2. Я наконец-то собрал отдельный пакет с простейшим sysvinit-скриптом для сохранения и восстановления уровня яркости.

Пакет устанавливает единственный файл /etc/init.d/sysvinit-backlight.
Вы можете скачать и установить из моего PPA с помощью команд:
sudo add-apt-repository ppa:nrbrtx/sysvinit-backlight
sudo apt-get update
sudo apt-get install sysvinit-backlight

Команда для удаления стандартная:
sudo apt-get purge sysvinit-backlight(purge, потому что все файлы в каталоге /etc считаются конфигурационными)

Если у вас уже установлена предыдущая версия моего скрипта, то удалите ее аккуратно вручную:
sudo rm /etc/rc?.d/?25backlight /etc/init.d/brightness /etc/rc?.d/?25brightness
Функциональность скрипта следующая:
  • сохранение уровня яркости подсветки экрана всех видео-адаптеров при перезагрузке и выключении (runlevel 0 и 6)
  • восстановление уровня яркости подсветки экрана всех видео-адаптеров при загрузке (runlevel S и 2)
  • поддерживается гибридная графика (требуется тестирование)

Опции скрипта следующие:
  • sudo service sysvinit-backlight status (показывает текущие и сохраненные в файлах значения яркости)
  • sudo service sysvinit-backlight start (устанавливает уровни яркости из файлов)
  • sudo service sysvinit-backlight stop (сохраняет уровни яркости в файлы)

Возможные проблемы:
  • При работе в окружении рабочего стола MATE яркость может сбрасываться на максимум при загрузке.

Работоспособность скрипта проверена под Ubuntu 12.04.5 LTS, 14.04.2 LTS, 14.10 (UPD: по состоянию на 25.04.2015 скрипт под 14.10 не работает).

Сообщество Ubuntu уведомлено через Launchpad Bug 1270579, ubuntu-devel-discuss list, laptop-devel list.
« Последнее редактирование: 25 Апреля 2015, 18:37:29 от norbert »

Оффлайн Aleksey_1981

  • Любитель
  • *
  • Сообщений: 87
  • Типичный потомок неандертальцев.
    • Просмотр профиля
Опции скрипта следующие:
  • sudo service sysvinit-backlight status (показывает текущие и сохраненные в файлах значения яркости)
  • sudo service sysvinit-backlight start (устанавливает уровни яркости из файлов)
  • sudo service sysvinit-backlight stop (сохраняет уровни яркости в файлы)

Вопрос от новичка:
Установил ваш скрипт на Ubuntu 14.04.2 LTS, скрипт работает в пределах одного сеанса, то есть и сохраняет и устанавливает из файла, но после перезагрузки яркость снова на максимуме. У меня ноут, видеокарты: Intel HD 4600 + nVidia GF840M(драйвер на nVidia установил из PPA(349.12)), но в /sys/class/backlight лежит только папка intel_backlight, а в настройках NVIDIA X Server в PRIME профиле используется nvidia - может в этом дело? Попробую переключиться на intel и отпишусь.

Проверил на intel - скрипт не работает, после перезагрузки снова яркость на макс, при попытке загрузить из файла, загружает, но опять максимальное значение яркости, а не то, что я сохранил до перезагрузки. Может подскажете что можно сделать в этом случае?
« Последнее редактирование: 30 Марта 2015, 15:26:08 от Aleksey_1981 »

Оффлайн norbert

  • Новичок
  • *
  • Сообщений: 28
    • Просмотр профиля
Опции скрипта следующие:
  • sudo service sysvinit-backlight status (показывает текущие и сохраненные в файлах значения яркости)
  • sudo service sysvinit-backlight start (устанавливает уровни яркости из файлов)
  • sudo service sysvinit-backlight stop (сохраняет уровни яркости в файлы)

Вопрос от новичка:
Установил ваш скрипт на Ubuntu 14.04.2 LTS, скрипт работает в пределах одного сеанса, то есть и сохраняет и устанавливает из файла, но после перезагрузки яркость снова на максимуме. У меня ноут, видеокарты: Intel HD 4600 + nVidia GF840M(драйвер на nVidia установил из PPA(349.12)), но в /sys/class/backlight лежит только папка intel_backlight, а в настройках NVIDIA X Server в PRIME профиле используется nvidia - может в этом дело? Попробую переключиться на intel и отпишусь.

Проверил на intel - скрипт не работает, после перезагрузки снова яркость на макс, при попытке загрузить из файла, загружает, но опять максимальное значение яркости, а не то, что я сохранил до перезагрузки. Может подскажете что можно сделать в этом случае?

Aleksey_1981, а какой рабочий стол вы используете (Unity, GNOME, KDE)?
Ноутбука с Nvidia PRIME у меня нет. Попробуем собрать информацию удаленно. О работоспособности скрипта на гибридной конфигурации я сужу по положительному отзыву на askubuntu.
Скрипт точно установился? Команда ls /etc/init.d/sysvinit-backlight /etc/rc?.d/?25sysvinit-backlight возвращает 5 файлов?

Яркость функциональными кнопками нормально регулируется?

Вы не смотрели - какой именно файл в /sys файловой системе отвечает за яркость?
Попробуйте выполнить в терминале команду
watch -n1 cat /sys/class/backlight/*/brightness
и порегулировать медленно (раз в секунду или медленнее) яркость вниз и вверх - какой из значений меняется (верхнее или нижнее), в каком оно файле находится? Имена файлов можно увидеть если развернуть окно терминала с watch на весь экран.
После того, как поймете, в какой файл записывается уровень яркости - попробуйте не закрывая терминал с watch в другом терминале записать в файл яркости случайное значение командой
sudo tee /sys/class/backlight/*/brightness <<< $((10*RANDOM/32767+1))
При этом уровень яркости должен визуально измениться и значение должно появиться в терминале с watch.

Прекратить выполнение команды watch можно по Ctrl+C.

Посмотрите состояние файлов яркости командой
sudo service sysvinit-backlight status
Полученное значение яркости можно записать в файлы с помощью команды
sudo service sysvinit-backlight stop
затем изменить яркость и загрузить сохраненное значение из файла командой
sudo service sysvinit-backlight start


О факте сохранения или восстановления уровня яркости можно судить по файлу /var/lib/backlight_debug. Формат строк в нем такой действие  уровень яркости  дата и время. Ожидается, что файл не пустой. Если он пустой - то скрипт не установился.
Еще я заметил проблемы с MATE - там происходит сброс яркости на максимум из-за вмешательства их менеджера управления питанием.
« Последнее редактирование: 30 Марта 2015, 18:17:33 от norbert »

 

Страница сгенерирована за 0.023 секунд. Запросов: 19.