TL; DR: Read bold parts only. My actual questions are at the end! Many thanks.
I just successfully finished building and setting up my first PC and AMD dual-boot (macOS 10.15.3 and Win10) OpenCore (0.5.5) Hackintosh with was actually quite easy thanks to the the great Hackintosh Community!
(I just followed the OpenCore Vanilla Guide from khronokernel [Thank you so much!!]. That is EXACTLY and ONLY that - I mix-followed a couple guides at first, but failed... I suggest watching Snazzy Labs Opencore Guide, but only to understand the process. The OpenCore Guide is more detailed... Also: The dual-boot part was quiet a pain; I will explain my process in my success post.)
Before I post my success, I would like to fix a couple problems I came across, one by one. My systems components and configuration can be found at the end.
Problem: Bluetooth always on and not working
Even though my MSI B450 Motherboard has WIFI/BT built-in, I had to get an extra WIFI/BT Card with PCIe Adapter as macOS is picky. I decided for the BCM94360CD, which is said to work out of the box; without additional kexts. It does exactly that and there are Windows Drivers. Wifi is excellent, but I cannot get Bluetooth to work properly: Bluetooth is constantly on, but does not recognise any devices...
As this cannot be a kext issue (I tried the recommended kexts too), I figured that this is a USB mapping issue...
Broken Bluetooth
What I've tried: USB Mapping
As all my USB ports actually work flawlessly, but I am aware of the internal ports of my motherboard, so I followed khronokernel's guide on USB Mapping for AMD systems. Unfortunately it is not written for n00bs like me (the OpenCore Guide above is quite n00bs friendly), so I did not understand everything, hence this post.
I got that the main problem with the limit of 15 ports per controller and I can have a look at my ports in IORegistryExplorer, that I have to edit the AMD-USB-Map.kext to get everything in working order and that I might have to edit my system's DSDT if not all ports are showing up. What I did not understand was how I am supposed to remove unwanted ports and if I can address multiple controllers in the same kext.
I'd like to show you what I've got so far:
Situation of my USB ports
- On my motherboard, I have the following ports:
- 2 external USB 3.1 G2 (A+C) [Picture below: 10]
- 2 external USB 3.1 G1 (2xA) [Picture below: 9]
- 2 external USB 2.0 (2xA) [Picture below: 7]
- 2 internal USB 3.1 G1
- these are connected to the case's 2 external USB 3.0 front ports (2xA)
- 4 internal USB 2.0
- In addition a have a cheap USB 3.0 PCIe card (brand not found) connected to my system, which I don't expect to work on macOS. Would be nice though.
MSI B450 Gaming Pro Carbon AC I/O Layout
- Screenshot of my IORegistryExplorer, relevant for below:
Relevant ports and controllers in my IORegistryExplorer
- According to the guide my USB controller is PTXH. So I tried all my ports with USB 2.0 and 3.0 devices and wrote down what happened in IORegistryExplorer. There are only 14 in this controller. This seems to be my current port map for my MSI B450 Carbon AC Motherboard (see Motherboard I/O picture above):
Location on case |
USB Type |
|
Port |
Name |
FRONT (Case via internal) |
************ |
|
************ |
************ |
Left |
3.0, A (written on Case; 3.1 G1 actual internal port on motherboard?) |
|
04 |
POT4 |
" |
2.0, A |
|
08 |
POT8 |
Right |
3.0, A (written on Case; 3.1 G1 actual internal port on motherboard?) |
|
03 |
POT3 |
" |
2.0, A |
|
07 |
POT7 |
BACK (I/O): TOP ROW |
************ |
|
************ |
************ |
Left (7v) |
2.0, A (USB 2.0 only) |
|
0c |
PO12 |
Right (7) |
2.0, A (USB 2.0 only) |
|
0d |
PO13 |
BACK (I/O): TOP ROW |
************ |
|
************ |
************ |
Left (10v) |
3.1 G2, C |
|
01 (DSDT: "One") |
POT1 |
" (probably; not tried!) |
2.0, C |
|
05 |
POT5 |
Right (10) |
3.1 G2, A |
|
02 |
POT2 |
" |
2.0, A |
|
06 |
POT6 |
Probably INTERNAL |
************ |
|
************ |
************ |
IORegistryExplorer constantly states: BRCM20702 Hub. BLUETOOTH??! Unstable? |
If internal: 2.0 |
|
0e |
PO14 |
Unresponsive |
************ |
************ |
************ |
************ |
IORegistryExplorer never reacted?! |
- |
|
09 |
POT9 |
IORegistryExplorer never reacted?! |
- |
|
0a |
PO10 |
IORegistryExplorer never reacted?! |
- |
|
0b |
PO11 |
- As you see there are a couple ports missing: Specifically the mid row of the I/O of the motherboard (9)... For these. perfectly working ones!, IORegistryExplorer stated the following ports within the XHC0 controller and as "PRT"s:
Location on case |
USB Type |
|
Port |
Name |
BACK (I/O): MID ROW |
************ |
|
************ |
************ |
Left (9v) |
3.1 G1, A |
|
05 |
PRT5 |
" |
2.0, A |
|
01 |
PRT1 |
Right (9) |
3.1 G1, A |
|
06 |
PRT6 |
" |
2.0, A |
|
02 |
PRT2 |
--> According to MSI, these ports are not connected to the B450 chipset, but directly to the AMD CPU*...*
- In the XHC0 controller there are a total of 8 "PRT" ports. Apart from 1,2,5,6 they are:
IORegistryExplorer's entry |
USB Type |
|
Port |
Name |
sometimes?!: "Pro Carbon", Subentry: "AppleUSBHostCompositeDevice" |
? |
|
03 |
PRT3 |
always: "IOUSBDevice", Subentry: "IOBluetoothHostControllerUSBTransport" |
? |
|
04 |
PRT4 |
None, always |
? |
|
07 |
PRT7 |
None, always |
? |
|
08 |
PRT8 |
- When I connect anything to my cheap USB 3.0 PCIe card IORegistryExplorer returns the following in the PT02 controller, but deeper in PT25>pci1912,15>AppleUSBXHCIPCI. (The devices are even shown in the system profiler after sometime, but USB sticks e.g. are not mounted/don't work...)
Location on PCIe card I/O |
USB Type |
|
Port |
Name |
Right |
3.0, A |
|
01 |
AppleUSB30XHCIPort |
" |
2.0, A |
|
03 |
AppleUSB20XHCIPort |
Left |
3.0, A |
|
02 |
AppleUSB30XHCIPort |
" |
2.0, A |
|
04 |
AppleUSB20XHCIPort |
--> There are only 4 ports in this controller.
Questions
- Can USB mapping fix my Bluetooth problem or am I on the wrong track?
- What about PO14 above? Is that my missing bluetooth?
- Do I need any kexts? Which ones? Like USBInjectAll or XHCI-unsupported (probably not; I have no "PNP0C09" in my DSDT)?
- Is another problem, the not working sleep function of my Hackintosh, also related to USB mapping?
- Is it possible to get my cheap USB 3.0 PCIe card to work?
- Should I map my USB ports at all as it works quite flawlessly (there have been two unsuspected unmounts of externals drives...) and are below 15 ports per controller?
- If no: Can I set the "XhciPortLimit" quirk to "false" in my OpenCore config.plist as I have no controllers with more than 15 ports?
- If yes: Can you point me to a n00b tutorial on OpenCore with an AMD system on USB mapping or answer me the following questions?
- khronokernel's guide on USB Mapping for AMD systems implies here that the DSDT should have 22 entries for the PTXH controller. Mine has only 19. Is that a problem? khronokernel states that all entries for a faulty controller should be deleted in the DSDT. Should I do that? Even if my USB is working ok?
Only 19 of 22 ports in PTXH in my DSDT. What to do?
- Can I just add a second (XHC0) and maybe third (PT02 for my cheap USB 3.0 PCIe card) child in the tree below "IOKitPersonalities" in the info.plist of my edited AMD-USB-Map.kext; just in the manner of the "IONameMatch" "PTXH"?
Just duplicate and edit this IOKitPersonality to address other controllers?
-
How do I remove unwanted/unneeded ports from my system? By deleting them from my DSDT?
-
Can you explain what "Pro Carbon" and "IOUSBDevice" (PRT3 and 4 in XHC0) are? Can I remove those?
-
Should and can I migrate PRT1,2,5,6 (Mid Row USB of Motherboard I/O, XHC0) to the PTXH controller? How? (Then I would have exactly 15 ports there...)
-
I'm using khronokernel's SSDT-EC-USBX-AMD.aml. It is my only SSDT patch. Do I actually need that?
-
Do I need the crossed-out KEXTs below?
My system's configuration
- OpenCore 0.5.5
- macOS Catalina 10.15.3
- OpenCore EFI files:
- Active ACPI:
- Active Drivers:
- Active KEXTS:
- Config.plist: http://www.filedropper.com/configreddit (only use if exactly same components as me; see below. Change according to OpenCore Guide!! [PlatformInfo removed; Populate this yourself!] This file might change on my journey.) Changed with ProperTree strictly according to the OpenCore Guide. Differences to sample.plist:
- Five initial Warnings removed.
- DeviceProperties/Add: Removed "PciRoot(0x0)/Pci(0x1b,0x0)" and "PciRoot(0x0)/Pci(0x2,0x0)" as well as their children
- Populated this config.plist with the OC snapshot function of ProperTree (CMD/CTRL+R, point to EFI/OC/) . Adds KEXTs and SSDT.
- Kernel/Emulate: Removed "CpuidMask" and "CpuidData" (were blank anyway).
- Kernel/Patch: Ryzen/Threadripper(17h) Patch applied.
- Kernel/Quirks:
- "DummyPowerManagement" set to True
- "ExternalDiskIcons" set to True
- "PanicNoKextDump" set to True
- "PowerTimeoutKernelPanic" set to True
- "XhciPortLimit" set to True
- Misc/Boot:
- "HibernateMode" left "None"
- Misc/Debug: Nothing changed.
- Misc/Security:
- "AllowNvramReset" set to True
- "AllowSetDefault" set to True
- "AuthRestart" left False
- "RequireSignature" set to False
- "RequireVault" set to False
- "ScanPolicy" set to 0
- Misc/Tools: Shell.efi was added by the OC snapshot function.
- NVRAM/7C436110-AB2A-4BBB-A880-FE41995C9F82:
- "boot-args" set to "-v keepsyms=1 debug=0x100 agdpmod=pikera alcid=1"
- "nvda_drv" set to <>
- "prev-lang:kbd" set to my preferences. (Use "656E2D55 533A30" = HEX for keyboard layout "en-US:0"; find your own with a TEXT to HEX converter and this.
- NVRAM/"WriteFlash" set to True,
- PlatformInfo: Changed populated with info according to the Guide with GenSMBIOS. Went with a "iMacPro1,1". Couldn't find half-valid numbers yet.
- UEFI/Drivers: Drivers were auto-added by the OC snapshot function.
- UEFI/Input:
- "PointerSupport" changed to "Data" and set to <>
- "PointerSupportMode" changed to "Data" and set to <>
- UEFI/Protocols/"ConsoleControl" set to True
- UEFI/Quirks:
- "ProvideConsoleGop" set to True
- "RequestBootVarFallback" set to True
- Bios settings strictly according to the OpenCoreGuide:
- Disabled:
- "Fast Boot"
- "CSM" [UEFI instead]
- Enabled:
- "EHCI/XHCI Hand-off"
- "Above 4G decoding"
- Core components of my system:
submitted by
Post a Comment