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


13

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

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

常に同じ短時間動作する回避策は、マウスの再接続を切断することです。これは、同じ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プロファイルを交換すると役立ちます。結論:不良なのはマウスではありません。
  • ヘッドセットは、Bluetoothが内蔵された私の死んだThinkpad T61pを使用して常に正常に機能しました。
  • 私のラップトップのBluetoothモジュールはUSB経由で接続されており、

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

    0a5c:2046 Broadcom Corp. Bluetooth Device
    

私は機動性があり、私の周りの数人が仕事でBluetoothを使用しています(A2DPはほとんど)。また、自宅でも起こります。自宅では、おそらく隣人もBluetoothを使用しています。それ単に無線干渉である可能性がありますが、Bluetooth接続は別のチャネルにホップする必要があると思います。また、再接続するとすぐに適切に機能します。

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


マザーボードに交換するまで、コンピューターに不良なUSBポートがありました。Bluetoothモジュールを接続するために別のものを使用してみましたか?また、コンピューターを田舎に連れて行って、車と携帯電話の電源を切り、RF干渉がないという問題がまだあるかどうかを確認することもできます。
ジョンSグルーバー

古いBluetooth 2.0 USBドングルを見つけましたが、これは魅力的です。0a5c:21e1 Broadcom Corp.Linuxの特定の問題のようです。
gertvdijk

元の問題に関する別の更新。私がLinuxカーネル3.7.xを使用して以来、これは内部アダプターでも消えているようです。おそらくここで修正されたバグをヒットします。詳細を把握する時間ができたら、これをバグとして報告します。
gertvdijk

回答:


6

hcidumpパッケージのユーティリティを使用してbluez-hcidump、Bluetoothデバイスを監視し、詳細な情報を取得してみてください。

sudo apt-get install bluez-hcidump

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

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

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

sudo hcidump -x -i hciX

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

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

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

sudo hcidump -r ~/output

調査したいと思うかもしれないもっと多くの特定のオプションがあります。デフォルトではすべてのパケットがダンプされるため、必要に応じてパケットタイプでフィルタリングできます。詳細についてman hcidumpは、オンラインまたはUbuntuのマンページを参照してください。

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


ありがとう!これに特有なのはhcidump、問題の実行中に問題が表示されないことです。また、実行を開始すると、問題はすぐに消えます。このデバッグプローブは、再現性がないように思われます。
gertvdijk

2

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

以下は、いくつかの情報を提供するWiresharkのページです。

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

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

ここであなたがトレースしているものを絞り込む方法など、これについてLinuxプロジェクトからの情報が、あります。

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

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


とても助かります、ありがとう。それが可能であれば、小さな賞金を提供していたでしょう。:)
gertvdijk
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.