Jump to content
MaLd0n

[Guide] Native USB Fix for Desktops - No Injector/Kext Required - SkyLake+

Recommended Posts

  • Administrators

--About Credits for this method--

The source for the methods is the motherboard ACPI is not mald, geng, etc. Is just duplicated one OEM method(GUPC in this case), renamed(We need device name) and applyed connectors type(Credits is not for us. We just renamed and duplicated devices) . All credits for it is for Piker Alpha HERE and not for Italian people. This method of mapping has existed for many, many years and is not my credit or gengik or other. 

The resume is: We stole method GUPC from intel and apply the Piker way ofc.😆

 

-All credits to Piker-Alpha

Here

https://pikeralpha.wordpress.com/2016/07/13/simple-skylake-usb-fix-no-kexts-required

and here

https://pikeralpha.wordpress.com/2016/11/10/two-port-usb-3-1-gen-ii-pci-express-card/

 

1- Check OEM SSDT about USBs, in my case is SSDT-6-A M I.aml, i'm using a Z390 mobo

2- Create Methods into SSDT OEM inside Scope _SB.PCI0.XHC.RHUB, Internal and USB 2 is native, just create USB 3, USB-C

-In some cases some ports have a Method _STA = Zero, change to 0x0F to enable

We just need duplicate Methods (GUPC for example) native from our ACPI table and Inject values

Connector types in the ACPI specification(pages 524 and 525)

https://uefi.org/sites/default/files/resources/ACPI_6.0.pdf

bn23gUz.png

0xFF - internal - GUPC

Zero - USB 2 - TUPC

0x03 - USB 3 - MALD

0x09 - USB-C - MAL0 (Same HSxx/SSxx in both orientations, then it has an internal switch)

0x0A - USB-C - MAL1 (Different HSxx/SSxx in each orientation, then it has no switch)

 

-Example

GUPC and TUPC is a native Methods

gecujqH.png

 

Quote
Method (GUPC, 1, Serialized)

{

Name (PCKG, Package (0x04)

{

Zero,

0xFF,

Zero,

Zero

})

PCKG [Zero] = Arg0

Return (PCKG) /* \_SB_.PCI0.XHC_.RHUB.GUPC.PCKG */

}

 

Method (TUPC, 1, Serialized)

{

Name (PCKG, Package (0x04)

{

One,

Zero,

Zero,

Zero

})

PCKG [Zero] = Arg0

Return (PCKG) /* \_SB_.PCI0.XHC_.RHUB.TUPC.PCKG */

}

 

Method (MALD, 1, Serialized)

{

Name (PCKG, Package (0x04)

{

Zero,

0x03,

Zero,

Zero

})

PCKG [Zero] = Arg0

Return (PCKG) /* \_SB_.PCI0.XHC_.RHUB.MALD.PCKG */

}

 

Method (MAL0, 1, Serialized)

{

Name (PCKG, Package (0x04)

{

Zero,

0x09,

Zero,

Zero

})

PCKG [Zero] = Arg0

Return (PCKG) /* \_SB_.PCI0.XHC_.RHUB.MAL0.PCKG */

}

 

Method (MAL1, 1, Serialized)

{

Name (PCKG, Package (0x04)

{

Zero,

0x0A,

Zero,

Zero

})

PCKG [Zero] = Arg0

Return (PCKG) /* \_SB_.PCI0.XHC_.RHUB.MAL1.PCKG */

}

}

 

3- Enable or Disable USB ports

-Check example TUPC

Look at Method _UPC - USB Port Capabilities

Enable = One

Disable = Zero

Example

Quote
Scope (\_SB.PCI0.XHC.RHUB.HS01)

