Appreciate you chiming in with your experiences, always good to get another perspective.
11th gen and AMD Ryzen 7040 Series configs both “work out of the box” with the slider in Fedora and Ubuntu, plus on the keyboard. 12th and 13th gen require module_blacklist=hid_sensor_hub as described in the guides.
Same here.
AMD 7640 on linux mint, but the minimum brightness at 0% is also way to bright for my convenience in the evening.
Using it in complete darkness (such as when camping, as I quite often do) will be impossible.
Using redshift helps a bit, but having a wider range of the brightness itself would be great!
I’ve been having this same issue (I’m on a 7840U, with Linux kernel 6.1.71, NixOS 23.11)
I’m still running X11 as Wayland still has some papercuts for me so to get the screen to turn off completely I’ve found that xset dpms force off works for me, typing or moving mouse causes it to turn back on.
For wayland this thread has suggestions involving vbetool and setterm for solutions not involving X but I’ve not had any luck with these.
Some other laptops I’ve owned have had dedicated backlight off function keys other have the minimum brightness when you cycle through the brightness up/down function keys be completely off. I don’t have a strong preference for either of these as long as there is an easy way to set the screen/backlight to completely off, and the steps are sufficiently granular that I can achieve a comfortable brightness in pitch dark conditions.
I’m not sure exactly where is the stack the min/max brightness and step increments are set but if this is something that can be resolved in an OS independent fashion in the framework firmware this would be something the I’d really like to see in future revisions as it’s a big quality of life thing for me.
Consolidating some other posts on this topic under this thread so that there are cross links when people land on one of these in search:
I experience the same thing on AMD 7640U, the minimum brightness of 0, confirmed with cat /sys/class/backlight/amdgpu_bl1/brightness, is far too bright.
Unscientifically, with my display at a color temperature of 3,600 K, 0 brightness feels about as bright as my phone at 25% brightness at default colour temperature.
Given that this is amdgpu, it might be possible to tweak in the driver somewhere.
+1 still an issue here on my 7840U. I’d like to turn off my internal screen while continuing to use the laptop with an external screen, without closing the lid (so I can use the keyboard) – seems impossible?
Tried brightnessctl, light, etc but none of the tools drop to 0 backlight, there’s always some backlight no matter what. With dpms, the screen wakes up as soon as there’s any interaction so that makes it impossible to use the laptop with an external monitor.
Every other laptop I’ve had (thinkpad, macbook, dell, etc.) all go to no-backlight when brightness is 0, but Framework 13 AMD does not.
@Matt_Hartley Sounds like it’s an issue with the firmware on the AMD series? Any chance it’s slated to get fixed in a future release?
This ticket in its current form has effectively been tagged as wontfix/worksforme.
I think in order to get Framework to address it, someone with a tool to measure brightness needs to create an objective acceptance criteria like: screen turns off at 0% brightness and screen is at xxx nits at 4% brightness.
Without an objective criteria the discussion just becomes “I want it dimmer” vs. “it looks dim to me”
At least under Linux, turning the backlight off or not at “0%” might also depend on the chosen desktop environment. While Plasma 5 turns off the backlight at “0%” with my 12th Gen Intel, the new Plasma 6 deliberately keeps it on (“no one expects it to turn off” - hmmm).
“0% brightness” with Plasma 5 (function keys, not sure of brightness slider):
Every laptop I’ve used before the Framework allows me to turn off the screen via brightness to 0 (MacBooks, Thinkpad, Dell, etc).
Personally it doesn’t matter how dim it can go right now, I just want it to be entirely off. I think that’s fairly objective?
Using dpms to turn off the screen is not equivalent because then we can’t use input devices without activating the screen again.
Turning off the backlight at 0 brightness altogether. Would it be possible to please add this issue for tracking internally?
My understanding is that this issue is worse on the AMD models. People seem to have found ways to turn down the backlight to off on the Intel models, but as far as I can tell it’s impossible on the AMD models?
Can confirm with 11th gen Plasma 5.27 function keys will turn the backlight completely off at “0%” while using the brightness slider set to 0% actually sets the minimum brightness possible, as you indicated a value of 1
It seems intel boards are able to use the aforementioned tools to control the backlight but AMD boards are unable.
I’m not sure this is the right place for this since I’m running Windows 11 on the FW16. If someone knows where this idea belongs, please let me know,
I’ve found that lowering the brightness in the AMD Adrenaline software helps a little with the screen brightness. Unfortunately it doesn’t directly lower the backlight, but it does a better job than some 3rd party software I’ve tried.
The setting is under Gaming > Display, switch Custom Color to ON, then lower the brightness slider.
@shazow in sway you can turn the display off with swaymsg "output * power off. Other Wayland compositors should have similar functionality and XOrg has the same functionality with xrandr --output <panel name here> --off (you should be able to see a list of panels with just xrandr). You’ll just have to write a bash script etc that wraps how you change brightness. To turn them back on, just swap off to on.
On the Framework 16 using Arch Linux (also verified on Manjaro), the brightness does not go anywhere near dim enough for use in low-light environments (and is substantially brighter than my thinkpad e595). I wrote the following script to semi-workaround this.
This supports shifting either the brightness or the color temperature of the display by the specified value using redshift. Displays a re-usable notification with a progress bar to indicate the current level (tested using libnotify version 0.8.3).
This also works around the inability to detect the current brightness/color by saving the last set value and making the next change based on that.
Example usage (particularly useful if bound to hotkeys):
displayshift.sh light -25 #decreases brightness by 0.25
displayshift.sh light 10 #increases brightness by 0.1
displayshift.sh temp -525 #decreases color temperature by 525
displayshift.sh temp 200 #increases color temperature by 200
displayshift.sh:
#!/bin/bash
#usage: displayshift.sh [light|temp] [0-9]+
#light range: 1-100
#color range: 1000-25000
#--settings--
#notification icons (defaults are in papirus-icon-theme)
icolight="notification-display-brightness-medium"
icotemp="colortone"
icotemp_default="emblem-default" #shown when color temperature is exactly 6500 (default)
#cache location / files
cachefol="$HOME/.cache/displayshift"
cachelight="$cachefol/backlight.dat"
cachetemp="$cachefol/colortemp.dat"
cachenotid="$cachefol/notify.dat"
#--functions--
to_int(){ [[ "$1" =~ ^[\-]?[0-9]+$ ]] && echo "$1" || echo 0; }
msg_err(){ notify-send -i dialog-error "displayshift" "$@" ; }
msg_light(){ notify-send -i $icolight -h int:value:$newlight -r "$notid" -p " " ; }
msg_temp(){
tempico="$icotemp"; [[ "$newtemp" = "6500" ]] && tempico="$icotemp_default"
notify-send -i $tempico -h int:value:$((newtemp*4/1000)) -r "$notid" -p " "
}
#--main--
[[ -d "$cachefol" ]] || mkdir "$cachefol" || (msg_err "err: failed to create cache folder"; exit)
#read params
case "$1" in
light) chnglight="$2"; chngtemp=0 ;;
temp) chnglight=0; chngtemp="$2" ;;
*) msg_err "err: invalid parameter"; exit ;;
esac
chnglight="$(to_int "$chnglight")"
chngtemp="$(to_int "$chngtemp")"
#read cache data
if [[ -f "$cachenotid" ]]; then
notid="$(cat "$cachenotid")"
else notid=0; fi
notid="$(to_int "$notid")"
if [[ -f "$cachelight" ]]; then
curlight="$(cat "$cachelight")"
[[ "${curlight:0:1}" = "0" ]] && curlight="${curlight:1}"
else curlight=100; fi
curlight="$(to_int "$curlight")"
if [[ -f "$cachetemp" ]]; then
curtemp="$(cat "$cachetemp")"
else curtemp=6500; fi
curtemp="$(to_int "$curtemp")"
#calculate new, ensure within valid range
newlight="$((curlight+chnglight))"
[[ "$newlight" -lt 1 ]] && newlight=1
[[ "$newlight" -gt 100 ]] && newlight=100
[[ "$newlight" -lt 100 ]] && newlight="0$newlight"
[[ "$curlight" -lt 100 ]] && curlight="0$curlight"
newtemp="$((curtemp+chngtemp))"
[[ "$newtemp" -lt 1000 ]] && newtemp=1000
[[ "$newtemp" -gt 25000 ]] && newtemp=25000
#make changes (if needed)
if { [[ "$1" = "light" ]] && [[ ! "$newlight" = "$curlight" ]]; } || \
{ [[ "$1" = "temp" ]] && [[ ! "$newtemp" = "$curtemp" ]]; }; then
if redshift -P -O $newtemp -b ${newlight:0:1}.${newlight:1:1}:${newlight:0:1}.${newlight:1:1}; then
case $1 in
light) echo "$newlight">"$cachelight" ;;
temp) echo "$newtemp">"$cachetemp" ;;
esac
else msg_red "err: failed to run redshift with specified value"; exit; fi
fi
#final notification
case $1 in
light) msg_light>"$cachenotid" ;;
temp) msg_temp>"$cachenotid" ;;
esac
Have you tried Plasma? Turning to 1 in the default slider completely disables the backlight, if that’s still too bright you can fiddle the nightmode; which in effect is doing what redshift / others have suggested which changes the colour temperatures.