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