我有新款 zenbook 15,它带有触摸板中的辅助显示屏。只要我使用 Xorg 和英特尔 GPU,Ubuntu 就能很好地识别它。但问题是它的亮度未设置为最大。由于华硕为 Windows 提供了驱动程序,我可以通过应用程序调整背光。但在 Linux 上却不行。
以下是它在 Ubuntu 上的样子:
在 Windows 上:
xrandr
显示屏显示的内容如下:
HDMI-1 connected 2160x1080+0+1080 right (normal left inverted right x axis y axis) 66mm x 134mm
1080x2160 50.03*+
504x1000 50.03
我尝试通过(即高于 1)设置亮度,xrandr --output HDMI-1 --brightness 1.5
但这只会使屏幕更加饱和。似乎它无法控制实际的背光。
有什么线索吗?我尝试摆弄 ddcutil,使用 sudo ddcutil detect 来获取(注意 i2c-3 是屏幕板):
Invalid display
I2C bus: /dev/i2c-3
EDID synopsis:
Mfg id: TSB
Model: ScreenXpert-
Serial number: Unspecified
Manufacture year: 2011
EDID version: 1.3
DDC communication failed
Invalid display
I2C bus: /dev/i2c-8
EDID synopsis:
Mfg id: BOE
Model: Unspecified
Serial number: Unspecified
Manufacture year: 2018
EDID version: 1.4
DDC communication failed
我不太清楚如何设置背光,所以我下载了 ddccontrol(gddccontrol)的 GUI,当我尝试更改 i2c-3 的设置时,我看到了以下内容:
答案1
asus-wmi
对我来说效果很好,直到上次更新。刚刚发现亮度控制器添加了多窗口支持,运行
sudo add-apt-repository ppa:apandada1/brightness-controller
sudo apt update
sudo apt install brightness-controller
要安装,则需要 2 个切换按钮,运行程序时每个屏幕一个。搜索后应该会出现。
答案2
检查一下修复 asus-wmiPlippo 的内核模块(文档齐全,易于安装)。这些是当前说明,但请检查它们是否已更新
要使用 dkms 安装和使用此模块:
请确保您正在运行要安装模块的内核。因此,如果您进行了内核更新,请先重新启动,以便安装使用正确的内核版本。
使用您的发行版的方法安装 DKMS。Debian/Ubuntu/等:
sudo apt install dkms
除此之外,您还需要安装当前内核的标头。大多数发行版都提供了此包。例如 Ubuntu:
sudo apt install linux-headers-$(uname -r)
为模块创建目录并下载源代码
sudo mkdir /usr/src/asus-wmi-1.0 cd /usr/src/asus-wmi-1.0 sudo wget 'https://github.com/Plippo/asus-wmi-screenpad/archive/master.zip' sudo unzip master.zip sudo mv asus-wmi-screenpad-master/* . sudo rmdir asus-wmi-screenpad-master sudo rm master.zip
现在源代码应该在 中
/usr/src/asus-wmi-1.0
。文件夹的名称必须与 完全相同,因为 DKMS 需要这样做。或者,您当然也可以将此 git 存储库克隆到该文件夹中。如果不使用内核 5.4:调用以下脚本下载并修补适合您的内核版本的文件
sudo sh prepare-for-current-kernel.sh
使用 DKMS 注册模块
sudo dkms add -m asus-wmi -v 1.0
构建并安装模块到当前内核
sudo dkms build -m asus-wmi -v 1.0 sudo dkms install -m asus-wmi -v 1.0
从现在开始,DKMS 将在每次内核更新时自动重建模块。
重启后,你应该可以在 中找到一个新设备
/sys/class/leds/asus::screenpad
。要设置屏幕亮度,只需调用echo XXX | sudo tee '/sys/class/leds/asus::screenpad/brightness'
其中
XXX
是 0 到 255 之间的值(0 表示屏幕完全关闭,255 表示屏幕亮度最大)。若要允许每个用户在不使用 的情况下设置亮度sudo
,请调用sudo chmod a+w '/sys/class/leds/asus::screenpad/brightness'
现在,您只需执行
echo XXX > '/sys/class/leds/asus::screenpad/brightness'
chmod
每次重启后都必须再次执行,因此建议将调用添加到启动脚本中,例如/etc/rc.local
。您现在还可以使用桌面环境的功能将键盘上的功能键映射到您选择的操作。例如,您可以创建一个脚本来切换屏幕板的状态并将其映射到“切换屏幕板”键。
删除或重新安装
如果你想重新下载并重新安装内核模块(可能是因为代码发生了变化),你必须先删除旧的,然后调用
sudo dkms remove -m asus-wmi -v 1.0 --all sudo rm -r /usr/src/asus-wmi-1.0
然后从步骤2开始重复上述步骤。
还讨论了一些其他解决方法这个 GitHub 问题。
答案3
我是dd工具
嵌入式笔记本电脑显示器具有基本的 I2C 实现。可以在从属地址 x50 处读取 EDID,但 DDC/CI 协议未在从属地址 x37 上实现。因此 ddcutil 可以看到显示器(它可以读取 EDID),但 DDC/CI 通信失败。
通常,此类显示器使用 ACPI 进行控制。