Ubuntu 14.04 Brightness issue with nvidia Quadro

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

  • Ubuntu 13.10 kernel 3.11.0-12.19-generic 3.11.3 -> suggested workarounds: using nvidia drivers 304

  • Ubuntu 13.10 kernel 3.11.0-15.25-generic 3.11.10 -> suggested workarounds: using nvidia drivers 304

  • Ubuntu 14.04 kernel 3.13.0-24.47-generic 3.13.9 -> suggested workarounds: none

  • Ubuntu 14.04 kernel 3.13.0-32.57-generic 3.13.11.4 -> suggested workarounds: none

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


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

  • Brightness changing through command line

  • Making script shortcut

  • Zenity scale


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.