使用亮度控制时,/sys/class/backlight/acpi_video0/brightness 的值会以 4 为增量,但我可以将该值强制为 [0-10] 中的任何值。我有一台 HP Envy 17-3200。可能更确切地说,我使用的是集成英特尔显卡。
该问题在 unity 和 gnome shell 中都存在。
答案1
如果使用“系统设置>亮度和锁定”中的滑块,则通常不会出现此问题。
这种情况(通常)发生在使用亮度控制热键时,因为 acpi 驱动程序、intel 驱动程序和 gnome power daemon(可能还有一个)都会处理热键并将它们传递到下一级 - 这似乎真的是一个愚蠢的设计。
修复1:
一个简单的解决方法是让英特尔驱动程序完成这项工作并禁用其余部分,如下所示。
- 以 root 身份编辑 /etc/default/grub:
sudo nano /etc/default/grub
- 找到包含 GRUB_CMDLINE_LINUX_DEFAULT= 的行并添加选项 acpi_backlight=vendor acpi_osi=Linux。例如,更改
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"
为GRUB_CMDLINE_LINUX_DEFAULT="quiet splash acpi_backlight=vendor acpi_osi=Linux"
- 按 Ctrl-O 保存文件,然后按 Enter。按 Ctrl-X 退出。
- 现在,运行
sudo update-grub
- 重启电脑。现在,亮度应该以 1 为单位增加。
注意:如果这样做,您将失去亮度滑块和亮度变化的 OSD 通知(因为它们由 gnome 处理)。但在我看来,这些并不重要。您可以通过再次编辑 /etc/default/grub 以恢复原状,然后运行sudo update-grub
并重新启动来撤消这些更改。
修复2:
不太容易修复:让 gnome 处理亮度控制。
參閱https://askubuntu.com/a/178003/111720。停止 acpi 驱动程序处理密钥应该可以正常工作,正如该答案中所述。但要处理英特尔驱动程序,您必须将 thinkpad_acpi 模块的指令移植到英特尔(这甚至可能是不可能的)。
修复3:
更多信息:
实际上有 256 (0-255) 个亮度级别。要检查它是否适合您,请尝试sudo setpci -s '00:02.0' F4.B=xx
其中 xx 是十六进制数。数字为 0、1、...9、a、b、c、d、e、f。示例:sudo setpci -s '00:02.0' F4.B=2b
将亮度设置为 2*16 + 11(b 为 11)= 43。00 对应于绝对零度亮度(如果您最终这样做,只需使用热键即可恢复亮度)。
我发现这在黑暗中工作或阅读书籍时非常有用(您可以使用滑块设置的最低亮度实际上非常高,并且亮度级别的跳跃也更大 - 正如您已经发现滑块不是连续的)。
我编写了一个 Python 脚本(可重新映射到快捷方式),使用它来控制亮度(增加和减少,而不仅仅是设置),并附带 OSD 通知。如果您感兴趣,请告诉我(可能需要对其进行编辑才能在不同的硬件上运行,我还没有在 ACER ONE D270 以外的任何设备上测试过它。所以我可能需要一些额外的信息)。