Have you read the docs?
Yes
macOS Version
macOS 26.5.2 (Tahoe, build 25F84)
Kext Version
v2.4.0
Wireless Adapter Model and USB Product ID
Intel AX210/AX211 (0x0032)
Description
Environment
- macOS: Tahoe 26.5.2 (Build 25F84)
- Hackintosh, OpenCore bootloader
- Motherboard: ASUS ROG Strix Z690-F Gaming WiFi
- CPU: Intel Core i9-12900KF
- Wi-Fi/Bluetooth card: Intel AX210/AX211 (USB Bluetooth interface VID 0x8087, PID 0x0032)
- Wi-Fi driver: itlwm + Heliport (working correctly)
- Kexts installed: Lilu, IntelBluetoothFirmware.kext v2.4.0, IntelBTPatcher.kext, BlueToolFixup.kext
- SIP: fully disabled (csrutil status shows all protections disabled)
Symptom
Bluetooth device does not initialize. In System Settings > Bluetooth, toggling Bluetooth on causes it to briefly appear active, then it turns itself back off after a short time. This repeats in a loop.
Confirmed via Windows dual-boot that the physical Bluetooth hardware and cable/connection are fully functional (paired a smartphone successfully in Windows).
Confirmed via ioreg -p IOUSB -l that the USB device (0x8087:0x0032) IS visible/enumerated at the IOUSB level in macOS.
A cold boot (full shutdown + power on, not a warm restart) allows Bluetooth to initialize and turn on successfully at first, but it becomes unstable and turns off on its own again after some time.
Relevant log (Console.app, live stream filtered on "bluetooth")
[bm3_usb][IOThreadFunc] -- USB -- calling GetProductAndVendorID()
[bm3_usb][GetProductAndVendorID] -- Found USB Device :
USB Product Name = (null)
USB Vendor Name = (null)
idVendor = 0x8087
idProduct = 0x0032
deviceClass = 0xE0 (224)
locationID = 0x14B00000
...
[bm3_usb][GetProductAndVendorID] -- Use internal Bluetooth USB Host Controller
[bm3_usb][IOThreadFunc] -- USB -- Can't obtain vendorID and productID -- try again
(This "Found USB Device" -> "Can't obtain vendorID and productID" sequence repeats 3 times, roughly once per second, then:)
[bm3_usb][IOThreadFunc] -- Error -- Still cannot find USB Bluetooth Controller after 15 seconds
[bm3_usb][Initialize] -- After calling pthread_cond_wait()
[bm3_usb][Initialize] -- gFoundUSBController is false -- calling break()
[bm3_usb][Initialize] -- gIOThreadInfo.runloop is NULL -- Initialization failed
[bm3_usb][OI_HciIfc_Init_USB] -- Initialization failed
Failed to initialize transport USB
Transport layer initialization failed
kernel: bluetoothd[3784] Corpse allowed 1 of 5
kernel: Full corpse enqueued for bluetoothd
bluetoothd: Bluetooth error - restarting { build=release, reason=114, context="Transport layer initialization failed" }
After this, bluetoothd restarts and re-initializes from scratch (reloading keychain data, registering HID/A2DP/GATT/etc. profiles), and the cycle appears to repeat over time.
Also worth noting: the bluetoothd crash briefly interrupts XPC connections in several unrelated system daemons (coreaudiod, ControlCenter, WindowServer, sharingd, nearbyd, etc.), all logging "### Interrupted" / "XPC connection interrupted, resetting" at the moment of the crash.
Question
Is this a known race condition in claiming the USB interface for this specific Intel Bluetooth device (0x8087:0x0032) on Tahoe? Is there a workaround (boot-arg, kext patch, USB port/timing tweak) to make the "GetProductAndVendorID" / interface claim succeed reliably instead of racing/timing out?
Happy to provide the full Console log, ioreg -p IOUSB -l dump, or config.plist on request.
Info in System Report - Bluetooth
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: USB
Vendor ID: 0x004C (Apple)
Relevant log output
default 22:11:29.974657+0200 bluetoothd [bm3_usb][IOThreadFunc] -- USB -- calling GetProductAndVendorID()
default 22:11:29.975167+0200 bluetoothd [bm3_usb][GetProductAndVendorID] -- Found USB Device :
default 22:11:29.975183+0200 bluetoothd USB Product Name = Live Gamer Ultra-Video
default 22:11:29.975189+0200 bluetoothd USB Vendor Name = (null)
default 22:11:29.975195+0200 bluetoothd idVendor = 0x07CA
default 22:11:29.975200+0200 bluetoothd idProduct = 0x0553
default 22:11:29.975205+0200 bluetoothd deviceClass = 0xEF (239)
default 22:11:29.975212+0200 bluetoothd locationID = 0x14D00000
default 22:11:29.976115+0200 bluetoothd [bm3_usb][GetProductAndVendorID] -- Found USB Device :
default 22:11:29.976129+0200 bluetoothd USB Product Name = GENERAL WEBCAM
default 22:11:29.976135+0200 bluetoothd USB Vendor Name = (null)
default 22:11:29.976141+0200 bluetoothd idVendor = 0x1B3F
default 22:11:29.976146+0200 bluetoothd idProduct = 0x2247
default 22:11:29.976160+0200 bluetoothd deviceClass = 0xEF (239)
default 22:11:29.976165+0200 bluetoothd locationID = 0x14720000
default 22:11:29.976692+0200 bluetoothd [bm3_usb][GetProductAndVendorID] -- Found USB Device :
default 22:11:29.976701+0200 bluetoothd USB Product Name = (null)
default 22:11:29.976708+0200 bluetoothd USB Vendor Name = (null)
default 22:11:29.976713+0200 bluetoothd idVendor = 0x8087
default 22:11:29.976721+0200 bluetoothd idProduct = 0x0032
default 22:11:29.976730+0200 bluetoothd deviceClass = 0xE0 (224)
default 22:11:29.976736+0200 bluetoothd locationID = 0x14B00000
default 22:11:29.997517+0200 bluetoothd [bm3_usb][GetProductAndVendorID] -- Found USB Device :
default 22:11:29.997529+0200 bluetoothd USB Product Name = (null)
default 22:11:29.997534+0200 bluetoothd USB Vendor Name = (null)
default 22:11:29.997539+0200 bluetoothd idVendor = 0x0B05
default 22:11:29.997544+0200 bluetoothd idProduct = 0x1996
default 22:11:29.997548+0200 bluetoothd deviceClass = 0xEF (239)
default 22:11:29.997553+0200 bluetoothd locationID = 0x14100000
default 22:11:29.997895+0200 bluetoothd [bm3_usb][GetProductAndVendorID] -- Use internal Bluetooth USB Host Controller
default 22:11:29.997905+0200 bluetoothd [bm3_usb][IOThreadFunc] -- USB -- Can't obtain vendorID and productID -- try again
default 22:11:31.000675+0200 bluetoothd [bm3_usb][IOThreadFunc] -- USB -- calling GetProductAndVendorID()
default 22:11:31.001321+0200 bluetoothd [bm3_usb][GetProductAndVendorID] -- Found USB Device :
default 22:11:31.001359+0200 bluetoothd USB Product Name = Live Gamer Ultra-Video
default 22:11:31.001373+0200 bluetoothd USB Vendor Name = (null)
default 22:11:31.001383+0200 bluetoothd idVendor = 0x07CA
default 22:11:31.001391+0200 bluetoothd idProduct = 0x0553
default 22:11:31.001401+0200 bluetoothd deviceClass = 0xEF (239)
default 22:11:31.001410+0200 bluetoothd locationID = 0x14D00000
default 22:11:31.002439+0200 bluetoothd [bm3_usb][GetProductAndVendorID] -- Found USB Device :
default 22:11:31.002458+0200 bluetoothd USB Product Name = GENERAL WEBCAM
default 22:11:31.002470+0200 bluetoothd USB Vendor Name = (null)
default 22:11:31.002481+0200 bluetoothd idVendor = 0x1B3F
default 22:11:31.002492+0200 bluetoothd idProduct = 0x2247
default 22:11:31.002505+0200 bluetoothd deviceClass = 0xEF (239)
default 22:11:31.002517+0200 bluetoothd locationID = 0x14720000
default 22:11:31.003253+0200 bluetoothd [bm3_usb][GetProductAndVendorID] -- Found USB Device :
default 22:11:31.003267+0200 bluetoothd USB Product Name = (null)
default 22:11:31.003273+0200 bluetoothd USB Vendor Name = (null)
default 22:11:31.003279+0200 bluetoothd idVendor = 0x8087
default 22:11:31.003285+0200 bluetoothd idProduct = 0x0032
default 22:11:31.003292+0200 bluetoothd deviceClass = 0xE0 (224)
default 22:11:31.003299+0200 bluetoothd locationID = 0x14B00000
default 22:11:31.025518+0200 bluetoothd [bm3_usb][GetProductAndVendorID] -- Found USB Device :
default 22:11:31.025542+0200 bluetoothd USB Product Name = (null)
default 22:11:31.025558+0200 bluetoothd USB Vendor Name = (null)
default 22:11:31.025573+0200 bluetoothd idVendor = 0x0B05
default 22:11:31.025588+0200 bluetoothd idProduct = 0x1996
default 22:11:31.025604+0200 bluetoothd deviceClass = 0xEF (239)
default 22:11:31.025619+0200 bluetoothd locationID = 0x14100000
default 22:11:31.026381+0200 bluetoothd [bm3_usb][GetProductAndVendorID] -- Use internal Bluetooth USB Host Controller
default 22:11:31.026401+0200 bluetoothd [bm3_usb][IOThreadFunc] -- USB -- Can't obtain vendorID and productID -- try again
default 22:11:32.030605+0200 bluetoothd [bm3_usb][IOThreadFunc] -- USB -- calling GetProductAndVendorID()
default 22:11:32.031397+0200 bluetoothd [bm3_usb][GetProductAndVendorID] -- Found USB Device :
default 22:11:32.031429+0200 bluetoothd USB Product Name = Live Gamer Ultra-Video
default 22:11:32.031446+0200 bluetoothd USB Vendor Name = (null)
default 22:11:32.031461+0200 bluetoothd idVendor = 0x07CA
default 22:11:32.031475+0200 bluetoothd idProduct = 0x0553
default 22:11:32.031490+0200 bluetoothd deviceClass = 0xEF (239)
default 22:11:32.031503+0200 bluetoothd locationID = 0x14D00000
default 22:11:32.032720+0200 bluetoothd [bm3_usb][GetProductAndVendorID] -- Found USB Device :
default 22:11:32.032736+0200 bluetoothd USB Product Name = GENERAL WEBCAM
default 22:11:32.032746+0200 bluetoothd USB Vendor Name = (null)
default 22:11:32.032754+0200 bluetoothd idVendor = 0x1B3F
default 22:11:32.032764+0200 bluetoothd idProduct = 0x2247
default 22:11:32.032773+0200 bluetoothd deviceClass = 0xEF (239)
default 22:11:32.032783+0200 bluetoothd locationID = 0x14720000
default 22:11:32.033592+0200 bluetoothd [bm3_usb][GetProductAndVendorID] -- Found USB Device :
default 22:11:32.033607+0200 bluetoothd USB Product Name = (null)
default 22:11:32.033617+0200 bluetoothd USB Vendor Name = (null)
default 22:11:32.033627+0200 bluetoothd idVendor = 0x8087
default 22:11:32.033637+0200 bluetoothd idProduct = 0x0032
default 22:11:32.033646+0200 bluetoothd deviceClass = 0xE0 (224)
default 22:11:32.033655+0200 bluetoothd locationID = 0x14B00000
default 22:11:32.056031+0200 bluetoothd [bm3_usb][GetProductAndVendorID] -- Found USB Device :
default 22:11:32.056040+0200 bluetoothd USB Product Name = (null)
default 22:11:32.056045+0200 bluetoothd USB Vendor Name = (null)
default 22:11:32.056050+0200 bluetoothd idVendor = 0x0B05
default 22:11:32.056054+0200 bluetoothd idProduct = 0x1996
default 22:11:32.056057+0200 bluetoothd deviceClass = 0xEF (239)
default 22:11:32.056061+0200 bluetoothd locationID = 0x14100000
default 22:11:32.056611+0200 bluetoothd [bm3_usb][GetProductAndVendorID] -- Use internal Bluetooth USB Host Controller
default 22:11:32.056622+0200 bluetoothd [bm3_usb][IOThreadFunc] -- USB -- Can't obtain vendorID and productID -- try again
default 22:11:33.059397+0200 bluetoothd [bm3_usb][IOThreadFunc] -- Error -- Still cannot find USB Bluetooth Controller after 15 seconds
default 22:11:33.059444+0200 bluetoothd [bm3_usb][Initialize] -- After calling pthread_cond_wait()
default 22:11:33.059487+0200 bluetoothd [bm3_usb][Initialize] -- gFoundUSBController is false -- calling break()
default 22:11:33.059501+0200 bluetoothd [bm3_usb][Initialize] -- gIOThreadInfo.runloop is NULL -- Initialization failed
default 22:11:33.059564+0200 bluetoothd [bm3_usb][OI_HciIfc_Init_USB] -- Initialization failed
default 22:11:33.059581+0200 bluetoothd Failed to initialize transport USB
default 22:11:33.059587+0200 bluetoothd Transport layer initialization failed
errore 22:11:33.059597+0200 bluetoothd Transport layer initialization failed
default 22:11:33.059607+0200 kernel bluetoothd[3784] Corpse allowed 1 of 5
default 22:11:33.205291+0200 kernel Full corpse enqueued for bluetoothd
default 22:11:33.205324+0200 bluetoothd Bluetooth error - restarting { build=release, reason=114, context="Transport layer initialization failed" }
default 22:11:33.205427+0200 bluetoothd Terminate sniff
default 22:11:33.205457+0200 bluetoothd Sniff terminated
default 22:11:33.236826+0200 ReportCrash ASI found [bluetoothd] (sensitive) 'Transport layer initialization failed'
default 22:11:33.248136+0200 bluetoothd com.apple.server.bluetooth: Bluetooth Super Server Robot Destroyer. Host software version MobileBluetooth-195.7
default 22:11:33.248877+0200 bluetoothd could not find BT_DEVICE_ADDRESS env variable
default 22:11:33.249002+0200 bluetoothd main -- calling xpc_transactions_enable() -- SIGTERM
default 22:11:33.249075+0200 bluetoothd Waiting for IOKitWaitQuiet()
default 22:11:33.249115+0200 bluetoothd Done waiting for IOKitWaitQuiet()
default 22:11:33.249672+0200 bluetoothd BT_HCI_TRANSPORT not set - Attempting to read from plist.
default 22:11:33.251245+0200 bluetoothd HCI Transport is set to USB
default 22:11:33.251271+0200 bluetoothd Warning: BT driver=0x108994BD0
default 22:11:33.257919+0200 nearbyd #btsampledistributor CBDiscovery Bluetooth state changed: Resetting
default 22:11:33.274024+0200 bluetoothd Model: x86_64, Version: Versione 26.5.2 (Build 25F84), Manufacturer: Apple Inc.
default 22:11:33.301040+0200 bluetoothd Supporting service HID
default 22:11:33.301058+0200 bluetoothd Registering "HID Host" profile in HidService
default 22:11:33.301124+0200 bluetoothd Supporting service A2DP
default 22:11:33.301178+0200 bluetoothd Registering "A2DP Source" profile in A2DPService
default 22:11:33.301251+0200 bluetoothd Supporting service Remote
default 22:11:33.301278+0200 bluetoothd Registering "AVRCP Target" profile in RemoteService
default 22:11:33.301419+0200 bluetoothd Supporting service Braille
default 22:11:33.301479+0200 bluetoothd Registering "Braille" profile in BrailleService
default 22:11:33.301562+0200 bluetoothd Supporting service LE Audio
default 22:11:33.301584+0200 bluetoothd Registering "LE Audio" profile in LEAService
default 22:11:33.302316+0200 bluetoothd Supporting service GATT
default 22:11:33.302364+0200 bluetoothd Registering "GATT" profile in GATTService
default 22:11:33.302438+0200 bluetoothd Supporting service Serial Port
default 22:11:33.302464+0200 bluetoothd Registering Serial Port Service
default 22:11:33.302561+0200 bluetoothd Registering "Serial Port" profile in SerialPortService
default 22:11:33.302653+0200 bluetoothd [MacUserClient][start] -- entering -- HIDShim
default 22:11:33.302755+0200 bluetoothd [MacUserClient][Setup] -- HIDShim
default 22:11:33.303538+0200 bluetoothd bluetoothd: calling IOServiceOpen() -- HIDShim
default 22:11:33.303622+0200 bluetoothd bluetoothd created a UserClient to IOBluetoothHCIController successfully
default 22:11:33.303679+0200 bluetoothd bluetoothd set up asynchronous notification from Bluetooth kernel (IOBluetoothHCIController) successfully
default 22:11:33.303575+0200 kernel **** [IOBluetoothFamily][newUserClient] -- created userclient for HIDShim
default 22:11:33.303657+0200 kernel **** [IOBluetoothFamily][AddHCIEventNotification] -- Added notification port for HIDShim
default 22:11:33.303724+0200 kernel **** [IOBluetoothFamily][CreateHIDShimSharedMemoryRingBuffer] -- Created input shared memory for HIDShim
default 22:11:33.303774+0200 kernel **** [IOBluetoothFamily][CreateHIDShimSharedMemoryRingBuffer] -- Created output shared memory for HIDShim
default 22:11:33.304316+0200 bluetoothd [StackManager][initialize] -- Start IOBluetoothFamily's 30 seconds heart beat notification
default 22:11:33.306924+0200 bluetoothd Current 'paired devices' cache version is: up-to-date (v2)
default 22:11:33.306936+0200 bluetoothd Successfully loaded 'paired devices' cache from disk
default 22:11:33.307017+0200 bluetoothd Paired device cache contains 0 device(s)
default 22:11:33.310117+0200 bluetoothd We can have up to 475 paired devices, 100 synced LE devices
Kernel Panic Logs
Have you read the docs?
Yes
macOS Version
macOS 26.5.2 (Tahoe, build 25F84)
Kext Version
v2.4.0
Wireless Adapter Model and USB Product ID
Intel AX210/AX211 (0x0032)
Description
Environment
Symptom
Bluetooth device does not initialize. In System Settings > Bluetooth, toggling Bluetooth on causes it to briefly appear active, then it turns itself back off after a short time. This repeats in a loop.
Confirmed via Windows dual-boot that the physical Bluetooth hardware and cable/connection are fully functional (paired a smartphone successfully in Windows).
Confirmed via
ioreg -p IOUSB -lthat the USB device (0x8087:0x0032) IS visible/enumerated at the IOUSB level in macOS.A cold boot (full shutdown + power on, not a warm restart) allows Bluetooth to initialize and turn on successfully at first, but it becomes unstable and turns off on its own again after some time.
Relevant log (Console.app, live stream filtered on "bluetooth")
(This "Found USB Device" -> "Can't obtain vendorID and productID" sequence repeats 3 times, roughly once per second, then:)
After this, bluetoothd restarts and re-initializes from scratch (reloading keychain data, registering HID/A2DP/GATT/etc. profiles), and the cycle appears to repeat over time.
Also worth noting: the bluetoothd crash briefly interrupts XPC connections in several unrelated system daemons (coreaudiod, ControlCenter, WindowServer, sharingd, nearbyd, etc.), all logging "### Interrupted" / "XPC connection interrupted, resetting" at the moment of the crash.
Question
Is this a known race condition in claiming the USB interface for this specific Intel Bluetooth device (0x8087:0x0032) on Tahoe? Is there a workaround (boot-arg, kext patch, USB port/timing tweak) to make the "GetProductAndVendorID" / interface claim succeed reliably instead of racing/timing out?
Happy to provide the full Console log,
ioreg -p IOUSB -ldump, or config.plist on request.Info in System Report - Bluetooth
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: USB Vendor ID: 0x004C (Apple)Relevant log output
Kernel Panic Logs