watchthelight labs

bluetooth turnoff in few second #1

openarea:bluetoothkind:bugkind:regressionseverity:high
ikurina 2026-10-21

Laptop model

tuf gaming b850 plus wifi chipset Mt7925

macOS build, OpenCore version, MtkBt and BlueToolFixup versions

26.7.1 (25g241) MtkBt 0.2.2 BlueToolFixup 2.7.2

Output of ioreg -rc MtkBt -l | grep MtkBt

No variant specified, falling back to release
  167    0 0xffffff8004b89000 0x79000    0x79000    org.watchthelight.MtkBt (0.2.2) F8741787-1E17-3DB6-BCEB-7F1598992E39 <38 7 6 3>
+-o MtkBt  <class MtkBt, id 0x100000591, registered, matched, active, busy 0 (0 ms), retain 5>
      "MtkBtElapsedMs" = 4835
      "MtkBtSectionsSent" = 1
      "MtkBtTries" = 1
      "MtkBtOpenTries" = 1
      "MtkBtIntrPackets" = 0
      "MtkBtState" = "error"
      "MtkBtFwVersion" = 16896
      "MtkBtFirmwareBytes" = 448367
      "MtkBtSlpProt" = "was already bypassed"
      "MtkBtVersion" = "0.2.2"
      "MtkBtStep" = "done"
      "MtkBtFirmwareBuild" = "20260813113236"
      "MtkBtFwFlavor" = 0
      "MtkBtSections" = 5
      "MtkBtLastError" = "wmt op 6 flag 0: no event"
      "MtkBtBlocksSent" = 166
      "MtkBtBytesSent" = 41472
      "MtkBtFirmware" = "mediatek/mt7925/BT_RAM_CODE_MT7925_1_1_hdr.bin"
      "CFBundleIdentifier" = "org.watchthelight.MtkBt"
      "MtkBtChipId" = 31013
      "MtkBtFirmwareHwSw" = 0
      "MtkBtSectionsSkipped" = 2
      "IOClass" = "MtkBt"
      "CFBundleIdentifierKernel" = "org.watchthelight.MtkBt"
      "MtkBtFirmwareSha256" = "be7c18e37221e277baaef853be3a0ba930138ee879f336ff7b185e79ab09a5c9"
      "MtkBtEndpoints" = "intr-in 81 bulk-in 82 bulk-out 02"
      "MtkBtLog" = "chip 7925 fw_ver 00004200 flavor 0;slpprot before download: 18100006 -> 18100006;section 0: already loaded;section 1: already loaded;section 2: 41472 bytes in 166 blocks;slpprot after activation: 18100006 -> 18100006;wmt op 6 flag 0: no event;failed in 4835 ms, 0 interrupt packets dropped;"
Bluetooth:

      Bluetooth Controller:
          Address: NULL
          State: Off
          Chipset: BCM_4350C2
          Discoverable: Off
          Firmware Version: v0 c0
          Supported services: 0x392039 < HFP AVRCP A2DP HID Braille LEA AACP GATT SerialPort >
          Transport: UART
          Vendor ID: 0x004C (Apple)

Output of system_profiler SPBluetoothDataType (first 20 lines, remove addresses if you like)


What happened

I encountered this error while using it. bluetooth icon in the menu bar just loading, and in system setting it will turnoff in few second

watchthelight 2026-10-21

Thanks for the ioreg output, it shows exactly what went wrong.

Your MT7925 still held part of the firmware from the previous boot (a warm restart, or a reboot from Windows). MtkBt 0.2.2 saw sections 0 and 1 as "already loaded", sent only section 2, and treated the download as done. The chip then ignored the "Bluetooth on" command (wmt op 6 flag 0: no event), MtkBt stopped with MtkBtState = error, and macOS fell back to the placeholder controller (the BCM_4350C2 / Address: NULL / UART entry). That's why the menu bar icon spins and the toggle turns itself off.

0.2.3 fixes this: https://github.com/watchthelight-labs/mt7925-hackintosh-bluetooth/releases/tag/0.2.3

When "Bluetooth on" gets no answer after reusing loaded sections, it now resets the Bluetooth subsystem, downloads the whole firmware again and retries.

To test it:

  1. Replace MtkBt.kext in EFI/OC/Kexts with the one from MtkBt-0.2.3-ci.zip. The config.plist entry doesn't change.
  2. You're on 26.7.1 (25G241), so also install LegionBtFix after Lilu and BlueToolFixup. Without it, bluetoothd crash-loops a few seconds after the controller comes up on that build, which also looks like Bluetooth turning itself off.
  3. If you set bluetoothInternalControllerInfo in NVRAM, check it's exactly 14 zero bytes. 16 bytes makes bluetoothd ignore USB controllers.
  4. Reboot (a normal restart, so the warm path gets exercised) and post ioreg -rc MtkBt -l | grep MtkBt again. The lines to look for are MtkBtState, MtkBtTries, MtkBtWarmPath and MtkBtSubsysReset.

Until then, a full shutdown (not a restart) clears the chip's leftover firmware, so 0.2.2 should come up after a cold boot.

ikurina 2026-10-22

After doing what you suggested (including installing LegionBtFix), I encountered a serious error. The keyboard and mouse kept disconnecting and reconnecting (the symptom was that they would freeze for about 3-5 seconds, then work for about 1 second, and then repeat). So I suspect it's a connection problem. It uses 2.4GHz, not Bluetooth. This happens even in Recovery mode or when booting from a USB drive. It also occurs when using a wired connection.

watchthelight 2026-10-22

Sorry, that one's on 0.2.3.

First, please take MtkBt.kext out of your EFI (or set it to Enabled = false in config.plist). If the freezing stops, we've found the cause. Before you do, if you can, run this and attach mtkbt.txt:

log show --last 3m --predicate 'eventMessage CONTAINS "MtkBt"' > mtkbt.txt

What I think happens: 0.2.3 added a reset of the Bluetooth chip for the case in your first report. On your board that reset may make the chip drop off USB and come back. Each time it comes back a new copy of the driver starts and resets it again, so it never stops, and it keeps the USB controller busy enough to freeze everything else on it, wired devices included. Recovery and the installer boot through the same EFI, which is why they're affected too.

0.2.4 caps the resets at 2 per boot across all copies of the driver, so it can't loop. Once you've confirmed the freezing stops without MtkBt, try 0.2.4 and post the ioreg -rc MtkBt -l | grep MtkBt output again. Do a full power off before that boot.

LegionBtFix only patches bluetoothd and can stay.

Reply on GitHub