Contribute
Register

WonkeyDonkey's Steambox Pro - Z87E-ITX - Core i7 4770S - GTX 760 Gaming ITX

Status
Not open for further replies.
So, PJALM usb Injector kext is no longer needed. Please, guys, make me a liar. Expecting your tests ;)

I have said this over a week ago now, Injector not needed if you simply just remove unused ports from DSDT. No one listens to me though.

As for that clover patch to bypass the USB port minit, use at your own risk, it's not a good hack nor a good idea.

BTW, you don't need to rename EHC1/ECH2 sinco series 8/9 don't use them. I simply removed them from my DSDT.
 
I have said this over a week ago now, Injector not needed if you simply just remove unused ports from DSDT. No one listens to me though.
Thanks for clarifying once again. I heard you last week and I hear you now, but please note that with this board, removing unnecessary HSxx port from XHC in dsdt.aml is not enough. As previously stated, HS13 didn't show up at all and needs to be re-addressed as tested here in post #448

As for that clover patch to bypass the USB port minit, use at your own risk, it's not a good hack nor a good idea.
I have no better way to enable all usb's in this board.

BTW, you don't need to rename EHC1/ECH2 sinco series 8/9 don't use them. I simply removed them from my DSDT.
Thank you. This is very useful: removing the entire Device EH01 and Device EH02 from dsdt solved my bluetooth wake from sleep radically (non need to null EH02 address, since, of course, it no longer exists)
 
All tested with Clover 3292.
Note I'm on 10.10.5

EH02 Native

- all ports working, including internal (quick test by attaching device, no speed tests)
- sleep/wakeup working
- shutdown/restart working
Thank you. The point was to test them in El Cap, though. Anyway, due to PJALM's suggestion up here, removing EH01 and EH02 from dsdt does the job wonderfully.
Attached my last DSDT
 

Attachments

  • dsdt NO EH0x.aml.zip
    14.2 KB · Views: 75
