Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[BrcmPatchRam] macOS Monterey BT issues #1669

Closed
dreamwhite opened this issue Jun 7, 2021 · 36 comments
Closed

[BrcmPatchRam] macOS Monterey BT issues #1669

dreamwhite opened this issue Jun 7, 2021 · 36 comments

Comments

@dreamwhite
Copy link

Hi there,
first of all thank you so much for 2021.06 release planning. Everything works flawlessly on my side.
I'm opening this issue to keep track of the changes to BrcmPatchRAM (and possibly other kexts like Lilu) behaviour on macOS 12 Monterey.

Today I installed macOS Monterey 12.0 (21A5248p) on my laptop and noticed that the installer hangs if BrcmPatchRAM kexts are injected. Disabling them from config.plist makes the boot proceed.

I have a DW1830 (BCM943602BAED 14e4:43ba) and I'm currently using the following kexts for the bluetooth compatibility on macOS Big Sur 11.4 (20F71):

  • BrcmBluetoothInjector (required from macOS 10.15 Catalina and newer)
  • BrcmPatchRAM3 (paired with the injector)
  • BrcmFirmwareData (as I'm injecting the kexts via OC)

As I wrote above, if those kexts are injected and I try to boot macOS 12 Beta, the boot process hangs.

Is there any chance that my card (as well as the other cards which require BrcmPatchRAM for BT compatibility) will work on macOS 12?
I'll attach as soon as possible OpenCore 0.7.0 DEBUG logs both with and without BrcmPatchRAM kexts injected. Please tell me if you require any other logs, and eventually how to obtain them.
Regards
dreamwhite

@dreamwhite
Copy link
Author

As wrote above, here you are the logs obtained with the following boot-args: -v debug=0x100 keepsyms=1 -lilubetaall -liludbg liludump=120:

opencore-2021-06-07-222721.txt
Lilu_1.5.3_21.0.txt
Let me know your thoughts on that, and eventually how can I help you.
dreamwhite

@Andrey1970AppleLife
Copy link
Contributor

It not plug-in Lilu.

@Pavo-IM
Copy link

Pavo-IM commented Jun 8, 2021

Seems to be a firmware loading issue.

@zhen-zen
Copy link

zhen-zen commented Jun 8, 2021

BrcmPatchRAM works as intended and fw is loaded. You can verify it by rebooting from Windows with the injector only. 3rd-party BT cards seem to have issues for lack of some ingredients from customized fw. I wonder if Intel BT works in Monterey.

@Pavo-IM
Copy link

Pavo-IM commented Jun 8, 2021

BrcmPatchRAM works as intended and fw is loaded. You can verify it by rebooting from Windows with the injector only. 3rd-party BT cards seem to have issues for lack of some ingredients from customized fw. I wonder if Intel BT works in Monterey.

It works as intended in BigSur and below, but something with the loading the firmware has changed in Monterey. I can get BrcmPatchRAM3 loaded but the BrcmFirmwareData and BrcmBluetoothInjector kext do not work in Monterey.

@zhen-zen
Copy link

zhen-zen commented Jun 8, 2021

I can get BrcmPatchRAM3 loaded but the BrcmFirmwareData and BrcmBluetoothInjector kext do not work in Monterey.

BrcmBluetoothInjector is a binaryless kext that matches additional non-native hardware IDs and won't show up in ioreg or kextstat.

For firmware loading, the device can hold loaded firmware after a warm reboot. This trick is widely used before BrcmPatchRAM is developed.

Compared to Big Sur, IOBluetoothFamily adds more methods on ACPI operations for UART module, i.e. torvalds/linux@4c33162 . The log indicates that the driver tries to access those methods while native Bluetooth cards don't have such process. I guess there is a whitelist for native USB Bluetooth IDs and all other devices will took the UART approach and then fail.

@dreamwhite
Copy link
Author

I'll try to reply to everyone:

@Andrey1970AppleLife: It not plug-in Lilu.

Oh, my bad. I thought that Lilu could help somehow 😅

@Pavo-IM: Seems to be a firmware loading issue.
@zhen-zen : BrcmPatchRAM works as intended and fw is loaded. You can verify it by rebooting from Windows with the injector only. 3rd-party BT cards seem to have issues for lack of some ingredients from customized fw. I wonder if Intel BT works in Monterey.
I don't have Windows on my computer, but I have a working Arch Linux installation and bluetooth works fine without installing any kind of external drivers (fyi I'm using brcmfmac kernel module). Is this still valid or should I install Windows somewhere and eventually report back? Eventually what should I check on Windows?

