Lenovo ThinkPad X1 Yoga OLED Яркость

13

Я бегу 16.04 на моем X1 Yoga OLED.

Я не могу изменить яркость экрана вообще, кажется, что на максимальной яркости все время. Я пробовал:

  • Fn+ F5/F6
  • xbacklight -set 50(и 100, и 0, и 20, ...) /xbacklight -dec 10

Я использую GNOME Shell в Xorg.

Надеюсь, полезный список программного обеспечения и версий, скажите мне в комментариях, если вам нужно больше.

gnome-shell 3.18.5-0ubuntu0.1
tlp         0.9-1~xenial
tp-smapi    0.41-1
Joar
источник
1
У меня тот же ноутбук и та же проблема, пробовал этот метод, но я получаю: xrandr --output eDP1 - яркость .5 предупреждение: выходной eDP1 не найден; игнорирование xrandr: нужен CRTC для включения гаммы.
user240891
Некоторые обновления могут оказаться полезными - есть решение, которое работает на Wayland сейчас, github.com/udifuchs/icc-brightness ; icc-brightness watchа затем используйте ваши обычные клавиши яркости. Ура!
orangenarwhals

Ответы:

11

Подсветка с OLED-экраном отсутствует. Так что нормальные методы не работают. Отрегулируйте яркость экрана с помощью:

xrandr --output eDP1 --brightness .5  # dim to half 

xrandr --output eDP1 --brightness 1  # no dimming

число может быть любым от 0 до 1

P.Meyer
источник
Это верно. Интересно, решали ли разработчики GNOME / драйвера проблему с пользовательским интерфейсом: «Я ожидаю, что мой экран тускнеет при нажатии клавиши SUN_ICON MINUS_SIGN». пока, и если и когда это прибудет в 16.04.
Joar
У меня тот же ноутбук и та же проблема, пробовал этот метод, но я получаю: xrandr --output eDP1 - яркость .5 предупреждение: выходной eDP1 не найден; игнорирование xrandr: нужен CRTC для включения гаммы.
user240891
3
Я только что установил новый дистрибутив Linux, и мне пришлось искать свой собственный ответ, поэтому я нашел ваш комментарий. Если ваше устройство называется по-другому, просто введите xrandr само по себе. Он, помимо прочего, выведет имя устройства. Шахта называется сейчас: например, eDP-1.
P.Meyer
11

Я искал способ запуска команды xrandr при нажатии кнопок яркости. Для этого я создал пользовательские события acpi (подробнее об этом здесь: https://help.ubuntu.com/community/LaptopSpecialKeys ). Это все еще хак и не правильное решение, но оно работает для меня:

Я создал три файла, / etc / acpi / events / yoga-bright-up:

event=video/brightnessup BRTUP 00000086
action=/etc/acpi/yoga-brightness.sh up

и / etc / acpi / events / yoga-bright-down:

event=video/brightnessdown BRTDN 00000087
action=/etc/acpi/yoga-brightness.sh down

и, наконец, /etc/acpi/yoga-brightness.sh:

#!/bin/sh

# Where the backlight brightness is stored
BR_DIR="/sys/devices/pci0000:00/0000:00:02.0/drm/card0/card0-eDP-1/intel_backlight/"


test -d "$BR_DIR" || exit 0

MIN=0
MAX=$(cat "$BR_DIR/max_brightness")
VAL=$(cat "$BR_DIR/brightness")

if [ "$1" = down ]; then
    VAL=$((VAL-71))
else
    VAL=$((VAL+71))
fi

if [ "$VAL" -lt $MIN ]; then
    VAL=$MIN
elif [ "$VAL" -gt $MAX ]; then
    VAL=$MAX
fi

PERCENT=`echo "$VAL / $MAX" | bc -l`

export XAUTHORITY=/home/ivo/.Xauthority  # CHANGE "ivo" TO YOUR USER
export DISPLAY=:0.0

echo "xrandr --output eDP-1 --brightness $PERCENT" > /tmp/yoga-brightness.log
xrandr --output eDP-1 --brightness $PERCENT

echo $VAL > "$BR_DIR/brightness"

который в значительной степени вдохновлен файлом asus-keyboard-backlight.sh и информацией на https://bugs.launchpad.net/ubuntu/+source/xserver-xorg-video-intel/+bug/660901 для корневого каталога xrandr проблема с доступом

Не забудьте перезапустить acpi, набрав

sudo service acpid reload

Надеюсь, это поможет ;-)

Иво Блохлигер
источник
У меня тот же ноутбук и та же проблема, пробовал этот метод, но я получаю: xrandr --output eDP1 - яркость .5 предупреждение: выходной eDP1 не найден; игнорирование xrandr: нужен CRTC для включения гаммы.
user240891
2
Я получил это на работу, но пришлось указать «eDP1» вместо «eDP-1». Также стоит упомянуть, что вам нужно выполнить «chmod a + rx /etc/acpi/yoga-brightness.sh». Благодарность!
Дэн Кристенсен
5

Плавный контроль яркости

( Обновление: я загрузил сценарий предоставления, чтобы автоматизировать это на Github.)

Этот сценарий основан на обходном пути Ivo Blöchliger . Я бы не хотел, чтобы мой дорогой ноутбук выглядел дешево, поэтому мне нужен плавный переход между значениями яркости, чтобы конкурировать с коллегами, не работающими в Linux.

Он создан для Linux Mint 18.3 и Ubuntu 16.04.3 и протестирован на Lenovo ThinkPad X1 Yoga (2nd Gen) с OLED-панелью.

/etc/acpi/events/oled-brightness-up (644):

event=video/brightnessup BRTUP 00000086
action=/etc/acpi/oled-brightness.sh up

/etc/acpi/events/oled-brightness-down (644):

