Bluetoothドングルテクニカルレポート

チャープ・ヘルパーとは
Bluetoothドングルで,本体に挿入しただけでは認識しないもの,リセットしても認識しないドングル,いわゆる認識不能なドングルがあります。
これはホスト[es]側とデバイスのチャープ(認識作業)にタイミングのズレがある為です。
この不具合に対し,USBホスト・アタッチメントにチャープを手助けする回路を搭載したものがCH:チャープヘルパーです。
[es]がUSBデバイスを認識しない問題を御一読下さい。
ターボ・キャパシターとは

送信電力が大きく遠くまで電波が届くClass1規格のドングルでは,[es]のバスパワーでは力不足な場合があり,チャープヘルパーのみでは認識は成功してもパートナーシップ(ペアリング)でデバイスを見失う現象があります。
よく観察していると本体からスイッチングノイズ(チーという音)が聞こえ,電源が苦しそうに悲鳴をあげている様です。
そこで[es]のUSBバスパワー(電源回路)を手助けする大容量の電解コンデンサーがTC:ターボキャパシターです。
ターボ・キャパシター解説

★[es]がUSBデバイスを認識しない問題
タイムリーES3881EDRなどがUSBに差し込んだだけでは何故認識してくれないのかが判明しました。
まず「ハブ=ホスト」が「ターゲット=BTドングル」をどの様に認識しリセットするかを(下図)教科書から・・・
●ドングルが[es]のUSBポートに差されるとID(#4)ピンがGNDに接地されLowになる。
●IDがLowになると[es]はUSBバスパワー(#1)ピンに電源DC5Vを投入する。
●[es]側はUSBポートのD+(#3)ピンとD-(#2)ピンは両方共Lowの状態=SE0にし(2.5mS〜3mSが規格だそう),ドングル側の出方を待つ。
●ドングルはUSBフルスピード規格(下図はその上位規格USB2.0のハイスピードで記載されている)なのでUSBポートのD-(#2)ピンをHighに,D+(#3)ピンをLowにする。時間は1mS以上。これをデバイス・チャープという。
●次にドングルはD+D-共LowのSE0の状態にし,[es]側の出方を待つ。
主語をドングルとしたが,規格(教科書)に主語は無く,デバイスチャープが終わればSE0になる(自然になる)と書いてある。曖昧な表現。
●[es]はKステートとJステートを発行(K/Jステートの説明は省略)する。これをハブ・チャープという。
●これでお互い誰であるかが分かるので通信が始まる。=リセットが終了する。=認識する。
次に波形左下・・・これは[es]との相性が良い東芝のBluetoothドングルIPCN086Aを[es]のUSBポートに挿入した時の波形です。
一番上のオレンジ色ch1はドングルUSB端子のバスパワー(#1)ピン。
二番目のマゼンタ色ch3はドングルUSB端子のD-(#2)ピン。
三番目の緑ch4はドングルUSB端子のD+(#3)ピン。
横軸100mS/div

波形右は電池プロのBluetoothドングルBDC-220M。
条件,オシロの接続は上記東芝と同じ。

両者とも概ね1秒以内にリセット(認識)が終わり,差し込んだだけで,正常に通信を開始し出す事が分かります。


さて問題のタイムリーES3881EDRのリセット波形はどうなのかというと・・・。
まず東芝や電池プロのオシロの横軸は100mS/divなのに対し,タイムリーのコレは250mS/divな事に注目して下さい。
波形左下は[es]のUSBポートにズボっと差し込んだ時のもので,波形右下は差し込んである状態から[es]をソフトウエアー・リセットした時の波形です。
[es]リセットの白画面からWMのロゴが出始めた頃にあたります。
●波形左下で,[es]はUSBポートID(#4)ピンがLowに落ちた途端に電源をonにしD+D-共Lowな状態である所までは問題がありません。
次にD+がHighとなっているので,ドングルがデバイス・チャープを行っているのが分かります。どうやらこのタイミングが短い様です。
その次のD+のパタパタは何んでしょう?
おそらく[es]側がSE0を待ちきれずに,ハブ・チャープを行っていると思われます。
D-側がパタパタしていないのでKステートの発行であるらしいです。
このD+のパタパタを最後に,これ以降何も通信が行われないです。
●波形右下ではデバイス・チャープを[es]が充分に待ってくれているので,SE0からハブ・チャープまでが正常に行われていますが,全体的に時間がかかっております。
この[es]側の待ち時間はOS立ち上げ中の事であり,認識成功しているのは偶然の産物ではないかと思われます。
●さて二度目のSE0の発行を誰がしているのかが分からないと,どっちの問題なのかが分からなくなります。
そこでドングルを[es]に差すのではなく,裸な状態でドングルに電源のみ供給してみました。波形右
最初のSE0はOK→デバイス・チャープは永久,つまり二度目のSE0からハブ・チャープは[es]側がやっている訳です。
という事は,ドングルのリセット・アルゴリズムでデバイス・チャープの発行が遅い物は差し込んだだけでは認識できないという事になります。
これでこの問題が[es]側のバグであろう事が判明しました。

PLANEXのBluetooth Ver2.0 EDR Class2 ドングル BT-01UDEが認識できないワケも同じではないかと思い調べてみました。ちなみにBT-01UDEは[es]のソフトウエアー・リセットでも認識させることができません。

●波形左下 挿入時
●波形右下 [es]ソフトウエア・リセット時です。
タイムリーES-3881EDRよりリセット時間が長く,[es]のソフトウエア・リセットでもタイミングが合わない様です。
世間で云われている電源容量の不足で認識不能となっている訳では無いことが判明しました。
●色々とトライした結果,次の事がわりました。
ドングルの認識に失敗しても,その後D+はLow,D-はHighという状態が続いていて,[es]・ドングル共に状態待ちになっている事がわりました。
つまり外部より強制的にLowLowの関係(SE0)を作ってやれば再度リセットアルゴリズムに突入するのであります。
もっと分かりやすくいえば,D-を強制的に数百mSの間GNDに落としてやる(ピンセットの先で#3#4をショートさせる)だけで認識しす。

●そこで外部リセット回路を構築してみました。
図右を見ていただきたい。横軸はさらに倍の500mS/divであります。
回路はUSBの+5電源が入ったらD-を暫くGNDに落とすという単純なものであります。
[es]では,何をしても認識してくれなかったPLANEXのBT-01UDEが挿すだけで認識できました。
同様にタイムリーES-3881EDRも挿すだけで認識できました。
その他のドングルの測定結果を残しておきます。
●波形左下
タイムリーES-388挿入時。 
●波形右下
ハギワラHNT-UB03挿入時波形。 

ターボ・キャパシター解説
●尚,PLANEXBT-01UDEは認識できてもキー入力ではねつけられてしまう事があります。
再びパスキーの入力を促されるのではなく,設定モード画面がグレーアウトとなってしまう現象です。
この時,[es]本体のスピーカーからだと思われるが「チー」という音がすると共に,USBのバスパワー(+5電源)が若干低下していて[es]内蔵の電源が悲鳴を上げているのが分かりました。
つまりペアリング動作で送信電力が必要となり,消費電流が増加変動した結果,[es]バスパワーの電流制限回路が動作してしまうものと推測されます。
USBのバスパワーに大容量の電解コンデンサーを挿入した所,見事A2DPが開通しました。
この様に電源電流の瞬時変動にはコンデンサーが有効なのでありす。
●写真右
チャープのパッチあて回路の規模はこの程度のもので電解コンデンサー以外は面実装部品で構成できます。
したがって現状のBO-SE(LB-US007)に若干のサイズ変更を行えば,ほぼそのままの形状で搭載可能となります。

2007/2/26新規
戻る