nvidia backlight brightness problem

19,868

Solution 1

Update June 16, 2019

Last month, 2 years after problem was reported, OP discovered LightDM (Ubuntu Unity Desktop Manager) was source of problem. That said, in addition to the list below, there is another grub parameter that can be tried:

video.use_native_backlight=1

See this answer for more.


Original Answer

The ultimate reference seems to be in Arch Linux which is a site I've turned to many times to fix difficult problems.

Kernel Parameters

Looking at your cat /proc/cmdline there are no extra kernel parameters passed. The above link states:

Sometimes, ACPI does not work well due to different motherboard implementations and ACPI quirks. This includes some laptops with dual graphics (e.g. Nvidia/Radeon dedicated GPU with Intel/AMD integrated GPU). On Nvidia Optimus laptops, the kernel parameter nomodeset can interfere with the ability to adjust the backlight. Additionally, ACPI sometimes needs to register its own acpi_video0 backlight even if one already exists (such as intel_backlight), which can be done by adding one of the following kernel parameters:

acpi_backlight=video
acpi_backlight=vendor
acpi_backlight=native

If you find that changing the acpi_video0 backlight does not actually change the brightness, you may need to use acpi_backlight=none.

Try each of the acpi_backlight=xxxx options on your grub kernel paremeters line

When xbacklight doesn't work

You've tried xbacklight already and the link above addresses this:

On some systems, the brighness hotkeys on your keyboard correctly modify the values of the acpi interface in /sys/class/backlight/acpi_video0/actual_brightness (As we tried in comments) but the brightness of the screen is not changed. Brigthness applets from desktop environments (ie Ubuntu brightness setting slider bar) may also show changes to no effect.

If you have tested the recommended kernel parameters and only xbacklight works, then you may be facing an incompatibility between your BIOS and kernel driver.

In this case the only solution is to wait for a fix either from the BIOS or GPU driver manufacturer.

A workaround is to use the inotify kernel api to trigger xbacklight each time the value of /sys/class/backlight/acpi_video0/actual_brightness changes.

First install inotify-tools. Then create a script around inotify that will be launched upon each boot or through autostart.

Below is script you need to create called: /usr/local/bin/xbacklightmon

#!/bin/sh

path=/sys/class/backlight/acpi_video0

luminance() {
    read -r level < "$path"/actual_brightness
    factor=$((100 / max))
    printf '%d\n' "$((level * factor))"
}

read -r max < "$path"/max_brightness

xbacklight -set "$(luminance)"

inotifywait -me modify --format '' "$path"/actual_brightness | while read; do
    xbacklight -set "$(luminance)"
done

There is a lot more in the link above but these steps are a good place to start.


Dedicated Forums

For additional support there are dedicated Linux Graphics forums:

Solution 2

Per wineunuuchs2unix's request, I am reposting my answer to a similar question here.

Try acpi_osi=

On upgrading to Bionic a few days ago, I encountered a similar problem (I have an NVIDIA GeForce GTX 1060 Mobile, but for me /sys/class/backlight is showing as empty).

In working through the backlight debugging procedure, I discovered a workaround via kernel parameters:

  • In "Software & Updates" → "Additional Drivers", make sure that you have nvidia-driver-396 (or whichever metapackage is current; 396 is the latest at the time of writing) selected.
  • Edit /etc/default/grub by running the command sudo nano /etc/default/grub (optionally replacing nano with your favorite editor).
  • Find the line that sets GRUB_CMDLINE_LINUX_DEFAULT and add acpi_osi= at the end inside of the quotes. On most systems this will leave you with a line reading GRUB_CMDLINE_LINUX_DEFAULT="quiet splash acpi_osi=".
  • Save and exit the editor.
  • Run the command sudo update-grub and reboot.

(If these steps do not work, restore your settings by repeating the process, but removing acpi_osi= when you edit the GRUB configuration.)

Another workaround, if it is an option for you, is to switch to a mainline kernel. In particular, I do not see the problem under mainline kernel version 4.17.

(Bug reported here.)

Solution 3

one program to solve all this problem !!!

i have GTX 1060 6Gb desktop ubuntu 16.04

NO need to do anything, just install brightness-controller with the ppa :

https://launchpad.net/~apandada1/+archive/ubuntu/brightness-controller/

solved the issue for me (see screenshots) however it conflicts with redshift so you need to remove redshift

you can add it to startup for convenient use

Solution 4

Hi I apologise if this is something the clever people have already ruled out, as I am far from familiar with the command line, but after a reinstall i hit this problem and all the above solutions didn't work for me (MSI pe706QE nvidia 960m).

I was editing /etc/default/grub by:

gksudo 'insert editor of choice not in quotes' /etc/default/grub

