Lenovo ThinkPad X1 Yoga OLED Jasność

13

Używam 16.04 na moim X1 Yoga OLED.

Nie mogę w ogóle zmienić jasności ekranu, wydaje się, że cały czas ma maksymalną jasność. Próbowałem:

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

Używam GNOME Shell w Xorg.

Mam nadzieję, że przydatna lista oprogramowania i wersji, powiedz mi w komentarzach, jeśli potrzebujesz więcej.

gnome-shell 3.18.5-0ubuntu0.1
tlp         0.9-1~xenial
tp-smapi    0.41-1
joar
źródło
1
Mam ten sam laptop i ten sam problem, próbowałem tej metody, ale otrzymuję: xrandr --output eDP1 - jasność .5 ostrzeżenie: nie znaleziono wyjścia eDP1; ignorowanie xrandr: Potrzebujesz crtc, aby włączyć gamma.
user240891
Aktualizacja, która może być dla niektórych pomocna - istnieje rozwiązanie, które działa teraz na Wayland, github.com/udifuchs/icc-brightness ; icc-brightness watcha następnie użyj zwykłych klawiszy jasności. Tak!
orangenarwhals

Odpowiedzi:

11

Nie ma podświetlenia z ekranem OLED. Więc normalne metody nie działają. Dostosuj jasność ekranu za pomocą:

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

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

liczba może wynosić od 0 do 1

P.Meyer
źródło
To jest poprawne. Zastanawiam się, czy opiekunowie GNOME / sterowników rozwiązali problem z interfejsem użytkownika: „Spodziewam się, że ekran zgaśnie po naciśnięciu klawisza SUN_ICON MINUS_SIGN”. jeszcze i czy i kiedy przyjedzie w 16.04.
dołącz
Mam ten sam laptop i ten sam problem, próbowałem tej metody, ale otrzymuję: xrandr --output eDP1 - jasność .5 ostrzeżenie: nie znaleziono wyjścia eDP1; ignorowanie xrandr: Potrzebujesz crtc, aby włączyć gamma.
user240891
3
Właśnie zainstalowałem nową dystrybucję Linuksa i musiałem znaleźć własną odpowiedź, więc znalazłem twój komentarz. Jeśli twoje urządzenie jest wywoływane inaczej, wystarczy wpisać xrandr samodzielnie. Wyświetli między innymi nazwę urządzenia. Mój nazywa się teraz: na przykład eDP-1.
P.Meyer,
11

Po naciśnięciu przycisków jasności szukałem sposobu na uruchomienie polecenia xrandr. W tym celu utworzyłem niestandardowe zdarzenia acpi (więcej informacji na ten temat tutaj: https://help.ubuntu.com/community/LaptopSpecialKeys ). To wciąż hack i nie jest właściwe rozwiązanie, ale działa dla mnie:

Utworzyłem trzy pliki, / etc / acpi / events / yoga-bright-up:

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

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

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

i na koniec /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"

który jest mocno zainspirowany plikiem asus-keyboard-backlight.sh oraz informacjami na https://bugs.launchpad.net/ubuntu/+source/xserver-xorg-video-intel/+bug/660901 dla roota xrandr problem z dostępem.

Nie zapomnij zrestartować acpi, pisząc

sudo service acpid reload

Mam nadzieję, że to pomoże ;-)

Ivo Blöchliger
źródło
Mam ten sam laptop i ten sam problem, próbowałem tej metody, ale otrzymuję: xrandr --output eDP1 - jasność .5 ostrzeżenie: nie znaleziono wyjścia eDP1; ignorowanie xrandr: Potrzebujesz crtc, aby włączyć gamma.
user240891
2
Mam to do pracy, ale musiałem podać „eDP1” zamiast „eDP-1”. Warto również wspomnieć, że musisz zrobić „chmod a + rx /etc/acpi/yoga-brightness.sh”. Dzięki!
Dan Christensen
5

Płynna kontrola jasności

( Aktualizacja: przesłałem skrypt udostępniania, aby zautomatyzować to w Github.)

Ten skrypt oparty jest na obejściu Ivo Blöchligera . Nie chciałbym, aby mój drogi laptop wyglądał tanio, więc potrzebuję płynnego przejścia między wartościami jasności, aby konkurować z moimi kolegami z Linuksa.

Został stworzony i przetestowany na Linux Mint 18.3 i Ubuntu 16.04.3 na Lenovo ThinkPad X1 Yoga (2. generacji) z panelem 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

Usuń wszystkie poprzednie programy obsługi jasności i na koniec zrób sudo service acpid reload

Redsandro
źródło
Zaktualizowałem powyższy skrypt, aby był zdolny do obsługi wielu użytkowników i obsługiwał lokalizację GDM xauthority gist.github.com/jackinloadup/c98682416f0363b9a6c6d4daf13c6c32
user9221
3

AKTUALIZACJA - 12 lipca 2019 r. -

Teraz jest ładny skrypt dla Waylanda i mogę używać klawiszy jasności.

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

Poniższy hack skryptu spowodowałby również zwiększenie jasności ekranu po przełączeniu trybu poziomego na pionowy (lub odwrotnie) i nie reagowałby na sterowanie jasnością ekranu dotykowego-GUI. Tak bardzo zadowolony z rozwiązania Wayland.

Stary

Potrzebowałem kilku poprawek, aby rozwiązanie @Redsandro działało na mojej instalacji Ubuntu 18.10.

W szczególności obejście root Xauth nie działa (dzięki za wspomnienie, że @Ivo B!), Ponieważ .Xauthorityplik już nie istnieje. Aby znaleźć nową lokalizację pliku:

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

Dlatego zmieniamy odpowiednią linię:

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

Dodatkowo musiałem się także zmienić eDP1na eDP-1.

W sumie doprowadziło to do zmian w trzech liniach.


Dodatkowe uwagi

Użyłem do debugowania

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

np. dla dwóch odpowiednich błędów, które znalazłem (Xauthority i 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.

UWAGA, to rozwiązanie nie działa w terenie! Ponieważ xrandr nie działa na Wayland. Upewnij się więc, że po zalogowaniu wybierasz Xorg, a nie Wayland),

(Trochę niefortunne, jak dla mnie, zdarzenia dotykowe firefox działają tylko w Wayland, więc muszę wybierać między jasnością a przewijaniem touchfox. Nie jestem pewien, dlaczego tak jest).

(Ta odpowiedź byłaby komentarzem, ale brakuje mi kredytów.)

orangenarwhals
źródło
1

Zrobiłem coś podobnego do powyższego w Ubuntu MATE 17.04:

  1. cat $MYDIR/scrbr.property= 0.5 (scrbr = jasność ekranu)
  2. Utworzono skrypt 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. Zmapuj klucze WinKey + Updo scrbr.sh --upi to samo dla --down.

  2. Zysk.

vivri
źródło