event=video/brightnessdown BRTDN 00000087
action=/etc/acpi/oled-brightness.sh down

/etc/acpi/oled-brightness.sh (755):

#!/bin/bash
# Smooth brightness control
# Change "redsandro" in the line below to your username
export XAUTHORITY=/home/redsandro/.Xauthority
export DISPLAY=:0.0

OLED_BR=`xrandr --verbose | grep -i brightness | cut -f2 -d ' '`
CURR=`LC_ALL=C /usr/bin/printf "%.*f" 1 $OLED_BR`

MIN=0
MAX=1.2

if [ "$1" == "up" ]; then
    VAL=`echo "scale=1; $CURR+0.1" | bc`
else
    VAL=`echo "scale=1; $CURR-0.1" | bc`
fi

if (( `echo "$VAL < $MIN" | bc -l` )); then
    VAL=$MIN
elif (( `echo "$VAL > $MAX" | bc -l` )); then
    VAL=$MAX
else
    if [ "$1" == "up" ]; then
        for I in {1..10..1}; do xrandr --output eDP1 --brightness `echo "scale=2; $I/100+$CURR" | bc` 2>&1 >/dev/null | logger -t oled-brightness; done
    else
        for I in {1..10..1}; do xrandr --output eDP1 --brightness `echo "scale=2; $CURR-$I/100" | bc` 2>&1 >/dev/null | logger -t oled-brightness; done
    fi
fi

# Set Intel backlight to fake value
# to sync OSD brightness indicator to actual brightness
INTEL_PANEL="/sys/devices/pci0000:00/0000:00:02.0/drm/card0/card0-eDP-1/intel_backlight/"
if [ -d "$INTEL_PANEL" ]; then
    PERCENT=`echo "scale=4; $VAL/$MAX" | bc -l`
    INTEL_MAX=$(cat "$INTEL_PANEL/max_brightness")
    INTEL_BRIGHTNESS=`echo "scale=4; $PERCENT*$INTEL_MAX" | bc -l`
    INTEL_BRIGHTNESS=`LC_ALL=C /usr/bin/printf "%.*f" 0 $INTEL_BRIGHTNESS`
    echo $INTEL_BRIGHTNESS > "$INTEL_PANEL/brightness"
fi

Удалите все предыдущие обработчики яркости и, наконец, сделайте sudo service acpid reload

Redsandro
источник
Я обновил приведенный выше сценарий, чтобы он был многопользовательским и обрабатывал местоположение xauthority
user9221
3

ОБНОВЛЕНИЕ - 12 июля 2019 года -

Теперь есть хороший сценарий для Wayland, и я могу использовать свои клавиши яркости.

https://github.com/udifuchs/icc-brightness и ./icc-brightness watch.

Подсказка сценария, приведенная ниже, также приведет к увеличению яркости экрана при переключении альбомной ориентации в портретный режим (или наоборот) и не будет реагировать на управление яркостью сенсорного графического интерфейса. Так что действительно доволен решением Wayland.

старый

Мне нужно было несколько настроек, чтобы решение @Redsandro работало на моей установке Ubuntu 18.10.

В частности, обходной путь root Xauth не работает (спасибо, что упомянули, что @Ivo B!), Поскольку .Xauthorityфайл больше не существует. Чтобы найти новое местоположение файла:

$ xauth info
Authority file:       /run/user/1000/gdm/Xauthority

Поэтому мы меняем соответствующую строку:

-OLD: export XAUTHORITY=/home/redsandro/.Xauthority
+NEW: export XAUTHORITY=/run/user/1000/gdm/Xauthority

Кроме того, мне также пришлось перейти eDP1на eDP-1.

В общей сложности это привело к изменениям по трем направлениям.


Дополнительные замечания

Для отладки я использовал

rui@chaiX1YG2:/var/log$ $ tail -f /var/log/syslog | grep oled-br

например, для двух соответствующих ошибок, которые я нашел (Xauthority & eDP)

Jan 16 13:03:01 chaiX1YG2 oled-brightness: Can't open display :0.0
Jan 16 13:03:01 chaiX1YG2 oled-brightness: No protocol specified
Jan 16 13:23:46 chaiX1YG2 oled-brightness: warning: output eDP1 not found; ignoring
Jan 16 13:23:46 chaiX1YG2 oled-brightness: xrandr: Need crtc to set gamma on.

Также обратите внимание, что это решение не работает в Wayland! Как Xrandr не работает на Wayland. Поэтому убедитесь, что при входе вы выбираете xorg, а не wayland),

(Немного прискорбно, что для меня события касания Firefox работают только в Wayland, поэтому мне приходится выбирать между сенсорной прокруткой яркости и Firefox. Не знаю, почему это так).

(Этот ответ был бы комментарием, но мне не хватает кредитов.)

orangenarwhals
источник
1

Я сделал то же самое, что и выше, в Ubuntu MATE 17.04:

  1. cat $MYDIR/scrbr.property= 0.5 (scrbr = яркость экрана)
  2. Создан скрипт scrbr.sh:

`` `

#!/bin/bash

ACTION=$1

PROP_FILE=$MYDIR/scrbr.property
BRIGHT=$(cat $PROP_FILE)

if [[ "$ACTION" == "--up" ]]; then
        SYM="+"
elif [[ "$ACTION" == "--down" ]]; then
        SYM="-"
fi

BRIGHT=$(echo "$BRIGHT $SYM 0.1" | bc)

# Not less than 0
[[ $BRIGHT == -* ]] && BRIGHT=0

echo $BRIGHT > $PROP_FILE

xrandr --output eDP-1 --brightness $BRIGHT
  1. Переназначить ключи WinKey + Upна scrbr.sh --upи то же самое для --down.

  2. Прибыль.

vivri
источник