GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Wie verbinde und sende ich Daten an einen seriellen Bluetooth-Port unter Linux?

Ich versuche, eine virtuelle serielle Schnittstelle über einen USB-Bluetooth-Adapter unter Linux einzurichten und über ein Android-Gerät eine Nachricht an sie zu senden. Ich bin auf Kernel 3.6. Ich kann das Gerät mithilfe von Gnome-Bluetooth erfolgreich koppeln 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 „listen“ mit rfcomm auf:

rfcomm listen /dev/rfcomm0 22

die blockiert auf

Waiting for connection on channel 22

Anscheinend erstellt rfcomm /dev/rfcomm0 bei einer erfolgreichen Verbindung. Sobald das passiert, möchte ich so etwas wie cutecom verwenden, um Nachrichten an das verbundene Gerät hin und her zu senden.

Auf meinem Android-Gerät öffne ich ein Bluetooth-SPP-Terminal (es gibt mehrere da draußen, ich habe ein paar verschiedene ausprobiert) und versuche, eine Verbindung herzustellen. Sie alle scheitern.

Da ich erfolgreich koppeln und Dateien ohne Probleme senden kann, weiß ich, dass die Bluetooth-Kopplung und -Kommunikation funktioniert.

Ich bin mir nicht sicher, was ich sonst noch versuchen kann. Ich habe „sdptool browse“ auf meinem lokalen Gerät und dem Android-Gerät verwendet, um sicherzustellen, dass es keine RFCOMM-Kanalkonflikte gibt.

Akzeptierte Antwort:

Ich scheine das jetzt zum Laufen gebracht zu haben. Bluetooth scheint ein bisschen pingelig. Ich fasse meine Schritte vollständig zusammen, falls jemand anderes es nützlich findet (obwohl es so ziemlich das ist, was ich anfangs versucht habe). Dies ist für Android JB (4.2.2) auf einem Nexus 4 und Arch Linux 3.6.7-1, mit bluez 4.101 auf Gnome 3.6 (mit gnome-bluetooth).

(dieser Schritt kann nichts Nützliches bewirken) Schalten Sie Bluetooth auf Android aus und trennen Sie Ihren USB-/Bluetooth-Adapter von Ihrem Linux-Rechner (oder wenn Sie einen eingebauten haben, setzen Sie ihn mit hcitool devname reset zurück)

Verbinden/schalten Sie Ihren Bluetooth-Adapter unter Linux ein. Stellen Sie sicher, dass Ihr Adapter sichtbar ist (kann in Gnome-Bluetooth eingestellt werden – Sie sollten ein Bluetooth-Symbol in der Taskleiste sehen).

Schalten Sie Bluetooth auf Ihrem Android-Gerät ein. Verwenden Sie Android zum Koppeln mit dem Adapter (ich konnte von Linux aus nicht umgekehrt koppeln). Es erscheint ein Dialog, in dem Sie nach einem Schlüssel gefragt werden. Geben Sie eine beliebige PIN ein. Gnome sollte eine Benachrichtigung anzeigen, in der Sie nach einem Schlüssel gefragt werden. Geben Sie dieselbe PIN ein, die Sie zuvor eingegeben haben. Ihr Android-Gerät und der Schlüssel sollten jetzt gekoppelt sein.

Öffnen Sie unter Linux ein Terminal und prüfen Sie, welche Bluetooth-Dienste verfügbar sind, indem Sie

eingeben
sdptool browse local

Wenn Sie bereits einen Dienst für serielle Anschlüsse haben, notieren Sie sich, um welchen Kanal es sich handelt. Wenn nicht, können Sie den Dienst hinzufügen:

sdptool add --channel=22 SP

Hören Sie nun auf diesem Kanal mit rfcomm:

sudo rfcomm listen /dev/rfcomm0 22

rfcomm blockiert und wartet auf eine Verbindung mit einer Nachricht wie

Waiting for connection on channel 22

Zurück auf Android habe ich die BlueTerm-Anwendung (http://pymasde.es/blueterm/, auch kostenlos im Google Play Store erhältlich) verwendet, obwohl jede ähnliche Anwendung funktionieren sollte. Öffnen Sie BlueTerm, gehen Sie zu Optionen> Gerät verbinden:Wählen Sie den gekoppelten Adapter aus.

Siehe auch:Freebsd – Wie starte ich FreeBSD im Konsolenmodus?

Hoffentlich konnte die Anwendung eine Verbindung herstellen. Sie sehen eine zusätzliche Bestätigung in dem Terminal, in dem Sie das Abhören blockiert haben, mit einer Nachricht wie:

Waiting for connection on channel 22
Connection from 22:22:22:22:22:22 to /dev/rfcomm0
Press CTRL-C for hangup

Alles, was Sie in die BlueTerm-App eingeben, sollte zu /dev/rfcomm0 gehen. Sie können sehen, wie Dinge angezeigt werden, während Sie tippen, indem Sie ein neues Terminal öffnen und so etwas tun:

cat /dev/rfcomm0

Linux
  1. So löschen Sie Ihre Daten unter Linux sicher und dauerhaft

  2. Wie sende ich Daten an eine serielle Schnittstelle und sehe eine Antwort?

  3. Linux – Raspberrypi Serielle Schnittstelle?

  4. Linux – So finden Sie Prozesse über die serielle Schnittstelle?

  5. DAEMON Sync – Synchronisieren Sie Daten von Linux auf Android- und iOS-Geräte

So führen Sie einen Port-Scan unter Linux durch

So verwenden Sie das Linux-Terminal in Android

So sichern und wiederherstellen Sie Daten mit Restic unter Linux

So finden und schließen Sie offene Ports in Linux

So verbinden und teilen Sie Daten zwischen zwei Linux-Systemen

Wie und warum Linux zur Installation von Telnet verwendet wird