web-dev-qa-db-ja.com

Bluetooth接続のマウスとA2DPヘッドセットを使用して遅延をデバッグする方法

Kubuntu 12.04を実行しているHP Elitebook 8570wラップトップで使用する Logitech M555b マウスを所有しています。 KDE Bluetoothコントロールモジュールを使用して接続した直後に正常に動作します。

ただし、しばらくすると(一見ランダムに)、遅れが生じ始めます。動きは、短時間で約500ms遅れます。通常はしばらくしてから回復しますが、数分かかる場合があります。すべてのアクションが遅れています:移動、クリック、スクロール。さらに、これらの時間中に動きが途切れることがあります。

alwaysが同じ短時間動作する回避策は、マウスを再接続して切断することです。これは、同じKDE Bluetooth制御モジュールを使用して実行できます。

もう何をしようとしましたか?

  • 起動時にこれを実行します:

    echo on > `readlink -f /sys/class/bluetooth/hci0`/../../../power/level
    

    Bluetooth hci0デバイスの省電力機能を無効にするには。

  • マウスの電池を確認してください(1週間経過したばかりで、他の新しい電池も同じ結果です)

  • Bluetooth関連のエントリに関するログとカーネルメッセージの確認:接続時に予想されるメッセージ以外はありません。
  • xorg-edgers PPA で提供されているカーネル3.5.0-13-genericを実行しています。通常の3.2 Preciseカーネルを起動すると、同じ動作になります。

その他の役立つ情報:

  • 他のBluetooth接続がマシン上でアクティブになっていない場合に発生します。
  • Bluetoothステレオ(A2DP)ヘッドセットでも同様の現象が発生しますが、音声が遅れてスキップします。説明に従ってBluetoothプロファイルを交換すると here が役立ちます。結論:不良なのはマウスではありません。
  • ヘッドセットは、Bluetoothを内蔵した私の今ではなくなったThinkpad T61pを使用して、常に正常に機能しました。
  • 私のラップトップのBluetoothモジュールはUSB経由で接続されており、

    0a5c:21e1 Broadcom Corp. 
    
  • ビルトインBluetoothアダプターをオフにして別のアダプターを使用すると、遅延なく正常に機能します。

    0a5c:2046 Broadcom Corp. Bluetooth Device
    

私はモバイルで、私の周りの数人が職場でBluetoothを使用しています(ほとんどがA2DP)。また、自宅でも起こります。自宅では、おそらく隣人もBluetoothを使用しています。それはcouldただの無線干渉ですが、Bluetooth接続は別のチャネルにホップするだけだと思います。また、再接続するとすぐに適切に機能します。

したがって、それはソフトウェアドライバーの問題だと思うので、デバッグしたいと思います。 Bluetooth(-hid)モジュールでより詳細なログを取得する方法はありますか?

13
gertvdijk

パッケージbluez-hcidumphcidumpユーティリティを使用して、Bluetoothデバイスを監視し、詳細な情報を取得できます。

Sudo apt-get install bluez-hcidump

パッケージの説明では、次のことに注意してください。

Hcidumpユーティリティを使用すると、Bluetoothアクティビティを監視できます。 Bluetoothトラフィックの逆アセンブリを提供し、RFCOMM、SDP、BNEPなどの高レベルプロトコルからのパケットを表示できます。

ユーティリティを使用して、デバイスからの出力を画面またはファイルに記録できます。 hciXは独自のbluetoothデバイスです(-iで何も指定しない場合はhci0がデフォルトで使用されます)、次を実行できます。

Sudo hcidump -x -i hciX

-w ~/outputコマンドに追加することでダンプをファイルに保存できます。オーディオデータについて具体的に知りたい場合は、-Aスイッチを使用して、SCO audioを抽出できます。ただし、この場合、常に出力ファイルを指定する必要があります。

Sudo hcidump -x -A -i hciX -w ~/output

次を使用して、保存されたダンプファイルを表示できます。

Sudo hcidump -r ~/output

調査が必要になる可能性のある、より多くの特定のオプションがあります。デフォルトですべてのパケットがダンプされるため、必要に応じてパケットタイプでフィルタリングできます。詳細については、man hcidumpまたは buntu manpages online を参照してください。

他の唯一のオプションは、wiresharkをインストールし、デバイスを検出できるかどうかを確認することです。可能であれば、 here のようにusbおよびbluetoothトラフィックを分析できますが、hcidumpはより良い結果を与えるはずです。

6
user76204

USBトレースを使用して、奇妙なオーディオの問題を解決することができました。コンテンツまたはパケットのタイミングから何かを判断できる場合があります。私の場合、それは私が聞いていたノイズに対応するパケット長の時々の変化でした。

ここにページがあります いくつかの情報を提供するWiresharkから。

次の操作を行うだけでトレースを取得できます。

  1. 須藤modprobe usmon
  2. cd/sys/kernel/debug/usb/usbmon
  3. 須藤猫0u | tee〜/ myusbtrace>/dev/null
  4. テストを実行する
  5. ステップ3のプロセスを強制終了します

ここ は、トレース対象を絞り込む方法など、これに関するLinuxプロジェクトからの情報です。

2番目の列には時間が含まれているように見えるため、時間の増分を注意深く監視する必要があります。スムーズに開始し、その後でびびる場合は、Bluetoothセクションに問題がある可能性があります。

USBまたはbluetoothのいずれかである可能性のある問題があるときにトレースに不規則なパケットが表示される場合、不規則なパケットの方向は、USBバスの反対側にあるものではなくカーネルまたはドライバーのどちらであるかを示す場合があります。

2
John S Gruber