Bluetooth always "on" and not working (OC, AMD, 10.15, BCM94360CD)

Bluetooth always "on" and not working (OC, AMD, 10.15, BCM94360CD)

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

  1. Can USB mapping fix my Bluetooth problem or am I on the wrong track?
  2. What about PO14 above? Is that my missing bluetooth?
  3. Do I need any kexts? Which ones? Like USBInjectAll or XHCI-unsupported (probably not; I have no "PNP0C09" in my DSDT)?
  4. Is another problem, the not working sleep function of my Hackintosh, also related to USB mapping?
  5. Is it possible to get my cheap USB 3.0 PCIe card to work?
  6. 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?
  7. 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?
  8. 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?
  9. 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?

  1. 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?

  1. How do I remove unwanted/unneeded ports from my system? By deleting them from my DSDT?

  2. Can you explain what "Pro Carbon" and "IOUSBDevice" (PRT3 and 4 in XHC0) are? Can I remove those?

  3. 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...)

  4. I'm using khronokernel's SSDT-EC-USBX-AMD.aml. It is my only SSDT patch. Do I actually need that?

  5. Do I need the crossed-out KEXTs below?

My system's configuration

Type Item
CPU AMD Ryzen 5 3600X
Motherboard MSI B450 GAMING PRO CARBON AC
Video Card Radeon RX 5700 XT
Wifi/BT Card via PCIe Fenvi BCM94360CD off AliExpress
USB 3.0 PCIe Card Some cheap thing (no brand found?!) I had laying around, not expected to work on macOS, good on Win10
Full List: PCPartPicker
submitted by /u/CrayCJ
[link] [comments]