Behebung von Bluetooth-Problemen

Dzickus, Hhlp, Devurandom Version 37,38 Last review: 2023-09-04

Bluetooth ist ein Nahfeld-Funkprotokoll, das zur Verbindung verschiedener Geräte mit geringer Bandbreite (wie Tastaturen, Mäuse und Headsets) verwendet wird. Neuere Versionen verfügen über einen Energiesparmodus mit etwas höherer Bandbreite und Reichweite.

Die Bluetooth-Lösung besteht aus einem Benutzermodus-Daemon namens bluetoothd, der über einen Management-Port im Kernel mit den Hardwaretreibern kommuniziert. Anwendungen, die mit dem bluetoothd-Daemon kommunizieren möchten, nutzen dafür eine D-Bus-API. Dies umfasst auch die verschiedenen Bluetooth-Applets von GNOME.

Bluetooth-Probleme identifizieren

Wurde die Bluetooth-Hardware gefunden?

  • make sure bluetooth was found and enabled (note hci0: and 'UP RUNNING'):

    $ hciconfig
    hci0:	Type: Primary  Bus: USB
    	BD Address: xx:xx:xx:xx:xx:xx  ACL MTU: 1021:4  SCO MTU: 96:6
    	UP RUNNING PSCAN
    	RX bytes:15047 acl:0 sco:0 events:2433 errors:0
    	TX bytes:599323 acl:0 sco:0 commands:2431 errors:0
  • If the command returns nothing (no hci: info), then there is a hardware issue

    $ lsusb -v | grep Bluetooth | grep DeviceProtocol
    bDeviceProtocol         1 Bluetooth
  • If the lsusb command returns nothing, there is no hardware, a dmesg output would be needed

  • If the lsusb commands returns Bluetooth, then check for attached driver

    $ lsusb -t | grep Wireless
        |__ Port 4: Dev 4, If 1, Class=Wireless, Driver=btusb, 12M
        |__ Port 4: Dev 4, If 0, Class=Wireless, Driver=btusb, 12M
  • If Driver is empty, lsusb -v output would be needed to add ids

  • If hciconfig shows output but not UP

    $ hciconfig up
  • Liste der gekoppelten Geräte:

    $ bluetoothctl
    [bluetooth]# show
    [bluetooth]# devices
    [bluetooth]# info <mac addr of any device you have problems with>

Läuft der bluetoothd-Daemon?

  • Verify under systemd bluetooth is 'Active' and 'enabled'

    $ systemctl status bluetooth
    ● bluetooth.service - Bluetooth service
       Loaded: loaded (/usr/lib/systemd/system/bluetooth.service; enabled; vendor preset: enabled)
       Active: active (running) since Wed 2017-10-04 16:07:40 EDT; 1 day 22h ago
         Docs: man:bluetoothd(8)
     Main PID: 27427 (bluetoothd)
       Status: "Running"
        Tasks: 1 (limit: 4915)
       CGroup: /system.slice/bluetooth.service
               └─27427 /usr/libexec/bluetooth/bluetoothd
  • Überprüfen Sie, ob obex für die Ausführung konfiguriert ist (um Dateien vom Telefon zu übertragen)

$ systemctl --global --user is-enabled obex
  enabled

Einfaches Debugging

Die meisten Bluetooth-Probleme treten im Paket bluez (bluetoothd), also im Benutzermodus-Daemon, auf.

Bluetoothd-Debugging aktivieren
  • Bearbeiten Sie /usr/lib/systemd/system/bluetooth.service

  • add -d to ExecStart line as option to bluetoothd

  • save and quit

$ systemctl daemon-reload
$ systemctl restart bluetooth

Das Debugging ist aktiviert und kann dabei helfen, die Ursache einiger Bluetooth-Probleme zu ermitteln.

Protokolle erfassen und in einen Bugzilla-Fehlerbericht einfügen
$ journalctl -r -u bluetooth > /tmp/bluetoothd.out

Behebung von Firmware-Problemen

Es kann vorkommen, dass die Firmware von Bluetooth-Adaptern in einen Zustand gerät, in dem sie sich nicht mehr mit bestimmten (oder allen) Bluetooth-Geräten koppeln lässt. Solche Probleme lassen sich möglicherweise durch einen Neustart des Adapters beheben.

Bei einem Laptop mit integriertem Bluetooth-Adapter könnte dies folgendermaßen erreicht werden:

  1. Rufen Sie die Firmware-Einstellungen (BIOS) des Laptops auf und deaktivieren Sie den integrierten Adapter.

  2. Speichern Sie die Einstellungen und starten Sie den Laptop neu

  3. Rufen Sie die Firmware-Einstellungen ein zweites Mal auf und aktivieren Sie den Bluetooth-Adapter erneut.

  4. Speichern Sie und starten Sie neu.

  5. Versuchen Sie nun, das Gerät erneut zu koppeln.