Lenovo ThinkPad X1 Yoga OLED Helligkeit


12

Ich laufe 16.04 auf meiner X1 Yoga OLED.

Ich kann die Helligkeit des Bildschirms überhaupt nicht ändern, er scheint die ganze Zeit auf maximaler Helligkeit zu sein. Ich habe es versucht:

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

Ich verwende GNOME Shell in Xorg.

Hoffentlich nützliche Liste von Software und Versionen, sag es mir in den Kommentaren, wenn du mehr brauchst.

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

1
Ich habe den gleichen Laptop und das gleiche Problem, habe diese Methode ausprobiert, aber ich erhalte: xrandr --output eDP1 --brightness .5 Warnung: Ausgabe eDP1 nicht gefunden; xrandr ignorieren: Benötige crtc, um Gamma einzuschalten.
user240891

Ein Update, das einige vielleicht hilfreich finden - es gibt eine Lösung, die jetzt auf Wayland funktioniert: github.com/udifuchs/icc-brightness ; icc-brightness watchund verwenden Sie dann Ihre normalen Helligkeitstasten. Yay!
Orangenarwale

Antworten:


10

Bei einem OLED-Bildschirm gibt es keine Hintergrundbeleuchtung. Die normalen Methoden funktionieren also nicht. Passen Sie die Bildschirmhelligkeit an:

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

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

Die Zahl kann zwischen 0 und 1 liegen


Das ist richtig. Ich frage mich, ob GNOME / Treiberbetreuer das Problem mit der Benutzeroberfläche behoben haben: "Ich erwarte, dass mein Bildschirm dunkler wird, wenn ich die Taste SUN_ICON MINUS_SIGN drücke." noch und ob und wann es am 16.04 ankommen wird.
Joar

Ich habe den gleichen Laptop und das gleiche Problem, habe diese Methode ausprobiert, aber ich erhalte: xrandr --output eDP1 --brightness .5 Warnung: Ausgabe eDP1 nicht gefunden; xrandr ignorieren: Benötige crtc, um Gamma einzuschalten.
user240891

3
Ich habe gerade eine neue Linux-Distribution installiert und musste meine eigene Antwort nachschlagen, also habe ich Ihren Kommentar gefunden. Wenn Ihr Gerät anders aufgerufen wird, geben Sie einfach xrandr selbst ein. Es wird unter anderem der Gerätename ausgegeben. Meins heißt jetzt: eDP-1 zum Beispiel.
P. Meyer

11

Ich habe nach einer Möglichkeit gesucht, den Befehl xrandr auszuführen, wenn ich die Helligkeitstasten drücke. Ich habe dafür benutzerdefinierte ACPI-Ereignisse erstellt (weitere Informationen dazu hier: https://help.ubuntu.com/community/LaptopSpecialKeys ). Dies ist immer noch ein Hack und keine richtige Lösung, aber es funktioniert für mich:

Ich habe drei Dateien erstellt, / etc / acpi / events / Yoga-Helligkeit-up:

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

und / etc / acpi / events / Yoga-Helligkeit-down:

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

und schließlich /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"

Dies ist stark von der Datei asus-keyboard-backlight.sh und den Informationen auf https://bugs.launchpad.net/ubuntu/+source/xserver-xorg-video-intel/+bug/660901 für den xrandr root- inspiriert Zugriffsproblem.

Vergessen Sie nicht, acpi durch Eingabe neu zu starten

sudo service acpid reload

Ich hoffe das hilft ;-)


Ich habe den gleichen Laptop und das gleiche Problem, habe diese Methode ausprobiert, aber ich erhalte: xrandr --output eDP1 --brightness .5 Warnung: Ausgabe eDP1 nicht gefunden; xrandr ignorieren: Benötige crtc, um Gamma einzuschalten.
user240891

2
Ich habe das zum Laufen gebracht, musste aber "eDP1" anstelle von "eDP-1" angeben. Erwähnenswert ist auch, dass Sie "chmod a + rx /etc/acpi/yoga-brightness.sh" ausführen müssen. Vielen Dank!
Dan Christensen

5

Reibungslose Helligkeitsregelung

( Update: Ich habe das Bereitstellungsskript hochgeladen, um dies auf Github zu automatisieren .)

Dieses Skript basiert auf der Problemumgehung von Ivo Blöchliger . Ich würde es hassen, wenn mein teurer Laptop billig aussieht, daher brauche ich einen reibungslosen Übergang zwischen den Helligkeitswerten, um mit meinen Nicht-Linux-Kollegen konkurrieren zu können.

Dies wurde für Linux Mint 18.3 und Ubuntu 16.04.3 auf einem Lenovo ThinkPad X1 Yoga (2. Generation) mit OLED-Panel erstellt und getestet.

/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

Entfernen Sie alle vorherigen Helligkeits-Handler und tun Sie dies schließlich sudo service acpid reload


Ich habe das obige Skript so aktualisiert, dass es für mehrere Benutzer geeignet ist und den GDM-Xauthority-Speicherort gist.github.com/jackinloadup/c98682416f0363b9a6c6d4daf13c6c32
user9221

3

UPDATE - 12. Juli 2019 -

Es gibt jetzt ein schönes Skript für Wayland, und ich kann meine Helligkeitstasten verwenden.

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

Der unten stehende Skript-Hack würde den Bildschirm auch auf volle Helligkeit hochfahren, wenn Sie im Querformat in den Hochformatmodus wechseln (oder umgekehrt) und nicht auf die Helligkeitssteuerung der Touchscreen-GUI reagieren. Also sehr zufrieden mit der Wayland-Lösung.

Alt

Ich brauchte ein paar Verbesserungen, damit die @ Redsandro-Lösung auf meiner Ubuntu 18.10-Installation funktioniert.

Insbesondere funktioniert die Xauth-Root-Problemumgehung nicht (danke, dass Sie @Ivo B erwähnt haben!), Da die .XauthorityDatei nicht mehr vorhanden ist. So finden Sie den neuen Speicherort:

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

Deshalb ändern wir die relevante Zeile:

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

Darüber hinaus habe ich auch ändern musste eDP1zu eDP-1.

Insgesamt führte dies zu Änderungen in drei Zeilen.


Zusätzliche Bemerkungen

Zum Debuggen habe ich verwendet

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

zB für die beiden jeweiligen Fehler, die ich gefunden habe (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.

HINWEIS: Diese Lösung funktioniert auch nicht in Wayland! Da xrandr nicht auf Wayland funktioniert. Stellen Sie also sicher, dass Sie beim Anmelden xorg (nicht wayland) auswählen.

(Ein bisschen unglücklich für mich, Firefox-Touch-Ereignisse funktionieren nur in Wayland, daher muss ich zwischen Helligkeit und Firefox-Touch-Scroll wählen. Ich bin mir noch nicht sicher, warum das so ist.)

(Diese Antwort wäre ein Kommentar gewesen, aber mir fehlen Credits.)


1

Ich habe in Ubuntu MATE 17.04 etwas Ähnliches wie oben gemacht:

  1. cat $MYDIR/scrbr.property= 0.5 (scrbr = Bildschirmhelligkeit)
  2. Erstellt ein Skript 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. Remap Tasten WinKey + Upauf scrbr.sh --up, und gleich für --down.

  2. Profitieren.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.