linux中外接顯示器亮度調節方法


linux中外接顯示器亮度調節方法

首先需要顯示器支持 DDC/CI 協議。

1. 工具ddcutil

這是一個查詢和修改顯示器設置的程序。

1.1 安裝

Gentoo系統可以使用下面的命令安裝:

sudo emerge --ask --verbose app-misc/ddcutil

1.2 設置

探測支持控制的顯示器:

$ ddcutil detect
命令顯示支持的顯示器信息。

設置屏幕亮度:

ddcutil setvcp 10 50
10 表示 設置亮度代碼(code), 50 表示需要調節的亮度(0-100)。

查看當前顯示器亮度:

ddcutil getvcp 10

還支持設置一些其它參數, 具體支持的code可以用如下命令查看:

ddcutil vcpinfo

2. 其它問題

2.1 未查找到顯示器

連接顯示器后用 ddcutil detect 命令沒有查找的顯示器,可能是應為顯示器的i2c驅動沒有自動加載,可以用如下方式手動加載驅動:

sudo modprobe i2c-dev
可以考慮將命令添加到啟動腳本中自動加載驅動。

2.2 設備文件訪問權限

上面的ddcutil 命令可能需要root權限才能正常工作,那么如何才能使用普通用戶執行命令呢?
這需要修改i2c 設備文件的訪問權限,這時就需要配置udev規則了。

首先使用ddcutil detect 命令查看顯示器的i2c 設備文件信息:

$ sudo ddcutil detect
Display 1
I2C bus: /dev/i2c-11
EDID synopsis:
Mfg id: AOC
Model: LV273HUPR
Product code: 10103
Serial number: APML99A002475
Binary serial number: 2475 (0x000009ab)
Manufacture year: 2020, Week: 39
VCP version: 2.2

我這里的設備文件是/dev/i2c-11
再使用下面命令查看 設備 udev屬性

$ udevadm info -a -p $(udevadm info -q path -n /dev/i2c-11)

looking at device '/devices/pci0000:00/0000:00:08.1/0000:03:00.0/drm/card0/card0-DP-2/i2c-11/i2c-dev/i2c-11':
KERNEL"i2c-11"
SUBSYSTEM
"i2c-dev"
DRIVER""
ATTR{name}
"AMDGPU DM aux hw bus 2"
ATTR{power/async}"disabled"
ATTR{power/control}
"auto"
ATTR{power/runtime_active_kids}"0"
ATTR{power/runtime_active_time}
"0"
ATTR{power/runtime_enabled}"disabled"
ATTR{power/runtime_status}
"unsupported"
ATTR{power/runtime_suspended_time}"0"
ATTR{power/runtime_usage}
"0"
......

有了這些信息下面我們就可以添加udev 規則了。

添加規則文件 /etc/udev/rules.d/97-i2c.rules

SUBSYSTEM=="i2c-dev", ATTR{name}=="AMDGPU DM aux hw*", GROUP="dialout", MODE="0660"

SUBSYSTEM=="i2c-dev", ATTR{name}=="AMDGPU DM aux hw*" 指定匹配的屬性,匹配這兩條的才使用后面的設置。
GROUP="dialout" 設置工作組為dialout,這是我之前設置usb 設備訪問權限時使用的組,后面設置工作組可以讀寫,再把需要讀寫該設備的用戶加入該組就可以了。
MODE="0660" 設置用戶自己和工作組讀寫權限。

再把需要的用戶加入工作組:

usermod -a dialout username

這里也可以不設置GROUP,直接設置MODE="0666" 允許所有用戶讀寫。

重啟系統或者使用下面命令使修改的udev 規則生效:

# udevadm control --reload-rules && udevadm trigger

之后就可以用普通用戶權限設置顯示器亮度了。

udev規則編寫可以參考:udev規則以及編寫


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM