Ich habe Bluetooth-Programmierung in Python ausprobiert. Es hat bis gestern gut funktioniert. Heute Morgen gab es einen Stromausfall und aus irgendeinem Grund wurde das Bluetooth-Modul deaktiviert und es konnte nicht eingeschaltet werden. Also habe ich ein sudo hciconfig hci0 reset
gemacht und es dann angeschaltet. Ab diesem Zeitpunkt wird das einfachste Programm nicht mehr ausgeführt. Nehmen Sie diesen zum Beispiel. Es bleibt bei advertise_service
in bluetooth
module hängen und löst den folgenden Fehler aus (FYI: virtualenv war hier kein Problem. Das systemweite Python macht das gleiche).
Manchmal habe ich einen anderen Fehler bekommen, als ich Bluez
driver kompiliert und neu installiert habe:
Aber all das wirkte in dieser Maschine wie ein Zauberspruch; in der Tat funktioniert das ganze Programm gut mit meinem anderen ubuntu (14.04LTS) Maschine, während ich dies schreibe. Ich habe den Quellcode inspiziert und zu einer _bluetooth.so
-Datei zurückverfolgt - was ein kompilierter Code ist, daher konnte ich nicht herausfinden, was ich tun soll.
Jeder Zeiger wird sehr geschätzt.
Dieser Fehler ist auf Inkompatibilitätsprobleme mit BlueZ 5 und SDP mit bluetoothd
Stellen Sie sicher, dass sdptool browse local
den folgenden Fehler anzeigt:
Wie sich herausstellt, ist der Schuldige bluetoothd
, der Bluetooth-Daemon. Die Verwendung von SDP mit bluetoothd
erfordert veraltete Funktionen aus irgendeinem Grund. Um dies zu beheben, muss der Daemon im Kompatibilitätsmodus mit bluetoothd -C
(oder bluetooth --compat
) gestartet werden.
Sucht den Speicherort von bluetooth.service
nach:
Bearbeiten Sie dann bluetooth.service
und suchen Sie nach
Fügen Sie --compat
am Ende dieser Zeile hinzu, speichern Sie und führen Sie dann
Wenn alles gut geht, sollten Sie
erfolgreich ausführen können %Vor%Setzen Sie den Adapter schließlich zurück:
%Vor%Die Dinge sollten jetzt gut funktionieren
Nur um die Leute wissen zu lassen, glaube ich, dass der letzte BlueZ
Build in meinem System irgendwie kaputt war. Ich habe die 5.35 Version heruntergeladen, kompiliert und installiert, und nichts hat funktioniert. Ich wählte 5.34 , immer noch dasselbe. Ich habe auch bemerkt, dass der Bluetooth-Adapter automatisch 3-4 Minuten nach der Aktivierung mit,
Ich habe einen USB-Bluetooth-Dongle zum Testen verwendet. Es ging nicht wie der eingebaute Adapter automatisch runter, aber die Probleme blieben bestehen. Dann habe ich apt-get
verwendet, um bluez
,
und plötzlich war alles wieder normal.
Wieder, wie Sidmeister sagte, Stellen Sie sicher, dass das Ausführen von sdptool browse local folgenden Fehler enthält:
Verbindung zum SDP-Server konnte nicht hergestellt werden unter FF:FF:FF:00:00:00:
Keine solche Datei oder Verzeichnis
Aber für diejenigen, die den initd-Systemmanager verwenden, ist es schwierig, eine Lösung zu finden, wenn Sie sdp_rfcomm_server/client
model ausführen wollen, und das Terminal zeigt immer wieder denselben Fehler an.
Gehen Sie für init.d
folgendermaßen vor:
Stoppen Sie Bluetooth zuerst
$ /etc/init.d/bluetooth stop
Statusprüfung
$ /etc/init.d/bluetooth status
Führen Sie Bluetooth im Kompatibilitätsmodus aus (nicht zu vergessen, kaufmännisches Zeichen, sonst wird die Eingabeaufforderung nicht angezeigt)
$ / usr / libexec / bluetooth / bluetoothd --compat & amp;
starte Bluetooth erneut
$ /etc/init.d/bluetooth starten
versuchen Sie erneut sdpbrowse
$ sdptool browse local
Die Dinge sollten jetzt für Sie arbeiten.
Um zu beheben:
bluetooth.btcommon.BluetoothError: (2, 'Keine solche Datei oder kein Verzeichnis')
Sie müssen:
sudo nano /lib/systemd/system/bluetooth.service
ExecStart=/usr/lib/bluetooth/bluetoothd
ExecStart=/usr/lib/bluetooth/bluetoothd --compat
sudo systemctl daemon-reload