{

Method (_UPC, 0, NotSerialized) // _UPC: USB Port Capabilities

{

If ((H1TC == Zero))

{

If (((UMAP & One) == One))

{

Return (TUPC (One))

}

Else

{

Return (GUPC (Zero))

}

}

Else

{

Return (\_SB.UBTC.RUCC (H1CR, One))

}

}

 

If you need identify your USB ports like USB-C for example, change TUPC/GUPC to MAL0

 

Quote
Scope (\_SB.PCI0.XHC.RHUB.SS01)

{

Method (_UPC, 0, NotSerialized) // _UPC: USB Port Capabilities

{

If ((H1TC == Zero))

{

If (((UMAP & One) == One))

{

Return (MAL0 (One))

}

Else

{

Return (GUPC (Zero))

}

}

Else

{

Return (\_SB.UBTC.RUCC (H1CR, One))

}

}

 

0xFF - internal - GUPC

Zero - USB 2 - TUPC

0x03 - USB 3 - MALD

0x09 - USB-C - MAL0 (Same HSxx/SSxx in both orientations, then it has an internal switch)

0x0A - USB-C - MAL1 (Different HSxx/SSxx in each orientation, then it has no switch)

 

-USB 2 PORTS inside USB 3 BUS, just Inject USB 3

Kzzu4cQ.png

-My SSDT with edits

SSDT-6-A M I.aml.zip

-Use a Diff Merge to compare files

-Original

ORIGINAL.txt.zip

-Edited

EDITED.txt.zip

-Download Diff Merge

https://sourcegear.com/diffmerge/downloads.php#

 

5BB76VB.png

 

Support Olarila Vanilla Hackintosh by making a donation HERE

About Premium Users you can check HERE

Problems with Paypal HERE

Link to comment
Share on other sites

  • Administrators

Excellent guide [ref]MaLd0n[/ref], awesome!!


Bit by bit we will understanding more about ACPI patching, thank you.


But one doubt, I need to keep the USB Injection at Clover? E.g: Devices > USB > Inject/FixOwnership/HighCurrent


Thanks

Thanks & Regards

IdeaPad Gaming 3i • Aspire A515-52 • Clover / OpenCore
We are in a great Forum, so, let's have some fun and learn from each other!

btn_donate_SM.gif

Link to comment
Share on other sites

  • Administrators

[ref]piyushrawal[/ref], dont need usbinjectall and XHCI-unsupported.kext


use ssdt with usb patch limit and u don't need more

SSDT-xh.aml.zip

https://Olarila.com/forum/viewtopic.php?f=62&t=6539


if u need change connectors, check inside all _upc and change


0xFF - internal - GUPC

Zero - USB 2 - TUPC

0x03 - USB 3 - MALD

0x09 - USB-C - MAL0

0x0A - USB-C - MAL1


btw, SSDT-xh is a native name or u renamed it? use a native name and clover replace a correct table, i never test with rename

Support Olarila Vanilla Hackintosh by making a donation HERE

About Premium Users you can check HERE

Problems with Paypal HERE

Link to comment
Share on other sites

[ref]piyushrawal[/ref], dont need usbinjectall and XHCI-unsupported.kext


use ssdt with usb patch limit and u don't need more

SSDT-xh.aml.zip

https://Olarila.com/forum/viewtopic.php?f=62&t=6539


if u need change connectors, check inside all _upc and change


0xFF - internal - GUPC

Zero - USB 2 - TUPC

0x03 - USB 3 - MALD

0x09 - USB-C - MAL0

0x0A - USB-C - MAL1


btw, SSDT-xh is a native name or u renamed it? use a native name and clover replace a correct table, i never test with rename

 

It's working with limit patch. But I am unable to disable USB ports to get it under 15 limit by setting Return (MALD (One)) to Return (MALD (Zero)). It has no effect.

And yes, renaming was a bad idea. It doesn't work if renamed.

Link to comment
Share on other sites

For laptops (at least for my skylake laptop), it is also worth to know that native _UPC or _PLD is within DSDT itself. Similarly, like how Maldon had described all we need to do is replace zero to one and define usb type in the scope of UUPC and UPLD as per my example.


Hope this helps for some of us.


https://imgur.com/TY6U1wM

Donate

Gitter Chat


Acer Aspire V15 Nitro- Black Edition VN7-592G/HM170 Chipset

Intel i7-6700HQ, 8GB RAM (UEFI Clover Catalina)


MSI B360 Gaming Arctic

Intel i5-8600 16GB RAM Asus Radeon RX580 8GB (UEFI Clover Catalina)

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.






×
  • Create New...

Hey! Welcome to Olarila.com  Please Disable Your ADBlocker!

3vHSCmh.png

The popup will be closed in 15 seconds...