Jump to content

[Guide] Lenovo Thinkpad L420 with El Capitan


kosakgroove
 Share

33 posts in this topic

Recommended Posts

Hello fellow Hackintoshers :D

 

I come to present my full guide on how to install Mac OS X 10.11 El Capitan on any Lenovo Thinkpad L420. I understand this is not a highly popular laptop outside corporations, I don’t even know if it was ever sold to the general public, so I guess this post will help me know that hahah anyway a friend of mine gave me two of them, one with i5 another with i3. This tutorial applies to any of those models. It should also apply to older versions of Mac OS X all the way until Snow Leopard (little modifications required as well as appropriate kexts)

 

First, screenshot proof of beautiful functionality

 

post-1517295-0-18038500-1484761583_thumb.png

 

What is working

WiFi , Bluetooth, Airdrop (Wifi replaced with Atheros AR9285)

Full QE/CI acceleration with integrated Intel HD3000 graphics

Trackpad with 1 finger , 2 finger and 3 finger gestures

keyboard as well as function keys (brightness, volume)

Battery percentage

Sleep, Shutdown and Reboot

Sound working on ALC269 mobile

DVD Drive

DisplayPort audio and video

VGA out

USB 3.0 ExpressCard (Renesas)

iMessage and Facetime

Recovery Partition

 

What is not working

You tell me :P

 

 

Install bootloader (Clover) to El Capitan USB install media

 

You should select your USB in the Clover installer and then hit “Customize”

Select the next options:

 

Install Clover in the ESP

Install boot0ss in MBR

Clover EFI 64bits SATA

CSMVideoDxe-64

EmuVariableUEFI-64

OsxAptioFix2Drv-64

Fat64

 

 

 

Configuring the bootloader

 

After installation is complete, the EFI partition we want to configure will already be mounted, so we proceed to open it and do the following

Install HFSPlus.efi and NTFS.efi in drivers64UEFI folder and remove VboxHFS.efiOpen the folder /EFI/Clover/kexts and delete all the folders starting by 10 and leave only the “other” folderIn the above mentioned “other” folder place the kexts that I will quote next (you can download the ones attached to the post, but I always recommend the latest versions) :

 

ACPIBatteryManager.kext

AppleALC.kext

BroadcomBluetooth.kext

CodecCommander.kext

DisableTurboBoostBattery.kext

FakePCIID_XHCIMux.kext

FakePCIID.kext

FakeSMC, HWInfo, IntelCPUMonitor (HwSensors3 from Slice)

GenericUSBXHCI.kext (only if you use an USB3.0 ExpressCard)

IntelBacklight.kext

RealtekRTL8111.kext

toledaARPT.kext (if you use Atheros AR9285)

USBInjectAll.kext

