如何通过 DDC/IC 改变外接显示器亮度?

rem*_*emi 11 brightness external-monitor

我想通过 DDC/IC(DDC 维基百科)更改我的外部 Dell U2713HM 显示器的亮度,它通过 DisplayPort 连接。我有集成的 Intel HD4000 显卡。

当我运行 sudo get-edid 时,我得到:

get-edid: get-edid version 2.0.0

Performing real mode VBE call
Interrupt 0x10 ax=0x4f00 bx=0x0 cx=0x0
Function supported
Call successful

VBE version 300
VBE string at 0x11100 "Intel(R) Sandybridge/Ivybridge Graphics Chipset Accelerated VGA BIOS"

VBE/DDC service about to be called
Report DDC capabilities

Performing real mode VBE call
Interrupt 0x10 ax=0x4f15 bx=0x0 cx=0x0
Function supported
Call successful

Monitor and video card combination does not support DDC1 transfers
Monitor and video card combination supports DDC2 transfers
0 seconds per 128 byte EDID block transfer
Screen is not blanked during DDC transfer

Reading next EDID block

VBE/DDC service about to be called
Read EDID

Performing real mode VBE call
Interrupt 0x10 ax=0x4f15 bx=0x1 cx=0x0
Function supported
Call successful

????????@L628?<"x:K??VK?%
PT?K???qO?@??V^???)P0 5UP!?GK0KD281826L
?DELL U2713HM
?1Vq
EDID claims 1 more blocks left


*********** Something special has happened!
Please contact the author, Matthew Kern
E-mail: pyrophobicman@gmail.com
Please include full output from this program (especially that to stderr)



Reading next EDID block

VBE/DDC service about to be called
Read EDID

Performing real mode VBE call
Interrupt 0x10 ax=0x4f15 bx=0x1 cx=0x0
Function supported
Call successful

  ????????@L628?<"x:K??VK?%
PT?K???qO?@??V^???)P0 5UP!?GK0KD281826L
?DELL U2713HM
?1Vq
EDID claims 1 more blocks left
EDID blocks left is wrong.
Your EDID is probably invalid.
Run Code Online (Sandbox Code Playgroud)

重要的部分可能是:

Monitor and video card combination supports DDC2 transfers
Run Code Online (Sandbox Code Playgroud)

我键盘上的亮度键工作正常,因为我在 Ubuntu 12.10 中看到了背光更改通知。

如何通过软件调整亮度?

谢谢您的回答。

rem*_*emi 14

您可以在这里找到必要的文件:https : //packages.debian.org/unstable/ddccontrol

ddccontrol
libddccontrol
ddccontrol-db
Run Code Online (Sandbox Code Playgroud)

我必须安装。然后我不得不运行以下命令:

sudo modprobe i2c-dev
sudo modprobe intelfb
sudo chmod a+rw /dev/i2c-*
Run Code Online (Sandbox Code Playgroud)

现在,我可以使用以下命令将亮度更改为一个值(此处为 53),代表我的外部显示器的背光级别,而无需使用屏幕显示:

ddccontrol -p -r 0x10 -w 53
Run Code Online (Sandbox Code Playgroud)

现在我仍然需要从连接到亮度命令的键盘获取我的特殊亮度键(注意最大亮度级别)。知道怎么做吗?


小智 6

以@remi 的回答为基础,ddccontrol似乎没有维护,并且自 2006 年以来没有为任何新显示器添加配置。

幸运的是,有一个更新的工具: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
Run Code Online (Sandbox Code Playgroud)