Jump to content
Kogen Mantis

Lenovo ThinkPad T420 with UEFI Only

4,586 posts in this topic

Recommended Posts

Hi, tluck,

 

thank your guideline,everything works perfect except VGA port for external monitor (DELL u2211h) does't work.

 

Steps &  Sign:

Power on  monitor.

Connect laptop with VGA port. //the monitor  led  turn greeen then turn yellow .(it means connection detected first. then without data sending from laptop)

 

I can confirm the function of the hardware should be ok. because  it works fine under  Windows 8.

 

Lenovo T420 (4180CTO) i7-2820QM    | HD 3000 only | 8GB | 1600x9000| 10.9.2 (Clover UEFI on T420 Guide)

Share this post


Link to post
Share on other sites
Advertisement

@verleihnix 

 

i would do this:

 

sudo rm -rf /System/Library/Extension/AppleHDA.kext

install AppleHDA.kext with Kext Utility.app

Bungo posted something interesting here http://www.insanelymac.com/forum/topic/296358-mavericks-1092-released/?p=2002345

 

in my case it looks quite similar. built-in in en0 and en1 is false and HDA is not loaded.

Share this post


Link to post
Share on other sites

@verleihnix - so did that fix your HDA? what device is your ethernet? mine is en0.

 

@plinux - well a few things.

1) i presume you are using the OEM config.plist with the kext patch for SNBGraphicsBuffer?

2) the VGA port works only when you restart with the monitor plugged in. it will not do a live detect like the DisplayPort.  and speaking of that,  I would be connecting that monitor by the DisplayPort (unless you are just trying to test the VGA port).

 

I bought 2 adapters -  

(1) DisplayPort to VGA adapter which will live detect a VGA 

and

(2) DisplayPort to HDMI - which allows me to attach to any LCD TV or other HDMI device (including audio)

Share this post


Link to post
Share on other sites

Hi tluck,

 

I hope my discovery ends the long time struggle against the UEFI sleep issue.

 

Please use MaciASL to open dsdt.dsl and dsdt.aml together and search _Y00. You will find the difference.

 

My solution is to turn off all iasl optimizations to compile dsdt.dsl.

 

I use "iasl -oa dsdt.dsl". Then use MaciASL to open dsdt.dsl and dsdt.aml again and search _Y00 to see the result.

 

My UEFI system can sleep now.

 

You can find the most recent iasl from the MaciASL/contents/MacOS folder.

 

I added some more info below.

 

Original version is here:

            Name (BUFA, ResourceTemplate ()
            {
                IRQ (Level, ActiveLow, Shared, _Y00)
                    {}
            })
            CreateWordField (BUFA, \_SB.LNKA._Y00._INT, IRA1)  // _INT: Interrupts

 

 

Optimized version is here:

            Name (BUFA, ResourceTemplate ()
            {
                IRQ (Level, ActiveLow, Shared,  )
                    {}
            })
            CreateWordField (BUFA, One, IRA1)

 

 

You will find _Y01, _Y02, ... are optimized.

 

 

I also test this method with 10.8.5 and it works too.

Edited by zhangqq

Share this post


Link to post
Share on other sites

@verleihnix - so did that fix your HDA? what device is your ethernet? mine is en0.

 

@plinux - well a few things.

1) i presume you are using the OEM config.plist with the kext patch for SNBGraphicsBuffer?

2) the VGA port works only when you restart with the monitor plugged in. it will not do a live detect like the DisplayPort.  and speaking of that,  I would be connecting that monitor by the DisplayPort (unless you are just trying to test the VGA port).

 

I bought 2 adapters -  

(1) DisplayPort to VGA adapter which will live detect a VGA 

and

(2) DisplayPort to HDMI - which allows me to attach to any LCD TV or other HDMI device (including audio)

 

Hi tluck,

 

thanks,

 

I will check the way you mentioned.

1> yes, i use the OEM config.plist instead. 

