Fixing CSR Bluetooth in OSX (updated info)

Recently , I noticed that my CSR (Cambridge Silicon Radio) bluetooth does not quite work well . These Bluetooth adapters generally cost under $5 and its widely used in many of the laptops. Even real macs do use CSR. I did notice that generic ones would use Apple Generic Bluetooth driver instead of Apple CSR Drivers. Even if you did change the device id and included your device ID in the kext , it would still fail. Of course the generic Bluetooth driver has few issues when it comes to pairing , waking Bluetooth keyboard/mouse from sleep and other general issues

Voila - My $5 adapter thinks its Genuine Apple CSR Bluetooth
Voila - My $5 adapter thinks its Genuine Apple CSR Bluetooth

I did a research further and found out that the kext were hardcoded to work with Apple-branded CSR Devices. Yes , we could simply fire up hex editor and include our Device ID and Vendor but this would be complicated and in return it would require us to perform patching every time we upgrade OSX. Thankfully , AnV did something for Broadcom devices. I took the kext and modified it to work with CSR Devices (Cambridge Silicon Devices). Basically it fools , OSX thinking that our Bluetooth adapter is Apple’s Bluetooth Adapter therefore forcing OSX to load Apple’s CSR driver instead of Generic drivers.

 

With the injector , the Allow Bluetooth devices wake option is no longer grayed out
With the injector , the Allow Bluetooth devices wake option is no longer grayed out

 

Anyway , I am quite sure that you are tired with the explanation. Now lets get our hands dirty and start fixing it.

1. Firstly you would need to know your Device ID and Vendor ID for your Bluetooth adapter. It can be obtained from System Profiler. Be sure to convert it from Hex to Dec. If you are unsure , just google for Hex to Dec Calculator

2. Download this kext . Open it up and navigate your way to Info.plist (if you are unsure , right click and select view package content)

3. In Info.plist replace instances of

<key>idProduct</key> <integer>1</integer> <key>idVendor</key> <integer>2578</integer>

with your Product ID and Vendor ID in base 10 (Dec). You shouldn’t need to replace this value as most of the generic CSR adapter would use this value

4. Place it in your /Extra/Extensions folder (or EFI partition) and fix permission.

5. Reboot and the first thing you should notice is that Bluetooth can be toggled on and off and Wake from Sleep option in Bluetooth shouldn’t be grayed out. If it is still grayed out , you will have to fix your USB (Search for USB DSDT patch)

 

UPDATE #1 – After studying a bunch of IORegistry (just think of a bunch of detailed stuff , that gives the internal working of a system) . I’ve found out that Firmware version plays an important role here. It seems that these cheap $5 dongle that comes from China have different frimware. Each of it reacts differently

 

