Bezel Buttons/DSDT Adentures Continued
A while ago I took a look at my DSDT. This was in response to a TX2500 user who said after he decompiled his DSDT and optimized it and recompiled it, it fixed his fan noise. Just like 67GTA told Red_Lion. I think that was on the TX2500 thread. So I decompiled my DSDT and recompiled it and got two warnings.
For the line # 4260 warning the fix was easy to locate. Several of the links 67GTA has to DSDT common errors and fixes sites show you how.
/home/username/dsdt.dsl 2902: And (CTRL, 0x1E)
Warning 1104 - Result is not used, operator has no effect ^
/home/username/dsdt.dsl 4260: Method (_Q16, 0, NotSerialized)
Warning 1086 - Not all control paths return a value ^ (_Q16)
ASL Input: /home/username/dsdt.dsl - 8501 lines, 294472 bytes, 4487 keywords
AML Output: dsdt.aml - 33822 bytes 856 named objects 3631 executable opcodes
Compilation complete. 0 Errors, 2 Warnings, 0 Remarks, 1248 Optimizations
You just need to add to the end:
Making it look like:
The line #2902 was more obscure. I found the fix on a Chinese site. So I'm not totally confident of it but it seemed to work. You just change 'And (CTRL, 0x1E)' to 'And (CTRL, 0x1E, CTRL)'. Now when I recompiled it I got:
Method (_Q16, 0, NotSerialized)
Store (QBBB, Local0)
If (LEqual (Local0, 0x03))
Notify (\_SB.MUBN, 0x02)
If (LEqual (Local0, 0x06))
Notify (\_SB.PIBN, 0x02)
If (LEqual (Local0, 0x12))
Notify (\_SB.LVBN, 0x02)
Store (0x04, \_SB.WMID.Z01C)
Store (0x00, \_SB.WMID.Z01D)
Notify (\_SB.WMID, 0x80)
Return (0x00) <--- added that line
Which seemed pretty sweet. But since things seemed OK I didn't actually take the next step and install the "optimized" DSDT. I couldn't see that it related to my thermals. And a little nervous about "bricking" my tablet I guess.
ASL Input: /home/username/dsdt.dsl - 8502 lines, 294512 bytes, 4488 keywords
AML Output: dsdt.aml - 33827 bytes 856 named objects 3632 executable opcodes
Compilation complete. 0 Errors, 0 Warnings, 0 Remarks, 1249 Optimizations
Remembering that Red_Lion said "bezel buttons parsing via PNP0C09 method _Q16" I took another look at my DSDT. Sure enough there it was, "_Q16", and lo and behold it was under PNP0C09, the Microsoft acpi-compatible embedded controller section. One of the very sections whose warning I had fixed.
Could this be the problem causing the disappearance of the two bezel buttons? I checked Red_Lion's DSDT and sure enough his TX2500 DSDT had the same error my TX2000 had, missing a line saying "Return (0x00)". And I'll bet the TX2z DSDT has the same error. Wow I thought, a possible eureka moment.
So I sucked it up and completed 67GTA's HOW TO and actually installed it and....
Nothing! The two bezel buttons still don't work. Can't detect anything. I guess I got carried away otherwise the TX2500 user would have mentioned the bezel buttons appearing. And I'm sure others have optimized their DSDT's also.
But maybe there is now a signal somewhere we could use? I could easily be looking at the wrong place or doing it wrong. So suggestions appreciated. As an aside "var/log/messages" says:
input: HP WMI hotkeys as /devices/virtual/input/input10