In debian 9, setting the register value in rc.local works,
but it gets overwritten to a bad value when screen goes off, furthermore, the intel_backlight max_brightness appears to be broken : too low value so that xbacklight = 100 does not bring back full brightness
To make persistent the register setting at boot, it appears it is necessary to do it before the i915 module is loaded.
On debian systems, this can be achieved by (as root)
cat << EOF >> /etc/modprobe.d/i915.conf
install i915 /usr/bin/intel_reg 0x00061254 your_value; /sbin/modprobe --ignore-install i915
Then, you can discard any settings through rc.local or systemd,
max_brightness in intel_backlight sysfs seems much more reasonnable and xbacklight = 100 gives full brightness.
Also, no alteration when screen goes off ot with "xset dpms force off"
Depending on the distro, it may be needed to include this hack in the initrd (if this one loads i915), I did not have to do that for debian 9 strech
people should disable c-states to make sure that it is backlight indeed that is being noisy:
for i in /sys/devices/system/cpu/cpu*/cpuidle/state*/disable; do echo 1 > $i; done
Also we need to add some graphic with arrows to point out where 31:16 bits are, with a space between fields like
divisor [space] duty_cycle
Due to bug described by deb75 - tell people to adjust duty cycle to half or lower of divisor instead of using keys/xbacklight to adjust brightness
Also there are some patches to be tested:
We should merge patches from coreboot/librecore for changing backlight register value in cbfs
I was having the same issue as @deb75. The procedure works for me on Debian 8 jessie, but I had to change the intel_reg command to intel_reg_write.
I've been having this issue on Parabola for a year, I always had to run /usr/bin/intel_reg write 0x00061254 your_value manually until the next time the screen goes off.
I tried copy-pasting @deb75 's command but it just left me with a > on a new line, as if the shell was waiting for another line (I don't understand the syntax well enough, maybe there's a newline missing).
/usr/bin/intel_reg write 0x00061254 your_value
I had it to work by creating the file /etc/modprobe.d/i915.conf and pasting install i915 /usr/bin/intel_reg write 0x00061254 your_value; /sbin/modprobe --ignore-install i915
install i915 /usr/bin/intel_reg write 0x00061254 your_value; /sbin/modprobe --ignore-install i915
Maybe those instructions could be added to libreboot's website until it's fixed in coreboot/libreboot ?