The Cookie Machine - Click here to drag window

DUMMY TEXT - Real text set in assets/js/theCookieMachine.js

Views: 3,944     Votes:  5     ✅ Solution
Tags: brightness   acpi  
Link: 🔍 See Original Answer on Ask Ubuntu 🔗

URL: https://askubuntu.com/q/1045763
Title: How to switch between options in `/sys/class/backlight` to solve brightness problem?
ID: /2018/06/12/How-to-switch-between-options-in-__sys_class_backlight_-to-solve-brightness-problem_
Created: June 12, 2018    Edited:  April 4, 2019
Upload: November 24, 2022    Layout:  post
TOC: false    Navigation:  true    Copy to clipboard:  false


Skip

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:

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

WatchDriver="/sys/class/backlight/acpi_video0/brightness"
PatchDriver="/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.

Top ToS Skip

redirect-brightness bash script

``` bash #!/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 () { # Calculate watch current percentage WatchAct=$(cat $WatchDriver/actual_brightness) WatchPer=$(( WatchAct * 100 / WatchMax )) [[ $fLogFile == true ]] && echo WatchAct: $WatchAct WatchPer: $WatchPer » $LogFile # Reverse engineer patch brightness to set PatchAct=$(( PatchMax * WatchPer / 100 )) echo $PatchAct | 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:


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:

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

Top ToS
⇧ Ubuntu 18.04 LTS hangs up every time with AMD GPU How to disable automatic brightness adjustment in Ubuntu 14.04?  ⇩