GNU/Linux >> Znalost Linux >  >> Linux

Jak se připojit a odeslat data do sériového portu Bluetooth v systému Linux?

Snažím se nastavit virtuální sériový port pomocí adaptéru USB-Bluetooth v systému Linux a odeslat do něj zprávu prostřednictvím zařízení Android. Mám jádro 3.6. Dokážu se úspěšně spárovat se zařízením pomocí gnome-bluetooth a také do něj posílat soubory.

K nastavení sériového portu nejprve přidám kanál s profilem SP do svého adaptéru:

sdptool add --channel=22 SP

Pak zavolám ‚poslouchej‘ pomocí rfcomm:

rfcomm listen /dev/rfcomm0 22

který blokuje na

Waiting for connection on channel 22

Po úspěšném připojení rfcomm zřejmě vytvoří /dev/rfcomm0. Jakmile se to stane, rád bych použil něco jako cutecom k odesílání zpráv tam a zpět do připojeného zařízení.

Na svém zařízení Android otevřu terminál Bluetooth SPP (je jich několik, zkusil jsem několik různých) a pokusím se připojit. Všechny selžou.

Vzhledem k tomu, že se mohu úspěšně spárovat a bez problémů odesílat soubory, vím, že párování a komunikace přes bluetooth funguje.

Nejsem si jistý, co jiného bych mohl zkusit. Na svém místním zařízení a zařízení Android jsem použil „sdptool browse“, abych se ujistil, že nedochází ke konfliktům kanálů RFCOMM.

Přijatá odpověď:

Zdá se, že to teď funguje. Bluetooth se zdá být trochu vybíravý. Shrnuji své kroky v plném rozsahu pro případ, že by to pro někoho jiného bylo užitečné (ačkoli jsem to zpočátku zkoušel). Toto je pro Android JB (4.2.2) na Nexus 4 a Arch Linux 3.6.7-1 s bluez 4.101 na Gnome 3.6 (s gnome-bluetooth).

(tento krok nemusí přinést nic užitečného) Vypněte Bluetooth na Androidu a odpojte USB/Bluetooth adaptér od počítače se systémem Linux (nebo pokud jej máte vestavěný, resetujte jej pomocí hcitool devname reset)

Připojte/zapněte svůj bluetooth adaptér v systému Linux. Ujistěte se, že je váš adaptér viditelný (lze nastavit v gnome-bluetooth – měli byste vidět ikonu bluetooth na systémové liště).

Zapněte bluetooth na svém zařízení Android. Pro spárování s adaptérem použijte Android (z Linuxu se mi nepodařilo spárovat naopak). Objeví se dialogové okno s dotazem na klíč. Zadejte libovolný PIN. Gnome by mělo vyskočit upozornění s žádostí o klíč; zadejte stejný PIN, který jste zadali dříve. Vaše zařízení Android a klíč by v tomto okamžiku měly být spárovány.

V Linuxu otevřete terminál a zkontrolujte, jaké služby bluetooth jsou dostupné zadáním

sdptool browse local

Pokud již máte službu sériového portu, poznamenejte si, o jaký kanál se jedná. Pokud ne, můžete službu přidat:

sdptool add --channel=22 SP

Nyní poslouchejte na tomto kanálu pomocí rfcomm:

sudo rfcomm listen /dev/rfcomm0 22

rfcomm se zablokuje a poslouchá spojení se zprávou jako

Waiting for connection on channel 22

Zpět na Android jsem používal aplikaci BlueTerm (http://pymasde.es/blueterm/, také volně dostupná v obchodě Google Play), i když jakákoli podobná aplikace by měla fungovat. Otevřete BlueTerm, přejděte na možnosti> Připojit zařízení:vyberte spárovaný adaptér.

Související:Freebsd – Jak spustit FreeBSD v režimu konzoly?

Doufejme, že se aplikaci podařilo připojit. V terminálu, kde jste zablokovali poslech, uvidíte další ověření se zprávou jako:

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

Vše, co zadáte do aplikace BlueTerm, by mělo jít do /dev/rfcomm0. Můžete vidět, jak se věci zobrazují při psaní, když otevřete nový terminál a uděláte něco jako:

cat /dev/rfcomm0

Linux
  1. Jak odeslat data na sériový port a zobrazit jakoukoli odpověď?

  2. Linux – sériový port Raspberrypi?

  3. Linux – Jak najít procesy pomocí sériového portu?

  1. DAEMON Sync – Synchronizace dat z Linuxu do zařízení Android a iOS

  2. Jak odeslat e-mail s přílohou a tělem z Linuxu

  3. Jak mohu sledovat data na sériovém portu v Linuxu?

  1. Jak bezpečně a trvale smazat svá data v Linuxu

  2. Jak otevřít, číst a zapisovat ze sériového portu v C?

  3. Čtení a zápis na sériový port v C na Linuxu