Ddcutil ile Monitör Ayarlarını Kontrol Etmek
ddcutil monitor ayarlarını düzenlemeye yardımcı olan bir Linux sistem uygulamasıdır. Dizüstü bir bilgisayarda ekran parlaklığını bir buton veya sistem arayüzünde bulunan bir arayüzle ayarlayabilirsiniz. Monitörlerde ise bu tarzda bir entegrasyon ne yazık ki pek yaygın değil. Bunun nedeni monitörlerin bu konuda beceriksiz olmalarından olduğunu zannetmiyorum büyük ihtimalle kimse gerçek anlamda üzerinden durmadığı içindir.
Ddcutil dökümanına göre 2000 sonrasında üretilen monitörler DDC/CI iletişim protokolüne sahipler. Bu protokol temel olarak monitörün sahip olduğu bütün özellikleri kontrol etmek üzerine seçeneklere sahip, parlaklık, renk değerleri, çözünürlük, gama, görüntü kaynağı gibi.
Benim bu arayüzden 2 temel beklentim bulunuyordu:
- Parlaklığı değiştirmek
- Buton ile
- Günün saatine göre
- Görüntü kaynağını aktif bilgisayara geçirmek
Bunları monitör arayüzünden yapabilsekte, monitör üzerinde bulunan joystick ile parlaklık değiştirmek için 3 menü değiştirmem, görüntü kaynağı içinse 2 menü değiştirmem gerekiyordu.
Gereklilikler
İlk önce ddcutil yüklü değilse yüklenmesi gerekiyor.
sudo apt install ddcutil
Protokol i2c denilen bir iletişim metodu kullanıyor. Linux üzerinde bu sistemi kullanmak için i2c-dev
modülünün aktif olması gerekmektedir. Modülün sistem başlangıcında yüklenmesi için aşağıdaki dosyayı oluşturmamız yeterlidir.
i2c-dev
Modülü cihazı yeniden başlatmaya ihtiyaç duymadan yüklemek için aşağıdaki komut kullanılabilir.
sudo modprobe i2c-dev
Test
Ddcutil'in çalıştığını doğrulamak ve monitorünü kontrol etmek için aşağıdaki komutu kullanmak yeterli:
sudo ddcutil detect
Bu komut sisteminize bağlı olan bütün monitörleri kontrol ederek uygun olup olmadıklarını ve bağlı bulunduğu sistem arayüzünü listeler. Benim sistemimde komutun sonucunda 2 monitör bulundu. Biri dizüstünün kendi monitörü, ddc desteklemiyor, biri de hairici monitör. Dizüstü monitörler ddc arayüzünü desteklemiyor onların sistem üzerinden kontrol edilmesi gerekli.
Display 1
I2C bus: /dev/i2c-3
EDID synopsis:
Mfg id: GSM
Model: LG HDR QHD
Serial number: 007XXXXXXXX
Manufacture year: 2020
EDID version: 1.3
VCP version: 2.1
Invalid display
I2C bus: /dev/i2c-13
...
DDC communication failed
This is an eDP laptop display. Laptop displays do not support DDC/CI.
Yetkilendirme
Ddcutil'i benim kullanma amacım biraz otomatizasyon, biraz da tembellik bu açıdan her kullanmak istediğimde sudo kullanmak veya yazdığım betiklerin sudo kullanması pek mantıklı değildi.
Bu açıdan i2c'nin sudo haricinde kullanılmasının tek yolu, i2c bağlantılarının bir gruba atanması ve bizim kullanıcımızın bu grup dahilinde olması denilebilir. Bunu gerçekleştirmek için öncelikle i2c bağlantılarının i2c grubuna atanması için bir ayar yapmak veya aktifleştirmek gerekicek. Benim sistemimde aşağıdaki dosya bulunuyordu fakat belirttiğim kod bloğu yorum halindeydi, ya yorum içinden çıkartmak ya da eklemek yeterli gelecektir.
KERNEL=="i2c-[0-9]*", GROUP="i2c", MODE="0660"
Bu tamamlandıktan sonra kullanıcımızı bu gruba dahil etmek ve sistemi yeniden başlatmak yeterli olacaktır.
sudo usermod $USER -aG i2c
Monitörü Kontrol Etmek
Monitörümüzü kontrol etmek için öncelikle ne yapabildiğini kontrol etmemiz gerekiyor.
...
Feature: 10 (Brightness)
...
Feature: 60 (Input Source)
Values:
00: Unrecognized value
0f: DisplayPort-1
11: HDMI-1
12: HDMI-2
...
Komut sonucunda özellikler ve kimi zaman uygun seçenekleri geliyor. Özet aldığım şekilde Parlaklık ve giriş seçimi yapabiliyorum monitörümde.
Betikler
Monitörümü kontrol etmek için 2 temel betik hazırladım, biri parlaklığı değiştirmek için diğeri giriş seçmek için.
Monitör ayarı değiştirmek için setvcp
, sonrasında değiştirmek istediğimiz özellik adresi son olarak ise almasını istediğimiz değeri belirtmemiz yetiyor. Burada dikkat edilmesi gereken nokta sayıların 0x
olarak belirtilmesi çünkü detect
sonucunda listelenen adresler ve seçimler on altı tabanında.
#!/usr/bin/env bash
ddcutil --bus=3 setvcp 0x10 $1 &&
wait
#!/usr/bin/env bash
ddcutil --bus=3 setvcp 0x60 0x11 &&
wait