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


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

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

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

Оффлайн Aleksey_1981

  • Любитель
  • *
  • Сообщений: 87
  • Типичный потомок неандертальцев.
    • Просмотр профиля
norbert,
Яркость изменяется в файле /sys/class/backlight/intel_backlight/brightness, там же лежат max_brightness и actual_brightness, в последнем то же значение, что и в brightness. Ваш скрипт установлен - все 5 файлов в наличии, факт сохранения действительно отмечается, там же(/var/lib) лежит файл, в который и происходит сохранение backlight-level-intel_backlight и загрузка тоже происходит из него. Но после перезагрузки в этом файле снова прописано максимальное значение... Как узнать какая служба перезаписывает этот файл при перезагрузке(в момент выхода из системы или входа) - может это как-то прояснит ситуацию? Рабочий стол Unity.
« Последнее редактирование: 30 Марта 2015, 23:59:15 от Aleksey_1981 »

Оффлайн norbert

  • Новичок
  • *
  • Сообщений: 28
    • Просмотр профиля
Aleksey_1981
В пределах сеанса значит все сохраняется - восстанавливается? Пару терминалов из моего прошлого сообщения с
watch -n1 cat /sys/class/backlight/*/brightness
и
sudo tee /sys/class/backlight/*/brightness <<< $((10*RANDOM/32767+1))
запускали - там все нормально работает, как я писал?


norbert,
Но после перезагрузки в этом файле снова прописано максимальное значение... Как узнать какая служба перезаписывает этот файл при перезагрузке(в момент выхода из системы или входа) - может это как-то прояснит ситуацию? Рабочий стол Unity.
Это очень странно. Про файлы /var/lib/backlight-level-* знает только мой скрипт.

У меня есть предположение, что виноват не мой скрипт, а есть конфликт между Nvidia- и Intel- управляющими яркостью. Что возвращает команда
cat /var/log/Xorg.0.log | grep -i "backlight\|brightness" ?

Конфиги X-сервера не меняли? У меня на дискретной Nvidia в секции Device стоит Option         "RegistryDwords" "EnableBrightnessControl=1"
Nvidia-PRIME как настраивали - по этой инструкции или как-то еще?
Может помочь установка опций загрузки системы - см. например здесь или здесь.

До гибридного ноутбука возможно доберусь на этой неделе и попробую сам проверить.
Чтобы мне не гадать и было легче искать рецепт, скажите, пожалуйста модель ноутбука. Если модель популярная, то наверняка есть рецепты по настройке на нем Nvidia Optimus/PRIME.
« Последнее редактирование: 31 Марта 2015, 00:45:14 от norbert »

Оффлайн Aleksey_1981

  • Любитель
  • *
  • Сообщений: 87
  • Типичный потомок неандертальцев.
    • Просмотр профиля
norbert,
Так я и не понял как работает ваш скрипт: процесс сохранения, загрузки происходит автоматически? Или нужно каждый раз перед завершением сеанса вручную сохранять, а после входа - загружать? Если так, то не вижу смысла. По-крайней мере просто завершение сеанса и снова вход снова сбрасывают яркость на макс, а ваш скрипт на это не реагирует - загрузки значения яркости не происходит... Я все-таки новичок, может где-то чего-то недопонимаю?

Посмотрел boot.log и ваш файл backlight_debug вроде происходит автозапись перед перезагрузкой, а вот в процессе загрузки в вашем файле просто зафиксирован факт двух загрузок подряд с разницей в 1-2 секунды, а в boot.log вот такие строки:
load
   Loading intel_backlight =  * Starting system logging daemon[ OK ]
и
load
   Loading intel_backlight = 3906
saned disabled; edit /etc/default/saned
 * Restoring resolver state...       
[ OK ]
в файле backlight_debug:
save 0 Tue Mar 31 13:24:38 SAMT 2015 - автосохранение перед перезагрузкой
load 0 Tue Mar 31 13:25:20 SAMT 2015
load 0 Tue Mar 31 13:25:22 SAMT 2015
« Последнее редактирование: 31 Марта 2015, 12:46:17 от Aleksey_1981 »

