Hogyan tudok csatlakozni és adatokat küldeni egy Linux soros portra Linux alatt?

Megpróbálok beállítani egy virtuális soros portot egy USB-Bluetooth adapter segítségével Linuxon, és üzenetet küldeni neki egy Android-eszközön keresztül. a rendszermagon 3.6. Sikeresen tudok párosítani az eszközzel a gnome-bluetooth segítségével, és fájlokat is küldhetek rá.

A soros port beállításához először hozzáadok egy SP profilú csatornát az adapteremhez:

sdptool add --channel=22 SP 

Ezután az rfcomm segítségével hívom a “hallgat” szót:

rfcomm listen /dev/rfcomm0 22 

amelyik blokkolja a

Waiting for connection on channel 22 

Nyilvánvaló, hogy az rfcomm sikeres kapcsolat esetén létrehozza a / dev / rfcomm0 fájlt. Amint ez megtörténik, valami olyasmit szeretnék használni, mint a cutecom, hogy oda-vissza üzeneteket küldjek a csatlakoztatott eszközhöz.

Android-eszközömön megnyitok egy Bluetooth SPP terminált (több is van odakinn, kipróbáltam néhányat), és megpróbálok csatlakozni. Mind elbuknak.

Tekintettel arra, hogy sikeresen tudok párosítani és fájlokat küldeni minden probléma nélkül, tudom, hogy a bluetooth párosítás és a kommunikáció működik.

Nem vagyok benne biztos, hogy mit tudnék még kipróbálni. Az “sdptool böngészés” a helyi eszközömön és az Android-eszközömön annak biztosítására, hogy ne legyenek RFCOMM-csatornás ütközések.

Megjegyzések

  • azoknak, akik kíváncsi miért nem válaszol az összes alábbi válasz,

nem működik: a BlueZ > = 5 esetén kompatibilitási módra van szükség, lásd itt: raspberrypi.stackexchange.com/questions/41776/…

Válasz

Úgy tűnik, hogy most már működtem. A Bluetooth kissé finnyásnak tűnik. Teljesen összefoglalom a lépéseimet arra az esetre, ha valaki másnak hasznosnak találná (bár nagyjából az, amit eredetileg kipróbáltam). Ez az Android JB-re (4.2.2) készült egy Nexus 4 és Arch Linux 3.6.7-1 rendszereken, bluez 4.101 a Gnome 3.6-on (w / gnome-bluetooth).

(ez a lépés nem tehet semmi hasznosat) Kapcsolja ki az Android Bluetooth-ot, és válassza le az USB / Bluetooth adaptert Linux gép (vagy ha van beépített gépe, állítsa alaphelyzetbe a hcitool devname reset használatával)

Csatlakoztassa / kapcsolja be a bluetooth adaptert Linux alatt. Győződjön meg róla, hogy az adapter látható (a gnome-bluetooth-ban beállítható – – látnia kell egy bluetooth-ikont a tálcán).

Kapcsolja be a Bluetooth-t Android-eszközén. Az Android segítségével párosítsa az adaptert (nem tudtam fordítva párosítani a Linuxot). Egy párbeszédablak jelenik meg jöjjön fel, kérve egy kulcsot. Helyezze be a kívánt PIN-kódot. A Gnome-nak fel kell ugrania egy értesítést, amelyben kulcsot kér; tegye be ugyanazt a PIN-kódot, amelyet korábban beírt. Android-eszközét és a kulcsot ebben a pillanatban párosítani kell.

Linux alatt nyissa meg a terminált, és ellenőrizze, hogy milyen bluetooth szolgáltatások érhetők el, írja be a következőt:

sdptool browse local 

Ha már rendelkezik soros port szolgáltatással, készítsen egy megjegyzés arról, hogy mi a csatorna. Ha nem teszi hozzá, hozzáadhatja a szolgáltatást:

sdptool add --channel=22 SP 

Most hallgassa meg ezt a csatornát az rfcomm használatával:

sudo rfcomm listen /dev/rfcomm0 22 

Az rfcomm letiltja a kapcsolatot, és olyan üzenetet keres, mint például:

Waiting for connection on channel 22 