VoodooPS2Controller.kext ( tluck's version )

 

 

kextpack Lenovo L420 .zip

 

 

After all the kexts are in the correct folder you should tweak your config.plist as follows, I recommend using Clover Configurator

 

post-1517295-0-78487600-1484761755_thumb.png

 

post-1517295-0-54557300-1484761781_thumb.png

 

post-1517295-0-55146900-1484761796_thumb.png

 

post-1517295-0-78851600-1484761823_thumb.png

 

post-1517295-0-97817300-1484761841_thumb.png

 

post-1517295-0-53081400-1484761857_thumb.png

 

post-1517295-0-66999300-1484761882_thumb.png

 

post-1517295-0-88961000-1484761890_thumb.png

 

post-1517295-0-56500900-1484761900_thumb.png

 

post-1517295-0-29411100-1484761918_thumb.png

 

post-1517295-0-05800100-1484761927_thumb.png

 

 

Lenovo mostly whitelist the Wifi cards on their laptops (and some desktops) so you will have to use a custom BIOS for this. There is one here luckily.

https://app.box.com/s/j4fffsagyzlohxmnvq6t

 

If you need me to explain how to flash it then you shouldn’t really be Hackintoshing in the first place.

After you have flashed the BIOS make sure you set the SATA controller to AHCI. You should be able to boot from the Clover USB and install Mac OS X

Remember to use a GUID partition scheme for the drive you will use. Recovery partition should be generated automatically by the OS X installer.

 

Enjoy your new HackBook :D

 

PS: DSDT and SSDT patches tutorial for this specific laptop are on their way

  • Like 5
  • Thanks 1
Link to comment
Share on other sites

In order to get everything working properly , follow these guidelines for ACPI tables patching. Firstly, press F4 at Clover GUI in order to dump the native ACPI tables. You will most probably get a crash, a red screen full of weird black numbers and strange symbols, do not worry, just force shutdown. At the next boot if you look in /EFI/Clover/ACPI/origin you should have a bunch of files.

After getting MaciASL and acpica tools from RehabMan (always updated) and installing them, and adding rehabman’s laptop dsdt patch repository, which is this:

 

https://github.com/RehabMan/Laptop-DSDT-Patch

 

Delete all files except DSDT, SSDT-0 and SSDT-1 in /EFI/Clover/ACPI/origin

 

You should decompile the DSDT , SSDT-0 and SSDT-1 using the following commands

cd /path/to/your/filesiasl -da -dl *.aml
After obtaining the .dsl files you should open them and check for errors.

The only error you will find will be in one of the SSDTs and it can be fixed using the Remove _PSS placeholders patch to fix that SSDT that only contains info about the CPU and is full of “Package (0x06)”

When your files are nice and clean and in dsl format you can happily apply the following patches to DSDT

 

 

Hit Command + F and type GFX0, then in replace type IGPU and then hit ALL

Use the patch "DTGP" (provided below)

Use the patch "Fix _WAK Arg0 v2"

Use the patch "HPET Fix"

Use the patch "SMBUS Fix"

Use the patch "IRQ Fix"

Use the patch "RTC Fix"

Use the patch "OS Check Fix"

Use the patch "Fix Mutex with non-zero SyncLevel"

Use the patch "Add IMEI"

Use the patch “6 Series USB”

Use the patch "USB PRW 0x6D"

Use the patch "Igpu Brightness Fix"

Use the patch "Audio Layout id 3"

Use the patch "Kosakgroove L420 battery patch" (created by me, provided below)

 

For Brightness keys ( Q14 and Q15 in DSDT) replace your methods with mine

Method (_Q14, 0, NotSerialized)  // _Qxx: EC Query            {                Store (0x14, P80H)                If (^HKEY.MHKK (0x8000))                {                    ^HKEY.MHKQ (0x1010)                }                If (LGreaterEqual (OSYS, 0x07D6))                {                    If (IGDS)                    {                        Notify (^^^IGPU.DD02, 0x86)                        Sleep (0x50)                    }                    Else                    {                        Notify (^^^PEG0.VGA.LCD, 0x86)                    }                    UCMS (0x16)                }                ElseIf (IGDS)                {                    Store (UCMS (0x15), BRNS)                    Store (BRNS, Local0)                    If (LNotEqual (Local0, 0x0F))                    {                        Increment (Local0)                        Store (Local0, BRNS)                    }                    UCMS (0x16)                    BLCL ()                }                Else                {                    UCMS (0x04)                }                Notify (PS2K, 0x0406)            }            Method (_Q15, 0, NotSerialized)  // _Qxx: EC Query            {                Store (0x15, P80H)                If (^HKEY.MHKK (0x00010000))                {                    ^HKEY.MHKQ (0x1011)                }                If (LGreaterEqual (OSYS, 0x07D6))                {                    If (IGDS)                    {                        Notify (^^^IGPU.DD02, 0x87)                        Sleep (0x50)                    }                    Else                    {                        Notify (^^^PEG0.VGA.LCD, 0x87)                    }                    UCMS (0x16)                }                ElseIf (IGDS)                {                    If (VCDB)                    {                        Store (Zero, VCDB)                        Store (UCMS (0x15), BRNS)                        UCMS (0x16)                        BLCL ()                    }                    Else                    {                        Store (UCMS (0x15), BRNS)                        Store (BRNS, Local0)                        If (Local0)                        {                            Decrement (Local0)                            Store (Local0, BRNS)                        }                        UCMS (0x16)                        BLCL ()                    }                }                Else                {                    UCMS (0x05)                }                Notify (PS2K, 0x0405)            }
Little bonus, since the ThinkVantage key does absolutely nothing, I patched the DSDT so that when you hit that key, the fans will remain at 100% speed all the time. Hit it again and they go back to auto mode :D Cool Right? Replace your _Q19 method with mine
Method (_Q19, 0, NotSerialized)  // _Qxx: EC Query            {                Name (FANS, One)                Store (HFSP, FANS)                XOr (FANS, 0x80, Local0)                If (Local0)                {                    Store (0x80, HFSP)                }                Else                {                    Store (0x07, HFSP)                }            }
DTGP patch
into method label DTGP remove_entry;into definitionblock code_regex . insertbeginMethod (DTGP, 5, NotSerialized)\n{\n    If (LEqual (Arg0, Buffer (0x10)\n            {\n                /* 0000 */    0xC6, 0xB7, 0xB5, 0xA0, 0x18, 0x13, 0x1C, 0x44, \n                /* 0008 */    0xB0, 0xC9, 0xFE, 0x69, 0x5E, 0xAF, 0x94, 0x9B\n            }))\n    {\n        If (LEqual (Arg1, One))\n        {\n            If (LEqual (Arg2, Zero))\n            {\n                Store (Buffer (One)\n                    {\n                        0x03\n                    }, Arg4)\n                Return (One)\n            }\n            If (LEqual (Arg2, One))\n            {\n                Return (One)\n            }\n        }\n    }\n    Store (Buffer (One)\n        {\n            0x00\n        }, Arg4)\n    Return (Zero)\n}end
My Battery patch
#Maintained by: RehabMan for: Laptop Patches#battery_Lenovo-L420.txt# Created by kosakgroove 2016-12-02.  Some additions/fixes by RehabMan# Works for:#   Lenovo L420into method label B1B2 remove_entry;into definitionblock code_regex . insertbeginMethod (B1B2, 2, NotSerialized) { Return(Or(Arg0, ShiftLeft(Arg1, 8))) }\nend;into method label B1B4 remove_entry;into definitionblock code_regex . insertbeginMethod (B1B4, 4, NotSerialized)\n{\n    Store(Arg3, Local0)\n    Or(Arg2, ShiftLeft(Local0, 8), Local0)\n    Or(Arg1, ShiftLeft(Local0, 8), Local0)\n    Or(Arg0, ShiftLeft(Local0, 8), Local0)\n    Return(Local0)\n}\nend;into device label EC code_regex BATD,\s+16, replace_matched begin ATD0,8,ATD1,8, end;into device label EC code_regex SMW0,\s+16 replace_matched begin MW00,8,MW01,8 end;into device label EC code_regex SBRC,\s+16, replace_matched begin BR00,8,BR01,8, end;into device label EC code_regex SBFC,\s+16, replace_matched begin BF00,8,BF01,8, end;into device label EC code_regex SBVO,\s+16, replace_matched begin BV00,8,BV01,8, end;into device label EC code_regex SBSN,\s+16 replace_matched begin SN00,8,SN01,8 end;into device label EC code_regex SBDC,\s+16, replace_matched begin DC00,8,DC01,8, end;into device label EC code_regex SBDV,\s+16, replace_matched begin DV00,8,DV01,8, end;into device label EC code_regex SBAE,\s+16, replace_matched begin BA00,8,BA01,8, end;into device label EC code_regex SBAF,\s+16, replace_matched begin BB00,8,BB01,8, end;into device label EC code_regex SBBS,\s+16, replace_matched begin BD00,8,BD01,8, end;into device label EC code_regex SBMD,\s+16, replace_matched begin SB00,8,SB01,8, end;into device label EC code_regex SBCC,\s+16, replace_matched begin CC00,8,CC01,8, end;into device label EC code_regex SBOM,\s+16, replace_matched begin OM00,8,OM01,8, end;into device label EC code_regex SBSI,\s+16, replace_matched begin SI00,8,SI01,8, end;into device label EC code_regex SBDT,\s+16, replace_matched begin DT00,8,DT01,8, end;into device label EC code_regex SBAC,\s+16, replace_matched begin AC00,8,AC01,8, end;into method label SELE code_regex \(BATD, replaceall_matched begin (B1B2(ATD0,ATD1), end;into method label SMRD code_regex \(SMW0, replaceall_matched begin (B1B2(MW00,MW01), end;into method label SMWR code_regex \(\^PCI0\.LPCB\.EC\.SMW0, replaceall_matched begin (B1B2(^PCI0.LPCB.EC.MW00,^PCI0.LPCB.EC.MW01), end;into method label GBST code_regex \(\^PCI0\.LPCB\.EC\.SBRC, replaceall_matched begin (B1B2(^PCI0.LPCB.EC.BR00,^PCI0.LPCB.EC.BR01), end;into method label GBIF code_regex \(\^PCI0\.LPCB\.EC\.SBFC, replaceall_matched begin (B1B2(^PCI0.LPCB.EC.BF00,^PCI0.LPCB.EC.BF01), end;into method label GBST code_regex \(\^PCI0\.LPCB\.EC\.SBVO, replaceall_matched begin (B1B2(^PCI0.LPCB.EC.BV00,^PCI0.LPCB.EC.BV01), end;into method label GBIF code_regex \(\^PCI0\.LPCB\.EC\.SBSN, replaceall_matched begin (B1B2(^PCI0.LPCB.EC.SN00,^PCI0.LPCB.EC.SN01), end;into method label GBIF code_regex \(\^PCI0\.LPCB\.EC\.SBDC, replaceall_matched begin (B1B2(^PCI0.LPCB.EC.DC00,^PCI0.LPCB.EC.DC01), end;into method label GBIF code_regex \(\^PCI0\.LPCB\.EC\.SBDV, replaceall_matched begin (B1B2(^PCI0.LPCB.EC.DV00,^PCI0.LPCB.EC.DV01), end;into method label GBST code_regex \(\^PCI0\.LPCB\.EC\.SBAC, replaceall_matched begin (B1B2(^PCI0.LPCB.EC.AC00,^PCI0.LPCB.EC.AC01), end;into device label EC code_regex SBCH,\s+32 replace_matched begin SH00,8,SH01,8,SH02,8,SH03,8, end;into method label GBIF code_regex \(\^PCI0\.LPCB\.EC\.SBCH, replaceall_matched begin (B1B4(^PCI0.LPCB.EC.SH00,^PCI0.LPCB.EC.SH01,^PCI0.LPCB.EC.SH02,^PCI0.LPCB.EC.SH03), end;into method label SMWR code_regex Store\s\(Arg3,\sSMW0\) replaceall_matched begin Store (Arg3,MW00) Store(ShiftRight(Arg3,8),MW01)  end;into method label RE1B parent_label EC remove_entry;into method label RXCB parent_label EC remove_entry;into device label EC insertbeginMethod (RE1B, 1, NotSerialized)\n// Arg0 - offset in bytes from zero-based EC\n{\n    OperationRegion(ERAM, EmbeddedControl, Arg0, 1)\n    Field(ERAM, ByteAcc, NoLock, Preserve) { BYTE, 8 }\n    Return(BYTE)\n}\nMethod (RXCB, 2, Serialized)\n// Arg0 - offset in bytes from zero-based EC\n// Arg1 - size of buffer in bits\n{\n    ShiftRight(Arg1, 3, Arg1)\n    Name(TEMP, Buffer(Arg1) { })\n    Add(Arg0, Arg1, Arg1)\n    Store(0, Local0)\n    While (LLess(Arg0, Arg1))\n    {\n        Store(RE1B(Arg0), Index(TEMP, Local0))\n        Increment(Arg0)\n        Increment(Local0)\n    }\n    Return(TEMP)\n}\nend;into device label EC code_regex (SBMN,)\s+(128) replace_matched begin BMNX,%2,//%1%2 end;into device label EC code_regex (SBDN,)\s+(128) replace_matched begin BDNX,%2,//%1%2 end;into device label EC code_regex (FLD0,)\s+(64) replace_matched begin FL0X,%2,//%1%2 end;into device label EC code_regex (FLD1,)\s+(128) replace_matched begin FL1X,%2,//%1%2 end;into device label EC code_regex (FLD2,)\s+(192) replace_matched begin FL2X,%2,//%1%2 end;into device label EC code_regex (FLD3,)\s+(256) replace_matched begin FL3X,%2,//%1%2 end;into device label EC code_regex (SMD0,)\s+(100) replace_matched begin SMDX,%2,//%1%2 end;into method label GBIF code_regex \(\^PCI0\.LPCB\.EC\.SBMN, replaceall_matched begin (^PCI0.LPCB.EC.RXCB(0xA0,128), end;into method label GBIF code_regex \(\^PCI0\.LPCB\.EC\.SBDN, replaceall_matched begin (^PCI0.LPCB.EC.RXCB(0xA0,128), end;into method label SMRD code_regex \(\FLD1, replaceall_matched begin (RXCB(0x54,128), end;into method label SMRD code_regex \(\FLD2, replaceall_matched begin (RXCB(0x54,192), end;into method label SMRD code_regex \(\FLD3, replaceall_matched begin (RXCB(0x54,256), end;into method label BFWL code_regex \(SMD0, replaceall_matched begin (RXCB(0x54,100), end;into method label WE1B parent_label EC remove_entry;into method label WXCB parent_label EC remove_entry;into device label EC insertbeginMethod (WE1B, 2, NotSerialized)\n{\n    OperationRegion(ERAM, EmbeddedControl, Arg0, 1)\n    Field(ERAM, ByteAcc, NoLock, Preserve) { BYTE, 8 }\n    Store(Arg1, BYTE)\n}\nMethod (WXCB, 3, Serialized)\n// Arg0 - offset in bytes from zero-based EC\n// Arg1 - size of buffer in bits\n// Arg2 - value to write\n{\n    ShiftRight(Add(Arg1,7), 3, Arg1)\n    Name(TEMP, Buffer(Arg1) { })\n    Store(Arg2, TEMP)\n    Add(Arg0, Arg1, Arg1)\n    Store(0, Local0)\n    While (LLess(Arg0, Arg1))\n    {\n        WE1B(Arg0, DerefOf(Index(TEMP, Local0)))\n        Increment(Arg0)\n        Increment(Local0)\n    }\n}\nend;# Calling WXCB method to write into SMDX (offset 0x54)into method label SMWR code_regex Store\s?\(Arg3,\s?\SMD0\) replaceall_matched begin WXCB (0x54,100,Arg3) end;
After all the ACPI tables are properly patched save them all and
cd /path/to/patched/tablesiasl *.dsl
After getting the resulting patched aml files, place them in /EFI/Clover/ACPI/patched for Clover to load it

Finally you will need to generate an SSDT using ssdtPRGen.sh

 

https://github.com/Piker-Alpha/ssdtPRGen.sh

 

After you have your DSDT, SSDT-0, SSDT-1 and SSDT (the one generated by the script) place them all together in /EFI/Clover/ACPI/patched and in the ACPI section of your config.plist make sure to "Drop OEM" tables and set the "Sorted Order"

 

post-1517295-0-57484800-1484776902_thumb.png

 

 

post-1517295-0-80476900-1484776200_thumb.png

 

Overall I would say this laptop is quite perfect for a Hackintosh , I use it for a few months and I love it, hope you do too.

Edited by kosakgroove
  • Like 4
Link to comment
Share on other sites

Thanks for the help, this is what made Display Port and VGA work

 

Number 1 - Kernel and Kext patches clover in order to fix VGA

Name: AppleIntelSNBGraphicsFB

Find: 010204001007000010070000050300000200000030000000020500000004000007000000030400000004000009000000040600000004000009000000

 

Replace:

010204001213000012130000050300000200000030000000020500000004000007000000030400000004000009000000060200001000000009000000

 

 

Number 2 - adding a DSM to the IGPU device in DSDT

Method (_DSM, 4, NotSerialized)  // _DSM: Device-Specific Method                {                    Store (Package (0x06)                        {                            "hda-gfx",                             Buffer (0x0A)                            {                                "onboard-1"                            },                             "model",                             Buffer (0x17)                            {                                "Intel HD Graphics 3000"                            },                             "built-in",                             Buffer (One)                            {                                 0x00                                                                       }                        }, Local0)                    DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0))                    Return (Local0)                }
Number 3 - Adding HDMI device to DSDT
Device (HDMI)            {                Name (_ADR, One)  // _ADR: Address                Method (_DSM, 4, NotSerialized)  // _DSM: Device-Specific Method                {                    Store (Package (0x02)                        {                            "hda-gfx",                             Buffer (0x0A)                            {                                "onboard-1"                            }                        }, Local0)                    DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0))                    Return (Local0)                }            }
This Hack is functioning 100% in Mac OS X and certainly it performs so much better than in Windows

Enjoy our fully functional Hack :yes:

  • Like 2
Link to comment
Share on other sites

cool - an addition to the Thinkpad x420 family! Certain this model has proven to be a great hack platform. Sierra works great on it too. interesting that the Audio and Ethernet are RealTek (vs Conexant and Intel). but every thing else looks to be about the same. if i ever needed to do it again, i certainly would use the patchmatic and hotpatch method for DSDT/SSDT for this box.

 

anyway, feel free to reference or leverage the T420 guide as needed - as this box is certainly very similar. I can add a link to this guide from the T420 Guide.

 

- The VoodooPS2 for T420 may have some trackpad settings that may be of value.

 

- not that matters that much - but your kext pack has some things that I wondered about? 

 

USB - seems these may not be needed since it just it only has USB 2 and no XHC (AFAIK)

USBInjectall  ?

PCIID XHCIMux ?

Disableturboboostbattery ?

  • Like 1
Link to comment
Share on other sites

cool - an addition to the Thinkpad x420 family! Certain this model has proven to be a great hack platform. Sierra works great on it too. interesting that the Audio and Ethernet are RealTek (vs Conexant and Intel). but every thing else looks to be about the same. if i ever needed to do it again, i certainly would use the patchmatic and hotpatch method for DSDT/SSDT for this box.

 

anyway, feel free to reference or leverage the T420 guide as needed - as this box is certainly very similar. I can add a link to this guide from the T420 Guide.

 

- The VoodooPS2 for T420 may have some trackpad settings that may be of value.

 

- not that matters that much - but your kext pack has some things that I wondered about? 

 

USB - seems these may not be needed since it just it only has USB 2 and no XHC (AFAIK)

USBInjectall  ?

PCIID XHCIMux ?

Disableturboboostbattery ?

It would be a pleasure to have a reference in your great guide, I am currently trying your VoodooPS2 and its great :P i will edit the guide to reference it. I am using a USB3.0 card so i need GenericUsB XhciMux and Injectall for it to work properly

I have tried sierra as well but it doesnt run nearly as good as Capitan, maybe the next OSX version will be better hihihi

Link to comment
Share on other sites

I followed all the steps in the first post, but when I try to load the El Captian installer it fails with: p state stepper error 18 at step 2 in context 2

Does anyone know why?

 

Thanks in advance,

Alec

Try "DropOEM=True" first as Sandy Bridge CPUs with Turbo Boost enabled won't pass the AICPUPM check without a proper ssdt.aml from PikeRAlpha's script

  • Like 1
Link to comment
Share on other sites

Try "DropOEM=True" first as Sandy Bridge CPUs with Turbo Boost enabled won't pass the AICPUPM check without a proper ssdt.aml from PikeRAlpha's script

Mine didnt have this issue but i suppose it can help in some cases , nice tip :D

 

 

Sent from my iPhone using Tapatalk

Link to comment
Share on other sites

@Alec M

 

make sure you generate P/C states with Clover (or ssdt-pr script).

you may want to check out the config.plist in the T420 zip for another reference for valid options.

 

Note: it is even possible to boot without any custom DSDT/SSDT with the right config.plist. anyway here is snippet of config.plist from ACPI that may help

<key>DropTables</key>
  <array>
   <dict>
    <key>Signature</key>
    <string>SSDT</string>
    <key>TableId</key>
    <string>Cpu0Ist</string>
   </dict>
   <dict>
    <key>Signature</key>
    <string>SSDT</string>
    <key>TableId</key>
    <string>CpuPm</string>
   </dict>
   <dict>
    <key>Signature</key>
    <string>DMAR</string>
   </dict>
  </array>
  <key>ResetAddress</key>
  <string>0x0CF9</string>
  <key>ResetValue</key>
  <string>0x06</string>
  <key>SSDT</key>
  <dict>
   <key>Generate</key>
   <dict>
    <key>CStates</key>
    <true/>
    <key>PStates</key>
    <true/>
   </dict>
  </dict>
  • Like 1
Link to comment
Share on other sites

@kosakgroove

 

When I'm trying to apply the DTGP DSDT patch through MaciASL, it won't apply it because it thinks that there is nothing to change.

 

Is this fixable?

Dtgp is one of the first patches to apply, maybe thats your problem

 

 

Sent from my iPhone using Tapatalk

Link to comment
Share on other sites

I tried it before patching anything, and after patching everything, with no luck.

DTGP is so generic and widespread, maybe try another version if the patch from somewhere else, it should work. Worst case you can always use the AddDTGP option in Clover

 

 

Sent from my iPhone using Tapatalk

Link to comment
Share on other sites

@kosakgroove

 

I'm just wondering, but what OS check patch did you use?

Also, did you use the HD3000/HD4000 graphics patch, and not any of the other igpu brightness fixes?

I used the generic brightness fix, named "Brightness Fix" nothing else.

Worth noting that this method currently not working well with Sierra

Finally upgraded the Thinkpad L420 to Mac OS Sierra

Everything is working even better than in El Capitan. Only issue for now is that brightness keys are not fully functional, and brightness slider in System Preferences is unresponsive. Brightness changes only using Brightness Menu Bar app from App Store.

 

post-1517295-0-50089600-1485796329_thumb.png

 

Everything is working cool with Sierra, 

I am working on ditching VoodooPS2 for ApplePS2SmartTouchpad and it just needs a bit more optimization and it will be ready for you guys to enjoy. It works every boot unlike VoodooPS2, although after sleep it stops working, and it might cause you a kernel panic. In case you feel like trying, here is my modded version of it.

All gestures working as well as scrolling

 :D

 

ApplePS2SmartTouchPad kosakgroove.kext.zip

  • Like 1
Link to comment
Share on other sites

I used the generic brightness fix, named "Brightness Fix" nothing else.

I tried that, but when I changed the brightness, it wouldn't actually change the display's brightness.

Also, I can't see the volume control at the top of the screen, or the Bluetooth control.

Sound and Bluetooth are working though.

Link to comment
Share on other sites

It is all in System Preferences buddy :D

 

post-1517295-0-32852700-1485858025_thumb.png

 

post-1517295-0-74219800-1485858036_thumb.png

 

 


I tried that, but when I changed the brightness, it wouldn't actually change the display's brightness.

Also, I can't see the volume control at the top of the screen, or the Bluetooth control.

Sound and Bluetooth are working though.

Are you using IntelBacklight kext?

Link to comment
Share on other sites

for brightness:

 

Note: at the time of this post, IntelBacklight will not work for macOS past 10.12.3 (10.12.4PB1 breaks something). 

the brightness slider should work with or without this kext - IntelBacklight.kext makes a smoother and fuller range

the only thing needed in the DSDT is PNLF that looks like this. ( if you use ACPIBacklight more extensive DSDT mods are needed.)

 

Device (PNLF)
                {
                    Name (_ADR, Zero)  // _ADR: Address
                    Name (_HID, EisaId ("APP0002"))  // _HID: Hardware ID
                    Name (_CID, "backlight")  // _CID: Compatible ID
                    Name (_UID, 0x0A)  // _UID: Unique ID
                    Name (_STA, 0x0B)  // _STA: Status

                }

  • Like 1
Link to comment
Share on other sites

I have a weird bug I have noticed, and it only happens when Mac OS X is installed in the hard drive.

I get a message 2 out of 3 times I boot or restart the computer... 

 

0251- CMOS bad checksum error - Default configuration used

 

After I press Esc then the computer resets the BIOS and successfully boots Clover from the GUID disk.

 

I already changed the CMOS battery for a brand new one and the error kept popping up. Then I installed the latest original BIOS from Lenovo and the error continued there. So I flashed again the custom BIOS mentioned in the first post. Then  I inserted a HDD with Linux installed, and after like 20 boots I noticed the error was not there, even with the custom BIOS.

 

Then I tried with Windows, and the error also was not there. So I thought maybe the bug is gone, and proceeded to reinstall Mac OS X with Clover and yes, the error came back....

 

I figured maybe using the Apple RTC fix in Clover would help, but it doesn't

 

We are left with two explanations... This Lenovo does not like to have a GUID hard disk as a boot device or it is Mac OS X that randomly writes something to the BIOS or EFI partition and corrupts that boot sector, giving the checksum error. Weird thing is that it doesn't happen every boot, that is what really boggles my mind.

 

Is there anyone who could help debug this issue???

 

Link to comment
Share on other sites

there are some others reporting CMOS errors on the latest Clover. a solution could be to compile Clover say 3994 with older edk2 like 23701

This has been happening AFAIK since Clover 32xx

Has anyone had any success fixing this issue?

Link to comment
Share on other sites

 Share

×
×
  • Create New...