Sorry, still on Yosemite here:(
Could you please post a DSDT with those entries removed as suggested by PJALM which we should use in El Cap?
Ist the kext and the clover entry still needed then?
Thanks in advance
No problem! in post #455 you'll find the new dsdt, as for the clover patch, it's up to you: PJALM and WonkeyDonkey don't use it. That way you need to make usb choises, at least for a board like ours.
The injector kext is no longer needed.

PJALM, still I don't understand why this patch wouldn't be a good idea.
 
SOLVED.
Thet way you suggested seems to be right, I mean re-addres the HS13 port. But not enough.
1 - Referring to Method (_ADR, give to HS13 same DSDT structure as HS14
from

Code:
Device (HS13)
                {
                    [B]Method (_ADR, 0, Serialized)  // _ADR: Address
                    {
                        If (LEqual (And (CDID, 0xF000), 0x8000))
                        {
                            Return (0x0D)
                        }
                        Else
                        {
                            Return (0xFD)
                        }
                    }[/B]

                    Method (_STA, 0, Serialized)  // _STA: Status
                    {
                        If (LEqual (And (CDID, 0xF000), 0x8000))
                        {
                            Return (0x0F)
                        }
                        Else
                        {
                            Return (Zero)
                        }
                    }

to

Code:
Device (HS13)
                {
                    [B]Name (_ADR, 0x0D)  // _ADR: Address[/B]
                    Method (_STA, 0, Serialized)  // _STA: Status
                    {
                        If (LEqual (And (CDID, 0xF000), 0x8000))
                        {
                            Return (0x0F)
                        }
                        Else
                        {
                            Return (Zero)
                        }
                    }

2 - Give to HS13 another Physical Location of Device (PLD). Since I don't know anything about these codes, I tried with the PLD of the three ports that actually don't exist, HS11, HS12 and HS15. Guess what? working with any of those PLD!
from

Code:
Method (_PLD, 0, Serialized)  // _PLD: Physical Location of Device
                    {
                        Name (PLDP, Package (0x01)
                        {
                            Buffer (0x10)
                            {
                                /* 0000 */   [B]0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,[/B]
                                /* 0008 */   [B]0x71, 0x0C, 0x80, 0x06, 0x00, 0x00, 0x00, 0x00[/B]
                            }
                        })

to

Code:
Method (_PLD, 0, Serialized)  // _PLD: Physical Location of Device
                    {
                        Name (PLDP, Package (0x01)
                        {
                            Buffer (0x10)
                            {
                                /* 0000 */   [B]0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,[/B]
                                /* 0008 */   [B]0x69, 0x0C, 0x80, 0x05, 0x00, 0x00, 0x00, 0x00[/B]
                            }
                        })
taken from HS11. Successfully tested with PLD from HS12 and HS15 as well.
So, PJALM usb Injector kext is no longer needed. Please, guys, make me a liar. Expecting your tests ;)

Please everybody, note that I'm not an expert, this is a try and error process. Be careful about doing this, ok?

EDIT: Almost forgot, If you have no need to use internal USB 2.0 headers, then you can avoid usb limit binary code injected in config.plist\Kernel and Kexts Patch\KextToPatch section (like the evil WonkeyDonkey). On the other hand, if you'd like to have the whole "usb fleet" working (like the good old myself), then you have to add that patch. :lol:

Me ? Evil ? :lol:

I kind of take the approach that the more vanilla the better. If a fix can be done in DSDT thats great; do it once then forget about it. Its even better if it means less kext files to manage on the system.

To be realistic about usb, there are so many boards out there that have a whole stack of ports, but how many people use every port at the same time ? I figure that since I have no front panel USB2 on my case, then those internal headers will never be used while I own this board.

Great work on the PLD and port 13 btw. It was to be my next stop had you not tried it already. :thumbup:
 
I have said this over a week ago now, Injector not needed if you simply just remove unused ports from DSDT. No one listens to me though.

As for that clover patch to bypass the USB port minit, use at your own risk, it's not a good hack nor a good idea.

BTW, you don't need to rename EHC1/ECH2 sinco series 8/9 don't use them. I simply removed them from my DSDT.

I'm with you on this Pjalm, and yes, we do listen to you :) Your work on DSDT's and patches for them has been outstanding and saved a heap of trouble for a lot of users of this site and beyond.

Your work continues to be appreciated :thumbup:
 
El Capitan pre-install work

With reference to post #401 with the links posted there, and the following posts discussed

  1. ALWAYS make a bootable backup drive of your system SSD/HDD
  2. Update to the latest Clover
  3. In EFI\EFI\CLOVER\kexts\10.10 copy all the kexts you have into EFI\EFI\CLOVER\kexts\10.11, that means
  4. Open your EFI\EFI\CLOVER\config.plist with Clover Configurator and do the following changes
    • In Boot section uncheck kext-dev-mode=1 (if you have an nVidia Maxwell Graphics Card leave checked nvda_drv=1)
    • In Kernel and Kext Patches\KextToPatch section add a line with
      - Name* --> AppleUSBXHCIPCI
      - Find* [HEX] --> 83BD8CFEFFFF10
      - Replace* [HEX] --> 83BD8CFEFFFF16
      - Comment --> remove usb limit
      This is not mandatory! If you're not planning to use USB 2.0 internal headers, then skip this step
      remove USB limit.png
    • In Rt Variables section add
      - 0x28 in BooterConfig field
      - 0x3 in CrsActiveConfig​
      Attached here, you'll find a confing.plist to follow
  5. DSDT compiling
    This is the most important part of the job, at least for this board. I strongly recommend to extract your own DSDT from scratch (AIDA64 Engineer in Windows will be great) and patch it with the following instructions
    • Open aida_dsdt.aml (aida64 will save it as acpi_dsdt.bin in Windows, simply rename it aida_dsdt.aml in OS X) with MaciASL
    • MaciASL\Patch\Open 01 - Toleda 8 Series AMI Clean Compile.txt (attached down here in DSDT patches folder) and Apply it
    • MaciASL\Patch\Open 02 - Toleda 8 Series AMI-HD4600-AMD-nVidia-A1.txt (attached down here in DSDT patches folder) and Apply it
    • MaciASL\Patch\Open 03 - Insert DTGP (attached down here in DSDT patches folder) and Apply it
    • Find Device (EHC1) and Device (EHC2) and delete the whole blocks like this
      Delete EHCx.png
    • Compile and if this kind of error appears
      Errors dsdt.png
      then remove the blocks the errors refer to
      remove EHCx errors.png
      Compile again, no errors should appear
    • Remove Warnings and Remarks as follows
      a) REMARK - Control Method should be made Serialized (due to creation of named objects within)
      FIX - Turn the Control Method from NotSerialized to Serialized

      b) WARNING - Not all control paths return a value (RDGI)
      FIX - Insert Return (Zero) at the end of the block, before the last “}” like this
      from
      Code:
              Method (RDGI, 1, Serialized)
              {If (LLessEqual (Arg0, 0x5E))
                  {
                      Store (Add (Add (GPBS, 0x0100), Multiply (Arg0, 0x08)
                          ), Local0)
                      OperationRegion (LGPI, SystemIO, Local0, 0x04)
                      Field (LGPI, AnyAcc, NoLock, Preserve)
                      {
                              ,   30, 
                          TEMP,   1
                      }
      
                      Return (TEMP)
                  }
          }

      to

      Code:
              Method (RDGI, 1, Serialized)
              {If (LLessEqual (Arg0, 0x5E))
                  {
                      Store (Add (Add (GPBS, 0x0100), Multiply (Arg0, 0x08)
                          ), Local0)
                      OperationRegion (LGPI, SystemIO, Local0, 0x04)
                      Field (LGPI, AnyAcc, NoLock, Preserve)
                      {
                              ,   30, 
                          TEMP,   1
                      }
      
                      Return (TEMP)
                  }
              [B]Return (Zero)[/B]
          }

      c) REMARK - Effective AML package length is zero
      FIX - Change this
      Code:
      Return (Package (Zero) {})
      into this
      Code:
      Return (Zero)
      Compile again, and no longer Errors, Warnings or Remarks should appear​

      PAY ATTENTION! Every time you will re-open your compiled DSDT.aml easily you'll bump into these two errors
      PEGx errors.png
      Simply remove these two lines to compile successfully
      lines to remove.png
    • Find Device (HS13) and replace the entire block from this
      Code:
      Device (HS13)
                      {
                          Method (_ADR, 0, Serialized)  // _ADR: Address
                          {
                              If (LEqual (And (CDID, 0xF000), 0x8000))
                              {
                                  Return (0x0D)
                              }
                              Else
                              {
                                  Return (0xFD)
                              }
                          }
      
                          Method (_STA, 0, Serialized)  // _STA: Status
                          {
                              If (LEqual (And (CDID, 0xF000), 0x8000))
                              {
                                  Return (0x0F)
                              }
                              Else
                              {
                                  Return (Zero)
                              }
                          }
      
                          Method (_UPC, 0, Serialized)  // _UPC: USB Port Capabilities
                          {
                              Name (UPCP, Package (0x04)
                              {
                                  0xFF, 
                                  Zero, 
                                  Zero, 
                                  Zero
                              })
                              If (LNot (And (PR2, 0x1000)))
                              {
                                  Store (Zero, Index (UPCP, Zero))
                              }
      
                              Return (UPCP)
                          }
      
                          Method (_PLD, 0, Serialized)  // _PLD: Physical Location of Device
                          {
                              Name (PLDP, Package (0x01)
                              {
                                  Buffer (0x10)
                                  {
                                      /* 0000 */   0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
                                      /* 0008 */   0x71, 0x0C, 0x80, 0x06, 0x00, 0x00, 0x00, 0x00
                                  }
                              })
                              CreateBitField (DerefOf (Index (PLDP, Zero)), 0x40, VIS)
                              If (LNot (And (PR2, 0x1000)))
                              {
                                  And (VIS, Zero, VIS)
                              }
      
                              Return (PLDP)
                          }
                      }

      to this

      Code:
      Device (HS13)
                      {
                          Name (_ADR, 0x0D)  // _ADR: Address
                          Method (_STA, 0, Serialized)  // _STA: Status
                          {
                              If (LEqual (And (CDID, 0xF000), 0x8000))
                              {
                                  Return (0x0F)
                              }
                              Else
                              {
                                  Return (Zero)
                              }
                          }
      
                          Method (_UPC, 0, Serialized)  // _UPC: USB Port Capabilities
                          {
                              Name (UPCP, Package (0x04)
                              {
                                  0xFF, 
                                  Zero, 
                                  Zero, 
                                  Zero
                              })
                              If (LNot (And (PR2, 0x2000)))
                              {
                                  Store (Zero, Index (UPCP, Zero))
                              }
      
                              Return (UPCP)
                          }
      
                          Method (_PLD, 0, Serialized)  // _PLD: Physical Location of Device
                          {
                              Name (PLDP, Package (0x01)
                              {
                                  Buffer (0x10)
                                  {
                                      /* 0000 */   0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
                                      /* 0008 */   0x69, 0x0C, 0x80, 0x05, 0x00, 0x00, 0x00, 0x00
                                  }
                              })
                              CreateBitField (DerefOf (Index (PLDP, Zero)), 0x40, VIS)
                              If (LNot (And (PR2, 0x2000)))
                              {
                                  And (VIS, Zero, VIS)
                              }
      
                              Return (PLDP)
                          }
                      }
    • MaciASL\Patch\Open 04 - PJALM's USB power patch.txt (attached down here in DSDT patches folder) and Apply it
    • Find Device (HS11), Device (HS12), Device (HS15) and remove the whole blocks, like this for Device (HS11)
      remove HS11.png
    • If you don't need internal USB 2.0 header, then remove the whole block of Device (HS05), Device (HS06), Device (HS07), Device (HS08) as well. This allows you to avoid USB limit binary patch in config.plist\Kernel and Kexts Patches\KextToPatch section
    • Compile and Save as DSDT.aml (File Format: ACPI Machine Language Binary)
  6. Proceed to update with Tony's guide or you can prepare your own usb bootable drive for a fresh El Cap install. In this case just remember:
    • USB config.plist should have the Kernel and Kext Patches\KextToPatch section empty, otherwise it could give troubles during the installation process
    • If you have an nVidia Maxwell card you'll need to boot with nv_disable=1 option
Attachments:
  • aida_dsdt.aml extracted from aida64 Engineer from Windows 10
  • config.plist with usb limit remove binary patch
  • DSDT Patches folder
  • compiled DSDT.aml including Device (HS05), Device (HS06), Device (HS07), Device (HS08)
  • ASRock Z87E ITX USB mappature.jpg

Credits
PJALM
RehabMan
wegface
Mieze
WonkeyDonkey
 

Attachments

  • ASRock Z87E-ITX prep ELCap correct.zip
    38.2 KB · Views: 91
  • ASRock Z87E ITX USB mappature.jpg
    ASRock Z87E ITX USB mappature.jpg
    293.7 KB · Views: 171
Anyone know where the SMC version is set in Clover ?

iMac14,2 profile sets it to 2.15f2.

I tried changing it in FakeSMC to the correct version but it stays the same. I don't see it in the config file either.
Don't know actually. I would ask Slice in Clover's repo.
Perhaps it needs something changed in the Clover source code, then recompile
 
Status
Not open for further replies.
Back
Top