[NVidia 319.12] Brightness controls not working on laptop (Ubuntu 13.03)

I, too, would like to know what the status of this bug is.

Running Debian Wheezy on HP Elitebook 8560w Quadro 2000m, recent nvidia proprietary driver versions (including 331.38) break brightness control.

Problem is reproducible in Debian Sid and in Fedora 20 with latest updates, so it doesn’t seem fixed by more recent versions of linux packages.

Brightness control works in 304.88 driver from Debian Wheezy repos, and earlier versions (295.41 dev driver from cuda toolkit 4.2). I expected better driver support for Quadro products.

Tested nvidiabl - brightness control still doesn’t work in my case with recent drivers 331.38.

Also tried different solutions found on the web, like EnableBrightnessControl in xorg.conf, acpi_vendor etc., none of them worked. In all cases I tried changing brightness using echo to files, xbacklight and laptop keys - none worked with recent drivers.

Since the only difference between working and non-working backlight control is installation of recent version of nvidia proprietary drivers (other packages are very rarely updated and with bug-fixes only in stable branch of Debian), I think it is safe to say that it is nvidia’s job to fix this bug.

Found a workaround (at least for Debian Wheezy and HP 8560w with Quadro 2000m) - works with latest 3.13.1 kernel build from kernel.org sources.

  1. build and install 3.13.1 kernel
  2. download latest 331.38 installer from nvidia
  3. download patch for nvidia drivers to the same location - http://cvs.rpmfusion.org/viewvc/rpms/nvidia-kmod/devel/nvidia_3.13_kernel.patch?revision=1.3&root=nonfree&view=markup (found link on OpenSUSE forums here Brightness doesn't change on openSUSE 13.1, Nvidia quadro. - Page 2)
  4. run ‘sh NVIDIA-Linux-x86_64-331.38.run -x’ to extract files
  5. ‘cd NVIDIA-Linux-x86_64-331.38’ to extracted dir
  6. apply patch with ‘patch -p1 < …/nvidia_3.13_kernel.patch’
  7. run ‘./nvidia-installer’
  8. make sure ‘Option “RegistryDwords” “EnableBrightnessControl=1”’ is in the device section of /etc/X11/xorg.conf, otherwise brightness control still won’t work.

backlight brightness control now works with 3.13.1 kernel, but still doesn’t work when booting the old 3.2.0 kernel from Debian stable repos (wheezy-backports has 3.12 for now).

On some optimus laptops, the backlight is only controlled by the Intel card, so it is normal that using EnableBrightnessControl doesn’t work. (Not everybody in this thread has this specific issue) It is fixed in the 3.13 kernel by using the video.use_native_backlight=1 kernel parameter though.

Found out that without “EnableBrightnessControl=1” in xorg.conf, backlight control won’t work with 3.13.1/338.31 with patch combo, had this option from previous tries to get it to work. Edited previous post.

So the solution to the problem is to use kernel version 3.13?

It looks that way, at least for 8560w with Quadro graphics. I wish it worked with 3.2.0, then I wouldn’t have to build kernel and could have used debian stable one from repos.

Any updates from Nvidia ?

New launchpad bugreport made:

I would like to encourage EVERYBODY who has the same problems to subscribe to that bugreport and update it with your information.

Maybe we can encourage Nvidia to put some effort in this bug which affects many users.

Thanks in advance!

Hi Priyantha,

Have you tried the workaround suggested by __alex? It works for me. (Ubuntu 12.04.4 LTS, kernel 3.13.2 from kernel.ubuntu.com, and nvidia 331.38).

However, I have reverted to stock 12.04.4 LTS with nvidia 304.116 as I have experienced a few integration problems. I will wait for the .5 release, which will definitely have kernel>3.13, and install the nvidia driver via jockey.

Could somebody test this workaround with the current nvidia driver (331.20) in the Ubuntu repository?

Could somebody explain to me that why the workaround above DOES NOT WORK on a fresh Fedora 20 installation with:

  • All updates installed
  • Linux Kernel is at 3.13.3
  • Nvidia driver 331.38 (installed from rpmfusion, akmod package)
  • /etc/X11/xorg.conf → added line: “RegistryDwords” “EnableBrightnessControl=1”

Is there someting implemented differently on the Red-Hat side? I’m confused.

As I stated before, this workaround WORKED with Ubuntu 12.04.4 LTS, with:

  • Upgraded 3.13.2 Trusty kernel
  • 331.38 patched nvidia driver
  • and that special xorg option line

