[General Topics] Menneisyys:
Unfortunately, there are major incompatibility problems with current Pocket PC models and stereo Bluetooth headphones – to the point of being completely useless.

For example, I’m unable to use my – otherwise excellent - Plantronics Pulsar 590A with the built-in A2DP (that is, stereo headphone) support of my Dell Axim x51v and HTC Universal (both having AKU2+ ROM’s; that is, their built-in Microsoft Bluetooth stack already supports A2DP). Some 200-400 milliseconds after starting to play anything (there is no such problem with system sounds – clicks and so on), the headphone just goes quiet, and the sound will only return after 5-10 seconds. To get lost again, of course, if I (re)start playing anything in any media player.

Fortunately, I have no such problems with my WM5-upgraded (2.01) HP iPAQ hx4700, the Dell Axim x51v with the Widcomm hack, the iPAQ 2210, HTC Wizard and Fujitsu-Siemens Pocket Loox 720 (the latter three with various hacks and other, smaller problems; the first two has no real problems, the x51v with the Flow hack).

People with other headphone models have wildly different problems. Most of them is the “skipping” problem – the sound just stops for some hundred milliseconds or some parts of the sound stream is just ignored.

In this article, (in addition to my already-published, Widcomm-only global bitstream speed setting (BTSpeedSwitcher) and FlowControl article) I elaborate on how the two A2DP implementations (Widcomm, Microsoft (MS)) can be fine-tuned to make your headphones work.

1.1	Communication speed

Most skipping or quieting problems are caused by the too high communication speed between the PDA and the headphones. In these cases, you should first decrease this speed to see whether it helps. If you can get rid of the skips without scarifying much sound quality, then, you can actually make your PDA and headphones compatible.

1.2	Modifying the given values

All the values I’ll elaborate on in this article don’t exist in the Registry by default. This is why I’ve also provided registry import files – you’ll only need to click them from inside Resco Registry Editor (File / Import), the, in my opinion, (for the price) best registry editor for the Pocket PC as can also be seen in the Registry Editor Bible.

These reg. import files contain some default values, which you will most likely need / want to modify with the registry editor (to slightly decrease / increase to decrease the communication speed to get rid of the problems or increase it to have better sound quality, respectively). With most devices (in this test, PL720, hx4700 and x51v with both BT stacks), after you modify a sound quality-related value in the Registry, you’ll only need to restart the BT stack to be able to test the modified value. That is, explicitly stop and restart the BT unit. With the Widcomm BT stack, you’ll need to click “Turn Bluetooth OFF” in the context menu of the BT icon and, then, staright go back to Bluetooth Manager and just reconnect the headphone. With the MS BT stack, in Bluetooth Settings, just untick the “Turn on Bluetooth” checkbox and click OK (or, if it has a Communication Manager dialog like PPC Phone Edition devices, stop BT there); then, re-enable BT and reconnect to the headphones by going back to Bluetooth Settings and selecting “Set as Wireless Stereo” in the context menu of the given stereo headphone.

Note that this (a simple BT stack restart is sufficient) is not the case with the HTC Wizard: with it, for the changes to be registered, you’ll need to power the device completely off by long-pressing the Power button and answering Yes to the question about completely powering down the device. After it is shut down, just press the Power button again and it’ll reboot. It's only then will the changes have effect.

2. Microsoft BT stack: BitPool

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Bluetooth\A2DP\Settings\BitPool

(Registry import script available here)

With the Microsoft BT stack, you can set the BitPool value, which has a direct effect on the communication speed between the PDA and the headset. Unlike with the Widcomm BT stack, in here, you can’t directly supply the number of kilobytes the PDA will transfer the sound to the headphones. Here, you’ll need to multiply the value of this registry entry with 6.5 to get the approximate value of the transfer rate.

To fix most skipping problems, you will want to decrease this value (and you will want to increase it to try to enhance the sound quality).

Unfortunately, decreasing it may result in a horrible sound quality decrease. For example, in my tests, I’ve found out that only with the value 24 can I have uninterrupted music transfer between by Dell Axim x51v (with the original MS stack) and my 590A. With any value over that (even 25), there started to be skips.

Increasing it will not necessarily result in a far better sound quality. On my HTC Wizard ((European) MDA Vario by its origins with the KTamas / bepe AKU3.2 RC1 ROM on it), which has a very bad A2DP sound quality by default, increasing this value to even 120 didn’t help – the very bad “typical for non-filtered contents sampled at a low sampling frequency” distortion remained. That is, you can’t raise the sound quality of the Wizard; not even with extra high BitPool values.

I’ve also played a lot with the MinBitPool Registry value (under the same key; see this forum post), without any success (on my Wizard). That is, at least with the current Wizard hack, it’s pretty futile to try to play with MinBitPool, it seems.

The same stands for SampleRate: it has no effect at all, it seems.

More info here (AGAIN, please note that setting SampleRate, MinBitPool and MaxBitPool don’t have any effect, at least not on the Wizard!)

3. Tweakability of the Widcomm BT stack

Unlike with the MS BT stack (which only has one parameter to be tweaked), there are far more locations / parameters this stack can be tweaked at.

Note that here, I don’t elaborate on the two previous hacks to combat the “transmission stops after a few dozen minutes; otherwise, it's pretty OK” problem – please see the already-linked global bitstream speed setting (BTSpeedSwitcher) and FlowControl article if you have the previously-mentioned problem. The hacks described in this article “only” help with constant skipping problems (and transfer quality fine-tuning), which are completely independent of the subject of my previous article.