Оффлайн norbert

  • Новичок
  • *
  • Сообщений: 28
    • Просмотр профиля
Aleksey_1981,
у меня осталось два вопроса - модель ноутбука и как вы настраивали Nvidia Optimus/PRIME?

Мой скрипт функционирует так:
он запускается на уровнях запуска S и 2 (однопользовательский и многопользовательский) для загрузки значений яркости из файла(ов) /var/lib/backlight-level-* в файл(ы) ядра /sys/class/backlight/*/brightness;
в режимах 0 и 6 (перезагрузка и выключение) для сохранения значений яркости из файла(ов) ядра /sys/class/backlight/*/brightness в файл(ы) /var/lib/backlight-level-*. Происходит это автоматически без участия пользователя.

В вашей ситуации судя по логу скрипт работает нормально, но кто-то из видеоадаптеров перебивает сохраненное значение. Это особенность гибридной графики. Как только мне удастся до такого ноутбука добраться - я пойму кто виноват.

Пока что предлагаю взять паузу. Могут появиться отзывы пользователей с гибридной графикой и на других каналах - askubuntu и launchpad.

Оффлайн Aleksey_1981

  • Любитель
  • *
  • Сообщений: 87
  • Типичный потомок неандертальцев.
    • Просмотр профиля
norbert,
Цитировать
у меня осталось два вопроса - модель ноутбука и как вы настраивали Nvidia Optimus/PRIME?
Модель ноутбука: DEXP Atlas H104, информацию можно найти здесь. PRIME никак не настраивал, просто установил из репозитория PPA:
sudo apt-add-repository ppa:xorg-edgers/ppa
sudo apt-get update
sudo apt-get install nvidia-current nvidia-settings
и все заработало как надо без каких-либо дополнительных манипуляций, хотя поначалу пытался установить установочный пакет с сайта nvidia, но для меня это оказалось слишком заморочено, а в результате все равно черный экран... помогла только переустановка убунты.

Оффлайн norbert

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

Скрипт протестирован на следующем оборудовании:
  • Sony VAIO F13Z1R/BL (дискретная Nvidia GT425M, Ubuntu 12.04.5 LTS и Ubuntu 14.04.2 LTS, проприетарный драйвер nvidia-current)
  • Asustek UX32A (встроенный Intel HDG 4000 в CPU Intel i7-3537U, Ubuntu 12.04.5 LTS и Ubuntu 14.04.2 LTS, открытый драйвер)
  • Asustek UX31A (встроенный Intel, Ubuntu 14.04.2, открытый драйвер)
  • MSI GX70 (встроенный AMD HD8650G, дискретная AMD HD8970M) - см. пост #81
  • MSI GE70 (встроенный Intel HDG 4600 в CPU Intel i7-4700MQ, дискретный Nvidia GeForce GT 750M; Ubuntu 12.04.5 с nvidia-331, Ubuntu 14.04.2 с nouveau, nvidia-331, nvidia-prime по этой инструкции)
  • Lenovo SL510 2847RE9 (встроенный Intel; под Ubuntu 12.04.5 LTS и 14.04.2 LTS)
  • Lenovo B590 20206 (встроенный Intel HD Graphics в Intel Pentium 2020M, Nvidia GeForce 610M) под Ubuntu 12.04.5 LTS и 14.04.2 LTS с nouveau, nvidia-331, nvidia-prime по этой инструкции

Просьба ко всем - пожалуйста, помогите протестировать мой скрипт сохранения и восстановления яркости на ноутбуках с гибридной и дискретной графикой.

Установка описана в посте №72 выше.
« Последнее редактирование: 25 Апреля 2015, 18:32:00 от norbert »

Оффлайн LastImp

  • Новичок
  • *
  • Сообщений: 1
    • Просмотр профиля
Доброго времени суток!

Модель ноутбука MSI gx70 встройка hd8650g дискретная HD8970M

