Ich versuche, eine virtuelle serielle Schnittstelle über einen USB-Bluetooth-Adapter unter Linux einzurichten und eine Nachricht über ein Android-Gerät an diese zu senden. Ich bin auf Kernel 3.6. Ich kann mit gnome-bluetooth erfolgreich eine Verbindung zum Gerät herstellen und auch Dateien an das Gerät senden.
Um die serielle Schnittstelle einzurichten, füge ich meinem Adapter zuerst einen Kanal mit einem SP-Profil hinzu:
sdptool add --channel=22 SP
Dann rufe ich mit rfcomm 'listen':
rfcomm listen /dev/rfcomm0 22
welche blockiert auf
Waiting for connection on channel 22
Anscheinend wird rfcomm / dev / rfcomm0 nach einer erfolgreichen Verbindung erstellen. In diesem Fall würde ich gerne so etwas wie cutecom verwenden, um Nachrichten an das angeschlossene Gerät zu senden.
Auf meinem Android-Gerät öffne ich ein Bluetooth SPP-Terminal (es gibt mehrere, ich habe ein paar verschiedene ausprobiert) und versuche, eine Verbindung herzustellen. Sie alle scheitern.
Da ich eine erfolgreiche Kopplung durchführen und Dateien ohne Probleme senden kann, weiß ich, dass die Bluetooth-Kopplung und -Kommunikation funktioniert.
Ich bin mir nicht sicher, was ich sonst noch probieren kann. Ich habe auf meinem lokalen Gerät und dem Android-Gerät "sdptool browse" verwendet, um sicherzustellen, dass keine RFCOMM-Kanalkonflikte vorliegen.
Die folgenden Schritte haben bei mir funktioniert:
Zuerst müssen Sie die Geräte koppeln. Das Pairing ist relativ einfach. Ich werde den Client (der anfängt zu sprechen) und den Server (der antwortet) anrufen
Sie müssen den Server vorher einrichten: Serverseitig (als root):
Client Seite (als root):
So öffnen Sie ein serielles Terminal auf dem Client:
Bemerkungen:
Wenn Sie im Client den letzten Befehl rfcomm connect ... aufrufen, wird ein Gerät
/dev/rfcomm0
erstellt und dem Server zugeordnet/dev/recomm0
. Dies stellt die serielle Verbindung zwischen beiden darDer letzte Serverbefehl:
rfcomm watch
.... 'wartet' auf eingehende Verbindungen. Bei einem Verbindungsverlust startet der Befehl einen neuen 'Listen'-Status neu.quelle
--compat
, da andernfalls das Hinzufügen eines SP fehlschlagen kann. Sehen Sie hier . Passen Sie also Ihre Startup-Skripte für systemd / initd so an, dass sie--compat
vorhanden sind.Ich habe das mit einer kleinen Variation von Pris 'Befehlen gelöst. Probieren Sie diese aus, wenn immer noch Probleme beim Einrichten einer RFComm-Verbindung auftreten.
Dies stellt sicher, dass Sie jedes Mal, wenn Sie versuchen, eine Verbindung herzustellen, mit einem sauberen Slate beginnen.
Diese Kanalnummer sollte sich von allen derzeit zugewiesenen Kanälen unterscheiden.
(OPTIONAL) So überprüfen Sie Kanäle:
Ich bin nicht sicher, warum dieser nächste Befehl benötigt wird, aber er hat bei mir funktioniert.
Dann warten Sie auf eingehende Verbindungen:
HINWEIS: Die BT-MAC-Adresse in /etc/bluetooth/rfcomm.conf, aber die BT-MAC-Adresse Ihres Telefons. Außerdem muss der Kanal in dieser Datei mit dem Kanal übereinstimmen, der für a_channel_ # ausgewählt wurde.
Nachdem ich das alles getan hatte, benutzte ich einen BT-Terminal-Emulator auf meinem Telefon, um alles zu überprüfen.
quelle
Ich habe verschiedene Bluetooth-Tools ausprobiert und es war schwierig, die richtige Befehlsfolge zum Verbinden und Austauschen von Daten mit einem Bluetooth-Modul zu finden. Versuchen Sie es mit rfcomm und minicom:
Dies ist meine /etc/bluetooth/rfcomm.conf
Nach Bluetooth-Geräten suchen:
Mit rfcomm binden
NB: bind 0 bezieht sich auf die Gerätenummer 0 (rfcomm0) und 1 ist der Kanal.
Verwenden Sie dann minicom mit sudo und speichern Sie eine Konfiguration, in der Sie die Baudrate und den Port angeben. Weitere Informationen finden Sie hier .
quelle