Warum kann ich keine Verbindung zu meinem seriellen Bluetooth-Port unter Linux herstellen?

Warum kann ich keine Verbindung zu meinem seriellen Bluetooth-Port unter Linux herstellen?

Ich habe einen USB-Bluetooth-Dongle auf einem Linux 3.12.5 ARM-System. Ich habe versucht, eine serielle Bluetooth-Verbindung von meinem Android-Telefon zum USB-Dongle unter Linux herzustellen. Ich habe verwiesen aufdiese Frageunter anderen Quellen in meinen Versuchen. Alle Vorschläge wären großartig.

Ich konnte es wie folgt koppelbar machen:

bluetooth-agent 0000 &

Und dann koppeln wir über mein Telefon. Dann erstelle ich einen seriellen Port auf dem Gerät über:

sudo mknod -m 666 /dev/rfcomm0 c 216 0
sudo sdptool add --channel=22 SP
sudo rfcomm listen /dev/rfcomm 22

Dann versuche ich von meinem Telefon aus mit BlueTerm eine Verbindung zum seriellen Port herzustellen. Allerdings geht die Verbindung sofort verloren. Auf der Linux-Seite erscheint im Terminal Folgendes:

Waiting for connection on channel 22
Authorizing request for /org/bluez/317/hci0/dev_xx_xx_xx_xx_00_46

Die Verbindung des Telefons scheint nicht unterbrochen zu werden. Was ist also los?

Antwort1

Die folgenden Schritte haben bei mir funktioniert:

Zuerst müssen Sie die Geräte koppeln. Das Koppeln ist relativ einfach. Ich rufe Client (der anfängt zu sprechen) und Server (der antwortet) an.

Sie müssen den Server vorher einrichten: Serverseitig (als Root):

sdptool add --channel=3 SP
mknod -m 666 /dev/rfcomm0 c 216 0
rfcomm watch /dev/rfcomm0 3 /sbin/agetty rfcomm0 115200 linux

Clientseitig (als Root):

sdptool add --channel=3 SP
rfcomm connect /dev/rfcomm0 [SERVER_ADDR] 3

Öffnen Sie nun ein serielles Terminal auf dem Client:

screen /dev/rfcomm0 115200

Kommentare:

Wenn Sie den letzten Befehl aufrufen rfcomm connect... wird im Client ein Gerät /dev/rfcomm0erstellt und dem Server zugeordnet /dev/recomm0. Dies stellt die serielle Verbindung zwischen beiden dar.

Der letzte Serverbefehl: rfcomm watch.... wird auf eingehende Verbindungen „lauschen“. Bei Verbindungsverlust wird der Befehl einen neuen „Listen“-Status neu starten.

verwandte Informationen