По началу все работало, и после установки свободного драйвера из ppa:oibaf/graphics-drivers работало.
установил xfce 4.12  то же работало, но после какого-то обновления системы перестало.
а если точнее: то работает только в случае выхода из сессии и входа обратно.
В случае перезагрузки или выключения\включения яркость экрана устанавливается на максимум
но если в терминале выполнить:

pasha@pasha-GX70:~$ sudo service sysvinit-backlight start
[sudo] password for pasha:
load
   Loading radeon_bl0 = 80
pasha@pasha-GX70:~$

яркость экрана устанавливается на необходимый уровень!
Ощущение что при загрузке невыполняется именно эта команда.


PS: переустановил всю систему, с тем же набором софта и драйверов, поставил все обновления. Скрипт поставил последним.
Пока все работает.
Xubuntu 14.04 x64 xfce 4.12
« Последнее редактирование: 09 Апреля 2015, 19:51:49 от LastImp »

Оффлайн DoctorRover

  • СуперМодератор
  • Старожил
  • *
  • Сообщений: 1987
  • Ubuntu 23.04, 23.10
    • Просмотр профиля
Просьба ко всем - пожалуйста, помогите протестировать мой скрипт сохранения и восстановления яркости на ноутбуках с гибридной и дискретной графикой.

Я уже оставлял комментарий в карточке соответствующего бага на лончпаде. У меня, к сожалению скрипт не работает. Моя конфигурация:

Notebook: Asus N550JK
Graphics: Integrated Intel HD Graphics 4600 + NVIDIA GTX850M
Ubuntu 14.10 64bit Unity

Я только сейчас набрёл на эту ветку форума. Завтра внимательно почитаю последние посты в этой теме, сделаю то, что вы здесь рекомендуете и отпишусь если будет что-то полезное.
You're never too old to Rock'n'Roll if you're too young to die.

Оффлайн norbert

  • Новичок
  • *
  • Сообщений: 28
    • Просмотр профиля
Друзья, я обновил скрипт для сохранения яркости (версия 0.1ubuntu1).

Для обновления:
sudo add-apt-repository ppa:nrbrtx/sysvinit-backlight # если не добавлен ранее
sudo apt-get update
sudo apt-get purge sysvinit-backlight # для 14.04 и выше произошло изменение формата версии
sudo apt-get install sysvinit-backlight

Теперь он сохраняет еще и уровень яркости подсветки клавиатуры (проверено пока только на Asustek UX31A и UX32A).
Текущая версия 0.1ubuntu1 протестирована на MSI GE70 с гибридной графикой во всех возможных вариантах драйверов (см. пост №80, в нем я буду вести список протестированных моделей ноутбуков).

На сайте Ubuntu wiki есть интересная страница Kernel/Debugging/Backlight о проблемах регулировки уровня яркости. Рекомендуется к прочтению перед установкой моего скрипта или в случае проблем с ним.

К сведению: на текущий момент количество "пострадавших" от связанного бага 1270579 со всеми дубликатами составляет 198 человек, баг имеет температуру 754.
« Последнее редактирование: 25 Апреля 2015, 18:39:17 от norbert »

Оффлайн DoctorRover

  • СуперМодератор
  • Старожил
  • *
  • Сообщений: 1987
  • Ubuntu 23.04, 23.10
    • Просмотр профиля
Добрый день!
У меня скрипт, к сожалению, не работает и после обновления.
Моя система описана сообщением выше.

Команда  ls /etc/init.d/sysvinit-backlight /etc/rc?.d/?25sysvinit-backlight  возвращает следующее:
ls: невозможно получить доступ к /etc/rc?.d/?25sysvinit-backlight: Нет такого файла или каталога
/etc/init.d/sysvinit-backlight


