As I found out, there exist several Bluetooth stacks on Windows that are (were?) quite common.

Apparently - and please correct me if I'm wrong - there's no standardized way to search, pair and connect with a device: the procedure is different for every Bluetooth stack that is currently active. For example, if BlueSoleil was installed beforehand, the user won't be able to add a Bluetooth device via the standard controls (Control Panel => Devices and Printers => Add a device). The user has to go with the BlueSoleil interface. Similarly, I won't be able to connect to a device over Microsoft's Bluetooth API if BlueSoleil is active.

This fact is quite surprising to me, because this means that the steps to connect a Bluetooth device change with the actual Bluetooth stack. (How to write a simple user manual?)

Context: My goal is to hide the complete connection (via SPP) to our Bluetooth device from the user: Search device, pairing, serial connection. However, I want to avoid bothering with the different stacks that exist out there. What is best practice to deal with different Bluetooth stacks on Win?

I found external projects that aim at simplifying this, but I have no idea if they are robust in terms of compatibility. Is there more?

Help's much appreciated!


The way Bluetooth devices search, pair, and connect to other devices is DEFINATELY standardized -- It's called "Bluetooth".

What you are seeing is different Bluetooth implementations/drivers with different User Interfaces.

UI's will never be standardized fully, as copying a competitor's UI icon-for-icon, click-for-click is a good way to get sued for infringement. The Bluetooth stack used in Windows is chosen by the user (when they purchase the hardware) so it's also up to the user to figure out hoe to use their chosen device.

Windows offers their Bluetooth API in the newer Windows versions to help standardize things because of what you are running into.

But it's still pretty new, and existing BT manufacturers already have their software written so they are probably not in a big hurry to rewrite it all to MS's new "standard" Bluetooth API. Additionally MS' BT API may not (yet) offer the options a BT manufacturer feels they need/want, so they aren't ready to switch over yet.

  • Thanks. It's clear to me that Bluetooth as such is a standard and that only the stack APIs differ (my wording was maybe not very precise). My goal is to automatize the workflow (pairing, connection) in an app with a specific device, but I don't want to deal with all different stacks that exist, and I also don't want to break workflows of other devices (by installing my preferred stack along with the software). Catchword: user-friendliness. I found libs (32feet, WCL) that wrap some common stacks. But I wondered if there are other ways to manage stacks. From your reply I infer that there isn't?
    – normanius
    Jul 15 '14 at 10:15

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.