Inability to control screen brightness is a common problem in many Linux distributions when using a laptop with an integrated Intel HD Graphics -- on my Lenovo V570, an Intel HD Graphics 3000. A typical solution is appending a kernel parameter to the kernel command line in the GRUB configuration file. There is a more effective solution that works even with newer kernels.
Fixing Backlight Control
At the time of this writing the typical solution to this problem is to specify some kernel parameters, such as
acpi_backlight=vendor, among others, in the GRUB configuration file -- /etc/default/grub, or by any other method that allows specifying kernel parameters. This has not worked in any of the six Linux distributions I have used on the Lenovo V570 with an Intel Core-i5 processor and integrated Intel HD Graphics 3000. (Another laptop with an older Nvidia graphics card has had no issues with backlight control, whether using the FOSS nouveau driver or the proprietary Nvidia driver.) What has worked for the Intel graphics laptop is createing an X configuration file corresponding to the video hardware and adding a control method to it as described in the next section.
In my case there have been two particular symptoms to the backlight control problem:
- OSD display works when using the keyboard backlight control but the backlight is not actually adjusted
- A graphical control method that is part of the desktop environment, such as a panel applet or some power setting is available but does not adjust the backlight.
Of the six distributions I have used lately, all of them required a fix to allow display backlight control and backlight level OSD. This is a common issue, where most suggest appending a kernel parameter to the kernel command line. It has been noted that this method does not work on later kernel versions and has not worked for me on Sabayon 14.08 or any other distro. What has worked for me -- which may work only for Intel video adapters -- has been to create an X configuration file and specifying an alternate backlight control method, as follows, adapted from these sources. It may work for other video cards by modifying as appropriate.
Determine video driver type:
The result in my case is:
Create a conf file for intel backlight control named 20-intel.conf in /usr/share/X11/xorg.conf.d with
Start an editor to edit the file. (If you want to use a graphical editor in KDE for root access, it is suggested by Sabayon, my current daily distro, to use kdesu and not sudofrom a standard user prompt; in GTK based desktop environments, the analogue to kdesu is gksu. Sabayon also warns not to start any graphical application from a root prompt.) I used, from a normal user prompt:
kdesu kate /usr/share/X11/xorg.conf.d/20-intel.conf
- Add the following to the file:
Section "Device" Identifier "Intel Graphics" Driver "intel" Option "AccelMethod" "sna" Option "Backlight" "intel_backlight" # intel instead of acpi_video0 BusID "PCI:0:2:0" EndSection
This method has been most reliable in fixing this backlight control issue regardless of kernel version. But there are other considerations depending on the desktop environment in use. In KDE this method always works well, always resetting the backlight level to the level set during the previous session, wheras GNOME, Cinnamon, and Unity typically set the backlight at the maximum level every session.