А команда  ls /etc/init.d/sysvinit-backlight /etc/rc?.d/*sysvinit-backlight  вот это:
/etc/init.d/sysvinit-backlight    /etc/rc2.d/S02sysvinit-backlight  /etc/rcS.d/S02sysvinit-backlight
/etc/rc0.d/K01sysvinit-backlight  /etc/rc6.d/K01sysvinit-backlight


Это правильно?
You're never too old to Rock'n'Roll if you're too young to die.


Оффлайн DoctorRover

  • СуперМодератор
  • Старожил
  • *
  • Сообщений: 1987
  • Ubuntu 23.04, 23.10
    • Просмотр профиля
τοΖεη,
да, я делал и проверял всё, что рекомендовал norbert на последних двух страницах этой ветки. На самом деле, у меня поведение очень похожее на то, что описывал выше Aleksey_1981. В пределах сеанса всё работает, но после перезагрузки яркость экрана на минимуме, а подсветка клавиатуры -- на максимуме.
You're never too old to Rock'n'Roll if you're too young to die.

Оффлайн norbert

  • Новичок
  • *
  • Сообщений: 28
    • Просмотр профиля
DoctorRover, предлагаю удалить ссылки на скрипт командой
sudo update-rc.d -f sysvinit-backlight remove
проверить - что ничего не осталось командой
ls /etc/init.d/sysvinit-backlight /etc/rc?.d/*sysvinit-backlight
удалить если что-то осталось (ссылки) командой
sudo rm /etc/rc?.d/*sysvinit-backlight
и создать их заново командой
sudo update-rc.d -f sysvinit-backlight start 25 S 1 2 3 4 5 . stop 25 0 6 .

После этого вывод
ls /etc/init.d/sysvinit-backlight /etc/rc?.d/?25sysvinit-backlight
вернет правильный вариант ссылок
/etc/init.d/sysvinit-backlight    /etc/rc4.d/S25sysvinit-backlight
/etc/rc0.d/K25sysvinit-backlight  /etc/rc5.d/S25sysvinit-backlight
/etc/rc1.d/S25sysvinit-backlight  /etc/rc6.d/K25sysvinit-backlight
/etc/rc2.d/S25sysvinit-backlight  /etc/rcS.d/S25sysvinit-backlight
/etc/rc3.d/S25sysvinit-backlight
Процесс проверки работоспособности скрипта уже описан выше. Не буду повторяться.
Спасибо что тестируете!

Оффлайн DoctorRover

  • СуперМодератор
  • Старожил
  • *
  • Сообщений: 1987
  • Ubuntu 23.04, 23.10
    • Просмотр профиля
norbert,
спасибо за рекомендации!
Я сейчас на работе, в оффтопике. Вечером вернусь домой и сделаю как вы советуете.

Процесс проверки работоспособности скрипта уже описан выше. Не буду повторяться.
Конечно, не надо. Я довольно детально изучал две последние страницы этого топика и уже проделывал всё, что тут рекомендовалось.

Спасибо за то, что занимаетесь этой проблемой!

Пользователь решил продолжить мысль 22 Апреля 2015, 23:47:59:
Как это ни странно, всё равно создаются те же файлы. И после перезагрузки всё равно минимальная яркость. То ли лыжи у меня не едут, то ли я чего-то таки не понимаю...

$ sudo update-rc.d -f sysvinit-backlight remove
$ ls /etc/init.d/sysvinit-backlight /etc/rc?.d/*sysvinit-backlight
ls: невозможно получить доступ к /etc/rc?.d/*sysvinit-backlight: Нет такого файла или каталога
/etc/init.d/sysvinit-backlight
$ sudo update-rc.d -f sysvinit-backlight start 25 S 1 2 3 4 5 . stop 25 0 6 .
update-rc.d: warning: start and stop actions are no longer supported; falling back to defaults
$ ls /etc/init.d/sysvinit-backlight /etc/rc?.d/*sysvinit-backlight
/etc/init.d/sysvinit-backlight    /etc/rc4.d/S02sysvinit-backlight
/etc/rc0.d/K01sysvinit-backlight  /etc/rc5.d/S02sysvinit-backlight
/etc/rc1.d/S02sysvinit-backlight  /etc/rc6.d/K01sysvinit-backlight
/etc/rc2.d/S02sysvinit-backlight  /etc/rcS.d/S02sysvinit-backlight
/etc/rc3.d/S02sysvinit-backlight

При этом команды status/start/stop работают. Яркость функциональными кнопками регулируется.

Команда
$ watch -n1 cat /sys/class/backlight/*/brightnessпоказывает, что при изменении яркости меняется содержимое файлов
/sys/class/backlight/acpi_video1/brightness
/sys/class/backlight/intel_backlight/brightness

