I've noticed that on some laptops (with Broadcom or CSI - Cambridge Silicon Radio) - the software off/on switch doesn't work. This is just to enable it so that its possible to power off the radio. I've tested it and it does indeed power down the radio. However your milage may vary and it may or may not work. Depending on your system
First up , take note of your Device ID and Product ID (Make sure Bluetooth is powered on before doing this). This can be found in System Profiler
For Instance
Bluetooth Dongle
CODE
Product ID: 0x1004
Vendor ID: 0x1131
Now convert these IDs from Base 16 (Hex) to Base 10 (Dec). There are many ways to do this , either by using OSX' calculator , scientific calculator or simply using this site to do it for you (
http://www.parkenet.com/apl/HexDecConverter.html). Take note of your Vendor ID and Product ID in Dec
fire up nano or any other text editor and navigate to
/System/Library/Extensions/IOBluetoothFamily.kext/Contents/PlugIns/BroadcomUSBBluetoothHCIController.kext (For Broadcom)
/System/Library/Extensions/IOBluetoothFamily.kext/Contents/PlugIns/CSRUSBBluetoothHCIController.kext (For CSI)
Open up Info.plist find
CODE
<key>idProduct</key>
<integer>33284</integer>
<key>idVendor</key>
<integer>1452</integer>
Simply replace the integer value with yours respectively. Both idProduct and idVendor respectively and do make sure that its in base 10 . Save it , exit it and simply clear your kextcache or reboot with -f (to rebuild kextcache). This should enable radio off/on toggle with your Broadcom or CSI Radio which is commonly found on netbooks , laptops and such.
Slice , if you're reading this. I would be needing your help in patching this. I am trying to find a way to cut "power from device" when its turned off. Instead of in "idle" , like how it does in Windows. This goes to anyone who is willing to help. This way we can get a proper bluetooth shutdown fix on laptops !
just to add , I've found out that it indeed shuts off the bluetooth radio but it doesn't cut the power to bluetooth dongle/USB device. I've to find a way to shut the device completely as it does in Linux/Windows. Generally when you select disable bluetooth it shuts off the hardware completely (as in no current being supplied to the device)
This post has been edited by prasys: Jun 5 2009, 01:45 PM
I put together a plist-only kext for my s10e that applies this. It's currently set to 8528 2652, I'd be interested to know if it works for anyone else.
BroadcomUSBBluetoothHCIInjector.kext.zip ( 2.19K )
Number of downloads: 290
I also add my idProduct to info.plist and got messages
QUOTE
Jun 13 10:26:39 localhost kernel[0]: E:[AppleUSBBluetoothHCIController][FindInterfaces] bulk IN pipe open failed!
Jun 13 10:26:39 localhost kernel[0]: E:[AppleUSBBluetoothHCIController][FindInterfaces] some interface pipes were not found. Device is no good as a transport
Jun 13 10:26:39 localhost kernel[0]: E:[AppleUSBBluetoothHCIController][initHardware] failedExit.
Jun 13 10:26:39 localhost kernel[0]: SendHCIRequest failed, error (0xe00002c0)E:[AppleUSBBluetoothHCIController][FindInterfaces] bulk IN pipe open failed!
Jun 13 10:26:39 localhost kernel[0]: E:[AppleUSBBluetoothHCIController][FindInterfaces] some interface pipes were not found. Device is no good as a transport
Jun 13 10:26:39 localhost kernel[0]: E:[AppleUSBBluetoothHCIController][initHardware] failedExit.
Jun 13 10:26:39 localhost kernel[0]: SendHCIRequest failed, error (0xe00002c0)[HCIController][configurePM] power parent ready after 1 tries
and I have new devices in my ioreg
CODE
| | | +-o IOUSBCompositeDevice@5d230000 <class IOUSBDevice, registered, matched, active, busy 0, retain 8>
| | | | {
| | | | "bNumConfigurations" = 0x1
| | | | "sessionID" = 0x651bd46a
| | | | "bcdDevice" = 0x100
| | | | "USB Address" = 0x5
| | | | "iProduct" = 0x0
| | | | "bDeviceClass" = 0x0
| | | | "bMaxPacketSize0" = 0x8
| | | | "Need contiguous memory for isoch" = Yes
| | | | "IOUserClientClass" = "IOUSBDeviceUserClientV2"
| | | | "idVendor" = 0xa5c
| | | | "PortUsingExtraPowerForWake" = 0x0
| | | | "PortNum" = 0x3
| | | | "Bus Power Available" = 0x32
| | | | "Device Speed" = 0x1
| | | | "USB Product Name" = "Bluetooth USB Host Controller"
| | | | "Requested Power" = 0x0
| | | | "non-removable" = "yes"
| | | | "locationID" = 0x5d230000
| | | | "USB Vendor Name" = "Broadcom Corp"
| | | | "idProduct" = 0x4503
| | | | "bDeviceProtocol" = 0x0
| | | | "iManufacturer" = 0x1
| | | | "IOCFPlugInTypes" = {"9dc7b780-9ec0-11d4-a54f-000a27052861"="IOUSBFamily.kext/Contents/PlugIns/IOUSBLib.bundle"}
| | | | "iSerialNumber" = 0x0
| | | | "IOGeneralInterest" = "IOCommand is not serializable"
| | | | "bDeviceSubClass" = 0x0
| | | | "Low Power Displayed" = No
| | | | }
| | | |
and also in System Profiler.
But I don't know what is changed globally.
Shutdown works almost fine.
QUOTE (Slice @ Jun 13 2009, 06:54 PM)