I already have one VGA cable.So I want to try if it works. Do i need replace the AppleIntelHDGraphicFB.kext (I'm not sure the kext name is right)?

the testing on VGA is for checking the function of system if it work with the external monitor .if the system works then will get  a DP cable.

Share this post


Link to post
Share on other sites

@verleihnix - so did that fix your HDA? what device is your ethernet? mine is en0.

 

 

I workaround/fixed it using device-properties string for Ethernet and HDEF in org.chameleon.Boot.plist.

 

It has something to do with update to 10.9.2. I verified this with a complete new install of 10.9.0 to 10.9.1 to 10.9.2.

First I tried to put built-in statements in dsdt but maybe I did it wrong or it won't work.

 

Maybe you can assist to try it with dsdt again.

Share this post


Link to post
Share on other sites

@verleihnix - weird. i don't recall any HDEF changes in my DSDT in a long time!  I take it you have your own custom DSDT. what are you asking? I did not understand your request. happy to help.

 

 

@zhanqq - interesting find. and its great you have a fix for sleep in your case. to me seems very odd that compiling unoptimized makes a difference. 

 

In my case, since I have been on 10.9.2 and using recent clover 2636 i switched back to using UEFI boot (versus the MBR boot workaround). And it has working very well! i also started using some of the newer clover dsdt patches too. (was curious if i could boot without DSDT and use just clover to create the DSDT - worked by the way)  but not sure how much that fixed any of the UEFI problems....  but certainly can't hurt IMO. 

 

bottom line:  many of the previous UEFI quirks seem to be gone for me now.  it can sleep/wake fine - it does not go off into zombie land anymore when trying to sleep. the mute button works etc. i have not done a lot of testing yet so time will tell. But wow clover boots in 5 seconds for me very fast.

 

---  Notes:

 

 _Y00, _Y01, _Y02 etc are not set anywhere in the dsdt with so the optimization is that theses variables are zero or null i.e. no value set.

 

so these calls sould be the same:

 

IRQ (Level, ActiveLow, Shared, _Y00)

IRQ (Level, ActiveLow, Shared, )

 

from this doc: http://www.acpi.info/DOWNLOADS/ACPI_5_Errata%20A.pdf

 

19.5.63 IRQ (Interrupt Resource Descriptor Macro) Syntax 

IRQ (EdgeLevel, ActiveLevel, Shared, DescriptorName) {InterruptList} => Buffer 

EdgeLevel describes whether the interrupt is edge triggered (Edge) or level triggered (Level). The field DescriptorName. _HE is automatically created to refer to this portion of the resource descriptor, where ‘1’ is Edge and ActiveHigh and ‘0’ is Level and ActiveLow.

ActiveLevel describes whether the interrupt is active-high (ActiveHigh) or active-low (ActiveLow). The field DescriptorName. _LL is automatically created to refer to this portion of the resource descriptor, where ‘1’ is Edge and ActiveHigh and ‘0’ is Level and ActiveLow.

Shared describes whether the interrupt can be shared with other devices (Shared) or not (Exclusive), and whether it is capable of waking the system from a low-power idle or system sleep state (SharedAndWake or ExclusiveAndWake). The field DescriptorName. _SHR is automatically created to refer to this portion of the resource descriptor, where ‘1’ is Shared and ‘0’ is Exclusive. If nothing is specified, then Exclusive is assumed.

DescriptorName is an optional argument that specifies a name for an integer constant that will be created in the current scope that contains the offset of this resource descriptor within the current resource template buffer. The predefined descriptor field names may be appended to this name to access individual fields within the descriptor via the Buffer Field operators.

InterruptList is a comma-delimited list of integers in the range 0 through 15, at least one value is required. There may be no duplicates in the list. 

The IRQ macro evaluates to a buffer that contains an IRQ resource descriptor. The format of the IRQ descriptor can be found in “IRQ Descriptor” ((page 309). The macro produces the three-byte form of the descriptor. The macro is designed to be used inside of a ResourceTemplate (page 789).Arguments Description

Share this post


Link to post
Share on other sites

Hi tluck,

 

I studied dsdt.aml from a real MBP8,2 and found it is not optimized.

 

I think maybe the difference is here:

 

CreateWordField (BUFA, \_SB.LNKA._Y00._INT, IRA1)  // _INT: Interrupts

 

CreateWordField (BUFA, One, IRA1)

 

Do you know why \_SB.LNKA._Y00._INT always equals to One ?

 

The most interesting thing is my 10.8.5 UEFI system also works after I applied the new dsdt.aml.

 

(I manually did all other optimizations so I don't need iasl to do any optimizations for me. )

Share this post


Link to post
Share on other sites

@zhangqq - this is a bit beyond my experience - and i am just learning as i go.

 

the compiler does this to optimize the code... 

 

current.dsl    716:             CreateWordField (BUFA, \_SB.LNKA._Y00._INT, IRA1)

Optimize 6075 -                                       NamePath optimized ^  (_Y00._INT)

 

current.dsl    716:             CreateWordField (BUFA, \_SB.LNKA._Y00._INT, IRA1)

Optimize 6039 -              Integer optimized to single-byte AML opcode ^  (One)

 

current.dsl    719:                 And (\_SB.PCI0.LPC.PIRA, 0x8F, Local0)

Optimize 6075 -                        NamePath optimized ^  (^^PCI0.LPC_.PIRA)

 

current.dsl    722:                     ShiftLeft (0x01, Local0, IRA1)

Optimize 6039 -                                       ^ Integer optimized to single-byte AML opcode (One)

 

current.dsl    726:                     Store (0x00, IRA1)

Optimize 6039 -                                   ^ Integer optimized to single-byte AML opcode (Zero)

Share this post


Link to post
Share on other sites

The dsdt is small enough that code optimization benefits should be nil/negligible. If optimization is indeed generating buggy code, then that indicates a problem with the iasl compiler rather than clover. Good find. Perhaps it is in our best interests to use unoptimized dsdt's going forward, at least for the time being.

Share this post


Link to post
Share on other sites

Hi tluck,

 

current.dsl    719:                 And (\_SB.PCI0.LPC.PIRA, 0x8F, Local0)
Optimize 6075 -                        NamePath optimized ^  (^^PCI0.LPC_.PIRA)

 

It means we can manually change  And (\_SB.PCI0.LPC.PIRA, 0x8F, Local0) to And (^^PCI0.LPC.PIRA, 0x8F, Local0).

I think the reason is the latter code is shorter so it may(I'm not sure) be faster for AML interpreter to execute it.

 

current.dsl    722:                     ShiftLeft (0x01, Local0, IRA1)
Optimize 6039 -                                       ^ Integer optimized to single-byte AML opcode (One)

 

It means we can manually change ShiftLeft (0x01, Local0, IRA1) to ShiftLeft (One, Local0, IRA1).
 

current.dsl    726:                     Store (0x00, IRA1)
Optimize 6039 -                                   ^ Integer optimized to single-byte AML opcode (Zero)

 

It means we can manually change Store (0x00, IRA1) to Store (Zero, IRA1).

 

For IASL v4,  to change 0x01 to One and to change 0x00 to Zero are not always allowed.

For example Package(0x01) ==> Package(One) is not allowed for IASL v4( v5 is ok ).

 

I prefer to keep 0x01 and 0x00 without changed.

Edited by zhangqq

Share this post


Link to post
Share on other sites

@verleihnix - so did that fix your HDA? what device is your ethernet? mine is en0.

 

@plinux - well a few things.

1) i presume you are using the OEM config.plist with the kext patch for SNBGraphicsBuffer?

2) the VGA port works only when you restart with the monitor plugged in. it will not do a live detect like the DisplayPort.  and speaking of that,  I would be connecting that monitor by the DisplayPort (unless you are just trying to test the VGA port).

 

I bought 2 adapters -  

(1) DisplayPort to VGA adapter which will live detect a VGA 

and

(2) DisplayPort to HDMI - which allows me to attach to any LCD TV or other HDMI device (including audio)

 

You can live detect a VGA monitor once per boot by opening the Display Preferences, holding down the Option key, and pressing the "Detect Displays" button that magically appears

Share this post


Link to post
Share on other sites

  _Y00, _Y01, _Y02 etc are not set anywhere in the dsdt with so the optimization is that theses variables are zero or null i.e. no value set.

 

 

 
DescriptorName is an optional argument that specifies a name for an integer constant that will be created in the current scope that contains the offset of this resource descriptor within the current resource template buffer. The predefined descriptor field names may be appended to this name to access individual fields within the descriptor via the Buffer Field operators. 
IRQ is not a function call, it is a macro. Therefore, it is (attempting to) declare the variable _Y00. Where _Y00._INT would contain the list of interrupts needed to interact with this PCI interrupt (PNP0C0F) device.
 
So indeed, this is potentially a bad optimization. Nice find.
 
However, that may be only part of the story, since the IRQ documentation also states that the IRQ {} list is required to have a least one value. Where _Y00._INT would be set equal to the bitmask representing the interrupt for the device.
 
I suspect the IRQ statements in _PRS (possible resources) and _CRS (current resources) sections manage to merge, resulting in the assignment of a value to _Y00._INT of some combination of {3,4,5,6,7,9,10,11} (and never the value One).

Share this post


Link to post
Share on other sites

well glad we have something to think about! here is a snippet of DSDT from my h61n-usb DSDT. it hints that the optimization is correct or at least not atypical in this area. i notice that this dsdt adds 2 more interrupt values (14 15) - which i coincidentally i added to HPET (8,11,14,15) !  

 

 

            Name (BUFA, ResourceTemplate ()
            {
                IRQ (Level, ActiveLow, Shared, )
                    {3,4,5,6,7,9,10,11,12,14,15}
            })
            Name (BUFB, ResourceTemplate ()
            {
                IRQ (Level, ActiveLow, Shared, )
                    {}
            })
            CreateWordField (BUFB, One, IRQV)
            Device (LNKA)
            {
                Name (_HID, EisaId ("PNP0C0F"))
                Name (_UID, One)
                Method (_STA, 0, NotSerialized)
                {
                    And (PIRA, 0x80, Local0)
                    If (LEqual (Local0, 0x80))
                    {
                        Return (0x09)
                    }
                    Else
                    {
                        Return (0x0B)
                    }
                }
 
                Method (_PRS, 0, NotSerialized)
                {
                    Return (BUFA)
                }
 
                Method (_DIS, 0, NotSerialized)
                {
                    Or (PIRA, 0x80, PIRA)
                }
 
                Method (_CRS, 0, NotSerialized)
                {
                    And (PIRA, 0x0F, Local0)
                    ShiftLeft (One, Local0, IRQV)
                    Return (BUFB)
                }
 
                Method (_SRS, 1, NotSerialized)
                {
                    CreateWordField (Arg0, One, IRQ1)
                    FindSetRightBit (IRQ1, Local0)
                    Decrement (Local0)
                    Store (Local0, PIRA)
                }
            }

Share this post


Link to post
Share on other sites

@tluck

 

That means that your understanding of DSDT's is better than you realize (or let on). You manually corrected a problem due to an iasl optimization bug without realizing it. You, Manwe, and Zhangqq akk have proof positive that iasl optimizations are leaving out code that our platforms need to operate correctly.

Share this post


Link to post
Share on other sites

k.surachai - well the package is somewhat specific to the T420 ( DSDT and kexts AppleHDA.kext, Bluetooth).  But should be easy to modify for other laptops. The T420 is UEFI capable but i don't think the X201 is UEFI capable so then you then must install the Legacy MBR tools to boot the installer USB and/or the HD.

 

TLUCK,

 

I had able to install 10.9.2 on my X201 now. Would you be kind to help make modification on your package to make the (DSDT and kexts) to work for X201. Or giving your expert advice how to do it. Hope this not too much to ask. 

  

Note that the ThankPad X201 is using Intel i5 with IntelHD Graphics.

 

PS. Yes, I finished it on my ThinkPad T420 already and it work great. Now I need thing work on X201 too. ^.^

Share this post


Link to post
Share on other sites

@verleihnix - weird. i don't recall any HDEF changes in my DSDT in a long time!  I take it you have your own custom DSDT. what are you asking? I did not understand your request. happy to help.

 

Took your dsdt.dsl and modified the HDEF Part with built-in Statement. Same with IGBE and EXP2. That gave me back sound and en0/1 built-in equals true.

Did you ever got "service battery"? is there anything to do against, beside of battery replacement. Bat is not that bad, at least 2,5hr.

 

Additional I gave Clover (ESP) a try with a complete new install of 10.9.2.

It won't boot to Desktop without replacement of AppleACPIPlatform.kext 2.0.

Guess what, No Sound. It only works with built-in in dsdt. en0/1 worked with no change in dsdt.

Share this post


Link to post
Share on other sites

@verleihnix

There is no suppression for the battery warning. However, you're in luck as the batteries in these thinkpads are plugged and easily replaceable. And by easy I mean that you literally remove one screw to release the keyboard, and there it is. The part numbers for the battery are 02K7078 or 04W1642. A quick ebay search finds some for around $12.

 

And if you need completely illustrated instructions on how to replace the battery, just check out the service manual. I gotta hand it to lenovo, they seriously provide too much documentation. Here is the link for the manual for everyone's convenience:

 

https://www.google.com/url?sa=t&source=web&rct=j&ei=GQMjU-6ELvTq0QHh6ICgBA&url=http://download.lenovo.com/ibmdl/pub/pc/pccbbs/mobiles_pdf/t420_t420i_hmm.pdf&cd=2&ved=0CCkQFjAB&usg=AFQjCNHDRObYib_ftrnEMeVKYBB9iG-JKQ&sig2=H4hxqJrTdQafHlSmEtie9Q

Share this post


Link to post
Share on other sites

@T520 users...

 

Any best advice on the setup of the bios ( Bluetooth off already ) ?

 

I have a 4gb T520 4243-ES2 with a second hard disk in a optical drive caddy so I can have OSX completely separate ( Disk 1 ). Windows is on the main internal drive ( Disk 0 ).

 

Using the instructions at the start of this thread I installed 10.8.4 to my USB key as well as Clover.

 

When I boot up the installer every thing seems to be loading OK and I start seeing the GUI to load up until it kernal panics all of a sudden and restarts the machine.

 

I have installed a Hackintosh before but this is a my first laptop.

 

Thanks 

 

Terran

 

Share this post


Link to post
Share on other sites

@Terran

 

The front page not been updated in some time, though most of the information is still relevant. I suggest, instead, that you follow tlucks's guide in this very thread. It's more up to date with more detail as well. The link to it is in his signature, but I'm sure he won't mind if I relink it here for your convenience:

 

http://www.insanelymac.com/forum/topic/285678-lenovo-thinkpad-t420-with-uefi-only/page-25?do=findComment&comment=1952283

 

However, be warned: we do not have an official 520 guide, so you may need to change some things, specifically, your DSDT. Though, you'll likely get a mostly-functional system without one as clover does its best atempt to generate one dynamically for you.

 

Also stick to 10.9 for now. Most of us are seeing success with it.

Share this post


Link to post
Share on other sites

i just posted a new bundle in my guide (I will see if Kogen is still active to put a link to this new Guide on the top page).

 

Clover UEFI on T420 Guide

 

Notes:

--------------------

14-Mar-2014

  • Tweaked custom DSDT.aml files and config.plist to add current patching
    added OEM config.plist options: 
    1 ) config.plist - (default) to use the custom DSDT and WITH extra Clover patching
    2 ) config.nopatch.plist - (old way) uses custom DSDT but no Clover patching
    3 ) config.nodsdt.plist - testing - remove DSDT.aml and use built-in DSDT with Clover patching (Note: battery will not work)
     
  • Updated AppleIntelE1000e.kext v3.0.4.1
  • Updated FakeSMC.kext to v6.0.1148 

