Bug 207086 - unable to change LCD brightness on Lenovo Thinkpad Edge E145
Summary: unable to change LCD brightness on Lenovo Thinkpad Edge E145
Status: New
Alias: None
Product: Base System
Classification: Unclassified
Component: kern (show other bugs)
Version: 10.2-STABLE
Hardware: amd64 Any
: --- Affects Some People
Assignee: freebsd-bugs mailing list
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2016-02-10 17:28 UTC by aeuii
Modified: 2017-10-31 01:02 UTC (History)
2 users (show)

See Also:


Attachments
Store brightness value in static variable; don't complain if _BQC method is missing. (1.65 KB, patch)
2017-10-31 00:59 UTC, Anthony Jenkins
no flags Details | Diff
Add rudimentary backlight support to Radeon chipsets. (7.20 KB, patch)
2017-10-31 01:02 UTC, Anthony Jenkins
no flags Details | Diff

Note You need to log in before you can comment on or make changes to this bug.
Description aeuii 2016-02-10 17:28:05 UTC
I'm unable to change LCD brightness on Lenovo Thinkpad Edge E145 using ☼+ and ☼- buttons. To be more specific, the brightness can be changed only until an early system boot.  It works in the loader menu, and right after kernel is loaded, but stops working soon after that (perhaps when acpi0 is loaded: “acpi0: <LENOVO TP-HS> on motherboard”).

I tested multiple FreeBSD version:

Affected FreeBSD versions:
  - 11.0: FreeBSD-11.0-CURRENT-amd64-20160206-r295345-memstick.img
  - 10.3: FreeBSD-10.3-PRERELEASE-amd64-20160127-r294913-memstick.img
  - 10.2: 10.2-RELEASE-p12
  - 10.1: FreeBSD-10.1-RELEASE-amd64-memstick.img

Working version:
  - 9.3: FreeBSD-9.3-RELEASE-amd64-memstick.img (with “CPU0: local
    ACPI error 0x80”)

As you can see, the problem occurred between 9.3 and 10.1.
 

I also tried different methods to change the brightness on 10.2:

acpi_call
=========

acpi_call -v -p '\VBRU'

Path: \VBRU
Number of arguments: 0
ioctl: Device not configured

# no effect


acpi_ibm
========

sysctl dev.acpi_ibm.0.lcd_brightness=7

# value changes, but it no effect on the brightness


acpi_video
==========

sysctl hw.acpi.video.lcd0.brightness=50
hw.acpi.video.lcd0.brightness: 50 -> #

# no effect

pressing Fn+☼+- buttons has no effect, but logs:

can't evaluate \134_SB_.PCI0.VGA_.LCD_._BQC - AE_NOT_FOUND
Comment 1 Anthony Jenkins 2017-10-31 00:57:24 UTC
A missing _BQC method was one of my problems; I modified my DSDT to add a _BQC method, but later I patched the kernel to not complain if it was missing. The other problem was the backlight code in the kernel for Radeon chipsets.  I'll stick both patches here (git-based).
Comment 2 Anthony Jenkins 2017-10-31 00:59:25 UTC
Created attachment 187601 [details]
Store brightness value in static variable; don't complain if _BQC method is missing.
Comment 3 Anthony Jenkins 2017-10-31 01:02:08 UTC
Created attachment 187602 [details]
Add rudimentary backlight support to Radeon chipsets.