Hello

I have more or less the same Problem on an older Macbook 5.5 with nvidia 9400m. No matter what NVIDIA driver I use the backlight conrtol doesn’t work.
As a workaround I found the nvidiabl project [url]https://github.com/guillaumezin/nvidiabl[/url]. The drawback for me an a lot of others is, that with a recent Version (tested with 331.38 304.119 and 331.49 ) The backlight always becomes maximum when an application uses VDAPU [url]https://github.com/guillaumezin/nvidiabl/issues/56[/url]. This behaviour makes it kind of annoying. As a fix for that, I could use NVIDA 173.14.39 drivers. With that driver version and nvidiabl I can perfectly and fully control my backlight but I lose a awfull lot of other features e.g. webgl.
For completness here is my nvidia-bug-report file [url]Dropbox - Error

Dear driver developers at Nvidia,

As the Nvidia proprietary driver is closed source software, my only way to help You (and the people here with this problem) is spending my precious time on testing. I would like to highlight the fact that our problem seemed to be fixed with Linux kernel 3.13, 331.38 driver, and the EnableBrightnessControl setting, however, it is not.

These are my experiences (with a Quadro 1000m card):

  • Drivers 304.x control brightness well, work reasonably well, VDPAU does not work.
  • Drivers between 304.x and 331.38 do not control brightness at all, work well.
  • Driver 331.38 controls brightness well, works well, webgl performance is not that great compared to 334.21 and 304.116
  • Driver 331.49 and 334.21 do not control brightness at all (although they work well).

Now we have two-two states which worked and not. I hope that gives enough comparison points for a successful debug, and forget this bug forever.

Greetings,
rope

Hello

So since the last update of my System surprisingly everything is working. Sadly I do not know what exactly changed but my setup is a follows:

Sabayon Linux
Kernel 3.13.5
Nvidia driver 331.49 (from nvidia not my dist repo)
nvidiabl nvidiabl-0.83

When I was doing the updated I only remember that I got a new point release of the kernel from 3.13.4 to 3.13.5 and since that really everything is working very well. I can not remember having such a nice responsive System. Thank you very much who ever did the magic change.

I can confirm that the latest driver 331.49 on 3.13.6 vanilla kernel can’t control brightness on HP 8560w.

Previous driver 331.38 with 3.13.6 vanilla kernel - works with patch applied that I mentioned in my previous post.

Same patch cannot be applied successfully to 331.49 driver, probably need some modifications, but I don’t have any free time to spare right now to figure it out.

Anyone from NVIDIA care enough to comment on progress for this bug?

