Bug 11682
Summary: | Can't adjust brightness - Sony Vaio FW | ||
---|---|---|---|
Product: | Drivers | Reporter: | Rafał Miłecki (zajec5) |
Component: | Platform | Assignee: | Zhang Rui (rui.zhang) |
Status: | REJECTED WILL_NOT_FIX | ||
Severity: | normal | CC: | acpi-bugzilla, alexdeucher, anton, ct.lrn, lidel.kernelorg, malattia, slosar |
Priority: | P1 | ||
Hardware: | All | ||
OS: | Linux | ||
Kernel Version: | 2.6.27-rc7 | Subsystem: | |
Regression: | --- | Bisected commit-id: | |
Bug Depends on: | |||
Bug Blocks: | 56331 | ||
Attachments: |
modprobe sony-laptop debug=1
lspci acpidump customized DSDT: add ACPI backlight I/F for ATI graphics DSDT hacked for sony fw brightness. initialize FW events Script for controlling backlight level |
Description
Rafał Miłecki
2008-10-01 05:23:49 UTC
Created attachment 18130 [details]
modprobe sony-laptop debug=1
Created attachment 18131 [details]
lspci
Created attachment 18132 [details]
acpidump
Hi, similarly to the case in bug #10950 you model doesn't have a SPIC device definition. sony-laptop (in its current status at least) can't be used for brightness control. You may have better luck with the acpi_video driver, let's see what the ACPI maintainers say. -- mattia Hi, Rafal What Mattia said in comment #4 is right. Please try the acpi_video driver and see whether the brightness can be changed by the interface of "/sys/class/backlight/*/brightness". Thanks. Module acpi_video doesn't exists. I guess you mean "video" module which creates "/sys/class/backlight/acpi_video0"? If so, I already tried that and mentioned that in comment #1: > no matter what I echo into brightness it doesn't change backlight. From the acpidump it seems that there exists the ACPI video device. Will you please try the acpi video driver on the latest kernel(2.6.27-rc9) and do the test as mentioned in comment #5? Please set "CONFIG_ACPI_VIDEO=y" in kernel configuration to use acpi video driver.(Of course "CONFIG_ACPI_VIDEO=m" is also OK). Thanks. #cat /boot/config-`uname -r` | grep CONFIG_ACPI_VIDEO CONFIG_ACPI_VIDEO=m sony:~ # uname -a Linux sony 2.6.27-rc9-brightness-test #1 SMP Tue Oct 7 13:19:54 CEST 2008 x86_64 x86_64 x86_64 GNU/Linux sony:~ # cd /sys/class/backlight/ sony:/sys/class/backlight # ls sony:/sys/class/backlight # modprobe video sony:/sys/class/backlight # ls acpi_video0 sony:/sys/class/backlight # cd acpi_video0/ sony:/sys/class/backlight/acpi_video0 # ls actual_brightness bl_power brightness max_brightness power subsystem uevent sony:/sys/class/backlight/acpi_video0 # cat brightness 8 sony:/sys/class/backlight/acpi_video0 # echo 1 > brightness sony:/sys/class/backlight/acpi_video0 # cat brightness 1 sony:/sys/class/backlight/acpi_video0 # echo 5 > brightness sony:/sys/class/backlight/acpi_video0 # cat brightness 5 Backlight is still on max level. is /sys/class/backlight/acpi_video1 available for you? if yes, please do the same test to see if it works for you. If no, please attach the output of "find /proc/acpi/video/". Please make sure that you are running the upstream kernel rather than acpi test branch, because there is a patch in acpi test branch which may ignore the acpi_video1 backlight device. any update? Zhang: as you can see from Comment #8 there is not /sys/class/backlight/acpi_video1 (check output of "ls" command). Earlier I was using mainline 2.6.27-rc9, now I tried mainline 2.6.28-rc3 and I still don't have acpi_video1. zajec@sony:~> find /proc/acpi/video/ /proc/acpi/video/ /proc/acpi/video/GFX0 /proc/acpi/video/GFX0/DD05 /proc/acpi/video/GFX0/DD05/EDID /proc/acpi/video/GFX0/DD05/brightness /proc/acpi/video/GFX0/DD05/state /proc/acpi/video/GFX0/DD05/info /proc/acpi/video/GFX0/DD04 /proc/acpi/video/GFX0/DD04/EDID /proc/acpi/video/GFX0/DD04/brightness /proc/acpi/video/GFX0/DD04/state /proc/acpi/video/GFX0/DD04/info /proc/acpi/video/GFX0/DD03 /proc/acpi/video/GFX0/DD03/EDID /proc/acpi/video/GFX0/DD03/brightness /proc/acpi/video/GFX0/DD03/state /proc/acpi/video/GFX0/DD03/info /proc/acpi/video/GFX0/DD02 /proc/acpi/video/GFX0/DD02/EDID /proc/acpi/video/GFX0/DD02/brightness /proc/acpi/video/GFX0/DD02/state /proc/acpi/video/GFX0/DD02/info /proc/acpi/video/GFX0/DD01 /proc/acpi/video/GFX0/DD01/EDID /proc/acpi/video/GFX0/DD01/brightness /proc/acpi/video/GFX0/DD01/state /proc/acpi/video/GFX0/DD01/info /proc/acpi/video/GFX0/DOS /proc/acpi/video/GFX0/POST /proc/acpi/video/GFX0/POST_info /proc/acpi/video/GFX0/ROM /proc/acpi/video/GFX0/info I'll be happy to provide any other info you ask or test any patches. I played with these files in /proc/acpi/video/GFX0, but without success. First I checked: sony:/proc/acpi/video/GFX0 # cat DD01/brightness <not supported> sony:/proc/acpi/video/GFX0 # cat DD02/brightness levels: 100 100 4 16 28 40 52 64 76 88 100 current: 100 sony:/proc/acpi/video/GFX0 # cat DD03/brightness <not supported> sony:/proc/acpi/video/GFX0 # cat DD04/brightness <not supported> sony:/proc/acpi/video/GFX0 # cat DD05/brightness <not supported> Next I tried writing to DD02/brightness: sony:/proc/acpi/video/GFX0/DD02 # echo 76 > brightness sony:/proc/acpi/video/GFX0/DD02 # echo 64 > brightness sony:/proc/acpi/video/GFX0/DD02 # echo 40 > brightness sony:/proc/acpi/video/GFX0/DD02 # echo 16 > brightness sony:/proc/acpi/video/GFX0/DD02 # echo 4 > brightness sony:/proc/acpi/video/GFX0/DD02 # cat brightness levels: 100 100 4 16 28 40 52 64 76 88 100 current: 4 But my PANEL is still on max level of brightness :( As you're using an ATI graphics card, it's true that both ACPI backlight I/F (/proc/acpi/video... and /sys/class/backlight/acpi_videoX/...) and xbacklight don't work for you. First, xbacklight is designed for intel graphics. I don't know if it supports nvidia or ati now, but I think the answer is "no". Second, I checked your BIOS. Both integrated intel graphics and another external ATI graphics are supported. But unfortunately, the ACPI backlight sysfs I/F only works for the integrated intel graphics as well... In order to control the backlight on your laptop, you need the help of some platform specific tools. And you may want to goto freedesktop to see if you have any luck. :) Created attachment 18681 [details] customized DSDT: add ACPI backlight I/F for ATI graphics with this customized DSDT, you should see two ACPI backlight I/F. please re-do the test in comment #11 and #12 to see if the new I/F can work for you. If yes, that would be great. If not, from the ACPI's perspective of view, I can't help you any more. :( Is this WILL_NOT_FIX because of my silence here? I can not find this resolution in http://bugzilla.kernel.org/page.cgi?id=fields.html#resolution . If so, can we get back to this bug, please? I do not know how to use this DSDT for my kernel. 1) Page supposed to describe this: http://acpi.sourceforge.net/wiki/index.php/HowToOverrideTable doesn't exist. 2) Patch for initrd from http://gaugusch.at/kernel.shtml doesn't apply to 2.6.28-rc3 and 2.6.28-rc5 3) Nice manual http://forums.gentoo.org/viewtopic.php?t=122145 links to http://bugzilla.kernel.org/attachment.cgi?id=1810&action=view which is obsolete attachment and doesn't apply to 2.6.28-rc5. Could you give me link to some working howto, please? how to override a DSDT can be found at: http://www.lesswatts.org/projects/acpi/overridingDSDT.php I close this bug is because: If this laptop follows the ACPI extension, which means that users can change the backlight via ACPI, its BIOS is borken (_DOS not available). This is a BIOS bug that Linux/ACPI won't fix. If this laptop doesn't follow the ACPI extension, i.e. the backlight still can not be controlled via ACPI after overriding the DSDT, I suggest you to try some ATI specific tools, and go to www.freedesktop.org for help, because there are many ATI experts there, :). Hi there, I own a Vaio FW11S too, and I had exactly the same problem than Rafal Milecki. The problem was very problematic because the laptop has two LED backlights and it is impossible to stay in front of it when set to the maximum power. So, I've tried recompiled the kernel with the new DSDT.hex file you've attached here, and it works perfectly well! The /sys/class/backlight/ file has now acpi_video0 and acpi_video1 folders, and the backlight can now be set "out of the box" with PowerDevil in KDE 4.1.80. Can we now hope this .hex fix will be provided with the next releases of the kernel ? Thank you very much for your help. (In reply to comment #17) > I own a Vaio FW11S too, and I had exactly the same problem than Rafal > Milecki. > The problem was very problematic because the laptop has two LED backlights > and > it is impossible to stay in front of it when set to the maximum power. > how to set it to the maximum power? > So, I've tried recompiled the kernel with the new DSDT.hex file you've > attached > here, and it works perfectly well! that's nice. :) > The /sys/class/backlight/ file has now > acpi_video0 and acpi_video1 folders, and the backlight can now be set "out of > the box" with PowerDevil in KDE 4.1.80. > does poking the /sys/class/backlight/acpi_video{0,1}/brightness change the backlight? I suggest you update your kernel to the latest kernel release, and you'll see only acpi_video0 here, which actually works. > Can we now hope this .hex fix will be provided with the next releases of the > kernel ? > no, this is not a kernel bug. And the fix is in BIOS rather than kernel. In order to make brightness work on your laptop, I think you need to upgrade your BIOS to see if it's fixed, or use this customized DSDT for all Linux kernels. That's very weird. Of course I tried replacing DSDT: zajec@sony:~> dmesg | grep DSDT: ACPI: DSDT BFE06010, 8016 (r1 Sony VAIO 20080605 INTL 20051117) ACPI: Override [DSDT- VAIO], this is unsafe: tainting kernel ACPI: Table DSDT replaced by host OS ACPI: DSDT 00000000, 7831 (r1 Sony VAIO 20080605 INTL 20080729) ACPI: DSDT override uses original SSDTs unless "acpi_no_auto_ssdt" ACPI: EC: Look up EC in DSDT but I don't have acpi_video1 as you: zajec@sony:~> ls /sys/class/backlight/ acpi_video0 Also my /proc/acpi/video changed a lot: zajec@sony:~> find /proc/acpi/video/ /proc/acpi/video/ /proc/acpi/video/VGA /proc/acpi/video/VGA/DFP1 /proc/acpi/video/VGA/DFP1/EDID /proc/acpi/video/VGA/DFP1/brightness /proc/acpi/video/VGA/DFP1/state /proc/acpi/video/VGA/DFP1/info /proc/acpi/video/VGA/TV /proc/acpi/video/VGA/TV/EDID /proc/acpi/video/VGA/TV/brightness /proc/acpi/video/VGA/TV/state /proc/acpi/video/VGA/TV/info /proc/acpi/video/VGA/CRT /proc/acpi/video/VGA/CRT/EDID /proc/acpi/video/VGA/CRT/brightness /proc/acpi/video/VGA/CRT/state /proc/acpi/video/VGA/CRT/info /proc/acpi/video/VGA/LCD /proc/acpi/video/VGA/LCD/EDID /proc/acpi/video/VGA/LCD/brightness /proc/acpi/video/VGA/LCD/state /proc/acpi/video/VGA/LCD/info /proc/acpi/video/VGA/DOS /proc/acpi/video/VGA/POST /proc/acpi/video/VGA/POST_info /proc/acpi/video/VGA/ROM /proc/acpi/video/VGA/info (In reply to comment #18) > how to set it to the maximum power? It's set to the max by default, after booting > does poking the /sys/class/backlight/acpi_video{0,1}/brightness change the > backlight? > I suggest you update your kernel to the latest kernel release, and you'll see > only acpi_video0 here, which actually works. Well, I have up-to-date kernel, just tried 2.6.28-rc6 and only acpi_video0 (I don't have acpi_video1). I tried playing with acpi_video0: sony:~ # echo 1 > /sys/class/backlight/acpi_video0/brightness sony:~ # echo 2 > /sys/class/backlight/acpi_video0/brightness sony:~ # echo 3 > /sys/class/backlight/acpi_video0/brightness sony:~ # cat /sys/class/backlight/acpi_video0/brightness 3 sony:~ # cat /sys/class/backlight/acpi_video0/max_brightness 8 sony:~ # cat /sys/class/backlight/acpi_video0/actual_brightness 3 sony:~ # echo 1 > /sys/class/backlight/acpi_video0/actual_brightness bash: /sys/class/backlight/acpi_video0/actual_brightness: No access but nothing happens. Peuc: which kernel did you use? > does poking the /sys/class/backlight/acpi_video{0,1}/brightness change the > backlight? > I suggest you update your kernel to the latest kernel release, and you'll see > only acpi_video0 here, which actually works. Yes, the brightness can be changed with the acpi_video1/brightness file. The acpi_video0/brightness remains ineffective. > no, this is not a kernel bug. And the fix is in BIOS rather than kernel. > In order to make brightness work on your laptop, I think you need to upgrade > your BIOS to see if it's fixed, or use this customized DSDT for all Linux > kernels. I've just checked, Sony doesn't provide any BIOS update for this laptop. That's life :) @Rafal: I've the same boot message than you, plus an error (?!) : [peuc@localhost ~]# dmesg | grep DSDT ACPI: DSDT BFE06010, 8016 (r1 Sony VAIO 20080605 INTL 20051117) ACPI: Looking for DSDT in initramfs... error, file /DSDT.aml not found. ACPI: Override [DSDT- VAIO], this is unsafe: tainting kernel ACPI: Table DSDT replaced by host OS ACPI: DSDT 00000000, 7831 (r1 Sony VAIO 20080605 INTL 20080729) ACPI: DSDT override uses original SSDTs unless "acpi_no_auto_ssdt" ACPI: EC: Look up EC in DSDT My /proc/acpi/video is also different than yours: [peuc@localhost ~]# find /proc/acpi/video/ /proc/acpi/video/ /proc/acpi/video/VGA /proc/acpi/video/VGA/DFP1 /proc/acpi/video/VGA/DFP1/EDID /proc/acpi/video/VGA/DFP1/brightness /proc/acpi/video/VGA/DFP1/state /proc/acpi/video/VGA/DFP1/info /proc/acpi/video/VGA/TV /proc/acpi/video/VGA/TV/EDID /proc/acpi/video/VGA/TV/brightness /proc/acpi/video/VGA/TV/state /proc/acpi/video/VGA/TV/info /proc/acpi/video/VGA/CRT /proc/acpi/video/VGA/CRT/EDID /proc/acpi/video/VGA/CRT/brightness /proc/acpi/video/VGA/CRT/state /proc/acpi/video/VGA/CRT/info /proc/acpi/video/VGA/LCD /proc/acpi/video/VGA/LCD/EDID /proc/acpi/video/VGA/LCD/brightness /proc/acpi/video/VGA/LCD/state /proc/acpi/video/VGA/LCD/info /proc/acpi/video/VGA/DOS /proc/acpi/video/VGA/POST /proc/acpi/video/VGA/POST_info /proc/acpi/video/VGA/ROM /proc/acpi/video/VGA/info /proc/acpi/video/GFX0 /proc/acpi/video/GFX0/DD05 /proc/acpi/video/GFX0/DD05/EDID /proc/acpi/video/GFX0/DD05/brightness /proc/acpi/video/GFX0/DD05/state /proc/acpi/video/GFX0/DD05/info /proc/acpi/video/GFX0/DD04 /proc/acpi/video/GFX0/DD04/EDID /proc/acpi/video/GFX0/DD04/brightness /proc/acpi/video/GFX0/DD04/state /proc/acpi/video/GFX0/DD04/info /proc/acpi/video/GFX0/DD03 /proc/acpi/video/GFX0/DD03/EDID /proc/acpi/video/GFX0/DD03/brightness /proc/acpi/video/GFX0/DD03/state /proc/acpi/video/GFX0/DD03/info /proc/acpi/video/GFX0/DD02 /proc/acpi/video/GFX0/DD02/EDID /proc/acpi/video/GFX0/DD02/brightness /proc/acpi/video/GFX0/DD02/state /proc/acpi/video/GFX0/DD02/info /proc/acpi/video/GFX0/DD01 /proc/acpi/video/GFX0/DD01/EDID /proc/acpi/video/GFX0/DD01/brightness /proc/acpi/video/GFX0/DD01/state /proc/acpi/video/GFX0/DD01/info /proc/acpi/video/GFX0/DOS /proc/acpi/video/GFX0/POST /proc/acpi/video/GFX0/POST_info /proc/acpi/video/GFX0/ROM /proc/acpi/video/GFX0/info [peuc@localhost ~]$ uname -a Linux localhost 2.6.27.7-2mnbcustom #1 SMP Thu Nov 27 15:14:56 CET 2008 i686 Intel(R) Core(TM)2 Duo CPU P8400 @ 2.26GHz GNU/Linux The kernel I've recompiled with the new DSDT.hex file is the one provided with the up to date Mandriva Cooker. I'm confused. I just compiled 2.6.27.7 with: CONFIG_STANDALONE=n CONFIG_ACPI_CUSTOM_DSDT=y CONFIG_ACPI_CUSTOM_DSDT_FILE="DSDT.hex" and included dsdt.hex from attachement from this bug report (I named this dsdt.hex, not DSDT.exe, and used CONFIG_ACPI_CUSTOM_DSDT_FILE="dsdt.hex"). I get acpi_video1 as expected but I can not set brightness using that. It just doesn't change anything. Can this be reason that I use x86_64 while Peuc uses i686? Good news ! I've forgotten to add that I use the ATI proprietary driver (fglrx) on this PC. Maybe it could be necessary for the fix to work too? Hi, I am banging my head against this super bright screen for the past month, it drives me nuts! I've tried compiling kernel 2.6.27.9 with CONFIG_STANDALONE=n CONFIG_ACPI_CUSTOM_DSDT=y CONFIG_ACPI_CUSTOM_DSDT_FILE="DSDT.hex" CONFIG_ACPI_CUSTOM_DSDT_INITRD=n and the machine freezes on boot with the last line being ACPI: BIOS _OSI(Linux) query ignored via DMI i.e, just before the "APCI interpreter enabled" line from my other boots. Any ideas of what might be wrong? I can't even look at the earlier messages, give that the machine is frozen. How can I debug this? Zhang, how widely applicable this magic DSDT.hex is? Does it work on any vaio FW? I have FW290N. Any help would be much appreciated. Thanks! Created attachment 19085 [details]
DSDT hacked for sony fw brightness.
I've fixed it by disassembling Zhan's DSDT.hex and combining it with my dissassembled DSDT. Together with hacked sony-laptop, I now have a working brightness control! Thank you, God! I attach my DSDT.hex that works for me. I tried Anze's DSDT.hex but then system didn't boot. So it's probably for FW2... only (not for FW11*). Is there anything else I can try? Is some reverse engineering of Windows driver possible? (In reply to comment #27) > I tried Anze's DSDT.hex but then system didn't boot. So it's probably for > FW2... only (not for FW11*). you may need the attached patch (sony-laptop-fw.patch) which I guess is what Anze mentioned as "hacked" sony-laptop Created attachment 19252 [details]
initialize FW events
(In reply to comment #27) > I tried Anze's DSDT.hex but then system didn't boot. So it's probably for > FW2... only (not for FW11*). > > Is there anything else I can try? Is some reverse engineering of Windows > driver > possible? > Read at my blog http://vaioubuntu.wordpress.com/2008/12/04/finally-a-brightness-how-to-for-vaio-fw-series/ I have fw11er and now brightness works. Finally I was able to install fglrx 8.12. Previous version (8.11) didn't work for me because of error in generating package. Using fglrx and kernel with DSDT.hex from this bug report I can indeed control backlight now! Earlier I was using radeonhd git and then it didn't work. I will try to talk with radeonhd developers then :) Created attachment 19281 [details]
Script for controlling backlight level
Big success here :) Using rhd_dump I made full registers dumps, first using fglrx with lowest backlight and second using radeonhd with max (default) backlight level.
I compared these dumps and after one hour of guessing got backlight controlling registers. I attach script which allows me to control backlight using rhd_dump tool (rhd_dump is part of radeonhd) with any driver: radeonhd or fglrx.
It should be quite interesting as you don't have to use hacked DSDT or fglrx.
Does this registers stay the same for different Ati cards? I don't think these registers are the same for every ATI card. It may be only 34xx Series radeonhd disables vga io, so no acpi methods that need access to the card will work when it's loaded. (In reply to comment #32) > Created an attachment (id=19281) [details] > Script for controlling backlight level Just wanted to confirm: it works well with HD 3400 and radeon/radeonhd on Vaio VGN-FW21E Update: under 2.6.37 kernel /sys/class/backlight/acpi_video0/brightness interface is introduced. Usage: https://github.com/lidel/dotfiles/blob/master/bin/vaio-fw21e-backlight2.sh |