注意:我知道这个问题已经变得很普遍,但我担心我找到的每个解决方案都无法解决问题。也许我们对此的知识库已经过时,与最新的硬件组件无关?
我的机器
Linux 3.8.0-33-通用#48~precise1-Ubuntu SMP x86_64 x86_64 x86_64 GNU/Linux
我在 Sony VAIO 上运行 Ubuntu 12.04 (Precise Pangolin),以及以下 AMD 显卡:
VGA 兼容控制器:Advanced Micro Devices, Inc. [AMD/ATI] Thames [Radeon HD 7550M/7570M/7650M]
我发现的大多数解决方案都是针对 Nvidia 显卡的,这就是为什么我得到的帮助相当有限......
问题
基本上,我无法改变亮度级别。
Settings
使用、All settings
、中的 GUIBrightness and lock
,我可以“改变”亮度值,但实际上什么也没有发生。- 使用Fn+ F5/F6键会触发桌面通知,显示新的亮度值,但仍然没有任何变化。
我尝试过的方法
重要的是要知道这个问题并不是永远存在的。在我第一次安装 Ubuntu 时,亮度方面一切都很好。后来,因为我对 Ubuntu 感到厌倦,我决定切换到 Arch Linux,现在我又回到了 Ubuntu 作为我的主要台式机。但是现在,亮度不再可能设置,这意味着我每次都必须将屏幕调到最大亮度,即使我使用电池供电......
正如我所说的,我尝试了尽可能多的解决方案:
- 我
GRUB_CMDLINE_LINUX
使用 编辑了 GRUB 设置acpi_osi=Linux
。文件被创建为/sys/class/backlight/acpi_video0
(actual_brightness
、brightness
和max_brightness
),但尽管它们的内容随着我将亮度调高或调低而改变,但没有任何改变有效。 - 同样,添加
acpi_backlight=vendor
。/sys/class/backlight/acpi_video0
链接/目录消失了。控制键不再触发通知,并且不再可能使用 GUI 更改设置。 - 我尝试使用
xbacklight
。没有错误,但没有变化。
有谁遇到过这些问题吗?
问题解决了!
这是我根据 S Prasanth 的回答提出的解决方法。需要根终端。
在/usr/bin/brightness_change
文件中,我放置了以下脚本:
#!/bin/bash
if [ $# -ne 1 ]; then
echo "Usage: brightness_change [level]" > /dev/stderr
exit 1
fi
if [ ! -w /sys/class/backlight/acpi_video0/brightness ]; then
echo "Brightness settings are not available." > /dev/stderr
exit 2
fi
TIMEOUT=4
endTime=$(($(date +%s)+$TIMEOUT))
while [ $(date +%s) -lt $endTime ]
do
echo $1 | tee -a /sys/class/backlight/acpi_video0/brightness > /dev/null 2> /dev/null
done
该脚本将不是总是能得到令人满意的结果。通常需要运行几次才能成功。另外,请记住正确设置其权限和所有权:
chown root:root /usr/bin/brightness_change
chmod 0755 /usr/bin/brightness_change
现在,在我的/etc/sudoers
文件中:
ALL ALL=NOPASSWD: /usr/bin/brightness_change
这样,任何人都可以执行,sudo brightness_change
而不需要密码。
为了进一步改进:您可能希望将此脚本连接到您的 ACPI 事件,以便在您的笔记本电脑使用电池或插入电源时触发亮度变化。
笔记:这个问题似乎已经在最新版本的驱动程序中得到修复,我的热键现在可以完全正常工作了。
答案1
我的是 nvidia,所以这篇文章中提到的任何内容都不是来自第一手经验。
显然,这是 12.04 中最新的 fglrx 驱动程序的一个问题:Ubuntu 12.04 上的最近几个 fglrx 驱动程序的背光支持已损坏。
解决方法:
问这个问题的人,在他的第一个答案提到按下并保持亮度键几秒钟即可改变亮度 - 或者至少在最高和最低设置之间切换。看看这是否有效。
在同一个答案中,他提供了以下链接:https://bbs.archlinux.org/viewtopic.php?pid=1269560#p1269560这提供了一个非常奇怪的解决方法。显然,虽然写入
/sys/class/backlight/acpi_video0/brightness
不起作用,但在短时间内频繁写入文件是可行的。链接中建议的代码片段是:while :; do echo 10 > /sys/class/backlight/acpi_video0/brightness ; done
在 root shell 中。您可以在几秒钟内终止此 while 循环,并且亮度显然会发生变化。如果此方法有效,您可以执行以下操作:
将以下行添加到~/.bashrc
function chbrightness {
TIMEOUT=5
endTime=$(($(date +%s)+$TIMEOUT))
chbrightness_string="
while [ \$(date +%s) -lt $endTime ]
do
echo $1 > /sys/class/backlight/acpi_video0/brightness
done
"
sudo bash -c "$chbrightness_string"
}
适当设置 TIMEOUT。要更改亮度,只需chbrightness <value>
从终端运行并提供 sudo 密码。
在他的稍后回答,他提到来自 amd 站点的较新驱动程序部分修复了该问题。您可以继续安装此驱动程序,或者坚持使用变通方法(假设它有效),直到修复的驱动程序进入存储库。