Menneisyys
10-20-2006, 06:50 PM
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 (http://www.pocketpcmag.com/blogs/index.php?blog=3&p=1335&more=1&c=1&tb=1&pb=1)) 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 (http://www.pocketpcmag.com/blogs/menneisyys/UltimateRoundupOfRegistryEditors.asp).
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 (http://www.winmobiletech.com/sekalaiset/A2DPFineTune/Microsoft.reg))
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 (http://forum.xda-developers.com/showpost.php?p=970796&postcount=13)), 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 (http://forum.xda-developers.com/showpost.php?p=970796&postcount=13) (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 (http://www.pocketpcmag.com/blogs/index.php?blog=3&p=1335&more=1&c=1&tb=1&pb=1) 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.
3.1 LineSpeed
HKEY_LOCAL_MACHINE\SOFTWARE\Widcomm\Plugin\AV\LineSpeed
(Registry import script available here (http://www.winmobiletech.com/sekalaiset/A2DPFineTune/WidcommA2DPLineSpeedHack.reg))
This registry value is very similar to the above-introduced MS BT stack-specific BitPool. The difference is that it allows Widcomm users to directly supply the bit transfer speed between the PDA and the headphones – no multiplication is necessary.
The valid values start with 64 (that is, 64 kbit/s), which results in intolerably bad sound quality. 128 is still very bad; it’s with 192 that the sound quality starts to become acceptable. With 256, it’s already pretty hard to distinguish from the sound quality higher values result in – that is, you’ll want to start with the value 256 (and only slightly decrease to see whether it helps get rid of the problems).
I’ve even tested my Pocket PC’s with extremely high (400-600 kbps) values; they haven’t delivered noticeably (or at all) better sound quality than, say, the 320 kbps setting and they rendered the transmission far more unreliable / unstable, if working at all. For example, even at 400 kbps, my iPAQ hx4700 paused and skipped from time to time; at 600 kbps, it only played for some 20 secs and, then, went quiet. The Pocket Loox 720 fared a bit better at even 460 kbps but, again, the sound quality gain (if any) wasn’t worth the trouble and the additional BT communication load.
Speaking of the PL720, I’ve also tested whether a slightly lower, but still very good transmission speed (256 kbps) completely gets rid of the need for the FlowControl hack (again, see my previous article on the latter). While it played music for more than two hours, around the third hour, it stopped playing. Furthermore, it still had slight pauses (albeit I haven’t noticed playback at a higher pitch in the following 8-10 seconds). That is, you won’t want to completely get rid of the FlowControl hack. (I’ve also tested the PL720 with the FlowControl hack disabled and at 460 kbps – as opposed to the pretty stable 256 kbps. It shuts down itself after 3-4 minutes and, therefore, is useless, as I’ve expected.)
3.2 Blocks and SubBand
HKEY_LOCAL_MACHINE\SOFTWARE\WIDCOMM\Plugin\AV\Blocks
and
HKEY_LOCAL_MACHINE\SOFTWARE\WIDCOMM\Plugin\AV\SubBands
(Registry import script available here (http://www.winmobiletech.com/sekalaiset/A2DPFineTune/WidcommA2DPBlocksAndSubbandHack.reg))
These two values can also be used to fine-tune your transmission parameters under the Widcomm BT stack. They are settable between 4 and 16. With higher values that 16, the Pocket PC won’t connect to the headphones; with lower values than 4, nothing will be heard (not even system sounds – clicks and the like). The lower the value, the worse the sound quality.
Of the two, the second, ‘SubBands’ parameter has a much less effect on the sound quality as the first (Blocks). For example, if you leave Blocks at (the best) 16 and set SubBands to 4, the sound quality will degrade only slightly (and, with the SubBands value of 8, it’ll be almost impossible to notice any quality difference). It will be in no way as bad as, say, using 128 kbps LineSpeed and will still be much better than the A2DP sound quality of the HTC Wizard.
If, on the other hand, you set Blocks to be 4 and leave SubBands at (the best) 16, the sound quality will be considerably worse. It’ll be, say, as setting the line speed (see section 3.1) to 96 kbps.
That is, first, start play with the SubBands value. Decrease it to, first, 8 and if it doesn’t help, 4. Then, if the latter doesn’t result in any usable result, start decreasing Blocks. Again, descreasing Blocks will have a very bad effect on the sound quality.
Note that Blocks only seems to have effect on 1.7 Widcomm versions; 1.5 versions (like the PDA2k upgrade usable on the Pocket Loox 720) don’t take this value into account at all. (Haven’t tested it with 1.6 like the HP update usable on WM2003 and some WM2003SE devices.)
(These three hacks were originally discovered by the well-known mikespikel (http://www.aximsite.com/boards/showpost.php?p=1200423&postcount=733) in this thread (http://www.aximsite.com/boards/showthread.php?p=1200423).)
3.3 Other additional registry values available in desktop Widcomm implementations and some forum posts
I’ve also thoroughly tested the desktop Windows values listed here (http://driveragent.com/archive/8531/1-29). They allow for tuning the bits-per-sample ("BitsPerSample"), setting the sampling frequency ("SamplesPerSec"; the case is similar to the “SampleRate” case of the MS BT stack) and setting the number of channels (mono or stereo; "Channels"). None of them seems to have any effect. If you still want to give it a try, the registry import script is available here (http://www.winmobiletech.com/sekalaiset/A2DPFineTune/DesktopWidcommAdditionalValues.reg).
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 (http://www.pocketpcmag.com/blogs/index.php?blog=3&p=1335&more=1&c=1&tb=1&pb=1)) 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 (http://www.pocketpcmag.com/blogs/menneisyys/UltimateRoundupOfRegistryEditors.asp).
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 (http://www.winmobiletech.com/sekalaiset/A2DPFineTune/Microsoft.reg))
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 (http://forum.xda-developers.com/showpost.php?p=970796&postcount=13)), 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 (http://forum.xda-developers.com/showpost.php?p=970796&postcount=13) (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 (http://www.pocketpcmag.com/blogs/index.php?blog=3&p=1335&more=1&c=1&tb=1&pb=1) 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.
3.1 LineSpeed
HKEY_LOCAL_MACHINE\SOFTWARE\Widcomm\Plugin\AV\LineSpeed
(Registry import script available here (http://www.winmobiletech.com/sekalaiset/A2DPFineTune/WidcommA2DPLineSpeedHack.reg))
This registry value is very similar to the above-introduced MS BT stack-specific BitPool. The difference is that it allows Widcomm users to directly supply the bit transfer speed between the PDA and the headphones – no multiplication is necessary.
The valid values start with 64 (that is, 64 kbit/s), which results in intolerably bad sound quality. 128 is still very bad; it’s with 192 that the sound quality starts to become acceptable. With 256, it’s already pretty hard to distinguish from the sound quality higher values result in – that is, you’ll want to start with the value 256 (and only slightly decrease to see whether it helps get rid of the problems).
I’ve even tested my Pocket PC’s with extremely high (400-600 kbps) values; they haven’t delivered noticeably (or at all) better sound quality than, say, the 320 kbps setting and they rendered the transmission far more unreliable / unstable, if working at all. For example, even at 400 kbps, my iPAQ hx4700 paused and skipped from time to time; at 600 kbps, it only played for some 20 secs and, then, went quiet. The Pocket Loox 720 fared a bit better at even 460 kbps but, again, the sound quality gain (if any) wasn’t worth the trouble and the additional BT communication load.
Speaking of the PL720, I’ve also tested whether a slightly lower, but still very good transmission speed (256 kbps) completely gets rid of the need for the FlowControl hack (again, see my previous article on the latter). While it played music for more than two hours, around the third hour, it stopped playing. Furthermore, it still had slight pauses (albeit I haven’t noticed playback at a higher pitch in the following 8-10 seconds). That is, you won’t want to completely get rid of the FlowControl hack. (I’ve also tested the PL720 with the FlowControl hack disabled and at 460 kbps – as opposed to the pretty stable 256 kbps. It shuts down itself after 3-4 minutes and, therefore, is useless, as I’ve expected.)
3.2 Blocks and SubBand
HKEY_LOCAL_MACHINE\SOFTWARE\WIDCOMM\Plugin\AV\Blocks
and
HKEY_LOCAL_MACHINE\SOFTWARE\WIDCOMM\Plugin\AV\SubBands
(Registry import script available here (http://www.winmobiletech.com/sekalaiset/A2DPFineTune/WidcommA2DPBlocksAndSubbandHack.reg))
These two values can also be used to fine-tune your transmission parameters under the Widcomm BT stack. They are settable between 4 and 16. With higher values that 16, the Pocket PC won’t connect to the headphones; with lower values than 4, nothing will be heard (not even system sounds – clicks and the like). The lower the value, the worse the sound quality.
Of the two, the second, ‘SubBands’ parameter has a much less effect on the sound quality as the first (Blocks). For example, if you leave Blocks at (the best) 16 and set SubBands to 4, the sound quality will degrade only slightly (and, with the SubBands value of 8, it’ll be almost impossible to notice any quality difference). It will be in no way as bad as, say, using 128 kbps LineSpeed and will still be much better than the A2DP sound quality of the HTC Wizard.
If, on the other hand, you set Blocks to be 4 and leave SubBands at (the best) 16, the sound quality will be considerably worse. It’ll be, say, as setting the line speed (see section 3.1) to 96 kbps.
That is, first, start play with the SubBands value. Decrease it to, first, 8 and if it doesn’t help, 4. Then, if the latter doesn’t result in any usable result, start decreasing Blocks. Again, descreasing Blocks will have a very bad effect on the sound quality.
Note that Blocks only seems to have effect on 1.7 Widcomm versions; 1.5 versions (like the PDA2k upgrade usable on the Pocket Loox 720) don’t take this value into account at all. (Haven’t tested it with 1.6 like the HP update usable on WM2003 and some WM2003SE devices.)
(These three hacks were originally discovered by the well-known mikespikel (http://www.aximsite.com/boards/showpost.php?p=1200423&postcount=733) in this thread (http://www.aximsite.com/boards/showthread.php?p=1200423).)
3.3 Other additional registry values available in desktop Widcomm implementations and some forum posts
I’ve also thoroughly tested the desktop Windows values listed here (http://driveragent.com/archive/8531/1-29). They allow for tuning the bits-per-sample ("BitsPerSample"), setting the sampling frequency ("SamplesPerSec"; the case is similar to the “SampleRate” case of the MS BT stack) and setting the number of channels (mono or stereo; "Channels"). None of them seems to have any effect. If you still want to give it a try, the registry import script is available here (http://www.winmobiletech.com/sekalaiset/A2DPFineTune/DesktopWidcommAdditionalValues.reg).