I've upgraded the firmware on my Thinkpad to version 2.51. Since that I'm unable to change the display brightness via the Fn-Keys on the keyboard. What still works is writing values to /sys/devices/pci0000:00/0000:00:02.0/backlight/acpi_video0/brightness but of course that's not how it should be.
Here's some dmesg output:
[ 7.638814] thinkpad_acpi: ThinkPad ACPI Extras v0.24
[ 7.638816] thinkpad_acpi: http://ibm-acpi.sf.net/
[ 7.638817] thinkpad_acpi: ThinkPad BIOS G1ET91WW (2.51 ), EC unknown
[ 7.638818] thinkpad_acpi: Lenovo ThinkPad T430, model 2349D15
[ 7.639440] thinkpad_acpi: detected a 8-level brightness capable ThinkPad
[ 7.639547] thinkpad_acpi: radio switch found; radios are enabled
[ 7.639558] thinkpad_acpi: This ThinkPad has standard ACPI backlight brightness control, supported by the ACPI video driver
[ 7.639559] thinkpad_acpi: Disabling thinkpad-acpi brightness events by default...
[ 7.640708] thinkpad_acpi: rfkill switch tpacpi_bluetooth_sw: radio is unblocked
[ 7.641012] thinkpad_acpi: Standard ACPI backlight interface available, not loading native one
[ 7.641156] thinkpad_acpi: Console audio control enabled, mode: monitor (read only)
Any idea why it's broken and how it can be fixed?
Last edited by julian24 (2013-03-21 22:06:20)
Still wasn't able to really fix this but as these keys now generate normal keyboard events you can bind them manually, for example in i3:
bindsym XF86MonBrightnessUp exec xbacklight -inc 10 -time 0 -steps 1 bindsym XF86MonBrightnessDown exec xbacklight -dec 10 -time 0 -steps 1
But I'm still not happy with this as it doesn't work before I've logged in.
Awesome, the acpi_backlight=vendor kernel command line parameter actually fixed it.
Does anybody know what exactly has changed and why this in necessary now?
Update: If you do this, you'll get error messages like this in your log/dmesg every time you press a brightness key:
kernel: thinkpad_acpi: unknown possible thermal alarm or keyboard event received kernel: thinkpad_acpi: unhandled HKEY event 0x6050 kernel: thinkpad_acpi: please report the conditions when this event happened to firstname.lastname@example.org
The kernel command line parameter acpi_osi="!Windows 2012" also works and seems to be the better way to fix this.
Bugreport at kernel.org: https://bugzilla.kernel.org/show_bug.cgi?id=51231
tl;dr: Firmware update introduced 101 brightness levels even though the hardware only supports 16 but Windows 8 requires this. Reducing or increasing the brightness by one doesn't change anything at all so the firmware will still report the old value as the new brightness thus it'll never actually change the brightness. But if you explicitly tell the firmware that you're not Windows 8, it will only report 16 brightness levels and everything works fine. Lenovo, seriously?
Last edited by julian24 (2013-03-21 23:27:47)
For the record: My brightness keys on my T430 did only work in text ttys, not when I ran an X server. I had acpi_osi="!Windows 2012" set, but it didn't help. I upgraded to Windows 10 recently and now my brightness control did not work at all anymore. As suggested here, setting acpi_osi="Linux" worked perfectly for me. Now the brightness keys even work under Gnome
Thanks for sharing that, but please don't necrobump old, solved topics.
Mobo: ASUS P8Z77-V PRO // Processor: Intel Core i7-3770K 3.4GHz // GFX: nVidia GeForce GTX 970 Ti // RAM: 32GB (4x 8GB) Corsair DDR3 (@ 2133MHz) // Storage: 1x 3TB Seagate SATAII 5x 1TB Samsung SATAII, 2x 120GB Corsair SSD