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

マッチング・レジスターとは
ドングル〜USBポート間の信号ラインに整合抵抗を挿入し,ドングル〜USBホスト間の転送エラーを起きにくくする機能があります。
BluetoothドングルとSTERO HEAD SETで長時間の音楽の再生中にプレーヤー・アプリが固まってしまう現象が改善されます。

★[es]でA2DPがハングアップする問題
●[es]でBluetoothを覚醒し,ワイヤレスな環境で音楽を楽しみたい場合に気になるのが再生ソフトのハングアップです。
この問題,当初は「音切れ」・「音飛び」と関連すると思っておりましたが,「音切れ」・「音飛び」はヘッドセットの問題であり,[es]のリセットからハングアップまでの時間がBluetoothドングルによって長いものと短いものがあることが分かりました。
その解析をしていて,ドングルと[es]間で行われるUSB通信の波形を見ているとき,USBポート〜ドングル間に挿入したUSBminiA/Bケーブルの長さによって,同じドングルでもハングアップ時間に差が生まれることを発見しました。
これがホスト・アタッチメントに整合抵抗を入れることを思いついたきっかけです。
●フリーズ時の[es]の挙動 
GSPlayerの他にWindowsMediaPlayer,Tcpmp,MortPlayer等も同様にフリーズします。
フリーズ時のPlayerアプリの挙動は,タイム・コードが進まず,選曲(トラック・スキップ)や終了などの操作ができなくなる事です。
メニューなどの間接的な設定操作は可能ですが,その設定は反映されません。 
この時,OK釦や×でTodayに戻って来ることは可能で,UKTenkiなど,他のアプリを起動する事も可能です。 
但し,GSFinderやファイルエクスプローラーが起動できないことがあります。
同じPlayerアプリの二重起動や,別のPlayerアプリは起動できません。 
フリーズしても,ヘッドセットからクリック音は聞こえ,電話の着信も何故か可能です。
着信は音声も正常で,会話が成り立つが,終話が出来ない様です。 
曲の途中でフリーズするのが通常でありますが,曲頭0:00;00でフリーズすることが多々あり,異常な確率です。
一旦プロセスの終了を選択するとOSがハングアップし,ソフト・リセットが出来なくなります。
プロセスを終了させずにソフトウエアー・リセットを強行しても同様です。
キーボード横のリセット・スイッチでは,黒画面から進行しなくなり,リブートできません。
裏蓋を外しバッテリーを2〜3秒外す操作をすると時計をリセットしないハード・リセットが可能となります。
●以上の観察結果からオーディオ・コーディックの一部のプロセスがバッファーアンダーランなどが原因で固まっているのではないかと考えられます。
●次の様な現象も確認されます。
○リセット→起動→4〜5時間放置→ドングル挿入→mp3再生=短時間でフリーズ3分〜12分
○リセット→起動→ドングル挿入→4〜5時間放置→mp3再生=長時間再生可能180分〜240分
●レジストリーをいじってみました。
HKEY_LOCAL_MACHINE\Audio\SoftwareMixerにあるPriorityをデフォルト値の96から0ゼロに編集。
○リセット→起動→4〜5時間放置→ドングル挿入→mp3再生=わりと長時間再生可能(50分?70分)
○リセット→起動→24時間放置→ドングル挿入→mp3再生=わりと長時間再生可能(100分)
・・・というちょっと中途半端な結果ではありますが,改善する場合がありす。
●同じキー内のBufferSizeをいじるとリセット直後の再生時間に大幅な変化がでますが,デフォルト値の1000(4096)が最善な様です。

●A2DP通信中のD+,D-の波形を観測してみました。波形左下
ドングルはチャープ・パッチ回路で認識する様になったPLANEX BT-01UDEです。
実はこのドングル,整合抵抗0Ω,つまり無しで200分〜300分の再生ができます。
●波形右下,整合抵抗47Ωを入れてみましたが波形に差はありません。
しかし12分で固まりました。
●波形を説明しておきます。
トリガーはパルス幅281nS以上(SYNCと思われる幅の広いパルスがトリガー)
トリガー前渕は[es]からドングルへ流れる信号と思われます。
トリガー後ろ渕がドングルが[es]へ帰還する信号と思われます。
前渕・後ろ渕ではHighのヒゲの出方に差があります。
●波形右は電池プロBDC-220M整合抵抗0Ωです。
何とドングルが出力する信号はダレダレの鈍った波形でした。
この状態で60分程度の再生ができますが,整合抵抗を入れると再生時間はどんど短くなってしまいます。
分解して内部を確認したところ,ドングル内部に搭載された整合抵抗が220Ωとたいへん大きな定数設定となっておりました。
これを27Ωに付け替えたところ,同一チップ構成のタイムリーES3881EDRと同等の再生時間(10分程度)となり,ホストアダプターに100Ωを挿入することで120分まで再生が可能となりました。

●考察
整合抵抗の値でA2DPの再生時間が大きく変化することはつかめた訳ですが,理由がはっきりしません。
そこで波形の僅かな違いから原因を推測してみました。
下の写真は[es]の回路基板でUSBコネクターが装着されている部分です。
USBポートの2番,3番ピンのデーター信号D+,D-はEMIフィルターを通りインテルARMプロセッサーに内蔵されたUSBホストコントローラーポートへ導かれます。
このEMIフィルターはコモンモードチョーク1個で構成され,GNDやVccラインには挿入されておりません。
通常ケーブルの途中にフェライト・コアを入れEMI対策をする場合がありますが,この方法では信号線のみならずGNDとVccラインにもEMIフィルターが挿入されることになります。
GND,D+,D-,Vccの4本のラインに全てEMIフィルターが挿入され,コモンモード雑音を外部に放出しない様になる訳です。
USBのデーター信号はD+,D-という命名の通り,通常は同相成分の無い逆相成分=作動で通信されますので,EMIフィルター=コモンモードフィルターの影響を受けずにドングルからCPUへときれいな波形で転送されます。
しかしUSBのデーター信号が全て作動=逆相成分=ノーマルモードかというと,両方ともLOWになるSE0というプロトコルが存在しますので,時に同相=コモンモード信号存在し,GNDやVccが直結されたEMIフルター=コモンモードフィルターでは大きな影響を受けてしまいます。
上の波形で中央部分にLOW-LOWの区間があり,その片側がLOWになったところで,もう一方の波形に大きなヒゲが観測されてます。
またその逆のHIGHなったところでも,もう一方のLOW区間に大きなヒゲが観測されます。
この例では[es]からドングルに発行されたSE0にヒゲとリンギングが発生しているのがわかりますが,逆にドングルから[es]に対して発行されるSE0も大きな障害になることが推測されます。
実験で2.2uHのコイルを信号線D+,D-に挿入してみましたが,僅か2.2uHの容量でも波形がグチャグチャになり,通信が成立しなくなりました。
これ以上小さな容量を持つコイル=インダクターの手持ちが無かったので実験を続けられなかった訳ですが,[es]の回路基板に搭載されているEMIフィルターは相当大きな容量を持っていると思われ,EMIフィルターの向こう側,ARMプロセッサーの入力端子では,かなり波形が乱れているものと,さらに同相信号であるSE0に於いては電源電圧をはみ出すヒゲ,波形の乱れが起きていると推測できます。
●原因も判明せず,完治させる手段が見つからないので,整合抵抗を調整しトライアンドエラーを繰り返し,最適な値を見つけるしかありません。
このトライアンドエラーの結果,現在判明している各Bluetoothドングルの適正な整合抵抗の値とその再生時間を「USBドングルの規格性能一覧」に記載しておきます。

2007/2/26新規
戻る