I also add my idProduct to info.plist and got messages
and I have new devices in my ioreg
CODE
| | | +-o IOUSBCompositeDevice@5d230000 <class IOUSBDevice, registered, matched, active, busy 0, retain 8>
| | | | {
| | | | "bNumConfigurations" = 0x1
| | | | "sessionID" = 0x651bd46a
| | | | "bcdDevice" = 0x100
| | | | "USB Address" = 0x5
| | | | "iProduct" = 0x0
| | | | "bDeviceClass" = 0x0
| | | | "bMaxPacketSize0" = 0x8
| | | | "Need contiguous memory for isoch" = Yes
| | | | "IOUserClientClass" = "IOUSBDeviceUserClientV2"
| | | | "idVendor" = 0xa5c
| | | | "PortUsingExtraPowerForWake" = 0x0
| | | | "PortNum" = 0x3
| | | | "Bus Power Available" = 0x32
| | | | "Device Speed" = 0x1
| | | | "USB Product Name" = "Bluetooth USB Host Controller"
| | | | "Requested Power" = 0x0
| | | | "non-removable" = "yes"
| | | | "locationID" = 0x5d230000
| | | | "USB Vendor Name" = "Broadcom Corp"
| | | | "idProduct" = 0x4503
| | | | "bDeviceProtocol" = 0x0
| | | | "iManufacturer" = 0x1
| | | | "IOCFPlugInTypes" = {"9dc7b780-9ec0-11d4-a54f-000a27052861"="IOUSBFamily.kext/Contents/PlugIns/IOUSBLib.bundle"}
| | | | "iSerialNumber" = 0x0
| | | | "IOGeneralInterest" = "IOCommand is not serializable"
| | | | "bDeviceSubClass" = 0x0
| | | | "Low Power Displayed" = No
| | | | }
| | | |
and also in System Profiler.
But I don't know what is changed globally.
Shutdown works almost fine.
I am guessing we are getting somewhere. Do you think with this its possible for us to shut down the radio like how windows does it
QUOTE (prasys @ Jun 30 2009, 10:23 AM)

I am guessing we are getting somewhere. Do you think with this its possible for us to shut down the radio like how windows does it
Don't know where thre is a button. I can switch off mechanically.
I found something new with this patch
Picture_2.png ( 40.19K )
Number of downloads: 256
QUOTE (Slice @ Jul 10 2009, 08:16 PM)

Don't know where thre is a button. I can switch off mechanically.
I found something new with this patch
Picture_2.png ( 40.19K )
Number of downloads: 256So it does speak with our hardware.
Things which I've found , software switch control is done in IOPCIFamily (for wifi) and as for usb its kinda done there. In PCs , switching off bluetooth means unplugging the usb device and in real macs , its done by turning off the bluetooth radio (but doing in pc yields no effect). This is what I've found out so far
Slice , i am guessing we're getting somewhere. For your information , this patch fixes issue with iPhone 3G/3GS internet sharing thingy whereby before this it was impossible to connect. i am guessing it does add something to somewhere