Edited 331.49 files with patch changes, and assuming I did everything right - same result, brightness control doesn’t work. So this patch (http://cvs.rpmfusion.org/viewvc/rpms/nvidia-kmod/devel/nvidia_3.13_kernel.patch?revision=1.3&root=nonfree&view=markup) just allows building 331.38 for 3.13 kernel it seems, and does nothing for brightness control.

So brightness control just breaks again beginning with 331.49 on HP 8560w.

Hi __alex,

The 331.38 driver controlled brightness fine, but it’s performance was not that good on my 8560w. The Chrome Experiment 100000 Stars produced around 10-15 FPS. On 331.49 and on 334.21, the one I’m using right now gives just buttery smooth high FPS. I started to look for workarounds, and found two, so I decided that I will move on with the drivers. The the workarounds are redshift, and nvidiabl. Both require terminal commands to change brightness, but it’s okay for me.

Redshift:

Available in the Ubuntu and Wheezy repositories. Just install, and use the command:

redshift -l 0:0 -t 5500:5500 -r -b *brightness-value*&

// brightness-value should be between 0.1 and 1.0
// To stop the effect, kill it with ‘fg’ and CTRL-C

Pros:

  • Works
  • Cool by being able to change the screen temperature
  • Easy to use (no need for administrator rights, only one command)

Cons:

  • On KDE, the brightness of the cursor (and only of the cursor) remained the same (maximum), maybe on GTK based systems it’s not a problem. Not as bad as it sounds.

Nvidiabl:
The DKMS package is required for this. Install the 0.85 debian package from the downloaded GIT zip (install folder). After that, issue the following commands:

su
modprobe nvidiabl max=20000
echo value > /sys/class/backlight/nvidia_backlight/brightness

// value is between 0 and 127 - min should be around 5-10, because you could turn the screen of completely
// the ‘value’ value is relative to the scale set by max (20000 works fine for me)
// in case of experimenting with max, first one has to remove the module by ‘modprobe -r nvidiabl’, then apply the new modprobe nvidiabl max=value. The key is that 127 should set brightness to maximum

Pros:

  • Works as expected

Cons:

  • More commands
  • I couldn’t automatize the modprobing command at startup

Hi rope, nvidiabl doesn’t work for me for some reason with 331.49 or with whatever driver version, I can’t control brightness with it as you suggested. Do you have any remaining workarounds in place related to backlight, in grub or xorg.conf? acpi_verdor for example? I tried for now to remove EnableBrightnessControl=1 in case it interfered with nvidiabl, but it made no difference - still can’t control backlight with nvidiabl.

Maybe nvidiabl just doesn’t work with Quadro 2000m on HP 8560w?

As to redshift and cursor being too bright, are you sure it controls brightness of the backlight and not just brightness of colors? It doesn’t do much for battery life in that case. Here Redshift (software) - Wikipedia its suggested that hardware cursor is causing it to have constant brightness, try changing to software.

Also you can map your command to change brightness to acpi event in acpid (acpid - ArchWiki), since HP 8560w does seem to have good acpi support, or just use KDE global hotkeys.

Hi __alex,

Unfortunately I don’t have any more workarounds for the problem.

About RedShift… As far as I understand now, it decreases the gamma value, so yes, it alters the displayed colors. And I believe what you suggested about battery life is true - it didn’t occur to me though.

I use nvidiabl and it works on my 8560w with Quadro 1000m and nvidia 334.21. I didn’t configure anything, just installed the debian 0.85 package. Sometimes the max=20000 value sets the brightness to 60% at 127, so I have to increase that magic max value and re-modprobe, so that 127 would set the maximum brightness. I don’t understand what’s behind this max value, and I hope I won’t damage my workstation by using this solution. However, it seems to bet working…

I would like to share a shell script I wrote today. Those why are as lucky as I am that nvidiabl is controlling brightness fine, might find this script helpful. It is basically a volume control for the brightness and max “scale” values.

EDIT: One must switch to root user to use this script!

#!/bin/bash

# NVIDIA Brightness Tool

if [ -d "/sys/class/backlight/nvidia_backlight/" ];	# Check if nvidiabl interface exists
then
  modprobe -r nvidiabl
fi

modprobe nvidiabl max=20000
echo 127 > /sys/class/backlight/nvidia_backlight/brightness

scale=20000
brightness=127

input="first"	# For do-while loop

while [[ "$input" == "first" ]] || [[ "$input" == "a" ]] || [[ "$input" == "s" ]] || [[ "$input" == "d" ]] || [[ "$input" == "w" ]] || [[ "$input" == "q" ]]; do
  
  clear
  
  case $input in
    "w")
      if [ $brightness -ge 122 ]; then
	brightness=127
      else
	brightness=$(($brightness+5))
      fi
      echo $brightness > /sys/class/backlight/nvidia_backlight/brightness
      ;;
    "s")
      if [ $brightness -le 6 ]; then
	brightness=1
      else
	brightness=$(($brightness-5))
      fi
      echo $brightness > /sys/class/backlight/nvidia_backlight/brightness
      ;;
    "a")
      if [ $scale -le 20000 ]; then
	scale=20000
      else
	scale=$(($scale-10000))
      fi
      
      modprobe -r nvidiabl
      modprobe nvidiabl max=$scale
      echo $brightness > /sys/class/backlight/nvidia_backlight/brightness
      ;;
    "d")
      if [ $scale -ge 200000 ]; then
	scale=200000
      else
	scale=$(($scale+10000))
      fi
      
      modprobe -r nvidiabl
      modprobe nvidiabl max=$scale
      echo $brightness > /sys/class/backlight/nvidia_backlight/brightness
      ;;
    "q")
      exit 0;;
    *)
      ;;
  esac
  
  echo -e "NVIDIA Brightness Tool"	# Description and key bindings
  echo -e "Usage:"
  echo -e "\tw  :  Increase brightness"
  echo -e "\ts  :  Decrease brightness"
  echo -e "\td  :  Increase interval"
  echo -e "\ta  :  Decrease interval"
  echo -e "\tq  :  Exit"
  
  brightness=$(cat /sys/class/backlight/nvidia_backlight/brightness)
  echo -e "\nCurrent brightness: $brightness"
  echo -e "Current scale: $scale"
  
  read -n 1 input
  
done

clear

exit 0