快轉到主要內容

Linux透過DDC/CI軟體調整外接螢幕的亮度,免按實體鍵

· 民國115年丙午年
·
切換繁體/簡體
分類   Linux系統 Linux使用技巧
標籤   Linux Kernel GNOME KDE Plasma
目錄

Adjust monitor brightness/backlight from Linux desktop .

長期以來我一直有一個困擾:無法從作業系統端直接控制電腦螢幕的亮度/背光。

Linux能自由調整螢幕亮度的通常是筆電或平板的螢幕,因為多半是用eDP與主機板連接的。我們可以透過桌面環境提供的滑桿快速修改背光亮度。

Surface的螢幕亮度調整滑桿

20260114_143834.webp

不過一般桌上型電腦的螢幕,或說顯示器,是透過HDMI或DisplayPort連接到電腦顯示卡輸出的。通常要調整電腦螢幕亮度,就得去按螢幕的實體鍵,叫出OSD選單來調整,不能直接從作業系統端的界面調整。偏偏這個實體按鍵不太好按。

ASUS VP229HA顯示器的調整亮度的界面,要按螢幕下的實體按鍵,打開兩個選單才能進入亮度調整界面,好麻煩。

OpenCamera_IMG_20260114_142907.webp

我不是很喜歡把螢幕亮度開到90%以上的人,我很多時候亮度都是在10%以下。因此方便控制亮度很重要。

我從Windows的使用經驗,了解到從作業系統端控制螢幕亮度是可能的。

一種方法是修改Gamma數值,讓螢幕看起來變暗了,但其實物理亮度並沒有改變。而且這會導致螢幕產生色偏,非常難看。

我要的是可以直接從作業系統控制螢幕亮度的方法,那就是得透過「DDC/CI」這個協定來控制,全稱「Display Data Channel / Command Interface」,這個協定從2005年就存在了,很多大廠牌螢幕都有支援,除非你是超級老的螢幕。

在螢幕OSD選單裡面可以找到DDC/CI的開關。

在Windows,有Monitorian這類軟體能走DDC/CI控制螢幕亮度。

Linux要使用DDC/CI,得手動安裝套件來補足缺少的驅動,還需要一個專門的GUI來控制DDC/CI。不過現在有些Linux桌面環境也能夠透過DDC/CI控制背光了。

如圖,使用KDE Plasma桌面提供的選單(上)來調整螢幕亮度,而非使用螢幕硬體的選單(下)調整。

OpenCamera_IMG_20260114_005044.webp

1. i2c與ddcci-driver-linux的差異
#

Linux要使用DDC/CI控制螢幕亮度,需要一個核心模組來控制。

截至撰文當下的Linux 6.12.63,有兩個核心模組可以達成這個效果。

  1. i2c提供i2c-dev核心模組。Linux核心提供一個userland可以直接存取 I²C Bus的介面,會在/dev下出現device node,userland的程式可以修改/dev/i2c-N的內容,透過DDC/CI溝通,進而改變螢幕的亮度、色溫、對比度、RGB、輸入源等等。

  2. ddcci-driver-linux提供ddcci核心模組,為每台支援DDC/CI的顯示器建立各自的device node,例如/dev/bus/ddcci/ddcci-backlight。然後它會把顯示器嫁接到Linux核心控制背光的子系統/sys/class/backlight/,讓userland的程式控制螢幕亮度。但是ddcci-driver-linux有其限制,它只能控制螢幕亮度,不能修改其他參數。

Linux控制背光的方式是調整/sys/class/backlight/,預設是不認識DDC/CI的。從以上的原理來看,ddcci-driver-linux是一個比較用途比較廣的方案,它讓軟體不用特地支援DDC/CI就能直接透過/sys/class/backlight/界面控制螢幕亮度,方便桌面環境整合。所以在這篇文章我們將安裝這個版本。

2. 桌面環境對DDC/CI支援度
#

如果我們使用ddcci-driver-linux,Linux桌面環境可以直接透過/sys/class/backlight/控制螢幕亮度,不用煩惱DDC/CI的支援度了。

反之,若使用i2c,Linux桌面環境的程式必須額外支援DDC/CI的處理邏輯。

我是希望不要安裝額外的GUI就能控制螢幕亮度。

GNOME:目前GNOME 50依然需要安裝擴充套件才能夠使用DDC/CI。

KDE Plasma:在KDE Plasma 6.0以上版本支援DDC/CI。如果DDC/CI不可用,KDE會回退到調整Gamma值來改變螢幕亮度的模式(僅限Wayland)。即使螢幕物理亮度固定也能進一步降低亮度。

獨立的DDC/CI控制程式:你可以安裝ddcui來控制亮度,就是ddcutil工具的前端。這個GUI除了亮度之外還可以看到螢幕所支援的其他功能。

ddcui.webp

3. 安裝ddcci-driver-linux套件
#

ddcci-driver-linux可以在X11與Wayland桌面使用。

  1. Ubuntu使用系統的套件管理器安裝ddcci-driver-linux,應該會以DKMS裝載
sudo apt install ddcci-dkms
  1. (選擇性)使用ddcutil檢查螢幕是否支援DDC/CI,如果正常的話不會輸出任何錯誤訊息
sudo apt install ddcutil

sudo ddcutil detect
  1. 重開機,桌面環境螢幕亮度調整的滑桿應該就能調整螢幕亮度了。我注意到我這個ASUS VP229螢幕需要以十位數為單位來調整,不然亮度不會變化。

  2. 要確認DDC/CI是否有成功啟用,用Linux調整亮度,再按下電腦螢幕硬體鍵盤叫出OSD,看亮度數值有無跟著變化。

參考資料
#

相關文章

Linux筆電很耗電?使用這些省電技巧提昇續航
分類   Linux系統 Linux使用技巧
標籤   GNOME KDE Plasma Nvidia Systemd Linux Kernel
Linux Wayland桌面的縮放,放大字型、改善HiDPI支援、解決字型模糊
分類   Linux系統 Linux使用技巧
標籤   Linux GNOME KDE Plasma Wayland
蝦密?Linux系統竟然有開關機音效
分類   Linux系統 Linux使用技巧
標籤   GNOME KDE Plasma Freedesktop Specifications

此處提供二種留言板。點選按鈕,選擇您覺得方便的留言板。

(留言板載入中)這是Giscus留言板,需要Github帳號才能留言。支援Markdown語法,若要上傳圖片請善用外部圖床。您的留言會在Github Discussions向所有人公開。

Click here to edit your comments.

(留言板載入中)這是Disqus留言板,您可能會看到Disqus強制投放的廣告。為防止垃圾內容,有時留言可能會被系統判定需審核,導致延遲顯示,請見諒。若要上傳圖片請善用外部圖床網站。