Regulácia jasu monitoru z Linuxu.
Regulácia jasu na mojom monitore je nepohodlná, preto som napísal script na zmenu jasu priamo z Linuxu. Prostredie: xfce4, Manjaro.
Potrebný software.
ddcutil,yad,notify-send.
awk,tr,bash sú obvykle súčasťou distribúcie Linuxu.
ddcutil
Komunikuje pomocou i2c zbernice s monitorom pripojeným cez vga, hdmi, displayport alebo usb.
i2c
Treba mať aktívny modul i2c-dev:
$ i2cdetect -l i2c-0 i2c AMDGPU DM i2c hw bus 0 I2C adapter i2c-1 i2c AMDGPU DM i2c hw bus 1 I2C adapter i2c-2 i2c AMDGPU DM i2c hw bus 2 I2C adapter i2c-3 i2c AMDGPU DM aux hw bus 2 I2C adapter
Ak nič nevypíše treba natiahnuť modul:
sudo modprobe i2c-dev
Pre natiahnutie modulu pri štarte systému vytvoriť súbor /etc/modules-load.d/i2c-dev.conf
i2c-dev
Súbory pre komunikáciu:
$ ls -l /dev/i2c-* crw-rw---- 1 root i2c 89, 0 júl 6 11:50 /dev/i2c-0 crw-rw---- 1 root i2c 89, 1 júl 6 11:50 /dev/i2c-1 crw-rw---- 1 root i2c 89, 2 júl 6 11:50 /dev/i2c-2 crw-rw---- 1 root i2c 89, 3 júl 6 11:50 /dev/i2c-3
Skupina i2c má právo čítania/zápisu pridám sa do nej, inak by som musel používať sudo:
sudo usermod $USER -aG i2c
Po odhlásení/prihlásení som už v skupine i2c:
$ id -nG gotrek sys log network power vboxusers i2c sambashare lp wheel autologin
Práca s ddcutil.
Detekcia monitoru:
$ ddcutil detect Display 1 I2C bus: /dev/i2c-0 EDID synopsis: Mfg id: PHL Model: PHL 243V7 Product code: 49493 Serial number: UK01932009368 Binary serial number: 9368 (0x00002498) Manufacture year: 2019, Week: 32 VCP version: 2.2
Zistenie jasu:
$ ddcutil getvcp 10 VCP code 0x10 (Brightness ): current value = 40, max value = 100
Pre nastavenie je príkaz setvcp.
Pre zistenie čo všetko sa dá na monitore ovládať:
ddcutil capabilities
ddcutil má veľmi dobrú dokumentáciu
Bash script:
#!/usr/bin/env bash # Nastav jas icon=cs-desktop jas=$(ddcutil getvcp 10|awk '{ print $9 }'| tr -d ',') yad --mouse \ --undecorated \ --title "Jas" \ --image="$icon" \ --window-icon="$icon" \ --text="Zvol jas obrazovky, teraz=$jas%" \ --button="20%":2 \ --button="40%":3 \ --button="60%":4 \ --button="80%":5 \ --button="100%":6 ret=$? case $ret in 2) adj=20 ;; 3) adj=40 ;; 4) adj=60 ;; 5) adj=80 ;; 6) adj=100 ;; *) adj=$jas ;; esac if test $jas != $adj; then ddcutil setvcp 10 $adj fi notify-send "Display" "Jas obrazovky $adj%" --icon=dialog-information -t 10000
Script mám v /home/gotrek/bin/nastavj. Ukončiť sa dá Esc, zdalo sa mi zbytočné nechať tlačidlá ok/cancel.
Na desktope som vytvoril spúšťač, vybral ikonu:
Textový výpis:
$ cat Plocha/Jas.desktop [Desktop Entry] Version=1.0 Type=Application Name=Jas Comment=Jas obrazovky Exec=/home/gotrek/bin/nastavj Icon=cs-desktop Path= Terminal=false StartupNotify=false
Ikonu cs-desktop som pridal do scriptu.
Výsledok - kliknem na ikonu na desktope:
Klik na tlačítko a je hotovo.
Notifikácia:
Občas požívam klávesové skratky:
Záver.
Ak je viac monitorov dajú sa adresovať pomocou viacerých parametrov - popísané v ddcutil --help.
Používam asi pol roka, práca na scripte sa vyplatila. Nemusím používať neergonomické ovládanie na monitore. Dve kliknutia myšou a je nastavené.
Každá zmena sa zapisuje do flash pamäte s obmedzenou životnosťou, treba na to pamätať.
Prílohy
- nastavj (623 Bytes)
Pre pridávanie komentárov sa musíte prihlásiť.
Super blog, len viac takýchto návodov :-)
Fajn návod len skoky jasu po 20% ti vyhovujú? Nie sú tie skoky veľmi hrubé? Ja by som volil skoky po 5 % pre jemnejšie nastavovanie.
Išlo mi o to, aby ma v tme monitor neoslňoval a na slnku aby som niečo videl. Takže by mi stačili tlačítka "tma" "polojasno" "slnko". Podrobné nastavenie je projekte ddcui. Pre mňa zbytočne zložité.
Skript je jednoduchý, ľahko sa upraví. Pre viac hodnôt ba som zvolil yad ComboBox - viď príklady yad.
Podľa toho popisu to vyzerá, že sa jedná o notebook. V tom prípade na mojom Delle stačia klávesové kombinácie Fn + F7 pre uberanie jasu a Fn + F8 pre pridávanie. Tie F7 a F8 ber s rezervou, nemám teraz ten ntb pri sebe a presne sa nepamatám, či je to kombinácia F7 a F8 alebo F8 a F9.
Mám AMD APU Athlon 200GE, desktop a 24" monitor Philips pripojený cez HDMI. Notebooky majú svoje riadenie jasu, ddcutil (podľa zdrojov z inernetu) nevie regulovať jas notebookových displejov.
<joke>
Jas treba mať stále na 100%. Prečo?
Aby človek vyzeral superhusto, ako nejaký hEk3r vo filme. Tam je jas tak vysoký, že sa na tvári HeK3rA premieta obraz/písmená.
</joke>
No oni hekeri vo filmoch sú takí "experti", že nevedia akým smerom majú pozerať na projektor ;)
Tu by som len doplnil, že niektoré monitory to majú implementované ako okamžitý zápis do EEPROM. V tom prípade ak by niekoho napadlo urobiť si automatické nastavenie jasu môže dôjsť po krátkom čase zničeniu EEPROM v monitore. Inak ddcutil používam aj ja na občasné nastavenie jasu. V mojom prípade funguje v 50% prípadov. Presne 50%. Presne každý druhý pokus o zmenu skončí I/O chybou, takže mi GPU zrejme posiela nejaký pozostatok z buffera navyše.
Mám amd apu, opensource drivery (okrem opencl-amd) a ddcutil funguje spoľahlivo. Ani ma nenapadlo že by mohol byť nejaký problém.
odhliadnuc ze blog je pisane pre XFCE, tak na GNOME je pre DDCutil extension
funguje mi obcasne :)
Toto som presne potreboval. Škoda že som si nekúpil monitor s automatickou reguláciou jasu podľa okolitého osvetlenia.
Dík, idem to skúšať.
Tak otestoval som. Mám Mag8. Skompiloval som 1.3dev. Pod rootom to ide dobre.
viď.
Príkaz funguje vždy. Použil som tvoj bash skript.
Bohužiaľ ani pri použití návodu
https://lexruee.ch/setting-i2c-permissions-for-non-root-users.html
my prístup k dev i2c nejde.
viď.
A potom som si myslel že si to nejak prepojím s detektorom osvetlenia. (to by sa muselo nejako vymyslieť)
Potom som si ale všimol o obmedzení zápisu do eepromu a to ma dosť schladilo.
Automatická regulácia jasu nie je dobrý nápad. Môže to rýchlo odpísať monitor.
Permission denied - zadaj príkazy
a daj to sem. Ťažko bez výpisu zistiť kde je chyba.
[dusan@localhost ~]$ ls -l /dev/i2c-*
crw------- 1 root root 89, 0 júl 15 21:57 /dev/i2c-0
crw------- 1 root i2c 89, 1 júl 15 21:57 /dev/i2c-1
crw------- 1 root root 89, 10 júl 15 21:57 /dev/i2c-10
crw------- 1 root root 89, 2 júl 15 21:57 /dev/i2c-2
crw------- 1 root root 89, 3 júl 15 21:57 /dev/i2c-3
crw------- 1 root root 89, 4 júl 15 21:57 /dev/i2c-4
crw------- 1 root root 89, 5 júl 15 21:57 /dev/i2c-5
crw------- 1 root root 89, 6 júl 15 21:57 /dev/i2c-6
crw------- 1 root root 89, 7 júl 15 21:57 /dev/i2c-7
crw------- 1 root root 89, 8 júl 15 21:57 /dev/i2c-8
crw------- 1 root root 89, 9 júl 15 21:57 /dev/i2c-9
[dusan@localhost ~]$ groups
dusan i2c
[dusan@localhost ~]$ id -nG
dusan i2c
zaujimave, na notebooku i2c nemam
predtym nez sa do mna niekto pusti mam i2c tools aj ddcutil nainstalovany.
Sú zavedené príslušné moduly? Ja mám na svojom notebooku toto:
ano su.
dokonca nedeguje ani monitor na HDMI ani na VGA vstupe. ale to bude asi notebookom, lebo som zistil ze na HP to ide.
tu ide iGPU Intel
Dokonca majú aj v QT napísané grafické rozhranie.
https://www.ddcutil.com/ddcui_main/
No otestujem to.