Answers:
实际上,只要图形卡和监视器都支持Display Data Channel,所有这些接口都可以进行背光控制(以及更多功能)。
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
在Intel情况下,右总线是DPDDC(显示端口DDC)之一,具体取决于您使用的端口。就我而言,HDMI和DP都显示为DP。
在AMD情况下,该总线称为card0- interface - 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 (oleg@cs.msu.su)
Copyright 2004-2006 Nicolas Boichat (nicolas@boichat.ch)
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
gddccontrol
,GTK UI用于ddccontrol
,但首先必须对I²C总线进行chown / chmod或编写udev规则来自动执行。
ddccontrol
自2006年以来,以@ M132的答案为基础,似乎没有得到维护,也没有为任何新显示器添加配置。
幸运的是,有一个更新的工具:ddcutil,它更加健壮并积极开发。在安装了一个预构建的软件包或从源代码构建之后,它可以用于查询和设置亮度(还有许多其他设置):
# ddcutil capabilities | grep Brightness
Feature: 10 (Brightness)
# ddcutil getvcp 10
VCP code 0x10 (Brightness ): current value = 60, max value = 100
# ddcutil setvcp 10 70
ddcutil capabilities | grep Luminosity
有xbacklight
–“使用RandR扩展来调整背光亮度”。
但是,它在我的HDMI监视器上失败了,因此我退回到使用软件修改的方式:
xrandr --output HDMI2 --brightness 0.7
xbacklight
吗?
xrandr --output HDMI --brightness 0.7
xbacklight
将与笔记本电脑和其他使用基于ACPI背光控制的设备一起使用。对于台式机显示器,最广泛支持的解决方案是使用DDC和ddccontrol
。
该DDC / CI内核模块包括ddcci-backlight
其可最DDC / CI-能够监视器集成到内核的背光系统模块(/sys/class/backlight
)。这允许任何可以使用后者来驱动DDC / CI监视器上的背光的工具。例如,使用GNOME桌面上的内置控件:
内核模块在Debian(自Debian 9起)和派生发行版中可用:
sudo apt install ddcci-dkms
kmod
了ddci
内核模块的包装,并且真的很喜欢亮度滑块,无需任何第三方应用程序即可控制它:)感谢您提到它!
ati
,fglrx
,nouveau
,nvidia
,...)?