and noticed the nomodeset was still sitting in the bottom of the file (I don't remember permanently adding it) and removed it.

save the file and run:

sudo update-grub 

all working again with shortcut keys #noobie fail hope this can help someone.

Solution 5

I have a Sony VPCEH notebook, I had the same problem. I tried this solution that worked for me: http://ubuntuforums.org/showthread.php?t=2221452#6

Briefly: With root privileges, create the file /usr/share/X11/xorg.conf.d/20-nvidia.conf with the following content

Section "Device"
    Identifier     "Device0"
    Driver         "nvidia"
    VendorName     "NVIDIA Corporation"
    BoardName      "GeForce 410M"
    Option         "RegistryDwords" "EnableBrightnessControl=1"
EndSection

Log out and back in again to test. The link above also states: "If something goes wrong, simply delete that file and reboot to recover the system", but I didn't need that addition.

After logout and login the brightness control started to work again. I hope it helps you too...

or this one after works with ubuntu 16.04 under my laptop sony VPCEJ2C5E but with nvidia 378.13 i don't have use for the moment the 390.25 drivers.

I was able to get my brightness keys working on my Lenovo W530 on Ubuntu 12.04. These days X automatically configures itself, so creating an xorg.conf file might make your system inflexible. Instead you can add a section to a file in /usr/share/X11/xorg.conf.d/ and X will include that section in the configuration that it automatically generates. So to get the screen brightness keys working with your Nvidia graphics card, create a file in the xorg.conf.d directory, e.g: sudo gedit /usr/share/X11/xorg.conf.d/10-nvidia-brightness.conf Paste the following into the file:

Section "Device"
    Identifier     "Device0"
    Driver         "nvidia"
    VendorName     "NVIDIA Corporation"
    BoardName      "Quadro K1000M"
    Option         "RegistryDwords" "EnableBrightnessControl=1"
EndSection

Log out and log back in, or reboot, and your brightness keys should now work!

enter image description here

Share:
19,868

Related videos on Youtube

Max Tkachenko
Author by

Max Tkachenko

Updated on September 18, 2022

Comments

  • Max Tkachenko
    Max Tkachenko over 1 year

    Problem

    Unity shows control while I press the Fn+Increase/Descrese brightness, but nothing happens. In console brightness doesn't work too while X server is running.

    Checked solutions

    I have tried ALL POSSIBLE solutions of this problem in google and nothing works:

    1. write acpi_backlight in grub
    2. reinstall drivers with apt purge nvidia*
    3. write "EnableBrightnessControl=1" in xorg.conf
    4. install nvidia-375.66, nvidia-378.13, 381.22, 384.47
    5. "xbacklight -set X" doesn't work
    6. changing /sys/class/backlight/brightness
    7. update linux kernel from 4.8 to 4.10 and 4.12
    8. replace EDID from old matrix (it breaks everything)
    9. setpci -v -H1 -s 00:01.0 3e.W=0 and then change backlight using Fn+keys.
    10. xrandr --output DP-0 --brightness 0.5 --- bad solution

    My system and situation

    I used N173HHE-G32 display matrix in my laptop before and everything was OK. But today I've replaced it to B173HAN01.2 and this problem has started. On Windows 10 I've solved it by reinstalling drivers on nvidia-376 from official MSI website.

    So, I can see the next sequence: at laptop start brightness is maximum, then it is minimum (and working) while "initramfs ..." text is showing in console. And after X server starts brightness is maximum (broken) again. When X server stops brightness is working again!

    MSI GT73VR 7RF, Ubuntu 16.04.2 LTS, NVidia GeForce GTX1080, B173HAN01.2 display matrix
    
    uname -a 
    4.8.0-58-generic #63~16.04.1-Ubuntu SMP Mon Jun 26 18:08:51 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux
    
    lspci | grep -i vga
    01:00.0 VGA compatible controller: NVIDIA Corporation Device 1be0 (rev a1)
    

    However!

    But when I use nvidia-378 it WORKS! Unfortunately 378 has a critical bugs after suspend mode in Unity interface :(((

    Please help, my eyes are in blood (it's very bright for them) and I don't know what to do...

    Updated! After two years I understood that problem is inside of lightdm (or X server). When I stop it everything is ok...

    • WinEunuuchs2Unix
      WinEunuuchs2Unix almost 7 years
      Perhaps the best course is the 378 driver and fixing the suspend/resume bugs with it. What are the bugs?
    • Max Tkachenko
      Max Tkachenko almost 7 years
      Bugs with Unity interface - some artifacts around the borders of windows and menus. There is description - bugs.launchpad.net/ubuntu/+source/unity/+bug/1675597
    • WinEunuuchs2Unix
      WinEunuuchs2Unix almost 7 years
      I think someone said a month or two ago it has been fixed in version 381 or something like that. I think it was askubuntu.com/users/15811/rinzwind who said it but askubuntu.com/users/167850/pilot6 I believe is another expert.
    • Max Tkachenko
      Max Tkachenko almost 7 years
      Bug with suspend is fixed, but backlight is not working :( i have tried 381..and many other versions..
    • WinEunuuchs2Unix
      WinEunuuchs2Unix almost 7 years
      Can you update your question with the output of: for i in /sys/class/backlight/*; do echo $i; cat $i/brightness; cat $i/actual_brightness; cat $i/max_brightness; done
    • Max Tkachenko
      Max Tkachenko almost 7 years
      @WinEunuuchs2Unix You can find output for different Fn+Increase/Decrease here: jpst.it/11ETR
    • WinEunuuchs2Unix
      WinEunuuchs2Unix almost 7 years
      Can you include the output from cat /proc/cmdline?
    • Max Tkachenko
      Max Tkachenko almost 7 years
      Of course, "BOOT_IMAGE=/boot/vmlinuz-4.12.1-041201-generic root=UUID=9312900a-2d95-444f-b30a-245dc245f862 ro"
    • WinEunuuchs2Unix
      WinEunuuchs2Unix almost 7 years
      I had bad luck with 4.12 where Chrome HTML5 would stutter when there was mouse movement in other chrome tabs and booted with 4.11.3 or 4.4.0-78 instead. I have ideas to try on grub kernel parameters but I'm on my phone now.
    • Max Tkachenko
      Max Tkachenko almost 7 years
    • Philippe Paré
      Philippe Paré almost 5 years
      Possibly downgrade to the nouveau display drivers if nothing else works...
  • Max Tkachenko
    Max Tkachenko almost 7 years
    Thank you! Unfortunately, it uses "echo $1 > /sys/class/backlight/0/brightness;" and it's the same I wrote below "6. changing /sys/class/backlight/brightness"
  • endrias
    endrias almost 7 years
    it's not /sys/class/backlight/0/brightness the correct path is /sys/class/backlight/acpi_video0/brightness
  • endrias
    endrias almost 7 years
    or some other similar path for systems with specialized graphics hardware.
  • Max Tkachenko
    Max Tkachenko almost 7 years
    In any case it doesn't work :(
  • Max Tkachenko
    Max Tkachenko almost 7 years
    Sorry, but xbacklight in checked solutions list.. It doesn't work :(
  • Max Tkachenko
    Max Tkachenko almost 7 years
    Thank you for a such big answer! 1) Try each of the acpi_backlight=xxxx options on your grub kernel paremeters line --- yes, I've tried it many times without any result.
  • Max Tkachenko
    Max Tkachenko almost 7 years
    Unfortunately, xbacklight doesn't work too :(
  • Max Tkachenko
    Max Tkachenko almost 7 years
    I think it's a drivers bug.. and I need somebody from nvidia dev team :)
  • ben-Nabiy Derush
    ben-Nabiy Derush almost 7 years
    If I remember correctly, the nVidia team who normally worked on the linux driver just got switched around, and there might not be the same linux support in days to come.
  • WinEunuuchs2Unix
    WinEunuuchs2Unix almost 7 years
    @ben-NabiyDerush I recall last year Nvidia launched a forum specifically aimed at finding out problems users were having and working with them to solve them. Linux was their focus I believe. I went looking for the forum again today but couldn't find it. I did find two other support forums though and updated the answer with them.
  • Max Tkachenko
    Max Tkachenko almost 6 years
    unfortunately it doesn't help :(
  • Max Tkachenko
    Max Tkachenko over 5 years
    Thank you for your answer. But I think this is not right thing, text is from site: "It is a software based dimmer". It's not control of your back light power, it's only software solution with RGB curves :( I'll try it a little bit later.
  • Go MasterZero
    Go MasterZero over 5 years
    try it, it really works :)
  • Max Tkachenko
    Max Tkachenko over 5 years
    I have tested it. As I said it's software solution, it doesn't save the battery and it damages the picture color. xrandr --output DP-0 --brightness $VALUE --- do the same thing.
  • Go MasterZero
    Go MasterZero over 5 years
    thanks for your feedback, a GUI is still nice to have though
  • Philippe Paré
    Philippe Paré almost 5 years
    What if I don't have a /sys/class/backlight/acpi_video0 file?
  • Max Tkachenko
    Max Tkachenko about 3 years
    It helped me too, but how to live without lightdm?
  • Bob36180
    Bob36180 about 3 years
    I personnally uninstalled it, and nothing happened... The Ubuntu documentation says : "LightDM is the display manager running in Ubuntu up to version 16.04 LTS. While it has been replaced by GDM in later Ubuntu releases, LightDM is still used by default in the latest release of several Ubuntu flavors."