Vissza Androidra, a BlueTerm alkalmazást használtam ( http://pymasde.es/blueterm/ , a Google Play áruházban is szabadon elérhető), bár bármely hasonló alkalmazásnak működnie kell. Nyissa meg a BlueTerm oldalt opciók> Csatlakoztassa az eszközt: válassza ki a párosított adaptert.

Remélhetőleg az alkalmazás csatlakozni tudott. További ellenőrzést fog látni a terminálon, ahol letiltotta a hallgatást egy ilyen üzenettel:

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

Bármelyet, amit beír a BlueTerm alkalmazásba, a / dev / rfcomm0 fájlra kell irányítania. Láthatja, hogy a dolgok gépelés közben megjelennek, ha megnyit egy új terminált, és ehhez hasonlót tesz:

cat /dev/rfcomm0 

Megjegyzések

Válasz

Nekem a következő lépések működtek:

Először is párosítania kell az eszközöket. A párosítás viszonylag egyszerű. Felhívom az ügyfelet (aki beszélgetni kezd) és a szervert (aki válaszol)

Előtte be kell állítania a szervert: Szerveroldal (gyökérként):

sdptool add --channel=3 SP mknod -m 666 /dev/rfcomm0 c 216 0 rfcomm watch /dev/rfcomm0 3 /sbin/agetty rfcomm0 115200 linux 

Ügyféloldal (gyökérként):

sdptool add --channel=3 SP rfcomm connect /dev/rfcomm0 [SERVER_ADDR] 3 

Most egy soros terminál megnyitásához az ügyfélen:

screen /dev/rfcomm0 115200 

Megjegyzések:

Amikor meghívja a kliens utolsó rfcomm connect … parancsát, egy /dev/rfcomm0 eszköz létre kell hozni és társítani kell a /dev/recomm0 kiszolgálóhoz. Ez a soros kapcsolatot jelenti mindkettő között.

Az utolsó szerver parancs: rfcomm watch …. “figyeli” a bejövő kapcsolatokat. Az elveszett kapcsolat esetén a parancs új “hallgatás” állapotot indít újra.

Megjegyzések

  • Az ismaia által adott válasz szinte oda vezet.Nem szabad megfeledkeznie arról, hogy az újabb bluez-veremhez a speciális --compat opcióra van szükség, különben az SP hozzáadása sikertelen lehet. Lásd itt . Tehát állítsa / módosítsa a systemd / initd indítás indító parancsfájljait úgy, hogy --compat ott legyen.

Válasz

Ezt az Pris parancsainak kis variációjával oldottam meg. Adj egy képet, ha valakinek még mindig problémái vannak az rfcomm kapcsolat létrehozásával.

sudo service bluetooth restart 

Ez ^ biztosítja, hogy tiszta lappal induljon, amikor megpróbálja létrehozni a kapcsolatot.

rfcomm add --channel=<a_channel_#> SP 

Ezt a csatornaszámot meg kell adni. eltér a jelenleg hozzárendelt csatornáktól.

(OPCIONÁLIS) A csatornák ellenőrzése:

sdptool browse local | grep Channel 

Nem tudom, miért van ez a következő parancs szükséges, de nekem bevált.

rfcomm release 0 

Ezután hallgassa meg az elkövetkező kapcsolatokat:

rfcomm watch 0 <a_channel_#> 

MEGJEGYZÉS: a bt MAC cím az /etc/bluetooth/rfcomm.conf fájlban, de legyen a telefon bt MAC címe. Ebben a fájlban a csatornának is meg kell egyeznie az a_csatorna_ # számára kiválasztott csatornával.

Miután mindezt megtettem, használom da bt terminálemulátor a telefonomon, hogy mindent ellenőrizhessek.

Válasz

Különböző bluetooth eszközöket próbáltam ki, és nehéz volt hogy megtalálja a helyes sorrendet a bluetooth modullal történő összekapcsoláshoz és adatcseréhez. Próbálja használni az rfcomm-ot és a minicom-ot:

Ez az én /etc/bluetooth/rfcomm.conf

rfcomm0 { # Automatically bind the device at startup bind no; # Bluetooth address of the device device 11:22:33:44:55:66; # RFCOMM channel for the connection channel 3; # Description of the connection comment "This is Device 1"s serial port."; } 

Bluetooth-eszközök keresése:

hcitool scan Scanning ... 20:15:12:08:62:95 HC-06 

Kötés az rfcomm használatával

sudo rfcomm bind 0 20:15:12:08:62:95 1 

Megjegyzés: a 0 kötés a 0 eszköz számát jelöli (rfcomm0 ) és 1 a csatorna.

Ezután használja a minicom-ot a sudo-val, és mentse el a konfigurációt, amelyben megadja a baudrátát és a portot. További információkat itt talál .

Vélemény, hozzászólás?

Az email címet nem tesszük közzé. A kötelező mezőket * karakterrel jelöltük