-------------------------------------------------------------

I am still not 100% convinced that the iasl optimization is doing anything bad - i see no difference personally - but sleep is working for me!

 

I have always posted a precompiled dsdt.aml file as well as the source dsdt.dsl so you can see the mods/edits/comments to create your dsdt etc and compile it however you like!

 

What I did mostly to update/add to this new DSDT I just posted is merge in a few recent clover mod/fixes. The new (default) config.plist will apply clover patches on top of the custom DSDT to continue to add more value.  Note: Clover can patch the built-in DSDT (bios version) and it get pretty much everything working (sound, sleep etc) with the exception of the Battery stuff. As i side effect, I posted config.nodsdt.plist to allow one to test etc.

 

@verleihnix

- see if this DSDT has the built-in stuff you might need?

- Battery- yeah i got a service battery flag in the menu-bar. so i used the Windows/Lenovo power management tool to "reset the battery". it discharges and recharges the battery and perhaps updates some parameters. anyway the notice went away in OSX after i ran this tool.

 

@Terran Brown - i can't recall if folks were able to boot OSX off a disk in the caddy - i recall some chatter about that - you may have to flip/flop etc.

Share this post


Link to post
Share on other sites

@verleihnix. odd these 3 devices already have the built-in parameter for me? glad its working for you now!

 

