Contribute
Register

How migrate from Clover to Opencore? (Catalina)

Status
Not open for further replies.
ACPI patches only get applied to SSDTs and DSDT which were already there.
Already where?
If you inject an SSDT (or new DSDT), those injected ones will not have the patch applied.
Don't understand, sorry. My "SSDT-6-A M I.aml" file was generated way back when, and has always worked through High Sierra, Mojave, and Catalina using Clover. I just copied it into the ACPI folder of the USB drive and enabled it in the config.plist. Replaced it once because thought it was maybe bad, but no change. Still works in Clover.
Double check that device names are correct
What devices, and how do I check? Are you referring to filenames?
You can see ACPI errors with "log show --last boot | grep -i ACPI" in terminal
I'll try that, but probably won't be able to interpret what is there.

I thought maybe the "SSDT-EC-USBX.aml" file was screwing up my SSDT, but I deleted it from the OC EFI and config.list and the problem is still there (but everything else seems to work fine). So I tried replacing my "SSDT-6-A M I.aml" USB port enable file from a known good one, and there is still no difference. I have HS01-HS14 ports and one SS01 port showing in IORegistryExplorer if I boot from the OC EFI USB drive. If I boot directly from my Clover-EFI SSD, I get the right USB setup per my "SSDT-6-A M I.aml" SSDT.

I note there is no "AutoMerge" checkbox anywhere in the OC windows. Was that forgotten, or is it integral with other functions? I know that in Clover that box has to be checked.

[Edit: Terminal output as TextEdit file:]
 

Attachments

  • Terminal Saved Output.txt
    43.3 KB · Views: 56
Last edited:
ACPI tables already exist within firmware, and then in memory as your booting up. OC will only apply things under ACPI->Patch to those tables in memory. Then afterwards, it will load all the SSDTs under ACPI->Add and add those.

