xbacklight:没有输出具有背光属性 - 没有/sys/class/backlight文件夹。

我安装了xbacklight,希望它能够控制我的亮度。当我尝试改变亮度时,系统告诉我“没有输出具有背光属性”。在寻找解决方法时,我发现这与我的计算机没有/sys/class/backlight文件夹有关。我知道这是问题所在,但不确定如何确切地修复它。
不确定是否需要,但以下是一些来自inxi的系统信息:
System:   Kernel: 3.16.0-57-generic x86_64 (64 bit, gcc: 4.8.2) 
          Desktop: LXDE (Openbox 3.5.2) Distro: Ubuntu 14.04 trusty
Machine:  HP EliteBook 8460p
CPU:      Dual core Intel Core i5-2520M CPU
Graphics: Advanced Micro Devices [AMD/ATI] Seymour [Radeon HD 6400M/7400M Series] 

这是否与驱动程序有关(可能是英特尔/AMD图形驱动程序)?
7个回答

检查你的/sys/class/backlight文件夹。如果你能看到一个intel_backlight文件夹,并且仍然遇到上述错误,那么创建一个/etc/X11/xorg.conf文件,并使用下面的配置应该可以解决问题。这对我起作用了。
Section "Device"
    Identifier  "Intel Graphics" 
    Driver      "intel"
    Option      "Backlight"  "intel_backlight"
EndSection

另外,记得注销并重新登录以使更改生效。
参考:Backlight - ArchWiki

6这个答案对于 intel_backlight 用户来说是最直接的 - Serge Stroobandt
1注销和登录对我来说没有起作用,我不得不重新启动 - davidchoo12
我也不得不重新启动。这使得xbacklight工作了,但同时也破坏了我的亮度功能键。出于某种原因,xfce在这个更改后需要我切换一个开关:https://wiki.archlinux.org/index.php/backlight#Backlight_keys_not_working_in_Xfce - gallais
由于某种原因,这完全破坏了辅助显示器的硬件加速,不得不恢复。 - Romuald Brunet
难道不应该是在20.04+版本中的/usr/share/X11/xorg.conf.d目录下的一个文件吗?我试着把它放在那里,结果SDDM就无法启动了 :/ - int_ua

这是完全正常的。要找到你的背光设置目录,按照以下步骤操作:
sudo find /sys/ -type f -iname '*brightness*'

输出应该会给你这样的东西:
/sys/devices/pci0000:00/0000:00:02.0/drm/card0/card0-LVDS-1/intel_backlight/brightness

现在,你只需将它链接到/sys/class/backlight即可。具体操作如下:

sudo ln -s /sys/devices/pci0000:00/0000:00:02.0/drm/card0/card0-LVDS-1/intel_backlight  /sys/class/backlight

如果你仍然遇到错误,那么请按照以下步骤操作:
创建文件 xorg.conf
sudo nano /etc/X11/xorg.conf

并添加这些线:

Section "Device"
Identifier  "Card0"
Driver      "intel"
Option      "Backlight"  "NAME OF THE FOLDER"
EndSection

然后,保存文件:按Ctrl + X,然后按Y,最后按Enter
此外,对于 Driver 部分,请检查您的配置,即 acpi_video0 intel_backlight

3如果那个路径上已经有一个文件夹,我该怎么办?如果ln -s命令破坏了亮度(现在至少可以通过键盘控制),我该如何撤销这样的替换呢?我尝试创建xorg.conf文件,将intel_backlight和文件夹的长绝对路径都添加进去,但是没有起作用。所以我应该:
  1. 尝试ln -s命令,因为它是无害的。2. 尝试其他驱动程序名称(顺便问一下,我怎么知道它是否是路径的一部分?),或者3. 不使用路径而是使用文件夹的名称(它应该与Driver字段相同,这就是我问的原因)?
- mekkanizer
16在我的电脑中,如果我打开文件 /sys/class/backlight/intel_backlight/brightness,则会看到其中有一个整数值。只需更改该值并保存,我的屏幕就立即获得了正确的亮度。但是,如果我尝试使用建议的 ln 命令,我没有完全相同的文件夹,如果我尝试使用我的 intel_backlight 文件夹进行此操作,则会出现错误:ln: failed to create symbolic link '/sys/class/backlight/brightness': Operation not permitted。 - user5193682
1@user9589 这听起来像是一个权限问题。你确实以root用户执行了ln命令,对吗?而且我认为你应该链接文件夹,而不是文件夹内的亮度文件。无论如何,这个解决方案对我没有起作用,但我已经有了一个/sys/class/backlight文件夹。 - Nobody
对于xorg.conf文件,我是要写文件夹的完整路径还是仅写"intel_backlight"这个名称? - Nolan Akash
5“操作不允许”的一个原因可能是文件名包含应该转义的字符。这对我来说就是这种情况。 - Yan King Yin
2@YanKingYin 你是如何做到的? - Mephisto
/sys/class/backlight/intel_backlight 更简单的方法就是告诉内核使用intel-backlight而不是它预期的任何内容。 - Spark_TheCat
这没有找到我的背光位置。这个找到了:ll /sys/class/backlight/ - johny why
1这个文件也正确吗?我猜我没有intel/sys/devices/pci0000:00/0000:00:02.0/backlight/acpi_video0/brightness。在acpi_video0中,我还有一个名为actual_brightness的文件,两者的内容都是整数0。 - Timo
哪一个是它?系统里有这么多。 - Philip Rego
文件夹的名称是什么? - lindhe

