

Remove Bluetooth Driver Association

Bluetooth quirks

Bluetooth is an intriguing but frustrating technology, particularly it's Windows implementation.

I have several laptops with various built-in Bluetooth modules, and even more USB Bluetooth dongles. The support of stereo headsets is particularly uneven across that wide range of products.

To understand the problem, a little bit of background on the Bluetooth protocol is useful.

Bluetooth uses radio transceivers (transmitters and receivers) to replace bi-directional (duplex) communication that was previously done with wires and cables.

The radios have to interface with the computer hardware they are connected to, and ultimately, with the application software through the operating system.

I will simplify the process considerably, but let's say that the software layers are comprised of two main segments: a driver and a protocol stack.

The driver is what allows the radio hardware to interface with the lower layers of the operating system. The driver is specific to the particular Bluetooth hardware you have. The driver presents a “standard” interface to the operating system.

The protocol stack is what interfaces the driver to the upper layers of the operating system and the application software.

The protocol stack is what supports the particular functionality you are after. Examples would be a mouse or a headset. Each type of device is supported through what is called a “profile” in the Bluetooth stack. So, for instance, a mouse is supported through the Human Interface Device (HID) profile, as would be a keyboard. Of course, the device itself and the Bluetooth stack have to support the same profile for the two to have a meaningful conversation. So far, so good.

When talking about headset, it gets complicated, as they are multiple, incompatible profiles, and their use and application appears to be mostly random. Examples of profile that can be used with a headset include Advanced Audio Distribution Profile (A2DP) normally used to play music, Hands-Free Profile (HFP) normally used with telephone/Skype like applications, Headset Profile (HSP) and maybe more. These profiles are incompatible, that means your headset and the Bluetooth stack must support the same profile for the headset to work. If the profiles do not match, the headset may connect to the PC, but the headset will not appear as an audio device usable by your application and you won't be able to route the music (or voice) through it.

So when trying to get a headset to work under Bluetooth, you are in for a treat.

There are several Bluetooth stacks available under Windows, including the one Microsoft ships with XP, Vista and W7. The Microsoft stack does not include any headset profile, but your device may come with a distribution CD which may include a different stack. That's where the problems start.

Not all stacks are compatible with the Bluetooth hardware that's installed in your computer and it's associated driver. The Toshiba and Widcomm stacks, for instance, only work with the Toshiba and Broadcom (respectively) Bluetooth modules. There are third part stacks that usually support more modules, but you usually cannot buy or download them separately, even though they may come with the device you bought.

My experience (confirmed by a quick look at the Wikipedia entry for Bluetooth Stack: http://en.wikipedia.org/wiki/Bluetooth_stack) is that the Toshiba stack is among the better ones. Keep in mind it only works with a Toshiba Bluetooth module.

Now is the other important caveat: how do you know which module/stack you get when you buy a Bluetooth module or dongle? In most cases, you don't. I have several Dell laptops, and I have found that the Dell Bluetooth 360 module has a Toshiba chip inside. The Dell Bluetooth 300 and Bluetooth 350 don't. Other than that, you are on your own.

Removing associations to other drivers

Installing a new Bluetooth stack, or replacing one is also a difficult process.

If the driver or stack you have is not what you want, and you want to install a new one, you may not need to remove that driver, but you do need to persuade Windows to forget the association of the USB dongle to the other vendor's driver. Please note that this applies even if you remove the old driver, as the old driver's association with your device will remain in the registry even after the driver itself is removed. The process is not entirely straight forward and not something I would encourage the inexperienced to try.

To remove the reference to your existing driver, carry out the following steps:

  • Do not remove the old driver,
  • While the device is attached, locate it in the Device Manager, and delete it,
  • Under the registry key HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\USB, you will find an entry that corresponds to your USB dongle or module. If you know the USB Vendor and Product IDs of your device, you will easily be able to locate the device, because the registry key that defines the device is built up from these values. For example, if the device is using a CSR BlueCore01 and the manufacturer has chosen not to change the Vendor and Product ID (as indeed most of them don't) the devices registry key will be HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\USB\Vid_0a12&Pid_0001
  • If you don't know the USB Vendor and Product IDs of your device, you will have to find it by searching through all the USB keys. Typically the values DeviceDesc, LocationInformation, Mfg and Service will give you a pretty good idea of what you are looking at.
  • Once you have located the key that represents your device, delete it. You may encounter a permissions error when you attempt to do this, in which case you can simply change the permissions for the key using RegEdit (right-click the key and select Permissions).
  • Reboot your machine and follow the procedure above for a clean install of the driver.
bluetooth/remove_bluetooth_driver_association.txt · Last modified: 2013/01/12 19:00 (external edit)