Wie kann ich Verzögerungen mit einer Bluetooth-Maus und einem A2DP-Headset beheben?

13

Ich besitze eine Logitech M555b- Maus für meinen HP Elitebook 8570w-Laptop mit Kubuntu 12.04. Funktioniert direkt nach dem Herstellen einer Verbindung mit dem KDE-Bluetooth-Steuermodul.

Nach einiger Zeit (scheinbar zufällig) beginnt es jedoch zu verzögern. Bewegungen werden für kurze Zeit um ca. 500ms verzögert. Normalerweise erholt es sich auch nach einiger Zeit, aber es kann Minuten dauern. Alle Aktionen werden verzögert: Bewegungen, Klicken, Scrollen. Zusätzlich können die Bewegungen während dieser Zeiten abgehackt sein.

Eine Problemumgehung, die immer für den gleichen kurzen Zeitraum funktioniert, besteht darin, die Maus zu trennen und erneut zu verbinden. Dies kann mit demselben KDE-Bluetooth-Steuermodul erfolgen.

Was habe ich schon probiert?

  • Dies beim Booten ausführen:

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

    Deaktivieren von Energiesparfunktionen am Bluetooth- hci0Gerät.

  • Überprüfen Sie die Batterien der Maus (es ist nur eine Woche alt, andere neue Batterien: gleiches Ergebnis)

  • Überprüfen von Protokollen und Kernelnachrichten über Bluetooth-bezogene Einträge: Keine außer den erwarteten Nachrichten zur Verbindungszeit.
  • Ich verwende den Kernel 3.5.0-13-genericwie in der PPA von xorg-edgers angegeben . Das Booten des regulären 3.2 Precise-Kernels führt zum gleichen Verhalten.

Einige andere Informationen, die helfen können:

  • Dies passiert, wenn keine anderen Bluetooth-Verbindungen auf dem Gerät aktiv sind.
  • Ähnliche Symptome treten auch bei meinem Bluetooth-Stereo-Headset (A2DP) auf, aber dann kommt es zu Verzögerungen und zum Überspringen von Audiodaten. Das Austauschen von Bluetooth-Profilen, wie hier beschrieben , hilft dann. Fazit: Es ist nicht die fehlerhafte Maus.
  • Das Headset hat mit meinem inzwischen toten Thinkpad T61p mit integriertem Bluetooth immer einwandfrei funktioniert.
  • Das Bluetooth-Modul in meinem Laptop ist über USB angeschlossen und wird als angezeigt

    0a5c:21e1 Broadcom Corp. 
    
  • Das Ausschalten des eingebauten Bluetooth-Adapters und die Verwendung eines anderen Adapters funktioniert ohne Verzögerung.

    0a5c:2046 Broadcom Corp. Bluetooth Device
    

Ich bin mobil und einige Leute in meiner Umgebung verwenden Bluetooth bei der Arbeit (meistens A2DP). Es kommt auch zu Hause vor, wo meine Nachbarn wahrscheinlich auch Bluetooth verwenden. Es könnte einfach eine Funkstörung sein, aber ich denke, Bluetooth-Verbindungen sollten einfach zu einem anderen Kanal springen. Außerdem funktioniert es beim erneuten Herstellen einer Verbindung sofort einwandfrei.

Aus diesem Grund denke ich, dass es sich um ein Softwaretreiberproblem handelt, und ich würde es gerne debuggen. Gibt es eine Möglichkeit, eine ausführlichere Protokollierung für die Bluetooth (-hid) -Module zu erhalten?

gertvdijk
quelle
Bis ich durch ein Motherboard ersetzt wurde, hatte mein Computer einen fehlerhaften USB-Anschluss. Haben Sie versucht, ein anderes zum Einstecken Ihres Bluetooth-Moduls zu verwenden? Sie können auch versuchen, Ihren Computer für eine Fahrt in das Land mitzunehmen, Ihr Auto und Ihr Mobiltelefon auszuschalten und zu prüfen, ob das Problem weiterhin besteht, wenn keine Funkstörungen vorliegen.
John S Gruber
Ich habe einen älteren Bluetooth 2.0 USB-Dongle gefunden und dieser funktioniert wie ein Zauber. Scheint ein spezifisches 0a5c:21e1 Broadcom Corp.Problem in Linux zu sein.
Gertvdijk
Ein weiteres Update zum ursprünglichen Problem. Seit ich auf Linux-Kernel 3.7.x bin, scheint dies auch auf dem internen Adapter verschwunden zu sein - alles funktioniert sehr gut. Wahrscheinlich ist hier ein Fehler aufgetreten, der jetzt behoben wurde. Sobald ich Zeit habe, weitere Details herauszufinden, melde ich dies als Fehler.
gertvdijk

