TimeWalker75a Posted September 26, 2013 Share Posted September 26, 2013 Guys, mind testing this please? https://www.dropbox.com/s/mgz6jvcmx8eq6v5/T420-4236AT9.zip Please remove your AppleACPIPlatform roll back (which comes from 10.6.2, are you kidding me?) and install the one enclosed in the archive, it's a genuine one from 10.8.5. I've patched your EC RAM registers to support new ACPI interpreter and thus you no longer require the rollback for battery to work properly. This will make the test in regards to shutdown more cleaner! I basically split your registers into 8 bit ones down from 16, 32 and 128. Then rejoined them by appropriate methods so that the integrity would remain. Only those registers that are actually used in ACPI were changed: Field (ECOR, ByteAcc, NoLock, Preserve) { Offset (0xA0), SBR1, 8, SBR2, 8, SBF1, 8, SBF2, 8, SBAE, 16, SBRS, 16, SBA1, 8, SBA2, 8, SBV1, 8, SBV2, 8, SBAF, 16, SBBS, 16 } Field (ECOR, ByteAcc, NoLock, Preserve) { Offset (0xA0), SBB1, 8, SBB2, 8, SBMD, 16, SBCC, 16 } Field (ECOR, ByteAcc, NoLock, Preserve) { Offset (0xA0), SBD1, 8, SBD2, 8, SBDA, 8, SBDB, 8, SBOM, 16, SBSI, 16, SBDT, 16, SBS1, 8, SBS2, 8 } Field (ECOR, ByteAcc, NoLock, Preserve) { Offset (0xA0), SBC1, 8, SBC2, 8, SBC3, 8, SBC4, 8 } Field (ECOR, ByteAcc, NoLock, Preserve) { Offset (0xA0), SBM1, 32, SBM2, 32, SBM3, 32, SBM4, 32 } Method (B1B2, 2, NotSerialized) { Or (ShiftLeft (Arg1, 0x08), Arg0, Local0) Return (Local0) } Method (B1B4, 4, NotSerialized) { Or (ShiftLeft (Arg1, 0x08), Arg0, Local0) Or (ShiftLeft (Arg2, 0x10), Local0, Local0) Or (ShiftLeft (Arg3, 0x18), Local0, Local0) Return (Local0) } Method (L1L4, 4, NotSerialized) { Or (ShiftLeft (Arg1, 0x20), Arg0, Local0) Or (ShiftLeft (Arg2, 0x40), Local0, Local0) Or (ShiftLeft (Arg3, 0x60), Local0, Local0) Return (Local0) } 1 Link to comment Share on other sites More sharing options...
tluck Posted September 26, 2013 Share Posted September 26, 2013 @TimeWalker75a well - my latest bundle posted had us using ErmaC's patch for AppleACPIPlatform (v1.7) (10.8.4 i believe?) + Rehabmans battery stuff. i switched over this newer version ACPI when i found that rehabmans AppleSmartBatteryManager was found to work with DSDT unchanged. previously yes was using a very old snow leopard 1.3.5 ACPIPlatform since VoodooBattery required it. but sure, i will implement/test your package. hang on. Link to comment Share on other sites More sharing options...
Tetonne Posted September 26, 2013 Share Posted September 26, 2013 Guys, mind testing this please? https://www.dropbox.com/s/mgz6jvcmx8eq6v5/T420-4236AT9.zip Please remove your AppleACPIPlatform roll back (which comes from 10.6.2, are you kidding me?) and install the one enclosed in the archive, it's a genuine one from 10.8.5. I've patched your EC RAM registers to support new ACPI interpreter and thus you no longer require the rollback for battery to work properly. This will make the test in regards to shutdown more cleaner! I basically split your registers into 8 bit ones down from 16, 32 and 128. Then rejoined them by appropriate methods so that the integrity would remain. Only those registers that are actually used in ACPI were changed: Field (ECOR, ByteAcc, NoLock, Preserve) { Offset (0xA0), SBR1, 8, SBR2, 8, SBF1, 8, SBF2, 8, SBAE, 16, SBRS, 16, SBA1, 8, SBA2, 8, SBV1, 8, SBV2, 8, SBAF, 16, SBBS, 16 } Field (ECOR, ByteAcc, NoLock, Preserve) { Offset (0xA0), SBB1, 8, SBB2, 8, SBMD, 16, SBCC, 16 } Field (ECOR, ByteAcc, NoLock, Preserve) { Offset (0xA0), SBD1, 8, SBD2, 8, SBDA, 8, SBDB, 8, SBOM, 16, SBSI, 16, SBDT, 16, SBS1, 8, SBS2, 8 } Field (ECOR, ByteAcc, NoLock, Preserve) { Offset (0xA0), SBC1, 8, SBC2, 8, SBC3, 8, SBC4, 8 } Field (ECOR, ByteAcc, NoLock, Preserve) { Offset (0xA0), SBM1, 32, SBM2, 32, SBM3, 32, SBM4, 32 } Method (B1B2, 2, NotSerialized) { Or (ShiftLeft (Arg1, 0x08), Arg0, Local0) Return (Local0) } Method (B1B4, 4, NotSerialized) { Or (ShiftLeft (Arg1, 0x08), Arg0, Local0) Or (ShiftLeft (Arg2, 0x10), Local0, Local0) Or (ShiftLeft (Arg3, 0x18), Local0, Local0) Return (Local0) } Method (L1L4, 4, NotSerialized) { Or (ShiftLeft (Arg1, 0x20), Arg0, Local0) Or (ShiftLeft (Arg2, 0x40), Local0, Local0) Or (ShiftLeft (Arg3, 0x60), Local0, Local0) Return (Local0) } Thanks à lot Report : Boot error smcreadkeyaction errorr Fall back error to old smc :-( Link to comment Share on other sites More sharing options...
TimeWalker75a Posted September 26, 2013 Share Posted September 26, 2013 Thanks à lot Report : Boot error smcreadkeyaction errorr Fall back error to old smc :-( Has nothing to do with what you were testing. If you want this error gone patch AppleSMC binary 4885c075 10488d3d 7d50 to 4885c0eb 6e488d3d 7d50, this will make it fall back to old mode right away without trying the new one. This error is even present on genuine Apple hardware. Link to comment Share on other sites More sharing options...
TimeWalker75a Posted September 26, 2013 Share Posted September 26, 2013 Original battery kext was never supposed to work on hackintos. Disable extended bif and extra bif flags inside info.plistt of RehabMan's kext and it should work, I'm using it myself. Link to comment Share on other sites More sharing options...
TimeWalker75a Posted September 27, 2013 Share Posted September 27, 2013 I might have messed up the registers, will take a look. Link to comment Share on other sites More sharing options...
TimeWalker75a Posted September 27, 2013 Share Posted September 27, 2013 I actually fail to see what may have gone wrong. Could you post IOReg dump from Registry Explorer with AC cord connected? Link to comment Share on other sites More sharing options...
TimeWalker75a Posted September 27, 2013 Share Posted September 27, 2013 It seems _BIF is not properly parsed. The easiest way to debug would be to compile the debug version of the kext. Also I still see you haven't disabled the "UseExtraBatteryInformation" key .. your laptop doesn't have a register to store cycle count as far as I can see, so approximation has to happen.. Please install this: http://puu.sh/4BttQ.zip And see Console for errors.. Link to comment Share on other sites More sharing options...
TimeWalker75a Posted September 27, 2013 Share Posted September 27, 2013 Yeah, pretty much _BIF method fails to be evaluated.. gonna look into that. AppleSmartBatteryManager::getBatteryBIF called AppleSmartBatteryManager::getBatteryBIF: validateObject return 0x0 AppleSmartBatteryManager::getBatteryBIF: evaluateObject error 0xe00002bc Link to comment Share on other sites More sharing options...
TimeWalker75a Posted September 27, 2013 Share Posted September 27, 2013 Ok, i've simplified the thing for testing a little bit.. so lets see if it works: http://puu.sh/4BvBq.zip Method (GBIF, 3, NotSerialized) { Acquire (BATM, 0xFFFF) If (Arg2) { Store (B1B2 (SBB1, SBB2), Local7) ShiftRight (Local7, 0x0F, Local7) XOr (Local7, One, Index (Arg1, Zero)) // Power Units Store (B1B2 (SBD1, SBD2), Index (Arg1, One)) // Design Capacity Store (B1B2 (SBF1, SBF2), Index (Arg1, 0x02)) // Last Full Charge Capacity Store (B1B2 (SBDA, SBDB), Index (Arg1, 0x04)) // Design Voltage Divide (B1B2 (SBF1, SBF2), 0x14, Local2, Index (Arg1, 0x05)) // Design Capacity of Warning Divide (0x00030D40, B1B2 (SBDA, SBDB), Local2, Index (Arg1, 0x06)) // Design Capacity of Low Store (B1B2 (SBD1, SBD2), Index (Arg1, 0x09)) // Model Number Store (B1B2 (SBS1, SBS2), Local0) Name (SERN, Buffer (0x06) { " " }) Store (0x04, Local2) While (Local0) { Divide (Local0, 0x0A, Local1, Local0) Add (Local1, 0x30, Index (SERN, Local2)) Decrement (Local2) } Store (SERN, Index (Arg1, 0x0A)) // Serial Number Store (B1B4 (SBC1, SBC2, SBC3, SBC4), Index (Arg1, 0x0B)) // Battery Type Store (L1L4 (SBM1, SBM2, SBM3, SBM4), Index (Arg1, 0x0C)) // OEM Information } Else { Store (Ones, Index (Arg1, One)) Store (Zero, Index (Arg1, 0x05)) Store (Zero, Index (Arg1, 0x06)) Store (Ones, Index (Arg1, 0x02)) } Release (BATM) Return (Arg1) } Edit: ok I see the issue ... Store (SBDN, Index (Arg1, 0x09)) I forgot to split the register and mistakenly used design capacity register there!! Gonna fix that now! Edit2: done.. please give this a test - > http://puu.sh/4BvRa.zip Link to comment Share on other sites More sharing options...
TimeWalker75a Posted September 27, 2013 Share Posted September 27, 2013 What a stubborn piece of code.. let's try the simplified one, with model number registers properly coded in: http://puu.sh/4BxU3.zip If it fails to evaluate _BIF again we are just going brutal for sakes of testing - not using any registers what so ever, just defining values based on the screenshots you had shown. It's only for the sakes of testing whether the issue is inside the algo in general or it's register fault (my fault, hehe). http://puu.sh/4Byi2.zip If (Arg2) { Store (0x00, Index (Arg1, 0x00)) Store (0xb9a0, Index (Arg1, 0x01)) Store (0xa474, Index (Arg1, 0x02)) Store (0x2a30, Index (Arg1, 0x04)) Store (0x839, Index (Arg1, 0x05)) Store (0xc8, Index (Arg1, 0x06)) Store ("45N1001", Index (Arg1, 0x09)) Store ("17832", Index (Arg1, 0x0A)) Store ("LION", Index (Arg1, 0x0B)) Store ("SANYO", Index (Arg1, 0x0C)) } Link to comment Share on other sites More sharing options...
TimeWalker75a Posted September 27, 2013 Share Posted September 27, 2013 just compare two binaries and you'll see Link to comment Share on other sites More sharing options...
TimeWalker75a Posted September 27, 2013 Share Posted September 27, 2013 Ok, so it's register operations after all. I will look more thoroughly! While you are at it, can you check shutdown please? Link to comment Share on other sites More sharing options...
Tetonne Posted September 27, 2013 Share Posted September 27, 2013 If you want this error gone patch AppleSMC binary replace 4885c075 10488d3d 7d50 to 4885c0eb 6e488d3d 7d50, this will make it fall back to old mode right away without trying the new one. This error is even present on genuine Apple hardware. sorry could you please give more detail to do so i thought about add this in clover config KextsToPatch Find Replace but not sure tlucj surely understood but i did not and i would like to learn from what i read Link to comment Share on other sites More sharing options...
TimeWalker75a Posted September 27, 2013 Share Posted September 27, 2013 tluck, give this a shot.. I have avoided using L1L4 and B1B4 for now, let's see if plain 8 to 16 bit registers would work. http://puu.sh/4BCFp.zip sorry could you please give more detail to do so i thought about add this in clover config KextsToPatch Find Replace but not sure tlucj surely understood but i did not and i would like to learn from what i read Here you go: <key>KernelAndKextPatches</key> <dict> <key>Debug</key> <false/> <key>KextsToPatch</key> <array> <dict> <key>Comment</key> <string>Fall back to old SMC mode right away</string> <key>Name</key> <string>AppleSMC</string> <key>Find</key> <data>SIXAdRBIjT19UA==</data> <key>Replace</key> <data>SIXA625IjT19UA==</data> </dict> </array> </dict> 1 Link to comment Share on other sites More sharing options...
TimeWalker75a Posted September 27, 2013 Share Posted September 27, 2013 It is hard coded for sakes of testing, as I've said already. I've purposely replaced every B1B4 and L1L4 conversions with hardcoded strings to see if it ends up working. But I fail to see how this is possible that it is reporting current state as capacity of warning.. unless it reads the values from SBFC and dividing it by 0x14 ends up lower as the actual current capacity reported from _BST.. This Lenovo unit is a mess :S Can you jump to IRC for live chit chat ? /join irc.nspwn.com /query timewalker Link to comment Share on other sites More sharing options...
tluck Posted September 27, 2013 Share Posted September 27, 2013 ok. we have another break through of sorts. on top of the shutdown hang mixup, a further rewrite of the DSDT by TimeWalker75a has provided a way to eliminate the ACPIPlatform rollback - so we can have one less custom kext to deal with. Note: Rehabman updated and renamed AppleSmartBatteryManager to ACPIBatteryManager.kext so it does not conflict with the native one. anyway ... Huge thanks to Timewalker75a on helping making the T420 practically a perfect Hack! will repackage and post ASAP with new DSDT so hang on and wait if you have not upgraded to the bundle from yesterday. FakeSMC + Plugins VoodooPS2 ACPIBatteryManager $ kextstat |grep -v apple Index Refs Address Size Wired Name (Version) <Linked Against> 16 2 0xffffff7f8119f000 0x16000 0x16000 org.netkas.driver.FakeSMC (873) <9 7 5 4 3 1> 17 0 0xffffff7f811b5000 0x4000 0x4000 org.hwsensors.driver.CPUSensors (873) <16 7 5 4 3> 30 2 0xffffff7f80811000 0xe000 0xe000 org.rehabman.voodoo.driver.PS2Controller (1.8.8) <9 7 5 4 3 1> 32 0 0xffffff7f811bc000 0x6000 0x6000 org.hwsensors.driver.ACPISensors (873) <16 9 7 5 4 3> 35 0 0xffffff7f81d14000 0x6000 0x6000 org.rehabman.driver.AppleSmartBatteryManager (1.40) <9 4 3> 38 0 0xffffff7f80e72000 0x19000 0x19000 com.insanelymac.driver.AppleIntelE1000e (2.4.14) <37 10 5 4 3 1> 52 0 0xffffff7f80834000 0x5000 0x5000 org.rehabman.voodoo.driver.PS2Keyboard (1.8.8) <30 28 7 6 5 4 3 1> 53 0 0xffffff7f8081f000 0xb000 0xb000 org.rehabman.voodoo.driver.PS2Trackpad (1.8.8) <30 28 7 6 5 4 3 1> 1 Link to comment Share on other sites More sharing options...
TimeWalker75a Posted September 28, 2013 Share Posted September 28, 2013 Glad you have sorted it out. So, is the shutdown working? Link to comment Share on other sites More sharing options...
Tetonne Posted September 28, 2013 Share Posted September 28, 2013 my config with edid ID with DisplayVendorID-6af for tluck next pack my kexts and dsdt are the one provided by tluck huge thanks to TimeWalker75a last post s and obviously to tluck who was there to take TimeWalker75a advices DisplayVendorID-6af.zip Link to comment Share on other sites More sharing options...
tluck Posted September 29, 2013 Share Posted September 29, 2013 limited testing so far points toward goodness on dsdt shutdown fix. seems very consistent when i only have 1 disk. but i have an esata and usb3 PCI express. And these extra disks seem to introduce same old random problem. Link to comment Share on other sites More sharing options...
TimeWalker75a Posted September 29, 2013 Share Posted September 29, 2013 limited testing so far points toward goodness on dsdt shutdown fix. Good to know, hope it's fixed for good! What is the custom ssdt that you were referring to in Clover's thread that gives you more P-States on your i5? I'm wondering because I'm not really happy about how things are on my i3.. I get 8 11 15 19 and 22 (whilst the highest one should be 23, really). Care to share what was the origin of that ssdt or just the table itself? Link to comment Share on other sites More sharing options...
tluck Posted September 29, 2013 Share Posted September 29, 2013 verleihnix was the one who created the ssdt.aml table. I recall he may have used revo girls ssdtPRgen script? the ssdt.aml is in the clover bundle i posted in #397 . Link to comment Share on other sites More sharing options...
tluck Posted September 30, 2013 Share Posted September 30, 2013 just posted Clover b2165 for T420 at post #397 Update 29-Sep-2013 Revised DSDT (again!) for Shutdown hang (thanks to TimeWalker75a) for native AppleACPIPlatform kext - no need to rollback or patch this kext - use unmodified v1.8 from 10.8.5 Updated Clover to b2165 minor tweaks/refinements to config.plist (e.g. dont think darkwake is needed anymore) has 2 OEM configs - 1 for high-res and 1 for low-res Note: recommend use of ssdt.aml if it fits your cpu - seems to get a bit more out turbo mode (get 32x at times instead of 30x with just Clover Generate P/C states) Updated FakeSMCincludes modified ACPI/Plugin Info.plist to remove DISABLED features so FAN speed shows up in HWMonitor (with stock AppleACPIPlatform.kext ) 1 Link to comment Share on other sites More sharing options...
verleihnix Posted September 30, 2013 Share Posted September 30, 2013 verhleinix was the one who created the ssdt.aml table. I recall he may have used revo girls ssdtPRgen script? the ssdt.aml is in the clover bundle i posted in #397 . Hi tluck, the script is based on RevoGirl's script modified for i-core mobile processors found at tony's side. Mobile_ssdtPRGen.sh.zip 1 Link to comment Share on other sites More sharing options...
tluck Posted September 30, 2013 Share Posted September 30, 2013 Update - if you downloaded the zip bundle before now.... please redo it! I found a mistake in the DSDT. (re-)posted Clover b2165 for T420 at post #397 Update 30-Sep-2013 Revised DSDT (again!) for Shutdown hang (thanks to TimeWalker75a) for native AppleACPIPlatform kext - no need to rollback or patch this kext - use unmodified v1.8 from 10.8.5 Updated Clover to b2165 minor tweaks/refinements to config.plist (e.g. dont think darkwake is needed anymore) has 2 OEM configs - 1 for high-res and 1 for low-res Note: recommend use of ssdt.aml if it fits your cpu - seems to get a bit more out turbo mode (get 32x at times instead of 30x with just Clover Generate P/C states) Updated FakeSMCincludes modified ACPI/Plugin Info.plist to remove DISABLED features so FAN speed shows up in HWMonitor (with stock AppleACPIPlatform.kext ) 1 Link to comment Share on other sites More sharing options...
Recommended Posts