DDC/CI monitor control on Linux (2019)

2020-12-28 08:06:54

DDC / CI是用于通过显示电缆(VGA,DVI,HDMI,显示端口等)控制显示器功能(例如亮度,对比度,色温,输入源...)的协议。

在VM专用图形卡和主机图形卡之间切换监视器输入,从而不再需要非常昂贵的WQHD @ 144Hz的KVM切换器。

Ddcutil通过I2C连接连接到屏幕,并需要加载i2c-dev内核模块。

默认情况下,i2c开发人员文件是root用户拥有的,其他用户不能使用。一种允许您的用户无需使用sudo即可控制DDC的解决方案是添加自定义udev规则:

此规则会自动检测哪些i2c设备具有DDC功能,并允许“您的用户”组的成员。控制文件。

如果您有多个用户,则可以创建一个新组并将用户添加到该组:

有多种寻址显示器的方法,例如显示号(--display),型号名称(--model),序列号(--sn),i2c总线ID(--bus)。

总线ID方法比其他方法快得多,但是如果您的硬件经常更改,则可能不可靠。

ddcutil detect#您应该会看到以下条目:#显示1#I2C总线:/ dev / i2c-0#EDID提要:#制造ID:DEL#型号:DELL U2419H#序列号:751L2N4#制造年份:2018#EDID版本: 1.4#VCP版本:2.1

ddcutil功能--bus = 0#您应该看到类似以下内容:#MCCS版本:2.1#命令:#命令:01(VCP请求)#命令:02(VCP响应)#命令:03(VCP设置)#命令:07 (时间要求)#命令:0c(保存设置)#命令:e3(功能回复)#命令:f3(功能请求)#VCP功能:#功能:10(光度)#功能:12(对比度)#功能:14 (选择颜色预设)#值:#04:5000 K#05:6500 K#06:7500 K#08:9300 K#09:10000 K#0b:用户1#0c:用户2#功能:16(视频增益:红色)#功能:18(视频增益:绿色)#功能:1A(视频增益:蓝色)#功能:60(输入源)#值:#0f:DisplayPort-1#11:HDMI-1#功能:AA (屏幕方向)#值:#01:0度#02:90度#03:180度#04:270度

当您需要经常更改输入源并且在监视器上没有专用按钮(或用于使其自动化)时,此功能非常有用。

#!/ bin / bash#用法:ddc-switch-inputs 1case $ 1 in 1)#配置1:主PC OUT =(" 0x0f"" 0x20");; 2)#配置2:虚拟机OUT =(" 0x11"" 0x21");; *)回显"未知输入' $ 1'"出口1 ;; esacddcutil --bus = 0 setvcp 60 $ {OUT [0]}& ddcutil --bus = 1 setvcp 60 $ {OUT [1]}& wait

#!/ bin / bash#用法:ddc-daylight睡袋$ 1 in" day" )亮度= 100温度= 0x09 ;; "晚上" | "早上" )亮度= 60温度= 0x06 ;; "夜晚" )亮度= 30温度= 0x04 ;; "黑暗" )亮度= 0温度= 0x04 ;; *)回显一天中的未知时间' $ 1'"出口1 ;; esacddcutil --bus = 0 setvcp 10 $ BRIGHTNESS& ddcutil --bus = 1 setvcp 10 $ BRIGHTNESS& ddcutil --bus = 0 setvcp 14 $ TEMPERATURE& ddcutil --bus = 1 setvcp 14 $ TEMPERATURE &等待