Antworten:

6

Sie können versuchen, das hcidumpDienstprogramm aus dem Paket bluez-hcidumpzu verwenden, um Ihre Bluetooth-Geräte zu überwachen und detaillierte Informationen zu erhalten:

sudo apt-get install bluez-hcidump

In der Paketbeschreibung wird Folgendes vermerkt:

Das Dienstprogramm hcidump ermöglicht die Überwachung der Bluetooth-Aktivität. Es bietet eine Zerlegung des Bluetooth-Verkehrs und kann Pakete von Protokollen höherer Ebene wie RFCOMM, SDP und BNEP anzeigen.

Sie können das Dienstprogramm verwenden, um die Ausgabe von Ihrem Gerät auf dem Bildschirm oder in einer Datei zu protokollieren. Wo hciXist Ihr eigenes Bluetooth-Gerät (hci0 ist die Standardeinstellung und wird verwendet, wenn Sie nichts mit angeben -i), können Sie Folgendes ausführen:

sudo hcidump -x -i hciX

Sie können den Speicherauszug in einer Datei speichern, indem Sie ihn an den Befehl anhängen. -w ~/outputWenn Sie die Audiodaten genauer kennen möchten, können Sie den -ASchalter verwenden und damit SCO-Audiodaten extrahieren. In diesem Fall müssen Sie jedoch immer eine Ausgabedatei angeben:

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

Sie können eine gespeicherte Speicherauszugsdatei anzeigen, indem Sie verwenden

sudo hcidump -r ~/output

Es gibt viel spezifischere Optionen, die Sie möglicherweise untersuchen möchten. Sie können nach Pakettyp filtern, wenn Sie möchten, da standardmäßig alle Pakete ausgegeben werden. Weitere Informationen finden Sie in man hcidumpden Online-Hilfeseiten zu Ubuntu .

Die einzige andere Möglichkeit besteht darin, zu installieren wiresharkund zu prüfen, ob Ihre Geräte erkannt werden können. wenn es kann, wird es in der Lage sein , USB und Bluetooth - Verkehr zu analysieren, wie erwähnt hier , aber hcidumpsoll bessere Ergebnisse liefern.


quelle
Vielen Dank! Das Besondere daran ist, dass hcidumpdas Problem beim Ausführen nicht auftritt. Sobald ich es starte, verschwindet das Problem sofort. Dieser Debugging-Test scheint nicht reproduzierbar zu sein.
Gertvdijk
2

Ich hatte etwas Glück damit, USB-Tracing zu verwenden, um seltsame Audioprobleme zu lösen. Manchmal können Sie etwas aus dem Inhalt oder dem Timing von Paketen bestimmen. In meinem Fall war es eine gelegentliche Änderung der Paketlänge, die dem Rauschen entsprach, das ich hörte.

Hier ist eine Seite von Wireshark, die einige Informationen enthält.

Sie können eine Ablaufverfolgung erhalten, indem Sie folgendermaßen vorgehen:

  1. sudo modprobe usmon
  2. cd / sys / kernel / debug / usb / usbmon
  3. Sudokatze 0u | tee ~ / myusbtrace> / dev / null
  4. Führen Sie Ihren Test durch
  5. Beenden Sie den Vorgang ab Schritt 3

Hier Informationen aus dem Linux-Projekt, einschließlich Informationen zum Eingrenzen der Verfolgung.

Die zweite Spalte enthält anscheinend die Uhrzeit. Sie sollten also genau beobachten, wie sie inkrementiert wird. Wenn es reibungslos startet und später nervös wird, liegt das Problem möglicherweise im Bluetooth-Bereich.

Wenn die Ablaufverfolgung unregelmäßige Pakete anzeigt, wenn ein Problem vorliegt, das entweder USB oder Bluetooth sein könnte, kann die Richtung der unregelmäßigen Pakete jedoch angeben, ob es sich um den Kernel oder den Treiber handelt, und nicht um etwas auf der anderen Seite des USB-Busses.

John S Gruber
quelle
Sehr hilfreich, danke. Hätte ein kleines Kopfgeld angeboten, wenn das möglich wäre. :)
gertvdijk