通知的亮度变化未应用

通知的亮度变化未应用

注意:我知道这个问题已经变得很普遍,但我担心我找到的每个解决方案都无法解决问题。也许我们对此的知识库已经过时,与最新的硬件组件无关?

我的机器

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、中的 GUI Brightness and lock,我可以“改变”亮度值,但实际上什么也没有发生。
  • 使用Fn+ F5/F6键会触发桌面通知,显示新的亮度值,但仍然没有任何变化。

我尝试过的方法

重要的是要知道这个问题并不是永远存在的。在我第一次安装 Ubuntu 时,亮度方面一切都很好。后来,因为我对 Ubuntu 感到厌倦,我决定切换到 Arch Linux,现在我又回到了 Ubuntu 作为我的主要台式机。但是现在,亮度不再可能设置,这意味着我每次都必须将屏幕调到最大亮度,即使我使用电池供电......

正如我所说的,我尝试了尽可能多的解决方案:

  • GRUB_CMDLINE_LINUX使用 编辑了 GRUB 设置acpi_osi=Linux。文件被创建为/sys/class/backlight/acpi_video0actual_brightnessbrightnessmax_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 驱动程序的背光支持已损坏


解决方法:

  1. 问这个问题的人,在他的第一个答案提到按下并保持亮度键几秒钟即可改变亮度 - 或者至少在最高和最低设置之间切换。看看这是否有效。

  2. 在同一个答案中,他提供了以下链接: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 站点的较新驱动程序部分修复了该问题。您可以继续安装此驱动程序,或者坚持使用变通方法(假设它有效),直到修复的驱动程序进入存储库。

相关内容