
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/rfcomm0
erstellt 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.