[RESOLVED] Even lower screen brightness?

Test brightness on a tested/supported distro. Live usb works. Make sure it’s just the distro. We use it just fine on Ubuntu 22.04 and Fedora 39.

Also I assume you’re on 3.03 bios update?

I am on BIOS 3.03 and using Fedora 39.

Using GUI tools (and the hardware buttons) I am able to control the brightness from 100 down to 0.78.

Using light I am able to set brightness from 100 down to 0.00, but there is no visual difference between 0.00 and 0.78.

At 0.00, I expect the backlight to be off, but it is still on (and still too bright).

@Matt_Hartley, OP reports that they are able to turn the backlight off completely using light-- are you able to reproduce this?

Don’t have the cycles to install light and test against this today on Fedora. However, the moment we deviate from a default config, all sorts of new challenges present themselves in trying to replicate. Especially true outside of vetted/supported distros.

Light is not tested whatsoever and is a community support application. Using brightnessctl is fine and would be expected to work correctly, but op is using Arch. So hard to say.

They need to test against Fedora.

I’m not OP, just sharing my experience under Arch. light and brightnessctl both work fine and are able to set the same brightness values with matching results in light output. There might be differences between AMD and Intel in backlight behaviour.
I remember my Intel Dell XPS being able to turn it off completely as well just by setting brightness to 0 regardless of used tool. It was relatively big step from lowest to off on that machine, so probably not helpful for @gaben.

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!

1 Like

Appreciate the feedback, using Redshift may be the best option in this situation.

Would also love to see the ability to modify the minimum brightness. Too bright in dark situations. Native support would be wonderful.

5 Likes

Appreciate the feedback, will pass this along.

2 Likes

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:

2 Likes

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.

I am using BIOS 3.03.

1 Like

Same on Fedora 39 AMD 7640U, the extension Soft Brightness helps but it’s only a software tint, the actual backlight is still pretty bright.

+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):

$ cat /sys/class/backlight/intel_backlight/actual_brightness 
0

→ backlight completely off

“0% brightness” with Plasma 6 (brightness slider or function keys):

$ cat /sys/class/backlight/intel_backlight/actual_brightness 
1

→ backlight at minimum(?)

Going dimmer than is available right now? Not that I am aware of.

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?

1 Like

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.

1 Like

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.

1 Like

@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
5 Likes