Lenovo ThinkPad X1 Yoga Brilho OLED

13

Estou executando o 16.04 no meu X1 Yoga OLED.

Não consigo alterar o brilho da tela, parece estar com o brilho máximo o tempo todo. Eu tentei:

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

Estou usando o GNOME Shell no Xorg.

Espero que seja útil lista de software e versões, diga-me nos comentários, se você precisar de mais.

gnome-shell 3.18.5-0ubuntu0.1
tlp         0.9-1~xenial
tp-smapi    0.41-1
joar
fonte
1
Eu tenho o mesmo laptop e o mesmo problema, tentei este método, mas recebo: xrandr --output eDP1 --brightness .5 aviso: saída eDP1 não encontrada; ignorando xrandr: precisa de crtc para ativar a gama.
user240891
Uma atualização que alguns podem achar útil - existe uma solução que funciona no Wayland agora, github.com/udifuchs/icc-brightness ; icc-brightness watche depois use suas teclas de brilho regulares. Yay!
Orangenarwhals 12/07/19

Respostas:

11

Não há luz de fundo com uma tela OLED. Portanto, os métodos normais não funcionam. Ajuste o brilho da tela por meio de:

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

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

o número pode estar entre 0 e 1

P.Meyer
fonte
Isto está certo. Gostaria de saber se os mantenedores do GNOME / driver resolveram o problema da interface do usuário de "Espero que minha tela fique escura quando pressiono a tecla SUN_ICON MINUS_SIGN". ainda, e se e quando chegará em 16.04.
joar
Eu tenho o mesmo laptop e o mesmo problema, tentei este método, mas recebo: xrandr --output eDP1 --brightness .5 aviso: saída eDP1 não encontrada; ignorando xrandr: precisa de crtc para ativar a gama.
user240891
3
Acabei de instalar uma nova distribuição Linux e tive que procurar minha própria resposta, então encontrei seu comentário. Se o seu dispositivo for chamado de forma diferente, digite apenas xrandr. Entre outras coisas, ele emitirá o nome do dispositivo. O meu é chamado agora: eDP-1, por exemplo.
P.Meyer
11

Eu estava procurando uma maneira de executar o comando xrandr ao pressionar os botões de brilho. Criei eventos acpi personalizados para isso (mais informações sobre isso aqui: https://help.ubuntu.com/community/LaptopSpecialKeys ). Ainda é um hack e não há uma solução adequada, mas funciona para mim:

Criei três arquivos, / etc / acpi / events / yoga-brightness-up:

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

e / etc / acpi / events / yoga-brightness-down:

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

e finalmente /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"

que é fortemente inspirado no arquivo asus-keyboard-backlight.sh e nas informações em https://bugs.launchpad.net/ubuntu/+source/xserver-xorg-video-intel/+bug/660901 para o root xrandr problema de acesso.

Não se esqueça de reiniciar o acpi digitando

sudo service acpid reload

Eu espero que isso ajude ;-)

Ivo Blöchliger
fonte
Eu tenho o mesmo laptop e o mesmo problema, tentei este método, mas recebo: xrandr --output eDP1 --brightness .5 aviso: saída eDP1 não encontrada; ignorando xrandr: precisa de crtc para ativar a gama.
user240891
2
Consegui fazer isso funcionar, mas tive que especificar "eDP1" em vez de "eDP-1". Além disso, vale ressaltar que você precisa fazer "chmod a + rx /etc/acpi/yoga-brightness.sh". Obrigado!
Dan Christensen
5

Controle de brilho suave

( Atualização: carreguei o script de provisão para automatizar isso no Github.)

Este script é baseado na solução alternativa de Ivo Blöchliger . Eu odiaria que meu laptop caro parecesse barato, então preciso de uma transição suave entre os valores de brilho para competir com meus colegas não-linux.

Isso foi criado e testado no Linux Mint 18.3 e Ubuntu 16.04.3 em um Lenovo ThinkPad X1 Yoga (2ª geração) com painel 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

Remova todos os manipuladores de brilho anteriores e, finalmente, faça sudo service acpid reload

Redsandro
fonte
Eu atualizei o script acima para ser um multi usuário local capaz e alça GDM Xauthority gist.github.com/jackinloadup/c98682416f0363b9a6c6d4daf13c6c32
user9221
3

ATUALIZAÇÃO - 12 de julho de 2019 -

Agora existe um bom roteiro para Wayland, e posso usar minhas teclas de brilho.

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

O hack de script abaixo também aumentaria a tela para o brilho total ao alternar paisagem para o modo retrato (ou vice-versa) e não responderia ao controle de brilho da GUI da tela de toque. Tão realmente feliz com a solução Wayland.

Velho

Eu precisava de alguns ajustes para fazer a solução @Redsandro funcionar na minha instalação do ubuntu 18.10.

Especificamente, a solução alternativa da raiz do Xauth não funciona (obrigado por mencionar o @Ivo B!), Pois o .Xauthorityarquivo não existe mais. Para encontrar o novo local do arquivo:

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

Portanto, alteramos a linha relevante:

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

Além disso, eu também tive que mudar eDP1para eDP-1.

No total, isso levou a alterações em três linhas.


Notas Adicionais

Para depurar, eu usei

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

por exemplo, para os dois erros respectivos que encontrei (Xauthority e 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.

NOTA também, esta solução não funciona no wayland! Como o xrandr não funciona no wayland. Portanto, certifique-se de que, ao fazer login, escolha xorg, não wayland),

(Um pouco lamentável quanto a mim, os eventos de toque do firefox só funcionam em Wayland, então eu tenho que escolher entre o brilho versus o toque de toque do firefox. Não sei por que isso ainda é).

(Esta resposta seria um comentário, mas não tenho créditos.)

orangenarwhals
fonte
1

Fiz uma coisa semelhante à anterior no Ubuntu MATE 17.04:

  1. cat $MYDIR/scrbr.property= 0.5 (scrbr = brilho da tela)
  2. Criou um script 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. Remapeie as chaves WinKey + Uppara scrbr.sh --upe o mesmo para --down.

  2. Lucro.

vivri
fonte