Lenovo ThinkPad X1 Yoga OLED Brillo

13

Estoy ejecutando 16.04 en mi X1 Yoga OLED.

No puedo cambiar el brillo de la pantalla en absoluto, parece estar en brillo máximo todo el tiempo. He intentado:

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

Estoy usando GNOME Shell en Xorg.

Espero que sea útil la lista de software y versiones, dime en los comentarios si necesitas más.

gnome-shell 3.18.5-0ubuntu0.1
tlp         0.9-1~xenial
tp-smapi    0.41-1
joar
fuente
1
Tengo la misma computadora portátil y el mismo problema, probé este método pero obtengo: xrandr --output eDP1 --brightness .5 advertencia: no se encontró la salida eDP1; ignorando xrandr: Necesito crtc para activar gamma.
user240891
Una actualización que algunos pueden encontrar útil: hay una solución que funciona en Wayland ahora, github.com/udifuchs/icc-brightness ; icc-brightness watchy luego usa tus teclas de brillo regulares. ¡Hurra!
orangenarwhals

Respuestas:

11

No hay luz de fondo con una pantalla OLED. Entonces los métodos normales no funcionan. Ajuste el brillo de la pantalla mediante:

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

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

el número puede ser cualquier cosa entre 0 y 1

P.Meyer
fuente
Esto es correcto. Me pregunto si los mantenedores de GNOME / controladores han abordado el problema de la interfaz de usuario de "Espero que mi pantalla se atenúe cuando presiono la tecla SUN_ICON MINUS_SIGN". aún, y si y cuándo llegará en 16.04.
joar
Tengo la misma computadora portátil y el mismo problema, probé este método pero obtengo: xrandr --output eDP1 --brightness .5 advertencia: no se encontró la salida eDP1; ignorando xrandr: Necesito crtc para activar gamma.
user240891
3
Acabo de instalar una nueva distribución de Linux y tuve que buscar mi propia respuesta, así que encontré tu comentario. Si su dispositivo recibe una llamada diferente, simplemente ingrese xrandr por sí mismo. Entre otras cosas, generará el nombre del dispositivo. El mío se llama ahora: eDP-1, por ejemplo.
P.Meyer
11

He estado buscando una manera de ejecutar el comando xrandr al presionar los botones de brillo. Creé eventos acpi personalizados para eso (más información sobre eso aquí: https://help.ubuntu.com/community/LaptopSpecialKeys ). Esto sigue siendo un truco y no es una solución adecuada, pero funciona para mí:

Creé tres archivos, / etc / acpi / events / yoga-shine-up:

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

y / etc / acpi / events / yoga-shine-down:

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

y 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 está fuertemente inspirado por el archivo asus-keyboard-backlight.sh y la información en https://bugs.launchpad.net/ubuntu/+source/xserver-xorg-video-intel/+bug/660901 para la raíz xrandr- problema de acceso

No olvide reiniciar acpi escribiendo

sudo service acpid reload

Espero que esto ayude ;-)

Ivo Blöchliger
fuente
Tengo la misma computadora portátil y el mismo problema, probé este método pero obtengo: xrandr --output eDP1 --brightness .5 advertencia: no se encontró la salida eDP1; ignorando xrandr: Necesito crtc para activar gamma.
user240891
2
Conseguí que esto funcionara, pero tuve que especificar "eDP1" en lugar de "eDP-1". Además, vale la pena mencionar que debe hacer "chmod a + rx /etc/acpi/yoga-brightness.sh". ¡Gracias!
Dan Christensen
5

Control de brillo suave

( Actualización: he cargado el script de provisión para automatizar esto en Github).

Este script se basa en la solución de Ivo Blöchliger . Odiaría que mi costosa computadora portátil se vea barata, por lo que necesito una transición suave entre los valores de brillo para competir con mis colegas que no son de Linux.

Esto se creó y probó en Linux Mint 18.3 y Ubuntu 16.04.3 en un Lenovo ThinkPad X1 Yoga (2da generación) con panel 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

Elimine los controladores de brillo anteriores y, finalmente, haga sudo service acpid reload

Redsandro
fuente
Actualicé el script anterior para que sea capaz de múltiples usuarios y maneje la ubicación de la xauthority de
user9221
3

ACTUALIZACIÓN - 12 de julio de 2019 -

Ahora hay un buen script para Wayland, y puedo usar mis teclas de brillo.

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

La secuencia de comandos que se muestra a continuación también aumentaría el brillo de la pantalla al cambiar el modo horizontal al modo vertical (o viceversa) y no respondería al control de brillo de la GUI de la pantalla táctil. Muy contento con la solución Wayland.

Antiguo

Necesitaba algunos ajustes para que la solución @Redsandro funcionara en mi instalación ubuntu 18.10.

Específicamente, la solución raíz de Xauth no funciona (¡gracias por mencionar que @Ivo B!) Ya que el .Xauthorityarchivo ya no existe. Para buscar la nueva ubicación del archivo:

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

Por lo tanto, cambiamos la línea relevante:

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

Además, también tuve que cambiar eDP1a eDP-1.

En total, esto condujo a cambios en tres líneas.


Notas adicionales

Para depurar, solía

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

por ejemplo, para los dos errores respectivos que encontré (Xauthority y 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 también, esta solución no funciona en wayland! Como xrandr no funciona en wayland. Así que asegúrese de que cuando inicie sesión, elija xorg, no wayland),

(Un poco desafortunado para mí, los eventos táctiles de Firefox solo funcionan en Wayland, así que tengo que elegir entre el brillo o el desplazamiento táctil de Firefox. Aún no estoy seguro de por qué).

(Esta respuesta habría sido un comentario pero me faltan créditos).

orangenarwhals
fuente
1

Hice algo similar a lo anterior en Ubuntu MATE 17.04:

  1. cat $MYDIR/scrbr.property= 0.5 (scrbr = brillo de pantalla)
  2. Creó un 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. Reasigne las teclas WinKey + Upa scrbr.sh --up, y lo mismo para --down.

  2. Lucro.

vivri
fuente