Luminosità OLED Lenovo ThinkPad X1 Yoga


13

Sono in esecuzione 16.04 sul mio X1 Yoga OLED.

Non riesco a cambiare affatto la luminosità dello schermo, sembra essere sempre alla massima luminosità. Ho provato:

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

Sto usando GNOME Shell in Xorg.

Eventualmente utile elenco di software e versioni, dimmi nei commenti se hai bisogno di più.

gnome-shell 3.18.5-0ubuntu0.1
tlp         0.9-1~xenial
tp-smapi    0.41-1

1
Ho lo stesso laptop e lo stesso problema, ho provato questo metodo ma ottengo: xrandr --output eDP1 --brightness .5 avviso: output eDP1 non trovato; ignorando xrandr: è necessario crtc per attivare la gamma.
user240891

Un aggiornamento che alcuni potrebbero trovare utili: ora c'è una soluzione che funziona su Wayland, github.com/udifuchs/icc-brightness ; icc-brightness watche quindi utilizzare i normali tasti di luminosità. Sìì!
orangenarwhals,

Risposte:


11

Non c'è retroilluminazione con uno schermo OLED. Quindi i metodi normali non funzionano. Regola la luminosità dello schermo mediante:

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

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

il numero può essere compreso tra 0 e 1


Questo è corretto. Mi chiedo se i manutentori di GNOME / driver abbiano affrontato il problema dell'interfaccia utente di "Mi aspetto che il mio schermo si oscuri quando premo il tasto SUN_ICON MINUS_SIGN". ancora, e se e quando arriverà nel 16.04.
Joar,

Ho lo stesso laptop e lo stesso problema, ho provato questo metodo ma ottengo: xrandr --output eDP1 --brightness .5 avviso: output eDP1 non trovato; ignorando xrandr: è necessario crtc per attivare la gamma.
user240891

3
Ho appena installato una nuova distribuzione Linux e ho dovuto cercare la mia risposta, quindi ho trovato il tuo commento. Se il tuo dispositivo viene chiamato in modo diverso, inserisci semplicemente xrandr da solo. Tra le altre cose, verrà emesso il nome del dispositivo. Il mio si chiama ora: eDP-1 per esempio.
P.Meyer,

11

Ho cercato un modo per eseguire il comando xrandr quando si premono i pulsanti di luminosità. Ho creato eventi acpi personalizzati per questo (maggiori informazioni qui: https://help.ubuntu.com/community/LaptopSpecialKeys ). Questo è ancora un trucco e nessuna soluzione adeguata, ma funziona per me:

Ho creato tre file, / etc / acpi / events / yoga-luminosità-up:

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

e / etc / acpi / events / yoga-luminosità-giù:

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

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

che è fortemente ispirato al file asus-keyboard-backlight.sh e alle informazioni su https://bugs.launchpad.net/ubuntu/+source/xserver-xorg-video-intel/+bug/660901 per la radice xrandr- problema di accesso.

Non dimenticare di riavviare acpi digitando

sudo service acpid reload

Spero che questo possa essere d'aiuto ;-)


Ho lo stesso laptop e lo stesso problema, ho provato questo metodo ma ottengo: xrandr --output eDP1 --brightness .5 avviso: output eDP1 non trovato; ignorando xrandr: è necessario crtc per attivare la gamma.
user240891

2
Ho fatto funzionare tutto questo, ma ho dovuto specificare "eDP1" invece di "eDP-1". Inoltre, vale la pena ricordare che devi fare "chmod a + rx /etc/acpi/yoga-brightness.sh". Grazie!
Dan Christensen,

5

Controllo regolare della luminosità

( Aggiornamento: ho caricato lo script di provisioning per automatizzare questo su Github.)

Questo script si basa sulla soluzione alternativa di Ivo Blöchliger . Odio che il mio costoso laptop sembri economico, quindi ho bisogno di una transizione graduale tra i valori di luminosità per competere con i miei colleghi non Linux.

Questo è stato creato e testato su Linux Mint 18.3 e Ubuntu 16.04.3 su un Lenovo ThinkPad X1 Yoga (2a generazione) con pannello 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

Rimuovere eventuali gestori di luminosità precedenti e, infine, farlo sudo service acpid reload


Ho aggiornato lo script sopra per essere un multiutente in grado e gestire la posizione GDM xauthority gist.github.com/jackinloadup/c98682416f0363b9a6c6d4daf13c6c32
user9221

3

AGGIORNAMENTO - 12 luglio 2019 -

Ora c'è una bella sceneggiatura per Wayland e posso usare i miei tasti di luminosità.

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

L'hacking dello script qui sotto porterebbe anche lo schermo alla massima luminosità quando si passa dalla modalità orizzontale alla modalità verticale (o viceversa) e non risponde al controllo della luminosità della GUI touchscreen. Sono davvero contento della soluzione Wayland.

Vecchio

Avevo bisogno di alcune modifiche per far funzionare la soluzione @Redsandro sulla mia installazione di Ubuntu 18.10.

In particolare, la soluzione alternativa alla radice di Xauth non funziona (grazie per aver menzionato @Ivo B!) Poiché il .Xauthorityfile non esiste più. Per trovare il nuovo percorso del file:

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

Pertanto cambiamo la riga pertinente:

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

Inoltre, ho anche dovuto cambiare eDP1a eDP-1.

In totale questo ha portato a cambiamenti su tre linee.


Note aggiuntive

Per eseguire il debug, ho usato

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

ad es. per i due rispettivi errori che ho riscontrato (Xauthority ed 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 anche, questa soluzione non funziona in wayland! Poiché xrandr non funziona su Wayland. Quindi assicurati che quando accedi, scegli xorg, non wayland),

(Un po 'sfortunato per me, gli eventi touch di Firefox funzionano solo a Wayland, quindi devo scegliere tra la luminosità e il touchscroll di Firefox. Non sono sicuro del perché).

(Questa risposta sarebbe stata un commento ma mi mancano i crediti.)


1

Ho fatto una cosa simile alla precedente in Ubuntu MATE 17.04:

  1. cat $MYDIR/scrbr.property= 0.5 (scrbr = luminosità dello schermo)
  2. Creato uno 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. Chiavi Rimappa WinKey + Upa scrbr.sh --up, e lo stesso per --down.

  2. Profitto.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.