Since Windows XP SP2 was released, Microsoft introduced a major improvement in supporting and detecting Bluetooth devices. Now, a few years down the road, there are more and more problems in finding Bluetooth drivers that will work with Microsoft's native Bluetooth stack. This article explains a way around this issue and includes a Windows Installer msi file with 116 additional Bluetooth drivers.
Finding Drivers
If you have a new computer that is Bluetooth enabled, chances are you had a hard time finding Bluetooth drivers to make it work with Microsoft's native Bluetooth stack. You probably had to resort to a third-party Bluetooth stack (e.g. WIDCOMM or TOSHIBA) or modifying your own Bluetooth installation driver file.
Editing/Hacking
Editing/hacking the Bluetooth %WinDir%\inf\bth.inf installation file is totally acceptable; all drivers used are Microsoft Bluetooth drivers, no third party stack or driver is introduced. But best of all; no third party software was needed.
Issues
There are a few issues however:
First editing %WinDir%\inf\bth.inf will make the driver file unsigned and installing unsigned drivers requires local administrator permissions. Managed users in an enterprise are usually permission restricted, i.e. they are not local administrators. Also, setting the driver signing policy to Ignore mode as a workaround is generally not a good idea.
So you could edit the bth.inf file and install the Bluetooth device manually and image the system or as make it part of your post-deployment process before you give the computer to the end-user. This might be acceptable if you have lots of time and all Bluetooth devices are all known beforehand. But this scenario is very rigid and difficult to control.
Managed Workaround
The solution for creating a managed workaround was found in Microsoft's Driver Install Framework. Specifically DIFxApp: Driver Install Frameworks for Applications Version 2.0.
With DIFxApp, the Microsoft Windows Installer (which creates a .msi package) can be used to install driver packages that are associated with applications in a Windows Installer installation package. DIFxApp supports installing signed Plug and Play function drivers and signed class filter drivers on Windows 2000 and later.
This feature in particular will make the Bluetooth workaound succeed:
"DIFxApp can also be configured in legacy mode to install unsigned Plug and Play (PnP) function drivers and unsigned class filter drivers on Windows 2000 and later."
With this knowledge, we are able to install additional Bluetooth drivers by creating a modified version of Microsoft's bth.inf file.
Modified Driver File
In the modified Bluetooth driver file, I've added as many Bluetooth devices I could find, 116 in total. On the bottom of this page you will find a table with all PnP-id’s of the Bluetooth devices that are included for this workaround, including the Microsoft Windows XP SP2 defaults. Please note that it is impossible for me to test all devices included here, but I had success with a few of them. Let me know how it worked out for you by leaving a comment at the bottom.
Windows Installer Package
This modified driver file is authored into a Windows Installer MSI file together with the DIFxApp mergemodule and followed Microsoft’s instructions in "Authoring an MSI Installation Package That Uses DIFxApp" in the DIFxApp white paper. In the MsiDriverPackaged table, the Flags were set to 31, this includes the flag to configures DIFxApp to install unsigned driver packages and driver packages that have missing files.
Some custom actions also had to be added. The first was a small wait period of 5 seconds. Users were clicking the next button before the system actually found the new (Bluetooth) hardware. Second was a device rescan using devcon.exe. Sometimes the new device was not found. Using devcon.exe to force a rescan solved that problem. Third was another small wait period of again 5 seconds to allow the system to find the new hardware.
Deployment
Deployment is pretty straightforward. Download the Windows Installer package from the download section and extract the file to an accessible server share. Create a new Group Policy Object (or us an existing policy) and publish it to your users. If you use System Management Server, configure the Package properties in such a way that it will show up in the clients Add / Remove Software in Control Panel.

Make sure you set the user interface options to Maximum. The wizard contains instructions for the user to enable Bluetooth by a key combination, switch or to plug in a Bluetooth USB dongle.
User Experience
The user experience is slightly different from normal because user interaction is required. First instruct the user to go to Control Panel -> Add Remove Programs and click Add New Programs.

Select the Additional Bluetooth Drivers from the list and click Add. The Additional Bluetooth Drivers Wizard will start.

After the user clicks Next, another wizard screen appears.

