Thursday, July 24, 2008 Login
VinsVision
Articles
 Search articles Minimize
  
 Article archive Minimize
  
 Article list Minimize
Windows Installer .msi
Policies
Deployment


  
 Additional Bluetooth Drivers for Microsoft Bluetooth in Windows XP SP2 Minimize
Location: BlogsVinsVision's articlesWindows Installer .msi    
Posted by: Vincent Monday, June 25, 2007
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.

 User Interface Options.jpg

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.

 Add or Remove Programs - Additional Bluetooth Drivers.jpg

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

 Welcome to the Additional Bluetooth Drivers Wizard.jpg

After the user clicks Next, another wizard screen appears.

 Ready to Install Wizard - Enable Bluetooth device.jpg

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

 Found new hardware - You must be a member of the Administrators group.jpg

You do not have sufficient privileges to install hardware on this computer.jpg

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.

 Additional Buetooth Drivers has been succesfully installed.jpg

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 
Zeevo Bluetooth Device  USB\VID_0B7A&PID_07D0
Zeevo Bluetooth Solution