Bluetooth Blues - Part III

Posted by Garth on Saturday, July 7, 2007

This actually happened a couple of weeks ago, but with all of the other Q related stuff going on I didn't feel like writing it up. But now I am.

A little background first. You see, on my Dash, with the MS Bluetooth stack, when I tried sync'ing over BT to my Vista box, it just worked. It seems that MS in all its brilliance set both Vista's Windows Mobile Device Center (WMDC) to use PAN (Personal Area Network) for BT synchronization instead of SPP (Serial Port Profile). What's interesting to note here is that prior to Vista, no matter what BT stack you were using (Widcomm, MS or other), the only way to use ActiveSync over BT was to use SPP. You assigned a COM port to an incoming connection from your device and told ActiveSync to use that port. What's also interesting to note about that is that when MS first released their BT stack (XP SP1 I think, though it might've been SP2), the neglected to include SPP. So at that point if you had MS BT stack on Windows you could not sync your Windows Mobile (at that time Pocket PC and Smartphone I suppose) device over BT. MS also did not include SPP in their mobile BT stack. In general it was a fiasco. Eventually they added SPP to both sets of stacks, but by then everyone was pretty much boycotting the MS stacks, or just generally pissed off about it (check out aximsite's archived forums if you're really interested).

So, I get the Q. It's using the Widcomm stack. I don't think much of it, being a dumb user and all, so I connect via USB for the first sync. Vista nicely pops up a little wizard telling me that a BT device connected and that it would like to configure services. Cool. I let it do its thing. It finishes. I disconnect the device and attempt to initiate BT ActiveSync from the Q.

Error. No compatible devices found. (or something to that extent)

So I start backtracking. Removed partnerships from Q and Vista. Removed COM ports that had been created in Vista. This time I use Vista to initiate the pairing to the Q.

No BT ActiveSync.

Removed partnerships from both devices again. Rebooted both devices. Tried again, this time initiated from the Q.

No BT ActiveSync.

At this point I start googling. Found this excellent link, which basically explains that the Widcomm stack won't use PAN, only SPP. However, MS, again in its infinite wisdom, removed the option from WMDC to use serial ports for synchronization. At least through the GUI. So you have to edit the registry, specifically the "SerialPort" value, and change it to the COM port used for incoming connections from your device, like you used to do in the old days.

So what did we learn here? We learned that different manufacturers of BT devices STILL have compatibility issues. We learned that even though MS pretends it's not using serial for synchronization, it is. And we learned that MS set up WMDC in such a way that it "blocks" attempts to synchronize from any device other than one running the MS BT stack. And they specifically changed both of their stacks to accommodate this new setup, knowing full well that every other stack available will try to use SPP. And fail. And why do 3rd party stacks use SPP for ActiveSync? Because that is how MS forced them to sync in the past. Not to mention the impact on dumb users. I suspect that more than a few people with Vista and non-MS stacks on their WM devices are either

  1. Not using BT to sync cuz it "just doesn't work"
  2. Returning their devices and getting new ones because they suspect it's a manufacturing defect or other problem with the device
Not very consumer friendly. It all seems a little fishy.

One fish, two fish, red fish, blue fish.
(had to get something blue and fish in there, and that was the best I could come up with)

What's really interesting to note here is that prior to Vista and WM5, Widcomm was the only stack to use. The MS stack just wasn't up to snuff, and most other 3rd party stacks kinda blew compared to Widcomm. But then Broadcom bought Widcomm. The dev kit costs thousands of dollars and is exclusive to a particular subversion. Which means if you bought the dev kit for 4.3.2 and you want the dev kit for 4.3.3, you need to buy it again. Or maybe they offer upgrades, but either way it's pretty ridiculous. And since Broadcom bought them, the stack only supports Broadcom chipsets which further reduces their market penetration. MS comes along, releases free SDKs to their stacks, and all of a sudden they become the standard. Don't get me wrong, the Widcomm stack is far more mature, but what hobbyist (or even software house) is willing to shell out thousands of dollars for a dev kit when there's a free alternative?

Also of interest is that since discovering all of this I've also discovered a few really slick looking BT apps for WM. However they ALL require the MS stack. So I can't use them. Which makes me sad. Is it any wonder BT is still only really used for wireless headsets (and not very good at that)?

UPDATE: This is really annoying. The SerialPort registry key keeps resetting itself to "Bluetooth" instead of "COM7". I have no idea what's causing this, but it seems to happen randomly. And the problem is that I need to reboot after setting it. Seems like this is something I need to throw into a shutdown script. PITA.


Subscribe to: Post Comments (Atom)