Выполнение команд
$ sudo tee /sys/class/backlight/acpi_video1/brightness <<< $((10*RANDOM/32767+1))
$ sudo tee /sys/class/backlight/intel_backlight/brightness <<< $((4882*RANDOM/32767+1))
приводит к изменению яркости.

Последние строчки из файла /var/lib/backlight_debug:
...
status 0 Ср. апр. 22 23:23:39 MSK 2015
load 0 Ср. апр. 22 23:23:49 MSK 2015
save 0 Ср. апр. 22 23:24:12 MSK 2015
load 0 Ср. апр. 22 23:24:28 MSK 2015
save 0 Wed Apr 22 23:34:11 MSK 2015
load 0 Wed Apr 22 23:34:51 MSK 2015
load 0 Wed Apr 22 23:34:57 MSK 2015

Содержимое boot.log:
load
Loading acpi_video0 = 5
Loading acpi_video1 = 10
Loading intel_backlight = 229
Loading asus::kbd_backlight = 0
 * Setting up X socket directories...       #[240G
#[234G[ OK ]
 * Restoring resolver state...       #[240G
#[234G[ OK ]
 * Starting uuid generator uuidd       #[240G
#[234G[ OK ]
 * speech-dispatcher disabled; edit /etc/default/speech-dispatcher
load
Loading acpi_video0 = 5
Loading acpi_video1 = 10
Loading intel_backlight = 229
Loading asus::kbd_backlight = 0
saned disabled; edit /etc/default/saned
« Последнее редактирование: 22 Апреля 2015, 23:47:59 от DoctorRover »
You're never too old to Rock'n'Roll if you're too young to die.

Оффлайн norbert

  • Новичок
  • *
  • Сообщений: 28
    • Просмотр профиля
Я провел ряд экспериментов.

Тип графического адаптера не является основной проблемой. Проверил еще один гибридный ноутбук - Lenovo B590 20206 (встроенный Intel HD Graphics в Intel Pentium 2020M, Nvidia GeForce 610M) под Ubuntu 12.04.5 LTS и 14.04.2 LTS мой скрипт работает нормально.

Основной проблемой является Ubuntu 14.10, в ней изменен механизм работы стандартных sysvinit-скриптов. Поэтому приоритеты 25 заменены на 1 и 2. Заметил, что непосредственно перед загрузкой (на заставке plymouth) яркость экрана сбрасывается на максимум, а яркость подсветки клавиатуры нормально сохраняется. Не понятно какая программа сбрасывает яркость экрана на максимум.

Под Ubuntu 15.04 (вышла на днях, поддерживается до января 2016) мой скрипт точно работать не будет, там сплошной systemd. Но зато там работает специализированный сервис systemd-backlight - протестировал на обычном и гибридном ноутбуках.
Строго говоря этот же systemd-сервис есть и в 14.10, но он по умолчанию не работает, поскольку по умолчанию используется система инициализации upstart.
Я попробовал передать init=/bin/systemd в GRUB при загрузке 14.10. Результат получил как с моим скриптом - яркость экрана сброшена на максимум, яркость подсветки клавиатуры восстановилась.
Вообще Ubuntu 14.10 осталось жить до июля 2015. Не вижу смысла заставлять работать мой скрипт в ней. Проще обновится до 15.04.

В качестве итога: мой скрипт работает нормально под Ubuntu 12.04 LTS и 14.04 LTS; не работает под 14.10 и 15.04. Но в 15.04 работает служба systemd-backlight, поэтому логично обновить 14.10 до 15.04.
По моему скромному мнению спокойнее все-таки поставить начисто 14.04 LTS, а не обновляться порелизно до 16.04 LTS (14.10->15.04->15.10->16.04 LTS).
« Последнее редактирование: 25 Апреля 2015, 22:06:10 от norbert »

 

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