Contribute
Register

[Guide] HP ProBook/EliteBook/Zbook using Clover UEFI hotpatch (10.11)

Status
Not open for further replies.
Just to be sure, this command?

cd ~/Projects/probook.git
git stash
git pull
./download.sh
./install_downloads.sh
./build.sh

That's part of it... then you would need to update SSDT-HACK.aml (you can use install_acpi.sh just as you did originally).
 
That's part of it... then you would need to update SSDT-HACK.aml (you can use install_acpi.sh just as you did originally).

Ok i will do it. This patch will fix the battery charge issue? Thanks.
Hope this work will be useful for other G2 450 users.

Ps. i reattach SSDT-USB-5 and SSDT-USB-6 files report.
 

Attachments

  • report 5-6.zip
    1.1 MB · Views: 66
Some problems with upload sorry. Please check now.

Thanks... it confirms the OS X bug.

The basic structure of SSDT-USB is this:
Code:
DefinitionBlock(...)
{
    If(CondRefOf(_SB.PCI0.EH01))
    {
         Method(_SB.PCI0.EH01._DSM, ...) { ... }
    }
    If(CondRefOf(_SB.PCI0.EH02))
    {
         Method(_SB.PCI0.EH02._DSM, ...) { ... }
    }
    If(CondRefOf(_SB.PCI0.XHC))
    {
         Method(_SB.PCI0.XHC._DSM, ...) { ... }
    }
}

In other words, for each existing scope EH01, EH02, XHC in _SB.PCI0, create a method named _DSM...

In your case, EH01 exists, and so does XHC. But EH02 does not.

So, injecting a method _DSM into EH02 will fail ... and is expected to fail... hence why it is protected with module level code using CondRefOf.

But the CondRefOf doesn't work, or at least the Method(_SB.PCI0.EH02._DSM), even though it is inside the CondRefOf block, still gives the ACPI implementation in OS X trouble... and causes it to abort processing anything that follows in the SSDT. So even though XHC does exist, OS X never injects the associated _DSM for XHC, which causes problems (main problem is wrong FakePCIID_XHCIMux configuration, considering EH01 is disabled in RMD2._INI).

The work around is to separate each of these _DSM methods into separate SSDTs. One for EH01, another for EH02 and another for XHC.

Changes required for the workaround to this problem are checked in: https://github.com/RehabMan/HP-ProB...mmit/9947b5fbebc729a91f8409f12b7298c905dd3d9c

Note: Originally, I used config.plist/Devices/Arbitrary to do "dumb" injects like the EH01/EH02 properties (and even the XHC properties except RM,pr2-force). But the problem with Devices/Arbitrary is that Clover Configurator deletes it completely as it does for all Clover settings it doesn't support (nice, eh?). And no matter how many warnings I place in post #1 about not using Clover Configurator to edit the real config.plist, people will still do it... Which is why I switched to ACPI injection, but now we bump into this problem... and create a workaround.
 
Last edited:
Yes, i used wrong words. Battery consumption is the correct issue, thanks.

The fix I put in there should correctly disable your Radeon graphics device, which should lead to better power efficiency and therefore longer battery run time.
 
Thanks... it confirms the OS X bug.

The basic structure of SSDT-USB is this:
Code:
DefinitionBlock(...)
{
    If(CondRefOf(_SB.PCI0.EH01))
    {
         Method(_SB.PCI0.EH01._DSM, ...) { ... }
    }
    If(CondRefOf(_SB.PCI0.EH02))
    {
         Method(_SB.PCI0.EH02._DSM, ...) { ... }
    }
    If(CondRefOf(_SB.PCI0.XHC))
    {
         Method(_SB.PCI0.XHC._DSM, ...) { ... }
    }
}

In other words, for each existing scope EH01, EH02, XHC in _SB.PCI0, create a method named _DSM...

In your case, EH01 exists, and so does XHC. But EH02 does not.

So, injecting a method _DSM into EH02 will fail ... and is expected to fail... hence why it is protected with module level code using CondRefOf.

But the CondRefOf doesn't work, or at least the Method(_SB.PCI0.EH02._DSM), even though it is inside the CondRefOf block, still gives the ACPI implementation in OS X trouble... and causes it to abort processing anything that follows in the SSDT. So even though, XHC does exist, OS X never injects the associated _DSM for XHC, which causes problems (main problem is wrong FakePCIID_XHCIMux configuration, considering EH01 is disabled in RMD2._INI).

The work around is to separate each of these _DSM methods into separate SSDTs. One for EH01, another for EH02 and another for XHC.

Changes required for the workaround to this problem are checked in: https://github.com/RehabMan/HP-ProB...mmit/9947b5fbebc729a91f8409f12b7298c905dd3d9c

Note: Originally, I used config.plist/Devices/Arbitrary to do "dumb" injects like the EH01/EH02 properties (and even the XHC properties except RM,pr2-force). But the problem with Devices/Arbitrary is that Clover Configurator deletes it completely as it does for all Clover settings it doesn't support (nice, eh?). And no matter how many warnings I place in post #1 about not using Clover Configurator to edit the real config.plist, people will still do it... Which is why I switched to ACPI injection, but now we bump into this problem... and create a workaround.

Dear Rehabman, thanks for your long and clear reply and solution. (i didn't understand a lot of terms :)

Now, is there a procedure i should follow? Which SSDT-USB.aml file should i use? Not clear what should i do.
 
Dear Rehabman, thanks for your long and clear reply and solution. (i didn't understand a lot of terms :)

Now, is there a procedure i should follow? Which SSDT-USB.aml file should i use? Not clear what should i do.

Use install_acpi.sh. It will remove SSDT-USB.aml, and install SSDT-EH01.aml, SSDT-EH02.aml and SSDT-XHC.aml in its place.

After that, you may want get back to determining if the right ports are injected. If they are, all your ports and internal USB devices should work without -uia_ignore_rmcf.
 
Last edited:
Status
Not open for further replies.
Back
Top