49

Brightness adjustment keys <Fn + /> have no effect (although they are recognized by the environment), and I can't change the brightness using GUI tools as well. This seems like a problem in Linux itself, not the desktop environment.

I can change the brightness in Windows OS, so it's not some kind of hardware fault.

Details:
          Lenovo B570 (Model Name: 20093)
          Integrated Intel HD graphics card
          Kubuntu 11.04 (Linux 2.6.38-10-generic, KDE 4.7.0), everything up to date
          No proprietary graphics drivers (only Wi-Fi one)

What I've tried:

  • Edit /etc/default/grubGRUB_CMDLINE_LINUX_DEFAULT: acpi_osi=Linux, acpi_backlight=vendor, nomodeset. And yes, I did update-grub
  • Edit /etc/X11/xorg.conf (no such file, even after sudo dpkg-reconfigure xserver-xorg)
  • Edit /proc/acpi/video/VGA/LCD/brightness (no such file)
  • sudo setpci -s 00:02.0 F4.B=XX (no effect)
  • xbacklight -set XX ("No outputs have backlight property")

How can I fix this issue?

7

15 Answers 15

46

If the GUI tools fail, try to use the terminal for it.

  1. Open a terminal

  2. Run: ls /sys/class/backlight/*/brightness. Example output would be:

    /sys/class/backlight/acpi_video0/brightness
    
  3. If nothing is found, the kernel does not support brightness control (missing drivers?). Otherwise, you can use the below commands (replace acpi_video0 accordingly):

    • Get the current brightness level:

      cat /sys/class/backlight/acpi_video0/brightness
      
    • Get the maximum brightness level:

      cat /sys/class/backlight/acpi_video0/max_brightness
      

    These commands return brightness levels which ranges from zero to max_brightness (see above).

  4. To change the brightness level, you need to write a number to the brightness file. This cannot be done by an editor like gedit. Say you want to change your brightness to 5, you have to run:

    echo 5 | sudo tee /sys/class/backlight/acpi_video0/brightness
    

    Alternatively, if you just want to set the brightness level to the highest available:

    sudo tee /sys/class/backlight/acpi_video0/brightness < /sys/class/backlight/acpi_video0/max_brightness
    
8
  • 5
    Sure there are some problems with drivers! If this command line stuff worked, GUI would work too. But of course it does not work – _ Aug 18, 2011 at 12:24
  • @Lekensteyn: [did not worked, 11.04 Ubuntu using] - I have tried a lot but it did not worked realtime. Did you mean when changing this it will show live or after reboot?
    – user25165
    Sep 20, 2011 at 11:24
  • 2
    Changes are realtime.
    – Lekensteyn
    Sep 20, 2011 at 13:50
  • 1
    Even as super user I could not change the brightness level using tee. Why might that be?
    – user358167
    Jan 27, 2017 at 19:27
  • @Galen If you have not made a mistake in writing to the file, then it could be a model-specfic issue. Try reporting it as bug or search for your laptop model and "linux backlight".
    – Lekensteyn
    Jan 27, 2017 at 21:03
10

Try this. It worked for my Ubuntu 14, Lenovo B570, Intel Graphics.

Open a terminal and create the following configuration file, if it does not exist:

sudo touch /usr/share/X11/xorg.conf.d/20-intel.conf

Now we need to edit this file. You can use any editor be it a terminal one or graphical.

sudo gedit /usr/share/X11/xorg.conf.d/20-intel.conf

Add the following lines to this file:

Section "Device"
        Identifier  "card0"
        Driver      "intel"
        Option      "Backlight"  "intel_backlight"
        BusID       "PCI:0:2:0"

EndSection

Save it. Log out and log in back.

7
  • Thank you - This also worked on a Samsung N220 Netbook w/ Integrated Intel Graphics (GMA 3150) running Xubuntu 15.04 "vivid"
    – Andrew
    Jul 4, 2015 at 18:48
  • 1
    Nope, that killed my X. had to remove the file in the recovery console again.
    – towi
    Sep 4, 2016 at 18:36
  • This does did not work on Lenovo P500.
    – user358167
    Jan 27, 2017 at 19:17
  • 2
    This worked for me on a Thinkpad T460 with Ubuntu 17.04, I just had to log out and then log in. Jul 29, 2017 at 19:19
  • To check the PCI bus ID run lspci -nn. That said, this didn't work for me in a Thinkpad E490.
    – Enrico
    Aug 5, 2019 at 20:51
9
  1. Install linux-kamal-mjgbacklight - a patch for Linux kernel.

    • Check whether it will work for you:
      lsmod | grep ^i915
      Something like i915 331519 3 should appear. If there's no output, this will not work.
    • sudo add-apt-repository ppa:kamalmostafa/linux-kamal-mjgbacklight
    • Install updates (sudo apt-get update; sudo apt-get upgrade)
  2. Reboot.

  3. Now you can use the terminal to adjust brightness, as suggested by Lekensteyn.
    If it's OK for you to change brightness with terminal+sudo, this is the end of the answer.
    If you are on GNOME desktop, brightness may even function fully already.

  4. Download my brightness changer script, allow it to be executed, and put it to /usr/local/bin/:
    wget -O brightness http://ideone.com/plain/yPlo5
    chmod +x brightness
    sudo mv brightness /usr/local/bin

  5. We have to allow the brightness file to be edited, so that sudo isn't needed everywhere.
    Also, we want to make the brightness setting restore itself to the previous setting when the system boots (it is not saved by default, unfortunately).

    The mentioned brightness script can handle it all (with restore parameter), just add it to autorun.
    To do this we will edit /etc/rc.local (sudo nano /etc/rc.local or any editor instead of nano).
    Add the following line before the exit 0 line:
    /usr/local/bin/brightness restore

  6. It is best to reboot now.

  7. So the brightness script works. You may go to terminal any time and type these:

    • brightness - get current brightness setting
    • brightness value - set the brightness to value
    • brightness inc step, brightness dec step - increase or decrease the brightness by step (if it's not specified, a default value is used from the configuration file, usually 10% of maximal brightness)
  8. Now you might want to map brightness change to your hotkeys.

    • Set XF86BrightnessUp to brightness inc
    • Set XF86BrightnessDown to brightness dec
  9. If you want to tweak something, make sure to look at /etc/bx_brightness.conf
    You can change the step by which brightness is changed with brightness inc/dec


Thanks to Toz for his priceless help in this thread.

1
  • 1
    This is no longer needed in Ubuntu 11.10 Oct 13, 2011 at 17:59
5

I have a lenovo ideapad z400.

I tried all the TIPS listed above, no success.

So I found a different one that worked very well :

Put the following line in /etc/default/grub

GRUB_CMDLINE_LINUX="acpi_backlight=vendor acpi_osi=Linux resume=/dev/sdYY"

YY = Swap area, use swapon -s to see you swap device.

Execute an update-grub as root

After the reboot the problem was solved.

1
  • It worked for me, however, something curious happened. When the brightness is set to the max, the screen shows no brightness (completely dark), any suggestion? Thanks Feb 20, 2018 at 17:41
4

I think I found an easy and least effect to the existed things' way for adjusting intel_backlight using udev rules.

I noticed "change" action of "backlight" subsystem when I press Fn+Up/Down on my Lenovo G360 notebook running kernel 3.2. So I wrote a rules of /etc/udev/rules.d/99-writeintelbacklight.rules as below:

ACTION=="change", SUBSYSTEM=="backlight", RUN+="/usr/sbin/writeintelbacklight.sh"

Make the shell script /usr/sbin/writeintelbacklight.sh contain:

#!/bin/bash

intelmaxbrightness=`cat /sys/class/backlight/intel_backlight/max_brightness`
acpimaxbrightness=`cat /sys/class/backlight/acpi_video0/max_brightness`
scale=`expr $intelmaxbrightness / $acpimaxbrightness`
acpibrightness=`cat /sys/class/backlight/acpi_video0/brightness`
newintelbrightness=`expr $acpibrightness \* $scale`
curintelbrightness=`cat /sys/class/backlight/intel_backlight/actual_brightness`
if [ "$newintelbrightness" -ne "$curintelbrightness" ]
then
  echo $newintelbrightness > /sys/class/backlight/intel_backlight/brightness
fi
exit 0

Of course, you need do a sudo chmod +x /usr/sbin/writeintelbacklight.sh.

2
  • 1
    Added "acpi_backlight=vendor acpi_osi=linux video.brightness_switch_enabled=1" into grub boot kernel parameters, "Fn + Up/Down" to change brigtness works on my G360. It's no need to write a Udev rules like above.
    – littlebat
    Jun 11, 2012 at 23:10
  • It seems adding only one kernel parameter "acpi_backlight=vendor" also works on my G360 now. But, both methods of adding kernel parameters will stop work occasionly. The detail of my case see: Bug 44809 - [Arrandale backlight] Brightness via RANDR has no effect on Sony VAIO VPCYA1V9E: bugs.freedesktop.org/show_bug.cgi?id=44809
    – littlebat
    Jun 22, 2012 at 4:10
4

This will not get your Fn keys working, but you will be able to assign any other key to adjust brightness.

I tried several of these solutions, but nothing worked for me until I found this little indicator program http://codevanrohde.nl/wordpress/?p=128. With it you can set up hot keys to control brightness, use your mousewheel or select from a drop down list in the indicator. I have replaced 'Fn' with 'Win+Alt' which is very similar for my hands and now I can also use it with an external keyboard!

To add PPA and install:

sudo add-apt-repository ppa:indicator-brightness/ppa
sudo apt-get update && sudo apt-get install indicator-brightness

Hot keys should be assigned to:

/opt/extras.ubuntu.com/indicator-brightness/indicator-brightness-adjust --up

and

/opt/extras.ubuntu.com/indicator-brightness/indicator-brightness-adjust --down

Footnote: Out of the box, the birghtness indicator recognizes 7 levels of brightness in my system. By adding acpi_backlight=vendor to the line GRUB_CMDLINE_LINUX_DEFAULT in /etc/default/grub, that number is bumped up to 16!

2

I have a Thinkpad T450s with Nvidia graphics and binary drivers on Ubuntu 14.04. In order to get the backlight working I had to edit the /etc/X11/xorg.conf file by adding the following line to the intel device definition (The xorg.conf-file is created when installing the binary drivers):

Option      "Backlight"  "intel_backlight"

The complete section is now:

Section "Device"
    Identifier "intel"
    Driver "intel"
    BusID "PCI:0@0:2:0"
    Option "Backlight" "intel_backlight"
    Option "AccelMethod" "SNA"
EndSection
1

This doesn't work for KDE users as it written in https://launchpad.net/~kamalmostafa/+archive/linux-kamal-mjgbacklight

NOTES FOR KDE DESKTOP USERS

KDE desktop users: This PPA may NOT fix your backlight control hotkeys: This fix requires a kernel module to supply the new /sys/class/backlight/intel_backlight interface (which will work regardless of your desktop) and also a desktop module to access that interface. For Gnome, the updated gnome-power-manager in this PPA supplies that, but the equivalent for KDE has not yet been developed."

However you can try a workaround found here.

That says to type in the terminal echo XXX | sudo tee /sys/class/backlight/intel_backlight/brightness where XXX is an integer value.

In my case XXX can be a value from 0 to 4882, but be careful: if you write 0 the screen will be completely black and you'll se nothing.

0
1

Here is a patch you can do.

Create this script with the name .modificarBrillo.sh (in my case I created it in my home folder: ~/.modificarBrillo.sh)

#!/bin/bash
if [ -z "$1" ]; then
    echo "ERROR: Tiene que introducir un parámetro: \"a\" para aumentar o \"d\" para disminuir"
    exit
else
    if [ "$1" != "a" ] && [ "$1" != "d" ]; then
        echo "ERROR: el parámetro de entrada sólo puede ser o \"a\" para aumentar el brillo o \"d\" para disminuirlo"
        exit
    fi
fi
MAX_BRILLO=`cat /sys/class/backlight/intel_backlight/max_brightness`
MIN_BRILLO_ABSOLUTO="0"
MIN_BRILLO="100" #el brillo mínimo puede ser 0 pero eso deja la pantalla completamente a oscuras
INTERVALO=`expr $MAX_BRILLO - $MIN_BRILLO_ABSOLUTO`
INTERVALO=`expr $INTERVALO / 10`
brillo=`cat /sys/class/backlight/intel_backlight/actual_brightness`
if [ "$1" = "a" ]; then
    let "brillo = brillo + INTERVALO"
    if [ "$brillo" -gt "$MAX_BRILLO" ]; then
    let "brillo = MAX_BRILLO"
    fi
else
    let "brillo = brillo - INTERVALO"
        if [ "$brillo" -lt "$MIN_BRILLO" ]; then
            let "brillo = MIN_BRILLO"
        fi
fi
echo "$brillo" | tee /sys/class/backlight/intel_backlight/brightness

However as the previous script needs execution permission and /sys/class/backlight/intel_backlight/brightness can only be edited by root and you have to execute in terminal:

chmod a+x ~/.modificarBrillo.sh
sudo chmod a+w /sys/class/backlight/intel_backlight/brightness`

The last command has to be executed every startup because the permissions of the brightness file are renewed with the startup. For doing so sudo vim /etc/rc.local and add the command sudo chmod a+w /sys/class/backlight/intel_backlight/brightness before the "exit 0" line

Finally you should install xbindkeys to assgin the Function key to execute the script.

In my case I add the lines to the configuration file ~/.xbindkeysrc

#Aumentar brillo
"/home/alvaro/.modificarBrillo.sh a"
    m:0x0 + c:233
    XF86MonBrightnessUp 

#Disminuir brillo
"/home/alvaro/.modificarBrillo.sh d"
   XF86MonBrightnessDown

But you could also install the program xbindkeys-config to do the proccess graphically.

0
1

I had the same issue, I am using Gnome3.10 in ubuntu 14.04 ( Unity). I installed tlp for temperature control in my laptop. I just removed 'tlp' and I rebooted my system and I am able to adjust screen brightness using function(fn) + arrow keys.

It might help check it once.

1

Had same problem (apparently) with a Lenovo IP G50-70. - In fact, none of the function keys 'appeared' to work. Eventually in the Bios I found a 'Hotkey' enable/disable function. Paradoxically, it was 'Enabled', but this in fact enables a single key press operation for the function keys. In fact, if you use the traditional 'Fn + Function keyX' technique, they don't work.

If you 'Disable' the hotkey function in the Bios, then the function keys work 'as expected' (Fn + Function Keyx). - After doing this, all the function keys worked OK. So much for progress

1

I was having a problem on a Thinkpad W510 running kubuntu 18.04.

I found this on a Lenovo forum:

tpb - program to use the IBM ThinkPad(tm) special keys

sudo apt-get install tpb

Voila! Brightness adjustment keys now work perfectly! I did not even need to log out and back in.

1

I had to add these lines to the kernel command line in the grub configuration:

acpi_backlight=vendor acpi_osi=linux thinkpad-acpi.brightness_enable=1

Note that last one. That was the one that made the brightness keys work.

1
  • This answer is lacking context. Where to put that code.
    – Soerendip
    Jul 4, 2023 at 4:16
0

You can use this package to deal with brightness from the command line (terminal), with the xbacklight command.

xbacklight Install xbacklight can be installed in the Software Center. Or in the Terminal:

sudo apt-get update && sudo apt-get install xbacklight

you can use

  • xbacklight -inc <range from 0 to 100> to increase brightness with value < ... >

  • xbacklight -dec <range from 0 to 100> to decrease brightness with value < ... >

1
  • This one worked for me using a Thinkpad E490. Thanks!
    – Enrico
    Aug 5, 2019 at 21:13
0

light by haikarainen worked for me on Xubuntu 19.10 with Thinkpad x390

With it you can adjust brightness with

light -A 5  # Increase brightness by 5%
light -U 5  # Decrease brightness by 5%

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .