Linux 切换显示器显示模式
入了一台 ViewSonic 的显示器,号称“ViewMode OSD 快速调用标准、游戏、电影、网页浏览、文本阅读五大模式”。调到文本阅读模式后,发现蓝光过滤设置不可用,说明该模式下蓝光全部被过滤。这写 Bug 的时候必须用上啊,不管代码写的咋样,护眼能用上的手段必须上。
虽然 OSD 切换模式也不是太费劲,可用软件控制不是更爽嘛。一通搜索,官网提供了 Windows 和 MacOS 的驱动,并明确表示没有支持 Linux 的打算。
去技术支持提了个 Inquiry, 一直没有回信。只好在网上再搜,搜到了这个工具 ddcutil。这个工具使用 DDC/CI 来控制显示器,而大部分显示器都有这个功能。
我用 Debian, 安装很简单:
喜欢使用图形界面的可以顺带安装 ddcui。
先检测一下显示器:
如果报错找不到 i2c 设备,可能是内核没有自动加载 i2c-dev 模块,先手动加载:
如果想以后自动加载,将 i2c-dev 添加到 /etc/modules 里,或者在 /etc/modules-load.d/ 新建一个文件,内容为 i2c-dev.
接下来还要解决一下权限的问题:
然后就可以再次检测显示器了。
检测到显示器后,可以看看显示器都支持哪些设置:
这里面可以看出显示模式(DC)支持了 [00 02 03 05]。MCCS 标准里规定的显示模式有:
然后就可以使用命令来切换模式了,比如切换到电影模式 0x03:
我的显示器目前还有如下问题:
1 ddcutil 设置后,显示确实有变化,但从 osd 菜单看,显示模式没有变;
2 从 osd 切换显示模式,ddcutil 读到的模式也没有变化;
3 ddcutil 能设置的模式比 osd 里面的少,甚至不能确定二者的对应关系。
有知道的 B 友请不吝赐教。