42 thoughts on “Fixing CSR Bluetooth in OSX (updated info)”

  1. system profiler now shows
    Bluetooth USB Host Controller:
    Product ID: 0x8205
    Vendor ID: 0x05ac (Apple Inc.)
    , but it still loads AppleUSBBluetoothHCIController.kext.
    i’ve got an ICH8-M, so i believe no usb fix needed.

    would appreciate any ideas to help to solve this.

  2. seems like it may have improved my DBT-120 rev c1 (seems like it’s detecting percentages of battery life on magic mouse now)… but no go on wake from sleep 🙁

  3. apparently i have fail search skills…. not exactly sure what i’m looking for regarding the DSDT USB Patch… mind giving me a link?

  4. Thanks for your work on this. My results are somewhat curious. I see no changes at all on my system except that the USB BT dongle VID/PID is now Apple’s. No change in the preferences pane options (‘On’ and ‘Allow this device…’ both greyed out still). kextfind says the proper kext is loaded (I’ll recheck this). This is on 10.6.7 with a generic CSR BT dongle and the default VID/PID. All of my other USB devices sleep/wake properly, just not the BT dongle (which is why I’m here:) so not sure which specific ‘USB Patch’ you are referring to here, there are a number of them. All of my USB busses show internal if thats what you mean. Would the system type come into play here? Mine is MacPro 3,1. Any suggestions welcome.

  5. Just a followup: AppleUSBBluetoothHCIController.kext is getting loaded both with and without your .kext. More digging to do.

  6. regarding to my first comment it was my fault. was trying to replace Broadcom with CSR in Info.plist but failed. i wasn’t expecting it could affect anything.

  7. Incidentally, I can use the original broadcom kext w/ my broadcom dongle and wake from sleep is available… just not with my CSR and this one. so am even less sure I need a DSDT USB fix… though if I do, I need more specifics on which one I exactly need.

  8. ron , send me your ioregistry (just google search for ioregistryexplorer , download it , and attach to me via e-mail). I’ll sort it out , be sure to remove the injector as welll !

  9. Apr 30 18:50:02 localhost kernel[0]: CSRUSBBluetoothHCIController::setupHardware super returned 0
    Apr 30 18:50:02 localhost kernel[0]: systemShutdown false
    Apr 30 18:50:04 iMacs-Mac-Pro kernel[0]: Previous Shutdown Cause: 0
    Apr 30 18:50:04 iMacs-Mac-Pro kernel[0]: NVDANV50HAL loaded and registered.
    Apr 30 18:50:05 iMacs-Mac-Pro kernel[0]: Refusing new kext com.apple.iokit.IOUSBFamily, v3.8.5: already have loaded v4.9.6.
    Apr 30 18:50:05 iMacs-Mac-Pro kernel[0]: [:init] RealtekRTL81xxx.kext v0.0.67 (c)2010 by Lnx2Mac ([email protected])
    Apr 30 18:50:05 iMacs-Mac-Pro kernel[0]: [ffffff8012d2cc00][BNBTrackpadDevice::init][54] init is complete
    Apr 30 18:50:05 iMacs-Mac-Pro kernel[0]: [ffffff8012d2cc00][BNBTrackpadDevice::probe][54] entered
    Apr 30 18:50:05 iMacs-Mac-Pro kernel[0]: [ffffff8012d2cc00][BNBTrackpadDevice::handleStart][54] Done
    Apr 30 18:50:05 iMacs-Mac-Pro kernel[0]: [ffffff8012bfbe00][AppleMultitouchHIDEventDriver::start] entered
    Apr 30 18:50:05 iMacs-Mac-Pro kernel[0]: [ffffff80130e0c00][AppleMultitouchDevice::start] entered
    Apr 30 18:50:06 iMacs-Mac-Pro kernel[0]: RealtekRTL81xxx.kext: NIC identified as RTL8168E/8111E

    Hi, Prasys I get this error. does it mean i need to use USB DSDT ?

  10. Before using this modified bluetooth kext, the CSR bluetooth dongle can work out of box with the wireless mighty mouse, but Apple wireless keyboard would keep on connecting and disconnecting.
    After using this modified bluetooth kext, it was the other way round. Apple wireless keyboard works flawlessly, but wireless mighty mouse would just keep on connecting and disconnecting.
    Bluetooth: ON is grayed out

  11. When I came across your blog post I was like ‘YES! This is just what I’m looking for!”, but unfortunately this kext doesn’t work for me.

    With the kext in place and the dongle plugged in system boot becomes very slow and the screen gets stuck at the blue screen while logging in. I can hear iChat connection noises though, so boot did finish apparently. Strangely the system doesn’t respond to the keyboard in this situation (starting iTunes via the media keys doesn’t seem to work).

    When I plug the dongle in after boot, it is recognized as:

    Bluetooth USB-hostcontroller:
    Productcode: 0x8205
    Fabrikantcode: 0x05ac (Apple Inc.)

    but doesn’t work at all. No bluetooth prefpane present in system preferences etc.

    I guess the easiest fix for me is to get the Belkin Mini USB adapter from the Apple Store, I suppose that one will work flawlessly out of the box.

    Greetings.

  12. thanx.. it works flawlessly 😛

    is there any way to make any bluetooth mouse to be recognized as apple bluetooth mouse.. just like AnyAppleUsbMouse.kext and AnyiSightCam.kext? 🙂

  13. Just followed the steps but cannot get the wake option functioning. May be my dongle’s firmware different than yours. Could you please upload your firmware somewhere, so that I can flash my device with it? You can dump the firmware in linux..

    thanx…

  14. No go for me – with both an Azio and DB-120 CSRUSBBluetoothHCIController is loaded and System Profiler and ioregistryexplorer show “Apple” as the manufacturer but “Wake” is still grayed out. I’ve implemented the USB DSDT fix and all my USB ports are showing as internal … also my USB keyboard can wake my MAC from sleep.

    If anyone has any other advice I would love to hear it.

    Regards,
    SMF

  15. I followed the steps above but my mouse no longer clicks, the pointer moves but I can’t select anything.

    Any help?

  16. I upgraded my mackintosh to 10.7.2. The apple wireless keyboard could function without this kext. It could display the percentage of power left though the on and off feature is not active.

  17. I too tried the kext modification and that part works fine. I still have a grayed-out Wake on Bluetooth box, so I must need the USB fix. When I looked at my DSDT, one of the patched avail (in DSDTSE) looks like you have to manually patch each instance of a USB port. Am I on the right path or is there an easier way to deal with this? – Great blog BTW

  18. Hello, After installing this, my Keyboard and the mouse Buttons aren’t working, any Solution for this?

  19. My dongle is recognized by my OSX 10.6.8 But I cant get the computer to use this one. It still uses the built in one and that one is really bad. It seems to think that it’s a Apple dongle? But how do I change so that it uses the dongle ond not the built in bluetooth?

    When holding Option key and clicking on the bluetooth menu it tells me that version is 2.4.5f3 (v1965) this should be something with 4.x if using my CSR 4.0 dongle, right?

    This is the dongle from system information(swedish):
    Bluetooth USB-styrenhet:
    BSD-namn(BSD name): en3
    Produkt-ID(Product ID): 0x8206
    Tillverkar-ID(Manufacturer ID): 0x05ac (Apple Inc.)
    Version: 19.65
    Hastighet(Speed): Upp till 12 Mbit/sek
    Tillverkare(Manufacturer): Apple Inc.

    Dongle:
    https://dx.com/p/ultra-mini-bluetooth-csr-4-0-usb-dongle-adapter-black-143276

  20. I have a CSR bluetooth dongle. It’s detected OOB, i can search and pair other devices but once I connect it will connect but after maybe 30 seconds it will disconnect again.
    Please help.
    Also can you please reupload the kext. The link is dead.

Leave a Reply

Your email address will not be published. Required fields are marked *

CommentLuv badge