How to switch between options in `/sys/class/backlight` to solve brightness problem?
![Creative The name of the picture](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgO9GURib1T8z7lCwjOGLQaGtrueEthgQ8LO42ZX8cOfTqDK4jvDDpKkLFwf2J49kYCMNW7d4ABih_XCb_2UXdq5fPJDkoyg7-8g_YfRUot-XnaXkNYycsNp7lA5_TW9td0FFpLQ2APzKcZ/s1600/1.jpg)
![Creative The name of the picture](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhYQ0N5W1qAOxLP7t7iOM6O6AzbZnkXUy16s7P_CWfOb5UbTQY_aDsc727chyphenhyphen5W4IppVNernMMQeaUFTB_rFzAd95_CDt-tnwN-nBx6JyUp2duGjPaL5-VgNO41AVsA_vu30EJcipdDG409/s400/Clash+Royale+CLAN+TAG%2523URR8PPP.png)
up vote
2
down vote
favorite
OS : Ubuntu - 18.04 LTS
I have 2 symbolic links in /sys/class/backlight/
directory.
acpi_video0 -> ../../devices/pci0000:00/0000:00:01.0/0000:01:00.0/backlight/acpi_video0/
nv_backlight -> ../../devices/pci0000:00/0000:00:01.0/0000:01:00.0/drm/card0/card0-LVDS-1/nv_backlight/
The brightness hotkeys change the value of acpi_video0/brightness
. But that doesn't actually change the display's brightness.
But, manually changing the value ofnv_backlight/brightness
actually change the display's brightness.
So, linking the hotkeys to nv_backlight
instead of acpi_video0
will solve my problem, but I don't know how to do it.
Edit: The pop-up slider progress bar appears on the screen on the operation of the Fn keys for brightness(hotkeys).
Edit:
Input:
cat /sys/class/backlight/nv_backlight/max_brightness
Output:
100
Input:
cat /sys/class/backlight/nv_backlight/actual_brightness
Output(this value changes automatically to the same value, I manually gave into
/sys/class/backlight/nv_backlight/brightness
):10
Input:
cat /sys/class/backlight/acpi_video0/max_brightness
Output:
15
brightness acpi
 |Â
show 4 more comments
up vote
2
down vote
favorite
OS : Ubuntu - 18.04 LTS
I have 2 symbolic links in /sys/class/backlight/
directory.
acpi_video0 -> ../../devices/pci0000:00/0000:00:01.0/0000:01:00.0/backlight/acpi_video0/
nv_backlight -> ../../devices/pci0000:00/0000:00:01.0/0000:01:00.0/drm/card0/card0-LVDS-1/nv_backlight/
The brightness hotkeys change the value of acpi_video0/brightness
. But that doesn't actually change the display's brightness.
But, manually changing the value ofnv_backlight/brightness
actually change the display's brightness.
So, linking the hotkeys to nv_backlight
instead of acpi_video0
will solve my problem, but I don't know how to do it.
Edit: The pop-up slider progress bar appears on the screen on the operation of the Fn keys for brightness(hotkeys).
Edit:
Input:
cat /sys/class/backlight/nv_backlight/max_brightness
Output:
100
Input:
cat /sys/class/backlight/nv_backlight/actual_brightness
Output(this value changes automatically to the same value, I manually gave into
/sys/class/backlight/nv_backlight/brightness
):10
Input:
cat /sys/class/backlight/acpi_video0/max_brightness
Output:
15
brightness acpi
When you operate the Fn keys for bright up/down does the pop up slider progress bar display on screen?
â WinEunuuchs2Unix
Jun 11 at 22:34
Did you tryacpi_backlight=vendor
in the answer below? Did it work?
â WinEunuuchs2Unix
Jun 12 at 22:48
No, when I doacpi_backlisht=vendor
, theacpi_video0
option goes away and a new optionsony
comes in and the hotkeys reflect changes insony/brightness
, with no actual display brightness change. Thenv_backlight
option remains though and the manual changes to it still give me the actual change in brightness.
â boobalan
Jun 13 at 4:55
OK. It's too late tonight but tomorrow night I'll start writing a script that will take changes toacpi_video0
and pump the equivalent percentage into nVidieo backlight.
â WinEunuuchs2Unix
Jun 13 at 4:58
Thanks, WinEunuuchs2Unix. I tried redirecting the symbolic link. But it gives me an unauthorized operation error.
â boobalan
Jun 13 at 5:07
 |Â