Anyways thank you so much for replying and have a great day

@zhen-zen
Copy link

zhen-zen commented Jun 8, 2021

I don't have Windows on my computer, but I have a working Arch Linux installation and bluetooth works fine without installing any kind of external drivers (fyi I'm using brcmfmac kernel module). Is this still valid or should I install Windows somewhere and eventually report back? Eventually what should I check on Windows?

Literally any OS with working Bluetooth works in this way, including Linux and even macOS (set maxKernel to 20.99.99 for BrcmPatchRAM, don't apply to the injector).

@dreamwhite
Copy link
Author

Literally any OS with working Bluetooth works in this way, including Linux and even macOS (set maxKernel to 20.99.99 for BrcmPatchRAM, don't apply to the injector).

Alright, so can you gently confirm me the following recap?

  • set maxKernel to 20.99.99 for BrcmPatchRAM3 and BrcmFirmwareData
  • leave BrcmBluetoothInjector untouched

If so, what kind of logs do you need? Should I attach Lilu debug log despite it still doesn't show anything relevant about BrcmPatchRAM?

@Pavo-IM
Copy link

Pavo-IM commented Jun 8, 2021

Here is a dump from the log using log show --last boot | grep -I brcm since log show --last boot | grep -i brcm[fp] doesn't work.
brcm_dump.txt

This is from using the latest debug version btw.

@ameenjuz
Copy link

ameenjuz commented Jun 8, 2021

I have same issue BrcmPatchRAM3 and BrcmFirmwareData
BrcmBluetoothInjector on Moneterey 12
without these kexts booting fine macOS 12
I have Dell 1560 BRCM4352z

@Pavo-IM
Copy link

Pavo-IM commented Jun 8, 2021

Some more info.... In Bigsur and below the BroadcomBluetoothHostControllerUSBTransport.kext which is what the injector kext is injecting into, is located inside IOBluetoothFamily.kext/Contents/Plugins/ in Monterey BroadcomBluetoothHostControllerUSBTransport.kext is not located there anymore. Its located in System/Library/Extensions.
Screen Shot 2021-06-08 at 12 19 58 PM

@Pavo-IM
Copy link

Pavo-IM commented Jun 8, 2021

BroadcomBluetoothHostControllerUSBTransport IOProviderClass has changed from IOUSBHostDevice to IOResources and doesn't have the list of devices in the Info.plist like it previously did. This is why the BrcmBluetoothInjector.kext isn't working.
Screen Shot 2021-06-08 at 5 22 17 PM

@ameenjuz
Copy link

ameenjuz commented Jun 9, 2021

@Pavo-IM what is salution to fix bluetooth for monterey 12

@zhen-zen
Copy link

zhen-zen commented Jun 9, 2021

BroadcomBluetoothHostControllerUSBTransport IOProviderClass has changed from IOUSBHostDevice to IOResources and doesn't have the list of devices in the Info.plist like it previously did. This is why the BrcmBluetoothInjector.kext isn't working.

All of following drivers are empty:

BroadcomBluetooth20703USBTransport.kext
BroadcomBluetoothHostControllerUSBTransport.kext
CSRBluetoothHostControllerUSBTransport.kext
IOBluetoothHostControllerPCIeTransport.kext
IOBluetoothHostControllerTransport.kext
IOBluetoothHostControllerUARTTransport.kext
IOBluetoothHostControllerUSBTransport.kext
IOBluetoothPacketLogger.kext
IOBluetoothSerialManager.kext

They are all 159 KB in size and do nothing in start() (no probe() implementation).

@8itCat
Copy link

8itCat commented Jun 9, 2021

What about intel? Doesn't that require different drivers? How would we go about that?

@findyy99
Copy link

findyy99 commented Jun 9, 2021

Me2, is there any way to fix this issue now?

@dreamwhite
Copy link
Author

I'm currently doing some researches (probably in the wrong way, but hey, science b***h!) and made the following considerations:

On Big Sur 11.4 (20F71) in addition to BrcmPatchRAM kexts already mentioned in my first comment of this issue, there are only two kexts responsible of the bluetooth functioning:

  • IOBluetoothFamily.kext
  • IOBluetoothHIDDriver.kext

The first one contains the following plugins:

  • BroadcomBluetooth20703USBTransport.kext
  • BroadcomBluetoothHostControllerUSBTransport.kext
  • CSRBluetoothHostControllerUSBTransport.kext
  • CSRHIDTransitionDriver.kext
  • IOBluetoothHostControllerPCIeTransport.kext
  • IOBluetoothHostControllerTransport.kext
  • IOBluetoothHostControllerUARTTransport.kext
  • IOBluetoothHostControllerUSBTransport.kext
  • IOBluetoothPacketLogger.kext
  • IOBluetoothSerialManager.kext
  • IOBluetoothUSBDFU.kext

On macOS Monterey 12.0 (21A5248p) instead IOBluetoothFamily.kext plugins are outside of it:

  • IOBluetoothFamily.kext
  • IOBluetoothHIDDriver.kext
  • IOBluetoothHostControllerPCIeTransport.kext
  • IOBluetoothHostControllerTransport.kext
  • IOBluetoothHostControllerUARTTransport.kext
  • IOBluetoothHostControllerUSBTransport.kext
  • IOBluetoothPacketLogger.kext
  • IOBluetoothSerialManager.kext

If we exclude the common kexts between the two macOS versions we can come up with the following kexts present in Big Sur but not in Monterey:

  • BroadcomBluetooth20703USBTransport.kext
  • BroadcomBluetoothHostControllerUSBTransport.kext
  • CSRBluetoothHostControllerUSBTransport.kext
  • CSRHIDTransitionDriver.kext
  • IOBluetoothUSBDFU.kext

I don't know if those kext, properly injected, can help fixing the BT issues with Monterey, but at least on my side, I couldn't get it working even after injecting them via OC.

I attach for science purposes Big Sur and Monterey BT kexts and the output of kmutil showloaded | grep Brcm and kmutil showloaded | grep Bluetooth output both from Big Sur and Monterey

bluetooth_kexts_bug_sure_11.4_20f71.zip
bluetooth_kexts_monterey_beta1.zip

kexts_monterey.txt
kexts_bug_sure.txt

Please let me know your thoughts on that and eventually where should I deep investigate on.
Many thanks and have a nice evening

@Pavo-IM
Copy link

Pavo-IM commented Jun 10, 2021

  • BroadcomBluetooth20703USBTransport.kext
  • BroadcomBluetoothHostControllerUSBTransport.kext
  • CSRBluetoothHostControllerUSBTransport.kext

These are in Monterey, just not in IOBluetoothFamily.kext as plugins.

@dreamwhite
Copy link
Author

  • BroadcomBluetooth20703USBTransport.kext
  • BroadcomBluetoothHostControllerUSBTransport.kext
  • CSRBluetoothHostControllerUSBTransport.kext

These are in Monterey, just not in IOBluetoothFamily.kext as plugins.

Oh alright. Thanks for the correction. So from what I'm re-reading on this issue, the firmware injector should reimplement the device list, right?

@zhen-zen
Copy link

The Bluetooth implementation in Monterey has changed significantly and no longer fits BrcmPatchRAM framework. It's not enough to just get firmware uploaded and inject a kextless driver for device ID matching.

Now Kext-based bluetooth drivers are deprecated in favor of user-space bluetoothd through AppleUSBHostInterfaceUserClient. Empty drivers with bumped version also block downgrade attempts.

Closing the issue for now unless we get breakthrough or new changes in next beta.

@vit9696
Copy link
Contributor

vit9696 commented Jun 11, 2021

It is backported from iOS. I believe we have promising results with @dhinakg actually. Will see if/when we can oss them.

@1alessandro1
Copy link

Does this bluetooth incompatibility issue affect also cards with Apple device-ids like the BCM94360NG and the T919 from Fenvi? Or is it just for the cards which require BrcmpatchRAM and friends?

@m0d16l14n1
Copy link

m0d16l14n1 commented Jun 12, 2021

Does this bluetooth incompatibility issue affect also cards with Apple device-ids like the BCM94360NG and the T919 from Fenvi? Or is it just for the cards which require BrcmpatchRAM and friends?

I have no issues with my BCM94360NG bluetooth (headphones are working okay + AirDrop - no issues)

@dhinakg
Copy link
Member

dhinakg commented Jun 12, 2021

See acidanthera/BrcmPatchRAM#12.

@dreamwhite
Copy link
Author

See acidanthera/BrcmPatchRAM#12.

Uh thank you so much. May I gently ask you what are the steps in order to use BluetoolFixup? Should I inject it with the BrcmPatchRAM RELEASE kexts or use the project ones?
Thanks

@gnpaone
Copy link

gnpaone commented Jul 11, 2021

Did anyone use BlueToolFixup.kext with openintelwireless intelbluetoothfirmware.kext and working? I have intel ax200 bluetooth and it's not working (firmware not loading) (I removed intelbluetoothinjector.kext too). If it's working for anyone, please tell what version of intelbluetoothfirmware.kext you used or please post your kext here.

@kidonng
Copy link

kidonng commented Aug 16, 2021

It seems Monterey beta 5 breaks bluetooth even with BlueToolFixup. Disclaimer: I'm using IntelBluetoothFirmware.

@williambj1
Copy link

It seems Monterey beta 5 breaks bluetooth even with BlueToolFixup. Disclaimer: I'm using IntelBluetoothFirmware.

Seems like Bluetooth is not working on certain SMBIOS models (transport type set back to PCIe). MacbookPro15,3 is known to be problematic starting from beta 5, afaik no other models are affected so far.

@gnpaone
Copy link

gnpaone commented Aug 17, 2021

It seems Monterey beta 5 breaks bluetooth even with BlueToolFixup. Disclaimer: I'm using IntelBluetoothFirmware.

Seems like Bluetooth is not working on certain SMBIOS models (transport type set back to PCIe). MacbookPro15,3 is known to be problematic starting from beta 5, afaik no other models are affected so far.

Thanks, now I got to know why my bluetooth not working. I'm also using MacbookPro15,3, I'll change it and check

@kidonng
Copy link

kidonng commented Aug 17, 2021

I'm using MacbookPro15,4 so it could be that all MacbookPro15 are affected.

@gnpaone
Copy link

gnpaone commented Aug 17, 2021 via email

@williambj1
Copy link

I'm using MacbookPro15,4 so it could be that all MacbookPro15 are affected.

I'm using MacbookPro15,1 and it works fine. People have reported that MacbookPro15,2 works as well.

@ameenjuz
Copy link

Bluetooth do not work properly on beta 5 monterey when i want to send picture or file using bluetooth on beta 5 then i m facing this issue the device does not have the necessary services
Screen Shot 2021-08-17 at 12 44 22 AM

@kidonng
Copy link

kidonng commented Aug 17, 2021

@williambj1 Thanks for the info, can confirm switching to MacbookPro15,2 works.

@mjs520
Copy link

mjs520 commented Sep 29, 2021

USB Bluetooth CSR8510-A10, which cannot be driven under macos12
Uploading QQ20210929-141855.png…

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Development

No branches or pull requests