The user is instructed to enable Bluetooth or insert a Bluetooth dongle.
A prompt for administrator credentials to install hardware will appear when the following conditions are true:
- New hardware is found (the Bluetooth device)
- Drivers for this new hardware device cannot be found
- The user is not a local administrator


Instruct the user to click cancel at the Found New Hardware prompt and the subsequent Hardware Installation prompt. Click Next in the Additional Bluetooth Drivers wizard.
After a few moments the installation completes and the Bluetooth driver installation is finished.

Click Finish. After driver installation completes, Windows will continue to install Microsoft Bluetooth Enumerator, Bluetooth Device (Personal Area Network), Bluetooth Device (RFCOMM Protocol Transport Driver Interface [TDI]) and Bluetooth Support Service (BthServ). Finally a Bluetooth icon will appear in the system tray and the Control Panel.
Note: It's important you've not modified the original %windir%\inf\bth.inf file.
Edit/Hack bth.inf
The process of modifying the existing bth.inf file is quite simple. First make a copy of the original %windir%\inf\bth.inf and, for the purpose of this step-by-step, name it %windir%\inf\bth_modified.inf.
1. Find the PnP-id of your Bluetooth device properties in Device Manager. Usually it's an unknown device and has the following format: USB\Vid_0000&Pid_0000.
2. Open %windir%\inf\bth_modified.inf
3. Find the header [Manufacturer]
4. Under [Manufacturer], create a new entry like this:
MyName=MyName, NT.5.1
5. Create a new header with the following name:
[MyName.NT.5.1]
MyName Bluetooth Device=BthUsb, USB\Vid_0000&Pid_0000
Note: Make sure you paste in the correct PnP-id from the first step.
6. Save bth_modified.inf
7. In device manager, remove the unknown device and select Rescan hardware.
8. At the unsigned driver prompt select Allow unsigned driver (check your driver signing policy) and the Bluetooth installaton completes.
Bluetooth PnP Device List
| Devicename |
PNP-id |
| Actiontec USB Bluetooth Device BTM200 |
USB\VID_1668&PID_0500 |
| Air2U Bluetooth Device |
USB\VID_1310&PID_0001 |
| Alps Bluetooth USB Adapter |
USB\Vid_044e&Pid_3006 |
| ALPS Integrated Bluetooth Device |
USB\Vid_044e&Pid_3005 |
| BCM2033 Bluetooth 2.4 GHz Single Chip Transceiver |
USB\VID_0A5C&PID_200F |
| Belkin Bluetooth Adapter |
USB\Vid_050d&Pid_0081 |
| Belkin Bluetooth Adapter |
USB\Vid_050d&Pid_0084 |
| Belkin Bluetooth Device |
USB\VID_050D&PID_0083 |
| Bluetooth by hp |
USB\VID_049F&PID_0086 |
| Bluetooth Multiport Module by Compaq |
USB\VID_049F&PID_0027 |
| Bluetooth Ultraport Module from IBM |
USB\VID_04BF&PID_030A |
| Bluetooth Ultraport Module from IBM |
USB\VID_04BF&PID_0317 |
| Bluetooth USB Adapter (BT-51x serial) |
USB\Vid_0b7a&Pid_07d0&Rev_0126 |
| Bluetooth USB Adapter (BT-51x serial) |
USB\Vid_0b7a&Pid_07d0&Rev_0133 |
| Bluetooth USB Controller (ALPS/UGPZ6) |
USB\VID_044E&PID_300C |
| Bluetooth USB Controller (ALPS/UGPZ6) |
USB\VID_044E&PID_300D |
| Bluetooth USB Controller from TOSHIBA |
USB\VID_0930&PID_0502 |
| Bluetooth USB Controller from TOSHIBA (ALPS/CSR) |
USB\VID_0930&PID_0501 |
| Bluetooth USB Controller from TOSHIBA (Ericsson P3D) |
USB\VID_08EA&PID_abba |
| Bluetooth USB Controller from TOSHIBA (Ericsson P4A) |
USB\VID_8086&PID_110a |
| Bluetooth USB Controller from TOSHIBA (Intel/CSR) |
USB\VID_8086&PID_110b |
| Bluetooth USB Controller from TOSHIBA (TaiyoYuden/SiW Sample) |
USB\VID_0525&PID_a220 |
| Bluetooth USB Controller from TOSHIBA (TaiyoYuden/SiW) |
USB\VID_0c10&PID_0000 |
| Bluetooth USB Controller-2 from TOSHIBA |
USB\VID_0930&PID_0503 |
| Bluetooth USB Controller-3 from TOSHIBA |
USB\VID_0930&PID_0505 |
| Bluetooth USB Controller-4 from TOSHIBA |
USB\VID_0930&PID_0506 |
| Bluetooth USB Controller-5 from TOSHIBA |
USB\VID_0930&PID_0508 |
| Bluetooth wireless hub |
USB\VID_046D&PID_C707 |
| Bluetooth wireless hub |
USB\VID_046D&PID_C708 |
| Bluetooth wireless hub |
USB\VID_046D&PID_C709 |
| Blutonium BCM2035 Bluetooth 2.4 GHz Single Chip Transceiver |
USB\VID_0A5C&PID_200A |
| BOSCH USB Bluetooth Device |
USB\VID_0CA0&PID_1101 |
| Brain Boxes USB Bluetooth Adapter BL-554 |
USB\Vid_05d1&Pid_0003 |
| Broadcom USB Bluetooth Device |
USB\VID_0A5C&PID_2035 |
| Broadcom USB Bluetooth Device |
USB\VID_0A5C&PID_2009 |
| BT-183 Bluetooth 2.0 |
USB\VID_0B05&PID_1712 |
| CSR Casira with BlueCore2-External Module |
USB\VID_0A12&PID_0100 |
| CSR Casira with BlueCore2-Flash Module |
USB\VID_0A12&PID_0101 |
| CSR Casira with BlueCore3-Flash Module |
USB\VID_0A12&PID_0103 |
| CSR Casira with BlueCore3-Multimedia Module |
USB\VID_0A12&PID_0102 |
| CSR Casira with BlueCore4-External Module |
USB\VID_0A12&PID_0104 |
| CSR Casira with BlueCore4-Multimedia Module |
USB\VID_0A12&PID_0105 |
| CSR Nanosira |
USB\Vid_0a12&Pid_0003 |
| CSR Nanosira |
USB\VID_0A12&PID_0003 |
| CSR Nanosira WHQL Reference Radio |
USB\Vid_0a12&Pid_0004 |
| CSR Nanosira WHQL Reference Radio |
USB\VID_0A12&PID_0004 |
| CSR Nanosira3-ROM |
USB\VID_0A12&PID_0007 |
| CSR Nanosira4-EDR |
USB\VID_0A12&PID_0008 |
| CSR Nanosira4-EDR WHQL Reference Radio |
USB\VID_0A12&PID_0009 |
| CSR Nanosira4-EDR-ROM |
USB\VID_0A12&PID_000A |
| CSR Nanosira5-ROM |
USB\VID_0A12&PID_000B |
| CSR Nanosira-Multimedia |
USB\Vid_0a12&Pid_0005 |
| CSR Nanosira-Multimedia |
USB\VID_0A12&PID_0005 |
| CSR Nanosira-Multimedia WHQL Reference Radio |
USB\Vid_0a12&Pid_0006 |
| CSR Nanosira-Multimedia WHQL Reference Radio |
USB\VID_0A12&PID_0006 |
| Dell Bluetooth USB adapter |
USB\VID_413C&PID_8501 |
| Dell Bluetooth USB adapter |
USB\VID_413C&PID_8120 |
| Dell TrueMobile Bluetooth Module |
USB\VID_413C&PID_8000 |
| Dell TrueMobile Bluetooth Module |
USB\VID_413C&PID_8000 |
| Dell Wireless 350 Bluetooth Internal Card |
USB\VID_413C&PID_8103 |
| Dell Wireless 350 Bluetooth Module |
USB\VID_413C&PID_8103 |
| Dell Wireless 360 Bluetooth Module |
USB\VID_413C&PID_8140 |
| D-Link Bluetooth wireless technology |
USB\VID_0A12&PID_0001 |
| D-Link DBT-120 USB Bluetooth Adapter |
USB\VID_07D1&PID_FC01 |
| Ericsson BV USB Bluetooth Device |
USB\VID_0BDB&PID_1000 |
| Ericsson USB Bluetooth Device 1.2 |
USB\VID_0BDB&PID_1002 |
| FIC Bluetooth Wireless Adapter |
USB\Vid_05b1&Pid_1389 |
| Formosa Bluetooth Device |
USB\VID_0D9A&PID_0001 |
| Formosa Bluetooth Device |
USB\VID_4851&PID_1103 |
| Frontline Test Equipment Bluetooth Device |
USB\VID_0A12&PID_0002 |
| Fujitsu Siemens USB Device |
USB\VID_0BF8&PID_1003 |
| Generic Bluetooth Radio |
USB\Vid_0a12&Pid_0001 |
| Generic Bluetooth Radio |
USB\VID_0A12&PID_0001 |
| GIANT Bluetooth Device |
USB\VID_0FD1&PID_0001 |
| GVC Bluetooth Wireless Adapter |
USB\Vid_0525&Pid_a220 |
| HP integrated module with Bluetooth wireless technology |
USB\VID_03F0&PID_011D |
| HP integrated module with Bluetooth wireless technology |
USB\VID_03F0&PID_0624 |
| HP USB BT Transceiver [1.2] |
USB\Vid_03F0&Pid_0C24 |
| IBM Integrated Bluetooth |
USB\VID_04BF&PID_0310 |
| IBM Integrated Bluetooth |
USB\VID_04BF&PID_0318 |
| IBM Integrated Bluetooth II |
USB\Vid_1668&Pid_0441 |
| IBM Integrated Bluetooth II |
USB\VID_1668&PID_0441 |
| IBM Integrated Bluetooth III |
USB\Vid_1668&Pid_2441 |
| IBM Integrated Bluetooth III |
USB\VID_1668&PID_2441 |
| ICSI Bluetooth USB Device |
USB\VID_0547&PID_0001 |
| ISSC USB Bluetooth Device |
USB\VID_1131&PID_1001 |
| Itronix Bluetooth Device |
USB\VID_11D9&PID_2600 |
| Kodak DBT-220 USB Bluetooth Adapter |
USB\VID_040A&PID_5012 |
| MATSUSHITA Bluetooth Device |
USB\VID_0C24&PID_0019 |
| Microlink-Foxlink Bluetooth Device |
USB\VID_148D&PID_2430 |
| Microsoft Bluetooth Device |
USB\VID_045E&PID_007E |
| Microsoft Wireless Transceiver for Bluetooth |
USB\Vid_045e&Pid_007e |
| Microsoft Wireless Transceiver for Bluetooth 2.0 |
USB\Vid_045e&Pid_009c |
| Microtune USB Bluetooth Device |
USB\VID_0F4D&PID_1000 |
| Motion Computing USB Bluetooth Adapter |
USB\VID_10AB&PID_1005 |
| Motion Computing USB Bluetooth Device |
USB\Vid_10ab&Pid_1002 |
| MSI Bluetooth Device |
USB\VID_0DB0&PID_6970 |
| MSI Bluetooth Device |
USB\VID_0DB0&PID_B970 |
| MSI Bluetooth EDR Device |
USB\VID_0DB0&PID_A970 |
| MSI USB Bluetooth Device |
USB\VID_0DB0&PID_1967 |
| MSI USB Bluetooth Device |
USB\VID_0DB0&PID_6970 |
| MSI USB Bluetooth Device |
USB\VID_0DB0&PID_697A |
| MSI USB Bluetooth Device |
USB\VID_0DB0&PID_6855 |
| National Semi Bluetooth Board |
USB\VID_0400&PID_0807 |
| National Semiconductor Bluetooth Board |
USB\VID_0483&PID_5000 |
| OQO Bluetooth Radio v2.0 |
USB\VID_1557&PID_0004 |
| Panasonic Bluetooth Device |
USB\VID_04AD&PID_2501 |
| Philips BluePearl Bluetooth USB Device |
USB\VID_0471&PID_0809 |
| Samsung Bluetooth Device |
USB\VID_055D&PID_0BB1 |
| Samsung Bluetooth Device |
USB\VID_04E8&PID_7021 |
| Silicon Wave Bluetooth Device |
USB\VID_05B1&PID_1389 |
| Silicon Wave Bluetooth Wireless Adapter |
USB\Vid_0c10&Pid_0000&Rev_1350 |
| Silicon Wave Bluetooth Wireless Adapter |
USB\Vid_0c10&Pid_0000 |
| Sitecom USB bluetooth2.0 class 1 dongle CN-521 |
USB\VID_0DF6&PID_2209 |
| Sitecom USB bluetooth2.0 class 2 dongle CN-512 |
USB\VID_0DF6&PID_2200 |
| Sitecom USB bluetooth2.0 class 2 dongle CN-520 |
USB\VID_0DF6&PID_2208 |
| Sony Bluetooth Device |
USB\VID_044e&PID_2014 |
| Sony Bluetooth USB Adapter |
USB\Vid_044E&Pid_3004 |
| Taiyo Yuden Bluetooth Device |
USB\VID_0C24&PID_0002 |
| Taiyo Yuden Bluetooth Device(BC04-External) |
USB\VID_0C24&PID_0005 |
| Taiyo Yuden Bluetooth Device(BC04-External) |
USB\VID_0C24&PID_000b |
| Taiyo Yuden Bluetooth Device(BC04-External) |
USB\VID_0c24&PID_000e |
| Taiyo Yuden Bluetooth Device(BC04-External) |
USB\VID_0c24&PID_0010 |
| Taiyo Yuden Bluetooth Device(BC04-External) |
USB\VID_0c24&PID_0018 |
| Taiyo Yuden Bluetooth Device(BC04-External) |
USB\VID_0c24&PID_0012 |
| Taiyo Yuden Bluetooth Device(SAMPLE) |
USB\VID_0c24&PID_0c24 |
| Taiyo Yuden Bluetooth USB Adaptor |
USB\VID_0c24&PID_000c |
| TDK Bluetooth USB Adapter |
USB\Vid_04BF&Pid_0319 |
| TDK Bluetooth USB Adapter |
USB\Vid_04BF&Pid_0319 |
| TDK Bluetooth USB Adapter |
USB\VID_04BF&PID_0320 |
| TDK Bluetooth USB Adaptor |
USB\VID_04BF&PID_0320 |
| TDK Bluetooth USB Adaptor |
USB\VID_04BF&PID_0309 |
| TDK Bluetooth USB Adaptor |
USB\VID_04BF&PID_0319 |
| TDK Bluetooth USB Adaptor |
USB\VID_04BF&PID_0320 |
| TI Mistral Bluetooth Device |
USB\VID_0451&PID_1234 |
| TI Mistral Bluetooth Device |
USB\VID_0451&PID_ffff |
| TOSHIBA Bluetooth Adapter |
USB\Vid_0930&Pid_0507 |
| TOSHIBA Bluetooth Adaptor |
USB\VID_0c24&PID_0001 |
| TOSHIBA Bluetooth Adaptor |
USB\VID_0930&PID_0507 |
| TOSHIBA Bluetooth Adaptor-2 |
USB\VID_0930&PID_0509 |
| TOSHIBA Integrated Bluetooth |
USB\Vid_0930&Pid_0502&Rev_1350 |
| TOSHIBA Integrated Bluetooth 2 |
USB\Vid_0930&Pid_0505 |
| TOSHIBA Integrated Bluetooth 3 |
USB\VID_0930&PID_0506 |
| USB Bluetooth 2.0 EDR Dongle |
USB\VID_1582&PID_3006 |
| USB Bluetooth Adapter |
USB\VID_040A&PID_5010 |
| USB Bluetooth Device |
USB\Vid_044E&Pid_3002 |
| USB Bluetooth Device |
USB\Vid_044E&Pid_3003 |
| USB Bluetooth Device |
USB\Vid_044E&Pid_3007 |
| USB Bluetooth Device |
USB\VID_0DB0&PID_697A |
| USB Bluetooth Device |
USB\VID_0DB0&PID_B97A |
| USB Bluetooth Driver (ALPS) |
USB\VID_044e&PID_3001 |
| USB Bluetooth Driver (V2.0+EDR) |
USB\VID_0C24&PID_000F |
| USB Bluetooth EDR Device |
USB\VID_0DB0&PID_A97A |
| USB Bluetooth Wireless Adapter |
USB\Vid_1310&Pid_0001 |
|