show 4 more comments
up vote
2
down vote
favorite
up vote
2
down vote
favorite
OS : Ubuntu - 18.04 LTS
I have 2 symbolic links in /sys/class/backlight/
directory.
acpi_video0 -> ../../devices/pci0000:00/0000:00:01.0/0000:01:00.0/backlight/acpi_video0/
nv_backlight -> ../../devices/pci0000:00/0000:00:01.0/0000:01:00.0/drm/card0/card0-LVDS-1/nv_backlight/
The brightness hotkeys change the value of acpi_video0/brightness
. But that doesn't actually change the display's brightness.
But, manually changing the value ofnv_backlight/brightness
actually change the display's brightness.
So, linking the hotkeys to nv_backlight
instead of acpi_video0
will solve my problem, but I don't know how to do it.
Edit: The pop-up slider progress bar appears on the screen on the operation of the Fn keys for brightness(hotkeys).
Edit:
Input:
cat /sys/class/backlight/nv_backlight/max_brightness
Output:
100
Input:
cat /sys/class/backlight/nv_backlight/actual_brightness
Output(this value changes automatically to the same value, I manually gave into
/sys/class/backlight/nv_backlight/brightness
):10
Input:
cat /sys/class/backlight/acpi_video0/max_brightness
Output:
15
brightness acpi
OS : Ubuntu - 18.04 LTS
I have 2 symbolic links in /sys/class/backlight/
directory.
acpi_video0 -> ../../devices/pci0000:00/0000:00:01.0/0000:01:00.0/backlight/acpi_video0/
nv_backlight -> ../../devices/pci0000:00/0000:00:01.0/0000:01:00.0/drm/card0/card0-LVDS-1/nv_backlight/
The brightness hotkeys change the value of acpi_video0/brightness
. But that doesn't actually change the display's brightness.
But, manually changing the value ofnv_backlight/brightness
actually change the display's brightness.
So, linking the hotkeys to nv_backlight
instead of acpi_video0
will solve my problem, but I don't know how to do it.
Edit: The pop-up slider progress bar appears on the screen on the operation of the Fn keys for brightness(hotkeys).
Edit:
Input:
cat /sys/class/backlight/nv_backlight/max_brightness
Output:
100
Input:
cat /sys/class/backlight/nv_backlight/actual_brightness
Output(this value changes automatically to the same value, I manually gave into
/sys/class/backlight/nv_backlight/brightness
):10
Input:
cat /sys/class/backlight/acpi_video0/max_brightness
Output:
15
brightness acpi
edited Jun 14 at 11:40
asked Jun 11 at 13:44
![](https://lh4.googleusercontent.com/-qnq4Qxky3Fo/AAAAAAAAAAI/AAAAAAAAABE/8Kw8b4EtKoA/photo.jpg?sz=32)
![](https://lh4.googleusercontent.com/-qnq4Qxky3Fo/AAAAAAAAAAI/AAAAAAAAABE/8Kw8b4EtKoA/photo.jpg?sz=32)
boobalan
1135
1135
When you operate the Fn keys for bright up/down does the pop up slider progress bar display on screen?
â WinEunuuchs2Unix
Jun 11 at 22:34
Did you tryacpi_backlight=vendor
in the answer below? Did it work?
â WinEunuuchs2Unix
Jun 12 at 22:48
No, when I doacpi_backlisht=vendor
, theacpi_video0
option goes away and a new optionsony
comes in and the hotkeys reflect changes insony/brightness
, with no actual display brightness change. Thenv_backlight
option remains though and the manual changes to it still give me the actual change in brightness.
â boobalan
Jun 13 at 4:55
OK. It's too late tonight but tomorrow night I'll start writing a script that will take changes toacpi_video0
and pump the equivalent percentage into nVidieo backlight.
â WinEunuuchs2Unix
Jun 13 at 4:58
Thanks, WinEunuuchs2Unix. I tried redirecting the symbolic link. But it gives me an unauthorized operation error.
â boobalan
Jun 13 at 5:07
 |Â
show 4 more comments
When you operate the Fn keys for bright up/down does the pop up slider progress bar display on screen?
â WinEunuuchs2Unix
Jun 11 at 22:34
Did you tryacpi_backlight=vendor
in the answer below? Did it work?
â WinEunuuchs2Unix
Jun 12 at 22:48
No, when I doacpi_backlisht=vendor
, theacpi_video0
option goes away and a new optionsony
comes in and the hotkeys reflect changes insony/brightness
, with no actual display brightness change. Thenv_backlight
option remains though and the manual changes to it still give me the actual change in brightness.
â boobalan
Jun 13 at 4:55
OK. It's too late tonight but tomorrow night I'll start writing a script that will take changes toacpi_video0
and pump the equivalent percentage into nVidieo backlight.
â WinEunuuchs2Unix
Jun 13 at 4:58
Thanks, WinEunuuchs2Unix. I tried redirecting the symbolic link. But it gives me an unauthorized operation error.
â boobalan
Jun 13 at 5:07
When you operate the Fn keys for bright up/down does the pop up slider progress bar display on screen?
â WinEunuuchs2Unix
Jun 11 at 22:34
When you operate the Fn keys for bright up/down does the pop up slider progress bar display on screen?
â WinEunuuchs2Unix
Jun 11 at 22:34
Did you try
acpi_backlight=vendor
in the answer below? Did it work?â WinEunuuchs2Unix
Jun 12 at 22:48
Did you try
acpi_backlight=vendor
in the answer below? Did it work?â WinEunuuchs2Unix
Jun 12 at 22:48
No, when I do
acpi_backlisht=vendor
, the acpi_video0
option goes away and a new option sony
comes in and the hotkeys reflect changes in sony/brightness
, with no actual display brightness change. The nv_backlight
option remains though and the manual changes to it still give me the actual change in brightness.â boobalan
Jun 13 at 4:55
No, when I do
acpi_backlisht=vendor
, the acpi_video0
option goes away and a new option sony
comes in and the hotkeys reflect changes in sony/brightness
, with no actual display brightness change. The nv_backlight
option remains though and the manual changes to it still give me the actual change in brightness.â boobalan
Jun 13 at 4:55
OK. It's too late tonight but tomorrow night I'll start writing a script that will take changes to
acpi_video0
and pump the equivalent percentage into nVidieo backlight.â WinEunuuchs2Unix
Jun 13 at 4:58
OK. It's too late tonight but tomorrow night I'll start writing a script that will take changes to
acpi_video0
and pump the equivalent percentage into nVidieo backlight.â WinEunuuchs2Unix
Jun 13 at 4:58
Thanks, WinEunuuchs2Unix. I tried redirecting the symbolic link. But it gives me an unauthorized operation error.
â boobalan
Jun 13 at 5:07
Thanks, WinEunuuchs2Unix. I tried redirecting the symbolic link. But it gives me an unauthorized operation error.
â boobalan
Jun 13 at 5:07
 |Â
show 4 more comments
1 Answer
1
active
oldest
votes
up vote
1
down vote
accepted
Bash script redirect-brightness
Your problem is function keys to increase/decrease brightness are updating /sys/class/backlight/acpi_video0/brightness
instead of /sys/class/backlight/nv_backlight/brightness
The original request was to intercept the function keys and use them to control the nv_backlight
driver. The problem with this is:
- Tricky
udev
scripts - No pop-up notification slider displaying brightness without complicated Python scripting.
The solution is to use inotify
to monitor changes to acpi_video0
. Then calculate the brightness percentage and apply that same percentage to nv_backlight
.
In the bash script below you need to change WatchDriver
to /sys/class/backlight/acpi_video0/brightness
and PatchDriver to
/sys/class/backlight/nv_backlight/brightness`
Place the script in /usr/local/bin
and make it executable using:
chmod a+x /usr/local/bin/redirect-brightness
First run the script from the command line using
redirect-brightness -l
If there is a problem check the log file using:
cat /tmp/redirect-brightness.log
If all works well add redirect-brightness
to your startup applications.
redirect-brightness
bash script
#!/bin/bash
# NAME: redirect-brightness
# PATH: /usr/local/bin
# DESC: Redirect to correct driver when Ubuntu is adjusting the wrong
# /sys/class/DRIVER_NAME/brightness
# DATE: June 13, 2018. Modified June 14, 2018.
# NOTE: Written for Ubuntu question:
# https://askubuntu.com/q/1045624/307523
WatchDriver="/sys/class/backlight/intel_backlight"
PatchDriver="/sys/class/backlight/intel_backlight"
# Must be running as sudo
if [[ $(id -u) != 0 ]]; then
echo >&2 "Root access required. Use: 'sudo redirect-brightness'"
exit 1
fi
# inotifywait required
type inotifywait >/dev/null 2>&1 ||
echo >&2 "'inotifywait' required but it's not installed. Aborting.";
echo >&2 "Use 'sudo apt install inotify-tools' to install it.'";
exit 1;
# Was right watch driver directory name setup correctly?
if [[ ! -d $WatchDriver ]]; then
echo >&2 "Watch directory: '$WatchDriver'";
echo >&2 "does not exist. Did you spell it correctly? Aborting.'";
exit 1;
fi
# Was right patch driver directory name setup correctly?
if [[ ! -d $PatchDriver ]]; then
echo >&2 "Redirect to directory: '$PatchDriver'";
echo >&2 "does not exist. Did you spell it correctly? Aborting.'";
exit 1;
fi
# Get maximum brightness values
WatchMax=$(cat $WatchDriver/max_brightness)
PatchMax=$(cat $PatchDriver/max_brightness)
# PARM: 1="-l" or "--log-file" then write each step to log file.
fLogFile=false
if [[ $1 == "-l" ]] || [[ $1 == "--log-file" ]]; then
fLogFile=true
LogFile=/tmp/redirect-brightness.log
echo redirect-brightness LOG FILE > $LogFile
echo WatchMax: $WatchMax PatchMax: $PatchMax >> $LogFile
fi
SetBrightness () sudo tee $PatchDriver/brightness
[[ $fLogFile == true ]] && echo PatchAct: $PatchAct >> $LogFile
# When machine boots, set brightness to last saved value
SetBrightness
# Wait forever for user to press Fn keys adjusting brightness up/down.
while (true); do
inotifywait --event modify $WatchDriver/actual_brightness
[[ $fLogFile == true ]] &&
echo "Processing modify event in $WatchDriver/actual_brightness" >> $LogFile
SetBrightness
done
Original Answer June 11, 2018.
Work In Progress Answer
There are many nVidia users with similar problems in Ubuntu 18.04:
- Brightness on laptop MSI GT72VR in Ubuntu 18.04 with NVIDIA GTX 1060 Mobile doesn't work
- computer doesnt wake from suspension and couldnt change the brightness
- Brightness control missing when using Nvidia drivers but re-appears with X.Org
- Xubuntu 18.04: make Fn brightness keys work with /sys/class/backlight/nv_backlight/
- How to alter backlight driver in lubuntu
- Brightness on laptop MSI GT72VR in Ubuntu 18.04 with NVIDIA GTX 1060 Mobile doesn't work
- NVIDIA display issue on Brightness control and Video PlayBack
- Unable to change the screen brightness
- The brightness of laptop screen cannot be adjusted with either the buttons or the slider. Edit
Before writing a script
I can write a script to mimic changes to /acpi_video and populate /nv_backlight but before I do try this:
- Edit
/etc/default/grub
. - Find
quiet splash
- Add behind splash:
acpi_backlight=vendor
- Save the file
- Run
sudo update-grub
According to this answer it should work for you: Xubuntu 18.04: make Fn brightness keys work with /sys/class/backlight/nv_backlight/
Wayland
Brightness doesn't work under Wayland. Make sure you aren't using it. See: The brightness of laptop screen cannot be adjusted with either the buttons or the slider. Edit
The script does the work. But there is a small bug inSetBrightness ()
. It should bePatchAct=$(( PatchMax * WatchPer / 100 ))
. Thanks to the entire support.
â boobalan
Jun 14 at 12:07
1
Unfortunately in mobile for next 10 hours. I'll test and revise tonight. Feel free to add new comments in the meantime.
â WinEunuuchs2Unix
Jun 14 at 12:15
@boobalan You were right about the need to swap the watched percentage and100
variables. I also corrected typos with nv_video (s/b nv_backlight) and extra/brightness
in/brightness/brightness
. If you are happy remember to click the grey check mark next to the answer. This will give others confidence to try out the script for themselves. It was fun developing this script. Thanks!
â WinEunuuchs2Unix
Jun 14 at 23:06
If the script is run manually it does work. But if it is added to the startup applications, it doesn't work. I guess there is a problem with giving sudo permissions to startup applications. For your information, I gaveredirect-brightness
as the application command.
â boobalan
Jun 15 at 6:31
There are many ways to call during startup. One is with cron. Create the file/etc/cron.d/backlight
containing line 1:SHELL=/bin/sh
line 2:PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
line 3:@reboot root /usr/local/bin/redirect-brightness
â WinEunuuchs2Unix
Jun 15 at 10:33
 |Â
show 1 more comment
1 Answer
1
active
oldest
votes
1 Answer
1
active
oldest
votes
active
oldest
votes
active
oldest
votes
up vote
1
down vote
accepted
Bash script redirect-brightness
Your problem is function keys to increase/decrease brightness are updating /sys/class/backlight/acpi_video0/brightness
instead of /sys/class/backlight/nv_backlight/brightness
The original request was to intercept the function keys and use them to control the nv_backlight
driver. The problem with this is:
- Tricky
udev
scripts - No pop-up notification slider displaying brightness without complicated Python scripting.
The solution is to use inotify
to monitor changes to acpi_video0
. Then calculate the brightness percentage and apply that same percentage to nv_backlight
.
In the bash script below you need to change WatchDriver
to /sys/class/backlight/acpi_video0/brightness
and PatchDriver to
/sys/class/backlight/nv_backlight/brightness`
Place the script in /usr/local/bin
and make it executable using:
chmod a+x /usr/local/bin/redirect-brightness
First run the script from the command line using
redirect-brightness -l
If there is a problem check the log file using:
cat /tmp/redirect-brightness.log
If all works well add redirect-brightness
to your startup applications.
redirect-brightness
bash script
#!/bin/bash
# NAME: redirect-brightness
# PATH: /usr/local/bin
# DESC: Redirect to correct driver when Ubuntu is adjusting the wrong
# /sys/class/DRIVER_NAME/brightness
# DATE: June 13, 2018. Modified June 14, 2018.
# NOTE: Written for Ubuntu question:
# https://askubuntu.com/q/1045624/307523
WatchDriver="/sys/class/backlight/intel_backlight"
PatchDriver="/sys/class/backlight/intel_backlight"
# Must be running as sudo
if [[ $(id -u) != 0 ]]; then
echo >&2 "Root access required. Use: 'sudo redirect-brightness'"
exit 1
fi
# inotifywait required
type inotifywait >/dev/null 2>&1 ||
echo >&2 "'inotifywait' required but it's not installed. Aborting.";
echo >&2 "Use 'sudo apt install inotify-tools' to install it.'";
exit 1;
# Was right watch driver directory name setup correctly?
if [[ ! -d $WatchDriver ]]; then
echo >&2 "Watch directory: '$WatchDriver'";
echo >&2 "does not exist. Did you spell it correctly? Aborting.'";
exit 1;
fi
# Was right patch driver directory name setup correctly?
if [[ ! -d $PatchDriver ]]; then
echo >&2 "Redirect to directory: '$PatchDriver'";
echo >&2 "does not exist. Did you spell it correctly? Aborting.'";
exit 1;
fi
# Get maximum brightness values
WatchMax=$(cat $WatchDriver/max_brightness)
PatchMax=$(cat $PatchDriver/max_brightness)
# PARM: 1="-l" or "--log-file" then write each step to log file.
fLogFile=false
if [[ $1 == "-l" ]] || [[ $1 == "--log-file" ]]; then
fLogFile=true
LogFile=/tmp/redirect-brightness.log
echo redirect-brightness LOG FILE > $LogFile
echo WatchMax: $WatchMax PatchMax: $PatchMax >> $LogFile
fi
SetBrightness () sudo tee $PatchDriver/brightness
[[ $fLogFile == true ]] && echo PatchAct: $PatchAct >> $LogFile
# When machine boots, set brightness to last saved value
SetBrightness
# Wait forever for user to press Fn keys adjusting brightness up/down.
while (true); do
inotifywait --event modify $WatchDriver/actual_brightness
[[ $fLogFile == true ]] &&
echo "Processing modify event in $WatchDriver/actual_brightness" >> $LogFile
SetBrightness
done
Original Answer June 11, 2018.
Work In Progress Answer
There are many nVidia users with similar problems in Ubuntu 18.04:
- Brightness on laptop MSI GT72VR in Ubuntu 18.04 with NVIDIA GTX 1060 Mobile doesn't work
- computer doesnt wake from suspension and couldnt change the brightness
- Brightness control missing when using Nvidia drivers but re-appears with X.Org
- Xubuntu 18.04: make Fn brightness keys work with /sys/class/backlight/nv_backlight/
- How to alter backlight driver in lubuntu
- Brightness on laptop MSI GT72VR in Ubuntu 18.04 with NVIDIA GTX 1060 Mobile doesn't work
- NVIDIA display issue on Brightness control and Video PlayBack
- Unable to change the screen brightness
- The brightness of laptop screen cannot be adjusted with either the buttons or the slider. Edit
Before writing a script
I can write a script to mimic changes to /acpi_video and populate /nv_backlight but before I do try this:
- Edit
/etc/default/grub
. - Find
quiet splash
- Add behind splash:
acpi_backlight=vendor
- Save the file
- Run
sudo update-grub
According to this answer it should work for you: Xubuntu 18.04: make Fn brightness keys work with /sys/class/backlight/nv_backlight/
Wayland
Brightness doesn't work under Wayland. Make sure you aren't using it. See: The brightness of laptop screen cannot be adjusted with either the buttons or the slider. Edit
The script does the work. But there is a small bug inSetBrightness ()
. It should bePatchAct=$(( PatchMax * WatchPer / 100 ))
. Thanks to the entire support.
â boobalan
Jun 14 at 12:07
1
Unfortunately in mobile for next 10 hours. I'll test and revise tonight. Feel free to add new comments in the meantime.
â WinEunuuchs2Unix
Jun 14 at 12:15
@boobalan You were right about the need to swap the watched percentage and100
variables. I also corrected typos with nv_video (s/b nv_backlight) and extra/brightness
in/brightness/brightness
. If you are happy remember to click the grey check mark next to the answer. This will give others confidence to try out the script for themselves. It was fun developing this script. Thanks!
â WinEunuuchs2Unix
Jun 14 at 23:06
If the script is run manually it does work. But if it is added to the startup applications, it doesn't work. I guess there is a problem with giving sudo permissions to startup applications. For your information, I gaveredirect-brightness
as the application command.
â boobalan
Jun 15 at 6:31
There are many ways to call during startup. One is with cron. Create the file/etc/cron.d/backlight
containing line 1:SHELL=/bin/sh
line 2:PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
line 3:@reboot root /usr/local/bin/redirect-brightness
â WinEunuuchs2Unix
Jun 15 at 10:33
 |Â
show 1 more comment
up vote
1
down vote
accepted
Bash script redirect-brightness
Your problem is function keys to increase/decrease brightness are updating /sys/class/backlight/acpi_video0/brightness
instead of /sys/class/backlight/nv_backlight/brightness
The original request was to intercept the function keys and use them to control the nv_backlight
driver. The problem with this is:
- Tricky
udev
scripts - No pop-up notification slider displaying brightness without complicated Python scripting.
The solution is to use inotify
to monitor changes to acpi_video0
. Then calculate the brightness percentage and apply that same percentage to nv_backlight
.
In the bash script below you need to change WatchDriver
to /sys/class/backlight/acpi_video0/brightness
and PatchDriver to
/sys/class/backlight/nv_backlight/brightness`
Place the script in /usr/local/bin
and make it executable using:
chmod a+x /usr/local/bin/redirect-brightness
First run the script from the command line using
redirect-brightness -l
If there is a problem check the log file using:
cat /tmp/redirect-brightness.log
If all works well add redirect-brightness
to your startup applications.
redirect-brightness
bash script
#!/bin/bash
# NAME: redirect-brightness
# PATH: /usr/local/bin
# DESC: Redirect to correct driver when Ubuntu is adjusting the wrong
# /sys/class/DRIVER_NAME/brightness
# DATE: June 13, 2018. Modified June 14, 2018.
# NOTE: Written for Ubuntu question:
# https://askubuntu.com/q/1045624/307523
WatchDriver="/sys/class/backlight/intel_backlight"
PatchDriver="/sys/class/backlight/intel_backlight"
# Must be running as sudo
if [[ $(id -u) != 0 ]]; then
echo >&2 "Root access required. Use: 'sudo redirect-brightness'"
exit 1
fi
# inotifywait required
type inotifywait >/dev/null 2>&1 ||
echo >&2 "'inotifywait' required but it's not installed. Aborting.";
echo >&2 "Use 'sudo apt install inotify-tools' to install it.'";
exit 1;
# Was right watch driver directory name setup correctly?
if [[ ! -d $WatchDriver ]]; then
echo >&2 "Watch directory: '$WatchDriver'";
echo >&2 "does not exist. Did you spell it correctly? Aborting.'";
exit 1;
fi
# Was right patch driver directory name setup correctly?
if [[ ! -d $PatchDriver ]]; then
echo >&2 "Redirect to directory: '$PatchDriver'";
echo >&2 "does not exist. Did you spell it correctly? Aborting.'";
exit 1;
fi
# Get maximum brightness values
WatchMax=$(cat $WatchDriver/max_brightness)
PatchMax=$(cat $PatchDriver/max_brightness)
# PARM: 1="-l" or "--log-file" then write each step to log file.
fLogFile=false
if [[ $1 == "-l" ]] || [[ $1 == "--log-file" ]]; then
fLogFile=true
LogFile=/tmp/redirect-brightness.log
echo redirect-brightness LOG FILE > $LogFile
echo WatchMax: $WatchMax PatchMax: $PatchMax >> $LogFile
fi
SetBrightness () sudo tee $PatchDriver/brightness
[[ $fLogFile == true ]] && echo PatchAct: $PatchAct >> $LogFile
# When machine boots, set brightness to last saved value
SetBrightness
# Wait forever for user to press Fn keys adjusting brightness up/down.
while (true); do
inotifywait --event modify $WatchDriver/actual_brightness
[[ $fLogFile == true ]] &&
echo "Processing modify event in $WatchDriver/actual_brightness" >> $LogFile
SetBrightness
done
Original Answer June 11, 2018.
Work In Progress Answer
There are many nVidia users with similar problems in Ubuntu 18.04:
- Brightness on laptop MSI GT72VR in Ubuntu 18.04 with NVIDIA GTX 1060 Mobile doesn't work
- computer doesnt wake from suspension and couldnt change the brightness
- Brightness control missing when using Nvidia drivers but re-appears with X.Org
- Xubuntu 18.04: make Fn brightness keys work with /sys/class/backlight/nv_backlight/
- How to alter backlight driver in lubuntu
- Brightness on laptop MSI GT72VR in Ubuntu 18.04 with NVIDIA GTX 1060 Mobile doesn't work
- NVIDIA display issue on Brightness control and Video PlayBack
- Unable to change the screen brightness
- The brightness of laptop screen cannot be adjusted with either the buttons or the slider. Edit
Before writing a script
I can write a script to mimic changes to /acpi_video and populate /nv_backlight but before I do try this:
- Edit
/etc/default/grub
. - Find
quiet splash
- Add behind splash:
acpi_backlight=vendor
- Save the file
- Run
sudo update-grub
According to this answer it should work for you: Xubuntu 18.04: make Fn brightness keys work with /sys/class/backlight/nv_backlight/
Wayland
Brightness doesn't work under Wayland. Make sure you aren't using it. See: The brightness of laptop screen cannot be adjusted with either the buttons or the slider. Edit
The script does the work. But there is a small bug inSetBrightness ()
. It should bePatchAct=$(( PatchMax * WatchPer / 100 ))
. Thanks to the entire support.
â boobalan
Jun 14 at 12:07
1
Unfortunately in mobile for next 10 hours. I'll test and revise tonight. Feel free to add new comments in the meantime.
â WinEunuuchs2Unix
Jun 14 at 12:15
@boobalan You were right about the need to swap the watched percentage and100
variables. I also corrected typos with nv_video (s/b nv_backlight) and extra/brightness
in/brightness/brightness
. If you are happy remember to click the grey check mark next to the answer. This will give others confidence to try out the script for themselves. It was fun developing this script. Thanks!
â WinEunuuchs2Unix
Jun 14 at 23:06
If the script is run manually it does work. But if it is added to the startup applications, it doesn't work. I guess there is a problem with giving sudo permissions to startup applications. For your information, I gaveredirect-brightness
as the application command.
â boobalan
Jun 15 at 6:31
There are many ways to call during startup. One is with cron. Create the file/etc/cron.d/backlight
containing line 1:SHELL=/bin/sh
line 2:PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
line 3:@reboot root /usr/local/bin/redirect-brightness
â WinEunuuchs2Unix
Jun 15 at 10:33
 |Â
show 1 more comment
up vote
1
down vote
accepted
up vote
1
down vote
accepted
Bash script redirect-brightness
Your problem is function keys to increase/decrease brightness are updating /sys/class/backlight/acpi_video0/brightness
instead of /sys/class/backlight/nv_backlight/brightness
The original request was to intercept the function keys and use them to control the nv_backlight
driver. The problem with this is:
- Tricky
udev
scripts - No pop-up notification slider displaying brightness without complicated Python scripting.
The solution is to use inotify
to monitor changes to acpi_video0
. Then calculate the brightness percentage and apply that same percentage to nv_backlight
.
In the bash script below you need to change WatchDriver
to /sys/class/backlight/acpi_video0/brightness
and PatchDriver to
/sys/class/backlight/nv_backlight/brightness`
Place the script in /usr/local/bin
and make it executable using:
chmod a+x /usr/local/bin/redirect-brightness
First run the script from the command line using
redirect-brightness -l
If there is a problem check the log file using:
cat /tmp/redirect-brightness.log
If all works well add redirect-brightness
to your startup applications.
redirect-brightness
bash script
#!/bin/bash
# NAME: redirect-brightness
# PATH: /usr/local/bin
# DESC: Redirect to correct driver when Ubuntu is adjusting the wrong
# /sys/class/DRIVER_NAME/brightness
# DATE: June 13, 2018. Modified June 14, 2018.
# NOTE: Written for Ubuntu question:
# https://askubuntu.com/q/1045624/307523
WatchDriver="/sys/class/backlight/intel_backlight"
PatchDriver="/sys/class/backlight/intel_backlight"
# Must be running as sudo
if [[ $(id -u) != 0 ]]; then
echo >&2 "Root access required. Use: 'sudo redirect-brightness'"
exit 1
fi
# inotifywait required
type inotifywait >/dev/null 2>&1 ||
echo >&2 "'inotifywait' required but it's not installed. Aborting.";
echo >&2 "Use 'sudo apt install inotify-tools' to install it.'";
exit 1;
# Was right watch driver directory name setup correctly?
if [[ ! -d $WatchDriver ]]; then
echo >&2 "Watch directory: '$WatchDriver'";
echo >&2 "does not exist. Did you spell it correctly? Aborting.'";
exit 1;
fi
# Was right patch driver directory name setup correctly?
if [[ ! -d $PatchDriver ]]; then
echo >&2 "Redirect to directory: '$PatchDriver'";
echo >&2 "does not exist. Did you spell it correctly? Aborting.'";
exit 1;
fi
# Get maximum brightness values
WatchMax=$(cat $WatchDriver/max_brightness)
PatchMax=$(cat $PatchDriver/max_brightness)
# PARM: 1="-l" or "--log-file" then write each step to log file.
fLogFile=false
if [[ $1 == "-l" ]] || [[ $1 == "--log-file" ]]; then
fLogFile=true
LogFile=/tmp/redirect-brightness.log
echo redirect-brightness LOG FILE > $LogFile
echo WatchMax: $WatchMax PatchMax: $PatchMax >> $LogFile
fi
SetBrightness () sudo tee $PatchDriver/brightness
[[ $fLogFile == true ]] && echo PatchAct: $PatchAct >> $LogFile
# When machine boots, set brightness to last saved value
SetBrightness
# Wait forever for user to press Fn keys adjusting brightness up/down.
while (true); do
inotifywait --event modify $WatchDriver/actual_brightness
[[ $fLogFile == true ]] &&
echo "Processing modify event in $WatchDriver/actual_brightness" >> $LogFile
SetBrightness
done
Original Answer June 11, 2018.
Work In Progress Answer
There are many nVidia users with similar problems in Ubuntu 18.04:
- Brightness on laptop MSI GT72VR in Ubuntu 18.04 with NVIDIA GTX 1060 Mobile doesn't work
- computer doesnt wake from suspension and couldnt change the brightness
- Brightness control missing when using Nvidia drivers but re-appears with X.Org
- Xubuntu 18.04: make Fn brightness keys work with /sys/class/backlight/nv_backlight/
- How to alter backlight driver in lubuntu
- Brightness on laptop MSI GT72VR in Ubuntu 18.04 with NVIDIA GTX 1060 Mobile doesn't work
- NVIDIA display issue on Brightness control and Video PlayBack
- Unable to change the screen brightness
- The brightness of laptop screen cannot be adjusted with either the buttons or the slider. Edit
Before writing a script
I can write a script to mimic changes to /acpi_video and populate /nv_backlight but before I do try this:
- Edit
/etc/default/grub
. - Find
quiet splash
- Add behind splash:
acpi_backlight=vendor
- Save the file
- Run
sudo update-grub
According to this answer it should work for you: Xubuntu 18.04: make Fn brightness keys work with /sys/class/backlight/nv_backlight/
Wayland
Brightness doesn't work under Wayland. Make sure you aren't using it. See: The brightness of laptop screen cannot be adjusted with either the buttons or the slider. Edit
Bash script redirect-brightness
Your problem is function keys to increase/decrease brightness are updating /sys/class/backlight/acpi_video0/brightness
instead of /sys/class/backlight/nv_backlight/brightness
The original request was to intercept the function keys and use them to control the nv_backlight
driver. The problem with this is:
- Tricky
udev
scripts - No pop-up notification slider displaying brightness without complicated Python scripting.
The solution is to use inotify
to monitor changes to acpi_video0
. Then calculate the brightness percentage and apply that same percentage to nv_backlight
.
In the bash script below you need to change WatchDriver
to /sys/class/backlight/acpi_video0/brightness
and PatchDriver to
/sys/class/backlight/nv_backlight/brightness`
Place the script in /usr/local/bin
and make it executable using:
chmod a+x /usr/local/bin/redirect-brightness
First run the script from the command line using
redirect-brightness -l
If there is a problem check the log file using:
cat /tmp/redirect-brightness.log
If all works well add redirect-brightness
to your startup applications.
redirect-brightness
bash script
#!/bin/bash
# NAME: redirect-brightness
# PATH: /usr/local/bin
# DESC: Redirect to correct driver when Ubuntu is adjusting the wrong
# /sys/class/DRIVER_NAME/brightness
# DATE: June 13, 2018. Modified June 14, 2018.
# NOTE: Written for Ubuntu question:
# https://askubuntu.com/q/1045624/307523
WatchDriver="/sys/class/backlight/intel_backlight"
PatchDriver="/sys/class/backlight/intel_backlight"
# Must be running as sudo
if [[ $(id -u) != 0 ]]; then
echo >&2 "Root access required. Use: 'sudo redirect-brightness'"
exit 1
fi
# inotifywait required
type inotifywait >/dev/null 2>&1 ||
echo >&2 "'inotifywait' required but it's not installed. Aborting.";
echo >&2 "Use 'sudo apt install inotify-tools' to install it.'";
exit 1;
# Was right watch driver directory name setup correctly?
if [[ ! -d $WatchDriver ]]; then
echo >&2 "Watch directory: '$WatchDriver'";
echo >&2 "does not exist. Did you spell it correctly? Aborting.'";
exit 1;
fi
# Was right patch driver directory name setup correctly?
if [[ ! -d $PatchDriver ]]; then
echo >&2 "Redirect to directory: '$PatchDriver'";
echo >&2 "does not exist. Did you spell it correctly? Aborting.'";
exit 1;
fi
# Get maximum brightness values
WatchMax=$(cat $WatchDriver/max_brightness)
PatchMax=$(cat $PatchDriver/max_brightness)
# PARM: 1="-l" or "--log-file" then write each step to log file.
fLogFile=false
if [[ $1 == "-l" ]] || [[ $1 == "--log-file" ]]; then
fLogFile=true
LogFile=/tmp/redirect-brightness.log
echo redirect-brightness LOG FILE > $LogFile
echo WatchMax: $WatchMax PatchMax: $PatchMax >> $LogFile
fi
SetBrightness () sudo tee $PatchDriver/brightness
[[ $fLogFile == true ]] && echo PatchAct: $PatchAct >> $LogFile
# When machine boots, set brightness to last saved value
SetBrightness
# Wait forever for user to press Fn keys adjusting brightness up/down.
while (true); do
inotifywait --event modify $WatchDriver/actual_brightness
[[ $fLogFile == true ]] &&
echo "Processing modify event in $WatchDriver/actual_brightness" >> $LogFile
SetBrightness
done
Original Answer June 11, 2018.
Work In Progress Answer
There are many nVidia users with similar problems in Ubuntu 18.04:
- Brightness on laptop MSI GT72VR in Ubuntu 18.04 with NVIDIA GTX 1060 Mobile doesn't work
- computer doesnt wake from suspension and couldnt change the brightness
- Brightness control missing when using Nvidia drivers but re-appears with X.Org
- Xubuntu 18.04: make Fn brightness keys work with /sys/class/backlight/nv_backlight/
- How to alter backlight driver in lubuntu
- Brightness on laptop MSI GT72VR in Ubuntu 18.04 with NVIDIA GTX 1060 Mobile doesn't work
- NVIDIA display issue on Brightness control and Video PlayBack
- Unable to change the screen brightness
- The brightness of laptop screen cannot be adjusted with either the buttons or the slider. Edit
Before writing a script
I can write a script to mimic changes to /acpi_video and populate /nv_backlight but before I do try this:
- Edit
/etc/default/grub
. - Find
quiet splash
- Add behind splash:
acpi_backlight=vendor
- Save the file
- Run
sudo update-grub
According to this answer it should work for you: Xubuntu 18.04: make Fn brightness keys work with /sys/class/backlight/nv_backlight/
Wayland
Brightness doesn't work under Wayland. Make sure you aren't using it. See: The brightness of laptop screen cannot be adjusted with either the buttons or the slider. Edit
edited Jun 14 at 23:03
answered Jun 12 at 0:19
![](https://i.stack.imgur.com/2SXNl.jpg?s=32&g=1)
![](https://i.stack.imgur.com/2SXNl.jpg?s=32&g=1)
WinEunuuchs2Unix
33.7k756130
33.7k756130
The script does the work. But there is a small bug inSetBrightness ()
. It should bePatchAct=$(( PatchMax * WatchPer / 100 ))
. Thanks to the entire support.
â boobalan
Jun 14 at 12:07
1
Unfortunately in mobile for next 10 hours. I'll test and revise tonight. Feel free to add new comments in the meantime.
â WinEunuuchs2Unix
Jun 14 at 12:15
@boobalan You were right about the need to swap the watched percentage and100
variables. I also corrected typos with nv_video (s/b nv_backlight) and extra/brightness
in/brightness/brightness
. If you are happy remember to click the grey check mark next to the answer. This will give others confidence to try out the script for themselves. It was fun developing this script. Thanks!
â WinEunuuchs2Unix
Jun 14 at 23:06
If the script is run manually it does work. But if it is added to the startup applications, it doesn't work. I guess there is a problem with giving sudo permissions to startup applications. For your information, I gaveredirect-brightness
as the application command.
â boobalan
Jun 15 at 6:31
There are many ways to call during startup. One is with cron. Create the file/etc/cron.d/backlight
containing line 1:SHELL=/bin/sh
line 2:PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
line 3:@reboot root /usr/local/bin/redirect-brightness
â WinEunuuchs2Unix
Jun 15 at 10:33
 |Â
show 1 more comment
The script does the work. But there is a small bug inSetBrightness ()
. It should bePatchAct=$(( PatchMax * WatchPer / 100 ))
. Thanks to the entire support.
â boobalan
Jun 14 at 12:07
1
Unfortunately in mobile for next 10 hours. I'll test and revise tonight. Feel free to add new comments in the meantime.
â WinEunuuchs2Unix
Jun 14 at 12:15
@boobalan You were right about the need to swap the watched percentage and100
variables. I also corrected typos with nv_video (s/b nv_backlight) and extra/brightness
in/brightness/brightness
. If you are happy remember to click the grey check mark next to the answer. This will give others confidence to try out the script for themselves. It was fun developing this script. Thanks!
â WinEunuuchs2Unix
Jun 14 at 23:06
If the script is run manually it does work. But if it is added to the startup applications, it doesn't work. I guess there is a problem with giving sudo permissions to startup applications. For your information, I gaveredirect-brightness
as the application command.
â boobalan
Jun 15 at 6:31
There are many ways to call during startup. One is with cron. Create the file/etc/cron.d/backlight
containing line 1:SHELL=/bin/sh
line 2:PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
line 3:@reboot root /usr/local/bin/redirect-brightness
â WinEunuuchs2Unix
Jun 15 at 10:33
The script does the work. But there is a small bug in
SetBrightness ()
. It should be PatchAct=$(( PatchMax * WatchPer / 100 ))
. Thanks to the entire support.â boobalan
Jun 14 at 12:07
The script does the work. But there is a small bug in
SetBrightness ()
. It should be PatchAct=$(( PatchMax * WatchPer / 100 ))
. Thanks to the entire support.â boobalan
Jun 14 at 12:07
1
1
Unfortunately in mobile for next 10 hours. I'll test and revise tonight. Feel free to add new comments in the meantime.
â WinEunuuchs2Unix
Jun 14 at 12:15
Unfortunately in mobile for next 10 hours. I'll test and revise tonight. Feel free to add new comments in the meantime.
â WinEunuuchs2Unix
Jun 14 at 12:15
@boobalan You were right about the need to swap the watched percentage and
100
variables. I also corrected typos with nv_video (s/b nv_backlight) and extra /brightness
in /brightness/brightness
. If you are happy remember to click the grey check mark next to the answer. This will give others confidence to try out the script for themselves. It was fun developing this script. Thanks!â WinEunuuchs2Unix
Jun 14 at 23:06
@boobalan You were right about the need to swap the watched percentage and
100
variables. I also corrected typos with nv_video (s/b nv_backlight) and extra /brightness
in /brightness/brightness
. If you are happy remember to click the grey check mark next to the answer. This will give others confidence to try out the script for themselves. It was fun developing this script. Thanks!â WinEunuuchs2Unix
Jun 14 at 23:06
If the script is run manually it does work. But if it is added to the startup applications, it doesn't work. I guess there is a problem with giving sudo permissions to startup applications. For your information, I gave
redirect-brightness
as the application command.â boobalan
Jun 15 at 6:31
If the script is run manually it does work. But if it is added to the startup applications, it doesn't work. I guess there is a problem with giving sudo permissions to startup applications. For your information, I gave
redirect-brightness
as the application command.â boobalan
Jun 15 at 6:31
There are many ways to call during startup. One is with cron. Create the file
/etc/cron.d/backlight
containing line 1: SHELL=/bin/sh
line 2: PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
line 3: @reboot root /usr/local/bin/redirect-brightness
â WinEunuuchs2Unix
Jun 15 at 10:33
There are many ways to call during startup. One is with cron. Create the file
/etc/cron.d/backlight
containing line 1: SHELL=/bin/sh
line 2: PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
line 3: @reboot root /usr/local/bin/redirect-brightness
â WinEunuuchs2Unix
Jun 15 at 10:33
 |Â
show 1 more comment
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
var $window = $(window),
onScroll = function(e)
var $elem = $('.new-login-left'),
docViewTop = $window.scrollTop(),
docViewBottom = docViewTop + $window.height(),
elemTop = $elem.offset().top,
elemBottom = elemTop + $elem.height();
if ((docViewTop elemBottom))
StackExchange.using('gps', function() StackExchange.gps.track('embedded_signup_form.view', location: 'question_page' ); );
$window.unbind('scroll', onScroll);
;
$window.on('scroll', onScroll);
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2faskubuntu.com%2fquestions%2f1045624%2fhow-to-switch-between-options-in-sys-class-backlight-to-solve-brightness-prob%23new-answer', 'question_page');
);
Post as a guest
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
var $window = $(window),
onScroll = function(e)
var $elem = $('.new-login-left'),
docViewTop = $window.scrollTop(),
docViewBottom = docViewTop + $window.height(),
elemTop = $elem.offset().top,
elemBottom = elemTop + $elem.height();
if ((docViewTop elemBottom))
StackExchange.using('gps', function() StackExchange.gps.track('embedded_signup_form.view', location: 'question_page' ); );
$window.unbind('scroll', onScroll);
;
$window.on('scroll', onScroll);
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
var $window = $(window),
onScroll = function(e)
var $elem = $('.new-login-left'),
docViewTop = $window.scrollTop(),
docViewBottom = docViewTop + $window.height(),
elemTop = $elem.offset().top,
elemBottom = elemTop + $elem.height();
if ((docViewTop elemBottom))
StackExchange.using('gps', function() StackExchange.gps.track('embedded_signup_form.view', location: 'question_page' ); );
$window.unbind('scroll', onScroll);
;
$window.on('scroll', onScroll);
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
var $window = $(window),
onScroll = function(e)
var $elem = $('.new-login-left'),
docViewTop = $window.scrollTop(),
docViewBottom = docViewTop + $window.height(),
elemTop = $elem.offset().top,
elemBottom = elemTop + $elem.height();
if ((docViewTop elemBottom))
StackExchange.using('gps', function() StackExchange.gps.track('embedded_signup_form.view', location: 'question_page' ); );
$window.unbind('scroll', onScroll);
;
$window.on('scroll', onScroll);
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
When you operate the Fn keys for bright up/down does the pop up slider progress bar display on screen?
â WinEunuuchs2Unix
Jun 11 at 22:34
Did you try
acpi_backlight=vendor
in the answer below? Did it work?â WinEunuuchs2Unix
Jun 12 at 22:48
No, when I do
acpi_backlisht=vendor
, theacpi_video0
option goes away and a new optionsony
comes in and the hotkeys reflect changes insony/brightness
, with no actual display brightness change. Thenv_backlight
option remains though and the manual changes to it still give me the actual change in brightness.â boobalan
Jun 13 at 4:55
OK. It's too late tonight but tomorrow night I'll start writing a script that will take changes to
acpi_video0
and pump the equivalent percentage into nVidieo backlight.â WinEunuuchs2Unix
Jun 13 at 4:58
Thanks, WinEunuuchs2Unix. I tried redirecting the symbolic link. But it gives me an unauthorized operation error.
â boobalan
Jun 13 at 5:07