LINUX.ORG.RU

Intel i915 и частота ШИМ подсветки

 , , , ,


3

4

Такая история. В моем ноутбуке установлена графическая карта от Intel. При уменьшении яркости очень заметна низкая частота ШИМ. Глаза болят. Нашел решение вот здесь: http://devbraindom.blogspot.com/2013/03/eliminate-led-screen-flicker-with-int.... При запуске системы устанавливается нужная частота и все чудесно. Но при переходе в спящий режим и выхода из него (это когда экран блокировки с вводом пароля появляется) частота ШИМ сбрасывается на дефолтные значения. Какие костыли или не костыли посоветуете? Заранее спасибо.

UPD: решение в первом комментарии.



Последнее исправление: Tuxman (всего исправлений: 1)

Чувак, тут не Intel виноваты, а твой вендор биоса/производитель ноута.

По-поводу костылей - что за дистрибутив? Если он с systemd то можно добавить еще один скрипт:

[Unit]
Description=LED PWM frequency 
After=suspend.target
#After=hibernate.target
#After=hybrid-sleep.target

[Service]
ExecStart=/usr/bin/intel_reg_write 0xc8254 %I

[Install]
WantedBy=suspend.target
#WantedBy=hibernate.target
#WantedBy=hybrid-sleep.target

Работать с ним точно так же, как и с приведенным по твоей ссылке

timdorohin ★★★★
()
Ответ на: комментарий от timdorohin

По-поводу костылей - что за дистрибутив?

Debian. В винде, кстати, проблема точно такая же. Там я это исправил программой IntelPWMControl.

За скрипт спасибо, попробую и отпишусь.

Tuxman
() автор топика

Я себе на udev-правило повесил, когда включается экран, тогда и выполняется скрипт.

Medar ★★★★★
()
Ответ на: комментарий от timdorohin

Пока еще не дошел до вашего скрипта, а пытаюсь изменить тот, который выполняется при старте системы. Это для того, что бы подсветка не прыгала на максимальное значение когда работает от батареи. Но мой вариант почему-то не работает. Как понять что я делаю не правильно? Вот скрипт для systemd:

[Unit]
Description=LED PWM frequency 

[Service]
Type=oneshot
ExecStart=/usr/bin/intel_reg write 0xC8254 0x00B3$(intel_reg read 0xC8254 | awk '{print $3}' | sed 's/0x....//')

[Install]
WantedBy=graphical.target 

До этого было так и срабатывало при старте:

[Unit]
Description=LED PWM frequency 

[Service]
Type=oneshot
ExecStart=/usr/bin/intel_reg_write 0xc8254 0x00b300b3

[Install]
WantedBy=graphical.target

Вот эта часть при запуске в терминале работает нормально:

intel_reg write 0xC8254 0x00B3$(intel_reg read 0xC8254 | awk '{print $3}' | sed 's/0x....//')

Tuxman
() автор топика
Ответ на: комментарий от Tuxman

Со стартовым скриптом разобрался. Вынес эту конструкцию в отдельный скрипт:

intel_reg write 0xC8254 0x00B3$(intel_reg read 0xC8254 | awk '{print $3}' | sed 's/0x....//')

Теперь все нормально, при включении подсветка остается на том уровне, на который я ее настроил и не прыгает на максимальное значение. Разбираюсь со следующим скриптом.

Tuxman
() автор топика
Ответ на: комментарий от timdorohin

Спасибо, скрипт работает как нужно.

Tuxman
() автор топика
29 сентября 2017 г.

Заметил еще один досадный баг. При затемнении экрана частота ШИМ сбрасывается на дефолтные значения. Это то событие, когда при бездействии через определенный промежуток времени яркость подсветки снижается в целях экономии.

Так вот повесить этот скрипт на событие backlight не получается, так как работа этого скрипта вызывает еще одно событие backlight. Получается бесконечный цикл. Что посоветуете сделать?

Tuxman
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.