随着时间的推移,使用软按钮会变得很烦人。我的意思是背光的真实亮度(不是 X11 伽玛)。哪些协议可以实现这一点? (DVI、HDMI、DP,猜测VGA不是)
答案1
实际上,所有这些接口都能够进行背光控制(以及更多),只要显卡和显示器都支持背光控制显示数据通道。
DDC 基于 I²C,因此您必须安装并加载适当的内核模块才能使其工作。
# Debian
sudo apt-get install i2c-tools
sudo modprobe i2c-dev
# RHEL
sudo dnf install i2c-tools
之后,您必须使用 找出哪条 I²C 总线连接到显示器sudo i2cdetect -l
。
# Example output for Intel graphics card
i2c-0 i2c i915 gmbus dpc I2C adapter
i2c-1 i2c i915 gmbus dpb I2C adapter
i2c-2 i2c i915 gmbus dpd I2C adapter
i2c-3 i2c DPDDC-B I2C adapter
i2c-4 i2c DPDDC-C I2C adapter
# Example output for AMD graphics card
i2c-0 i2c Radeon i2c bit bus 0x90 I2C adapter
i2c-1 i2c Radeon i2c bit bus 0x91 I2C adapter
i2c-2 i2c Radeon i2c bit bus 0x92 I2C adapter
i2c-3 i2c Radeon i2c bit bus 0x93 I2C adapter
i2c-4 i2c Radeon i2c bit bus 0x94 I2C adapter
i2c-5 i2c Radeon i2c bit bus 0x95 I2C adapter
i2c-6 i2c card0-eDP-1 I2C adapter
i2c-7 i2c card0-VGA-1 I2C adapter
在英特尔情况下,正确的总线是 DPDDC 之一(显示端口 DDC),具体取决于您使用的端口。在我的例子中,HDMI 和 DP 都显示为 DP。
在AMD情况下,总线称为card0-界面-n。
如果没有列出接口,那么您的卡/驱动程序不支持标准方式的 DDC。
现在我们要探讨一下,显示器是否支持DDC,是否允许这样设置亮度。首先,安装ddccontrol
:
# Debian
sudo apt-get install ddccontrol
# RHEL
sudo dnf install ddccontrol
然后,使用它列出支持的 DDC 参数列表。此示例假设您的 DDC 接口绑定到 i2c-3 总线。
# sudo ddccontrol dev:/dev/i2c-3
ddccontrol version 0.4.2
Copyright 2004-2005 Oleg I. Vdovikin ([email protected])
Copyright 2004-2006 Nicolas Boichat ([email protected])
This program comes with ABSOLUTELY NO WARRANTY.
You may redistribute copies of this program under the terms of the GNU General Public License.
Reading EDID and initializing DDC/CI at bus dev:/dev/i2c-3...
I/O warning : failed to load external entity "/usr/share/ddccontrol-db/monitor/DELA0A2.xml"
Document not parsed successfully.
I/O warning : failed to load external entity "/usr/share/ddccontrol-db/monitor/DELlcd.xml"
Document not parsed successfully.
EDID readings:
Plug and Play ID: DELA0A2 [VESA standard monitor]
Input type: Digital
= VESA standard monitor
> Color settings
> Brightness and Contrast
> id=brightness, name=Brightness, address=0x10, delay=-1ms, type=0
supported, value=45, maximum=100
> id=contrast, name=Contrast, address=0x12, delay=-1ms, type=0
supported, value=75, maximum=100
--- [snip] ---
就是这样,如果一切顺利,亮度值应该报告与显示器中设置的亮度完全相同的亮度。您现在可以使用此命令设置 50% 亮度(将 0x10 替换为上面找到的亮度值的地址):
sudo ddccontrol dev:/dev/i2c-3 -r 0x10 -w 50
答案2
基于 @M132 的答案,ddccontrol
似乎没有维护,并且自 2006 年以来没有添加任何新显示器的配置。
幸运的是,有一个更新的工具:ddutil,更加强大且积极开发。安装其中之一后预建包或从源代码构建,它可用于查询和设置亮度(以及无数其他设置):
# ddcutil capabilities | grep Brightness
Feature: 10 (Brightness)
# ddcutil getvcp 10
VCP code 0x10 (Brightness ): current value = 60, max value = 100
# ddcutil setvcp 10 70
答案3
这DDC/CI内核模块包括一个ddcci-backlight
模块,可以将大多数支持 DDC/CI 的监视器集成到内核的背光系统中 ( /sys/class/backlight
)。这允许任何可以使用后者来驱动 DDC/CI 监视器上的背光的工具;例如,使用 GNOME 桌面上的内置控件:
内核模块在 Debian(自 Debian 9 起)和衍生发行版中可用:
sudo apt install ddcci-dkms
答案4
有xbacklight
– “使用 RandR 扩展调整背光亮度”。
然而,我的 HDMI 显示器失败了,所以我转而使用软件修改:
xrandr --output HDMI2 --brightness 0.7