Cum mă conectez și trimit date la un port serial Bluetooth pe Linux?

Încerc să configurez un port serial virtual printr-un adaptor USB-Bluetooth pe Linux și să îi trimit un mesaj printr-un dispozitiv Android. pe kernel 3.6. Pot „împerechea cu succes dispozitivul folosind gnome-bluetooth și, de asemenea, pot trimite fișiere către acesta.

Pentru a configura portul serial, mai întâi adaug un adaptor cu un canal SP cu profil SP: / p>

sdptool add --channel=22 SP 

Apoi apelez „ascultă” cu rfcomm:

rfcomm listen /dev/rfcomm0 22 

care blochează pe

Waiting for connection on channel 22 

Se pare că rfcomm va crea / dev / rfcomm0 după o conexiune reușită. Odată ce se întâmplă acest lucru, aș dori să folosesc ceva de genul cutecom pentru a trimite mesaje înainte și înapoi la dispozitivul conectat.

Pe dispozitivul meu Android deschid un terminal Bluetooth SPP (există mai multe acolo, am încercat câteva diferite) și încerc să mă conectez. Toți nu reușesc.

Având în vedere că pot împerechea și trimite fișiere fără probleme, știu că asocierea și comunicarea prin Bluetooth funcționează.

Nu sunt prea sigur ce altceva pot încerca. „Navigați sdptool” pe dispozitivul meu local și pe dispozitivul Android pentru a vă asigura că nu există conflicte de canal RFCOMM.

Comentarii

Răspuns

Se pare că am funcționat acum. Bluetooth pare un pic ciudat. Voi recapitula pașii în întregime, în cazul în care altcineva îl consideră util (deși este cam ceea ce am încercat inițial). Aceasta este pentru Android JB (4.2.2) pe un Nexus 4 și Arch Linux 3.6.7-1, cu bluez 4.101 pe Gnome 3.6 (w / gnome-bluetooth).

(este posibil ca acest pas să nu fie util) Dezactivați funcția Bluetooth pe Android și deconectați adaptorul USB / Bluetooth de la Mașină Linux (sau dacă aveți una încorporată, resetați-o utilizând hcitool devname reset)

Conectați / activați adaptorul Bluetooth pe Linux. Asigurați-vă că adaptorul dvs. este vizibil (poate fi setat în gnome-bluetooth – – ar trebui să vedeți o pictogramă a tăvii de sistem Bluetooth).

Activați Bluetooth pe dispozitivul dvs. Android. Utilizați Android pentru a se asocia cu adaptorul (nu am putut împerechea invers de la Linux). veniți să vă solicite o cheie. Introduceți codul PIN dorit. Gnome ar trebui să afișeze o notificare prin care să vă solicite o cheie; introduceți același cod PIN pe care l-ați introdus anterior. Dispozitivul dvs. Android și cheia ar trebui să fie asociate în acest moment.

În Linux, deschideți un terminal și verificați ce servicii bluetooth sunt disponibile introducând

sdptool browse local 

Dacă aveți deja un serviciu de port serial, creați un notează ce canal este. Dacă nu faceți acest lucru, puteți adăuga serviciul:

sdptool add --channel=22 SP 

Acum ascultați pe acest canal folosind rfcomm:

sudo rfcomm listen /dev/rfcomm0 22 

rfcomm se va bloca, ascultând o conexiune cu un mesaj ca

Waiting for connection on channel 22 

Înapoi pe Android, am folosit aplicația BlueTerm ( http://pymasde.es/blueterm/ , disponibil și gratuit în magazinul Google Play), deși orice aplicație similară ar trebui să funcționeze. Deschideți BlueTerm, accesați opțiuni> Conectare dispozitiv: selectați adaptorul asociat.

Sperăm că aplicația s-a putut conecta. Veți vedea verificări suplimentare în terminalul în care ați blocat ascultarea cu un mesaj de genul:

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

Orice lucru pe care îl introduceți în aplicația BlueTerm ar trebui să fie trimis la / dev / rfcomm0. Puteți vedea lucruri care apar pe măsură ce tastați deschizând un terminal nou și făcând ceva de genul:

cat /dev/rfcomm0 

Comentarii

Răspuns

Pașii de mai jos au funcționat pentru mine:

În primul rând trebuie să împerecheați dispozitivele. Împerecherea este relativ ușoară. Voi apela clientul (care începe să vorbească) și serverul (cine răspunde)

Trebuie să configurați serverul înainte: partea serverului (ca root):

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

Partea client (ca root):

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

Acum pentru a deschide un terminal serial pe client:

screen /dev/rfcomm0 115200 

Comentarii:

Când apelați ultima comandă rfcomm connect … în client, un dispozitiv /dev/rfcomm0 să fie creat și asociat serverului /dev/recomm0. Aceasta reprezintă legătura serială dintre ambele

Ultima comandă de server: rfcomm watch …. va „asculta” conexiunile primite. În legătură cu pierderea, comanda va reporni o nouă stare de „ascultare”.

Comentarii

  • Răspunsul oferit de ismaia aproape te ajută acolo.Trebuie să vă amintiți, însă, că stiva bluez mai nouă are nevoie de opțiunea specială --compat, altfel adăugarea unui SP poate eșua. Consultați aici . Așadar, ajustați / modificați scripturile de pornire a sistemului systemd / initd astfel încât să existe --compat.

Răspuns

Am rezolvat acest lucru cu o ușoară variație a comenzilor lui Pris. Oferiți-le o lovitură dacă cineva are încă probleme la configurarea unei conexiuni rfcomm.

sudo service bluetooth restart 

Acest ^ vă asigură că începeți cu o ardezie curată de fiecare dată când încercați să configurați o conexiune.

rfcomm add --channel=<a_channel_#> SP 

Acest număr de canal ar trebui să fie diferit de orice canal atribuit în prezent.

(OPȚIONAL) Pentru a verifica canalele:

sdptool browse local | grep Channel 

Nu sunt sigur de ce este următoarea comandă avea nevoie, dar a funcționat pentru mine.

rfcomm release 0 

Apoi, pentru a asculta conexiunile de intrare:

rfcomm watch 0 <a_channel_#> 

NOTĂ: adresa MAC bt din /etc/bluetooth/rfcomm.conf dar să fie bt MAC a telefonului dvs. De asemenea, canalul din acest fișier trebuie să fie același cu cel ales pentru a_channel_ #.

Odată ce am făcut toate acestea, folosesc da bt terminal emulator pe telefonul meu pentru a verifica totul.

Răspunde

Am încercat diferite instrumente Bluetooth și a fost greu pentru a găsi secvența corectă de comenzi pentru conectarea și schimbul de date cu un modul bluetooth. Încercați să utilizați rfcomm și minicom:

Acesta este /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."; } 

Căutare dispozitive Bluetooth:

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

Bind folosind rfcomm

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

NB: bind 0 se referă la numărul dispozitivului 0 (rfcomm0 ) și 1 este canalul.

Apoi utilizați minicom cu sudo și salvați o configurație în care specificați viteza de transmisie și portul. Puteți găsi mai multe informații aici .

Lasă un răspuns

Adresa ta de email nu va fi publicată. Câmpurile obligatorii sunt marcate cu *