If you are, for example, renaming EC0 to EC (please don't do this), it will only rename EC0 within the DSDT and what ever SSDTs already exist in memory. It won't rename EC0 in any additional SSDTs you add (or replace?) under ACPI->Add.

Tbh, there isn't anything of note within your log - also your PMCR ssdt seems to be giving off errors on boot. I don't see whatever SSDT your using to map USB. And it's hard to tell what is wrong. It may be better off to retry mapping the USB ports using CorpNewt's USB mapper tool (and also enabling XhciPortLimit so you can map them all in one go).

No clue what "AutoMerge" is.
No clue why audio wouldn't work either - likely need to figure out the layout id for your motherboard as right now your boot-args is likely just setting it to 1.
 
Thanks for the clarifications. I didn't do anything with the embedded controllers... just left them alone, and booting is good. Don't have a "PMCR" SSDT... did you mean "SSDT-PMC.aml?" That's just a copy from the OC Guide listing, which states it is necessary for Coffeelake motherboards. No clue here why it might have a problem.

My USB port enabling file is "SSDT-6-A M I.aml" which used MacMan's technique of finding and editing the USB-related SSDT in the DSDT. In my DSDT it is "SSDT-6-A M I.aml" and was the template I used for my SSDT. My port mapping was done a year ago; I just "turned off" the unnecessary ports. (Incidentally, I thought it might be corrupted somehow, so I re-made the SSDT again, but again I have only the 15 original ports supplied without my SSDT.) That's why I was wondering about "automerge," which needs to be checked in Clover Configurator. I guess it allowed my SSDT to overwrite the DSDT's original one. As I wrote, it works fine and gives me the 15 ports I need when booted by Clover.

I was able to fix audio by following the "Troubleshooting Audio" OC guide. It involved a bunch of stuff I don't understand, but it worked. (I have no idea what "PciRoot(0x0)/Pci(0x1f,0x3)" even is, but I added it to "Device Properties" and I guess it is a "layout id.")

I think this leaves only my USB ports problem unsolved, and my lack of understanding that I posted on this thread page 3, post #26. I still have no idea how to handle my "edge case" of having no "EC" controller. How do I make a "dummy EC?"

Thanks for your help!
 
Last edited:
In pursuit of understanding this web page's "No PNP0C09 show up" edge case, I searched through my DSDT (Z390 I AORUS PRO motherboard) and the closest thing I could find to a controller was an "IPIC" device "PNP0000" shown below. My question is this: how does it affect editing of the "SSDT-EC-USBX.dsl" file? (Because I have no idea.)
Z390 DSDT Search.jpg
 
Attached are screenshots of IORegistryExplorer displays, one with computer booted from Clover, and the other booted from my OpenCore USB flash drive. I guess the HS13 port in the OC listing is the USB-C port (not used by me).
XHC Clover vs OC.jpg
 
Last edited:
The EC is generally put under the LPCB/LPC device in IOReg. IPIC is also under that LPCB device - you need to know the name of the LPCB device so that you can correct the EC SSDT and put it in the correct place. It'll error out if you try to do
Scope (\_SB.PCI0.LPC)
and the device is actually named LPCB.

For USB, it's hard to say - I've always used a USB Map kext with OpenCore rather than an SSDT
If you uploaded the USB SSDT, I could maybe get an idea of what your doing.
 
you need to know the name of the LPCB device so that you can correct the EC SSDT and put it in the correct place.
The thing is, I can't find any device anywhere in the DSDT that is "EC" or any of the other choices mentioned in the OC guide. There is definitely no "PNP0C09;" I have found all the "PNPxxxx" devices in LPCB and could list them here, but they are none of them "PNP0C09." So my question is, what do I have to do to fulfill the requirement "... When this happens, you'll only need to create a "dummy" EC for macOS"?

My USB SSDT is attached below; it's just an edited, compiled copy of "SSDT-6-A M I.dsl" from my DSDT, which Clover "merges" with, I guess. It works in Clover!
 

Attachments

  • SSDT-6-A M I.aml
    11.3 KB · Views: 40
To be honest, I've never really seen this method of USB mapping. I'm not exactly sure what's being changed here to prevent a port from being used or not.

Are you sure you aren't using a kext like USBInjectAll to inject all the USB ports?

For your EC device - the point of finding all the PNPxxxx devices are to find the parent (LPCB in this case) so that you can put the dummy EC device (literally named) EC under that same device.
 
I'm not exactly sure what's being changed here to prevent a port from being used or not.
If you open "SSDT-6-A M I.aml" in MaciASL and look at the decompiled ".dsl" version, look in the left-hand column and click the arrow on folder "\_SB.PCIO.XHC.RHUB.HS01." Then click on the "_UPC" item (USB Port Capabilities). That should take you to line 365. See the "if...else" commands just below it? Originally the "If" "Return" statement said "Return (GUPC (One))" and the "Else" "Return" statement said "Return (GUPC (Zero))" which enables that HS01 port.

To disable the HS01 port, I edited the upper ("If") "Return" statement to "Return (GUPC (Zero))" which disables that port.

Each of the folders in the left-hand column contain the same "_UPC" term which navigates you to a specific USB port. I just repeated the above edit for all the ports I wanted to disable. Again, all credit to MacMan for this technique... I just copied his method. The "automerge" box in Clover Configurator's config.list display must be checked in order for this to work.

This only works on a DSDT that lists separate SSDTs so the original can be copied, edited, and placed in the "EFI/CLOVER/ACPI/patched" folder in Clover. It works for my Mini-ITX-2, -3, and -4 computers (below) but not for my Mini-ITX-1, which has a Gigabyte GA-H87N-WIFI motherboard. The DSDT for that motherboard has no separate SSDT for USB enabling. For that one I used RehabMan's older method.

Are you sure you aren't using a kext like USBInjectAll to inject all the USB ports?
Yes, originally, I had to map all my USB ports to the physical configurations of my motherboards and computer cases. And that required all USB ports to be enabled so I could see which I wanted. But that was a long time ago and I only had to do that once for each computer, and I have tables which show that now. So I no longer need USBInjectAll.

Apparently OpenCore may be missing the "automerge" feature that allows my SSDT to override the dumped original DSDT. Or else, OpenCore requires something else that I don't know.

For your EC device - the point of finding all the PNPxxxx devices are to find the parent (LPCB in this case) so that you can put the dummy EC device (literally named) EC under that same device.
This is where I get lost. I have found all the PNPxxxx devices, and as far as I can tell they are all under LPCB. How do I "put the dummy EC device (literally named) EC under that same device"? And why is my system working under OpenCore 0.6.3 without doing that? What does the embedded controller do? In my post #55 above, note the comment under device "IPIC" that says it is "an 8259-compatible Programmable Interrupt Controller." This is the only controller I have seen. Is this the subject of the "EC" device issue? Is "PNP0000" relevant? What, exactly, am I supposed to do if there is no "PNP0C09?
 
Status
Not open for further replies.
Back
Top