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:
-
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.
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
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