using ioreg -l|more and searched for built-in

 

but maybe EXP2 is picking built-in from my broadcom wifi (ARPT is added by clover).

the new DSDT i just posted adds built-in to IGBE device (and more )

Share this post


Link to post
Share on other sites

Hey!

 

Does anyone have an AppleHDA for 10.9.2 and X220? I believe my codec is a conexant 20672.

 

I successfully used the appended AppleHDA on 10.8.5.

 

Has anyone tried the approach described here on a thinkpad? http://www.tonymacx86.com/hp-probook-mavericks/118877-patch-applehda-kext-fly-clover-bootloader.html

 

Thanks for the help!

AppleHDA.kext.zip

Share this post


Link to post
Share on other sites

Actually, I just installed VoodooHDA 2.8.4 which works great so far.

 

One things that does not work out of the box is the displayport. Any idea where to begin? DSDT or missing kext?

 

Great work by the way! An installation was never so easy...

 

Thanks!

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Recently Browsing   0 members

    No registered users viewing this page.

  • Similar Content

    • By ErmaC
      Slice is glad to present a new EFI bootloader.
      CLOVER
      Now version 2 rEFIt based.


      It is open source based on different projects: Chameleon, rEFIt, XNU, VirtualBox. The main is EDK2 latest revision.
      I also want to thank all who help Slice with the development. Credits and copyrights remain in the sources.
      http://cloverefiboot.sourceforge.net/

      Main features:


      If you have a question please provide outputs from DarwinDumper (formed from Trauma tool). Thanks Trauma!
      Continued by blackosx and STLVNUB.
      CloverGrower Downloads Installation How to do UEFI boot How to use - common words Calculator for Automatic DSDT fix Instructions for GraphicsInjector ATIConnector patching Any kexts patching with some Samples CustomEDID Hiding unnecessary menu entries Instruction for DSDT corrections to do DeviceInjection works Development Themes About kexts injection Instructions for P- and C-states generator Patching DSDT to get Sleep working CPU settings and geekbench ACPI tables loading DSDTmini Custom SMBios F.A.Q. iCloudFix Using mouse. How to make orange icons to be metallic How to make software RAID (by Magnifico) How to modify InstallESD.dmg (by shiecldk) Config.plist settings Using extra kexts and skipping kernelcache Choosing EFI drivers Configuration files Automatic config.plist creating Custom DSDT patches How to do sleep/wake working with UEFI BOOT DeviceID substitution (FakeID) Using Custom OS Icons Hibernation Floating regions Error allocating pages while starting OS -----------------
    • By glasgood
      CLOVER DUAL BOOT MOJAVE & WINDOWS 10 GUIDE 
       

       
       
      INCLUDES  MBR / LEGACY BIOS  TO  GPT / EFI CONVERSION
      USING MBR2GPT TOOL
       
       
      PREREQUISITE: Two physical discs ( SSD’s or HDD’s )
       
       
       
       
       
      STEP 1 - Clover dual boot configuration 
       
      Open config.plist with Clover Configurator
       
      Boot
       Legacy = PBR Timeout = True ( will remove the Timeout countdown, from Clover boot menu)  

       
      GUI 
      Scan / Custom
       Entries = True  Tool = True  Legacy = False ( removes extra Windows 10 entries )  
      Hide Volume
      - Preboot ( macOS Preboot )
      - Recovery ( macOS Recovery )
       

       
      So at boot you will have two options: boot macOS Mojave or Windows 10 
       
       
       
       
       
       
       
      ————————————————————
       
       
      STEP 2 - Using a drive without Windows 10 installed
       
      Disconnect system drive that contains your macOS Mojave install from computer ( This is so that Windows does not overwrite existing macOS Mojave boot loader )
       
      Proceed with a Windows 10 UEFI install.  
      After installation reconnect macOS Mojave Drive, the Windows installation should now be detected and usable in Clover. 
      If Windows 10 is not detected or able to boot,  then verify you installed Windows 10 as UEFI and not MBR ---->  ( Read step 2 - For a drive with Windows 10 installed )
       
       
      OR
       
       
       
      STEP 2 - Using a drive with Windows 10 already installed
       
      Verify your Windows install is  GPT / UEFI or MBR / Legacy BIOS.   
      If Windows install is GPT UEFI then Windows 10 install is ready to use at Clover boot menu, you should be able to boot into Windows directly from Clover boot screen. 
       

       
       
      But if  Windows drive is detected at Clover boot screen, but when booting Windows you get a black screen with a cursor on the top left,
      then this is most likely because Windows drive is MBR ( Legacy BIOS ).  You can easily convert MBR to GPT using  Windows MBR2GPT tool ( this saves hours work having to reinstall Windows 10 and setting up all your applications again  ) 
       
      If Windows 10 install is MBR / Legacy BIOS  then simply convert to GPT / UEFI  following instructions below ( read video summary and view video )
       
       
      ** To use Windows 10  MBR2GPT tool  you must have Windows 10 version 1703 ( creators update  ) or later and less than 3 partitions on 
      the Windows 10 drive **
       
      Video summary:
       
      Confirm Windows 10 drive is MBR Legacy BIOS ( in Windows Disk Management ) Reboot into Windows PE ( Advanced Startup ) Convert from MBR Legacy BIOS to GPT UEFI ( using commands below ) mbr2gpt /validate mbr2gpt /convert Restart Verify Windows 10 drive has changed to GPT UEFI ( in Windows Disk Management )  
       
       
       
      After conversion Windows 10 is ready to use at the Clover boot menu 
       
       
       
      STEP 3 - Stop Windows Boot manager from overriding Clover boot manager
       
      How to stop Windows boot manager from overriding your Hackintosh Clover boot manager when using dual booting between macOS and Windows
       
       
       
       
       
       
    • By Averyfreeman
      Dear @tluck 
       
      I have a T460s 20F9-003HUS - I5-6300U 2C 2.4GHz, FHD non-touch, 8GB DDR4, PM961 NVMe, vPro, AMT, etc.
      http://psref.lenovo.com/Detail/ThinkPad_T460s?M=20F9003HUS
       
      I have been following the following thread to hackintosh my T460s:
       but it's very long and hard to sort through, so I thought I'd start a new thread specifically for this issue
       
      Personally, my model has been doing pretty good with just the T460 EFI from github.  I did run the scripts to create and patch a new DSDT, though, after installing patchmatic and iasl.  I also manually installed VooDooPS2Controller.kext by following the guide on RehabMan's git wiki. 
       
      I also re-installed my kexts from CLOVER/kexts/other using kext helper to build them into the kext cache
       
      My only glaring issue is the touchpad.  It's unusably bad, I've had to use a mouse which kinda sucks on a laptop.
       
      It'll be really slow and then all of the sudden be really fast.  It hangs and skips intermittently.  Kind of hard to describe but it's {censored}. 
       
      So far I've tried: 
       
      installing latest version of VooDooPS2Controller, urning off all gestures, modifying speed, patching DSDT with autogen scripts (iASL, patchmatic). 
       
      Has anybody seen this problem?  What do you recommend I do?  
       
      Happy to provide any logs anyone believes would be relevant via pastebin, etc. 
       
      Thank you!
    • By SoThOr
      This was spurred on from a discussion in the Clover General thread. Where there was a debate on bcdedit being able create/read/edit (U)EFI Boot entries. I didn't think it appropriate to post all this information there and somebody may want to make use of this and its likely to get lost in that massive thread.
       
      Out of curiosity I decided to see if I could create an EFI entry using bcdedit. What can I say I like a challenge.  Whilst is not a documented method by Microsoft, as it turns out in a round about way it IS possible to create an EFI entry using bcdedit and these are the steps I went through to add UEFI Shell located on a USB stick to the EFI entries. 
       
      Third party software is available that can create and edit UEFI entries from Windows with better support and more features. I'm just making this information available in case those options are unavailable. 
       
      DISCLAIMER - This is not a supported method. Use at your own risk. I recommend backing up your BCD/Firmware variables/settings beforehand.
       
      1) Copy {bootmgr} entry.
      C:\Windows\System32>bcdedit /copy {bootmgr} /d "UEFI Shell" The entry was successfully copied to {34e8383c-73a7-11e9-9cb0-94de8078a7b5}. 2) Edit the new entry using the new GUID bcdedit generated in the copy step.
        a) Set the device and path for UEFI shell on my USB stick.
      bcdedit /set {34e8383d-73a7-11e9-9cb0-94de8078a7b5} device partition=G: bcdedit /set {34e8383d-73a7-11e9-9cb0-94de8078a7b5} path \EFI\SHELL\SHELLX64.efi   b) Clean up some of the stuff that was copied from {bootmgr} (optional as far as I can tell, just makes things tidier in bcdedit)
      3) Put the new EFI entry first in boot order. (optional)
       
      After completing the steps above, here is what "bcdedit /enum firmware" shows:
       
      I shutdown my computer and when I turned my computer back on it booted up into UEFI Shell. After exiting the shell my PC went on to boot Windows.
      Here is the resulting dump using "bcfg boot dump -v" from that shell:
       
      You may notice that the shell shows as "Windows Boot Manager" in the bcdedit output. This I believe is because of the "WINDOWS" at the beginning of the option data that bcdedit added to the EFI Boot entry. I also believe this why bcdedit shows my Windows 8 installation as "Firmware Application" because it has no option data. I don't know how to remove this data using bcdedit nor do I know how the option data, that bcdedit adds, will affect other EFI applications.

      There might be a way to create the EFI entry without copying the Windows entry but if there is I'm unable to find any documentation on how one would do so. If you use the create command then it just puts it in the BCD and I'm unaware of a way to tell it to create it in EFI instead, other than by doing the above.
×