每个步骤都需要 xbacklight 控制

按照以下步骤进行操作:

  1. $ sudo nano /etc/default/grub并且替换相应的行为GRUB_CMDLINE_LINUX_DEFAULT="quiet splash acpi_backlight=vendor"
  2. $ sudo update-grub
  3. 别开玩笑,确保适当的驱动程序实际上已安装$ sudo apt install xbacklight xorg xserver-xorg-video-intel
  4. 执行$ find /sys -type f -name brightness应该会得到类似于/sys/devices/pci0000:00/0000:00:02.0/drm/card0/card0-eDP-1/intel_backlight/brightness 的结果
  5. $ cd /sys/class这个目录应该包含一个名为brightness的软链接,指向前一步骤中发现的亮度设备。如果缺少该链接,请创建它:$ sudo ln -s /sys/devices/pci0000:00/0000:00:02.0/drm/card0/card0-eDP-1/intel_backlight/brightness /sys/class/brightness
  6. $ sudo nano /etc/X11/xorg.conf应该如下所示:
Section "Device"
    Identifier      "Device0"
    Driver          "intel"
    Option          "Backlight"      "intel_backlight"
EndSection

Section "Monitor"
    Identifier      "Monitor0"
EndSection

Section "Screen"
    Identifier      "Screen0"
    Monitor         "Monitor0"
    Device          "Device0"
EndSection

7. 将物理按键 XF86MonBrightnessDownXF86MonBrightnessUp 的分配方式在此Xubuntu LTS或XFCE用户的解释中进行了说明。
8. 最后,重新启动以使这些更改生效。

3对于第5步,我一直收到ln: failed to create symbolic link '/sys/class/brightness': Operation not permitted的错误提示。 - Sabito stands with Ukraine

我不建议那种方法,因为它会启动旧的未维护好的英特尔驱动程序,而不是modesetting驱动程序。
我创建了一个脚本来替代使用xbacklight。
#!/bin/sh
val=$(cat /sys/class/backlight/intel_backlight/brightness)
if [ "$1" = "+" ] ; then
  val=`expr $val + 5`
else
  val=`expr $val - 5`
fi
echo $val | sudo tee /sys/class/backlight/intel_backlight/brightness

并将tee添加到sudoers。这样可以避免由Intel驱动程序引起的副作用。

运行以下命令是否会有任何副作用或者伤害: sudo chmod a+rwx /sys/class/backlight/intel_backlight/brightness并且使用你的脚本时,将'sudo tee'替换为'tee'。 - mbkfa93
@mbkfa93 如何在重启后保持此设置? - gruvw

如果你想控制外接显示器,那么使用xbacklight的方法是行不通的。
你可以使用xrandr来代替。

E.g.:

xrandr --output HDMI1 --brightness 0.5

(您可以通过xrandr --listmonitors命令获取显示器名称,例如'HDMI1'。)
(参考链接:ref:archlinux bbs.

1请注意,这并不实际改变您显示器背光的亮度。根据xrandrs的手册: "将当前连接到输出的crtc上的伽马值乘以指定的浮点值。对于过亮或过暗的输出非常有用。然而,这只是一种软件修改,如果您的硬件实际支持改变亮度,您可能更喜欢使用xbacklight。" - Alex

我是一名Arch Linux用户,我遇到了同样的问题。 因为 /sys/class/backlight 存在为一个目录,所以我无法将驱动程序链接到它。

经过一些研究,我找到了 Yuri D'Elia / acpilight · GitLab。 我使用 pacman 安装了 acpilight,问题解决了。

现在我可以使用 xbacklight +5 来调节屏幕亮度。


对我来说,将内核参数 acpi_backlight 修改为 native 是有效的。
cat /boot/loader/entries/arch.conf

- options root=UUID=... acpi_backlight=vendor rw
+ options root=UUID=... acpi_backlight=native rw

你的回答可以通过提供更多支持性信息来改进。请编辑以添加进一步的细节,例如引用或文档,以便他人能够确认你的回答是否正确。你可以在帮助中心找到关于如何撰写好回答的更多信息。 - Community