Ubuntu 14.04 Brightness issue with nvidia Quadro

All we need is an easy explanation of the problem, so here it is.

I recently upgraded from Ubuntu 13.10 to 14.04. Everything is fine, except the brightness of my laptop screen. When I change the brightness the screen simply does not respond. I figured this was a graphics driver issue, but having updated and reinstalled all nvidia drivers the problem persists. It’s rather nasty, as the screen is now permanently set to the darkest setting, making it almost impossible to see anything.

I also tried the solution proposed here: Ubuntu 14.04 – brightness problem in HP hybrid laptop
but this, sadly, didn’t help either.

I have a HP Elitebook 8560w, with an nvidia Quadro 1000M and am running the latest nvidia-current drivers available in the apt-get repo’s

For the record, I tried experimental nvidia drivers, which consequently crashed my entire OS. Therefore, I reinstalled 14.04 cleanly, yet this problem still persists

How to solve :

I know you bored from this bug, So we are here to help you! Take a deep breath and look at the explanation of your problem. We have many solutions to this problem, But we recommend you to use the first method because it is tested & true method that will 100% work for you.

Method 1

It’s probably a bug with drivers > 304 which has been around for a while:

According to these bug reports the only solution is to roll back to a driver version <= 304.

Method 2

Not a solution but rather a workaround.

There should be a file
/sys/class/backlight/acpi_video0/brightness

In this file you have a particular decimal value which corresponds to brightness.

Now, when I use openbox desktop environment, my fn key doesn’t work, which is why i use the following script to set it:

#!/bin/mksh
printf " \n Entering file to change brightness in 3 seconds\n remember - no new line after number.  ";
sleep 3;
sudo nano /sys/class/backlight/acpi_video0/brightness

Now, you may want to check the /sys/class/backlight folder just to make sure that you have acpi_video0 file there. It may be named differently for your system

I will link a relevant askubuntu question if you’re interested in varioius workarounds for setting brightness

Update

I’ve wrote another script which uses zenity (graphical front end for scripts) and xrandr, with a desktop shortcut.

Tools you need

  • xrandr (should be installed by default, don’t quote me on that) and knowing the name of your display
  • zenity (should be installed by default, don’t quote me on that)
  • desktop shortcut backlight.desktop

Desktop shortcut

Create backlight.desktop file on your desktop and make it executable with sudo chmod a+x ~/Desktop/backlight.desktop. (Note, you may want to make it executable through rightclick -> properties and also allow running text files as executables in Nautilus-> Edit-> Properties-> Behavior).

[Desktop Entry]
Type=Application
Exec=/usr/bin/backlightscript
Terminal=false
Icon=/usr/share/icons/HighContrast/16x16/status/display-brightness.p
ng

Note, Icon portion is optional.

The script

Place this file in /usr/bin folder, call it backlightscript

#!/bin/sh
# Name: backlightscript
# Author: Serg Kolo
# Date: March 2 , 2015
# Description: Simple script to change screen brightness using xrandr

# uncomment this for debugging as needed
# set -x

NEWVAL=$( zenity --scale --min-value=0 --max-value=7 --text="Enter number between 0 and 7" ) && brightness=$(($NEWVAL+2))

if [ $(echo $?) = 0  ]
  then
    xrandr --output LVDS --brightness 0.$brightness

fi

Script explanation

I’ve found that optimal brightness is between 0.2 and 0.9. If you go bellow 0.2 or 1 screen gets either too dark or too bright. In this script, the user double-clicks on the backlight.desktop shortcut, which calls graphical pop-up with a scale, where user selects necessary brightness from 0 to 7. That value is incremented by 2 ( so max is 7+2=9 and min is 0+2=2 ) and stored in brightness variable. That variable then becomes the value after decimal point for xrandr --output LVDS --brightness 0.$brightness.

The if – then block is used to test whether the user actually selected something. Without it, xrandr will set brightness to 0, in which case you won’t see anything on your screen, even tty1, and will have to either reboot or do Alt+SYSRQ+R+E+I+S+U+B

Note, that xrandr is a software solution, not hardware solution, i.e. you’re not changing brightness of screen directly.

How it should look

enter image description here

Note on xrandr
Run xrandr without any arguments to determine your primary connected display

My example

Screen 0: minimum 320 x 200, current 1366 x 768, maximum 8192 x 8192
VGA-0 disconnected (normal left inverted right x axis y axis)
LVDS connected primary 1366x768+0+0 (normal left inverted right x axis y axis) 344mm x 193mm
   1366x768       60.0*+
   1280x720       59.9  
   1152x768       59.8  
   1024x768       59.9  
   800x600        59.9  
   848x480        59.7  
   720x480        59.7  
   640x480        59.4  

Sources

Method 3

I got it to work on a Lenovo W510 with a Quadro FX 880M by creating /usr/share/X11/xorg.conf.d/20-nvidia.conf with the following contents:

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

After reboot my brightness controls work correctly.

Method 4

At last it is fixed with latest driver which was released by Nvidia with release date: 2017.5.4 and its version number: 375.66

Release notes including following explanation:

Fixed a bug that caused backlight brightness to not be controllable on some notebooks with DisplayPort internal panels.

Note: Use and implement method 1 because this method fully tested our system.
Thank you 🙂

All methods was sourced from stackoverflow.com or stackexchange.com, is licensed under cc by-sa 2.5, cc by-sa 3.0 and cc by-sa 4.0

Leave a Reply