Kuinka voin muodostaa yhteyden ja lähettää tietoja bluetooth-sarjaporttiin Linuxissa?

Yritän määrittää virtuaalisen sarjaportin Linux-USB-Bluetooth-sovittimen kautta ja lähettää sille viestin Android-laitteen kautta. ytimessä 3.6. Pystyn muodostamaan pariliitoksen laitteeseen onnistuneesti gnome-bluetoothin avulla ja myös lähettämään tiedostoja siihen.

Sarjaportin määrittämiseksi lisätään ensin kanava, jolla on SP-profiili, sovittimeen:

sdptool add --channel=22 SP 

Soitan sitten ”kuuntele” rfcommilla:

rfcomm listen /dev/rfcomm0 22 

mikä estää

Waiting for connection on channel 22 

Ilmeisesti rfcomm luo / dev / rfcomm0 onnistuneen yhteyden muodostamisen jälkeen. Kun näin tapahtuu, haluan käyttää jotain cutecomia lähettämään viestejä edestakaisin liitettyyn laitteeseen.

Android-laitteellani avaan Bluetooth SPP -päätelaitteen (niitä on useita, yritin muutama erilainen) ja yritän muodostaa yhteyden. Ne kaikki epäonnistuvat.

Koska voin muodostaa pariliitoksen ja lähettää tiedostoja ongelmitta, tiedän, että bluetooth-pariliitos ja viestintä toimivat.

En ole aivan varma, mitä muuta voin kokeilla. Käytin ”sdptool selaa” paikallisella laitteellani ja Android-laitteellani varmistaaksesi, että RFCOMM-kanavaristiriitoja ei ole.

Kommentit

vastaus

Olen ilmeisesti saanut tämän toimimaan nyt. Bluetooth näyttää hieman hienolta. Kerron vaiheitani kokonaan, jos joku muu pitää sitä hyödyllisenä (vaikka se on melkein mitä alun perin kokeilin). Tämä on tarkoitettu Android JB: lle (4.2.2) Nexus 4: ssä ja Arch Linux 3.6.7-1: ssä bluez 4.101 Gnome 3.6: ssa (w / gnome-bluetooth).

(tämä vaihe ei välttämättä tee mitään hyödyllistä) Kytke Androidin Bluetooth pois päältä ja irrota USB / Bluetooth-sovitin Linux-kone (tai jos sinulla on sisäänrakennettu, nollaa se käyttämällä hcitool devname reset -ohjelmaa)

Liitä / kytke Bluetooth-sovitin päälle Linuxissa. Varmista, että sovitin on näkyvissä (voidaan asettaa gnome-bluetoothissa – – sinun pitäisi nähdä bluetooth-järjestelmäalustakuvake).

Ota Bluetooth käyttöön Android-laitteessasi. Muodosta pariliitos sovittimen kanssa Androidilla (en voinut muodostaa pariliitosta päinvastoin Linuxista). Valintaikkuna tulee näkyviin keksiä avaimesi. Laita haluamasi PIN-koodi. Gnomen tulisi ilmoittaa ilmoitus, jossa pyydetään avainta; laita sama PIN-koodi, jonka annoit aiemmin. Android-laitteesi ja avain on yhdistettävä tässä vaiheessa.

Avaa Linuxissa pääte ja tarkista käytettävissä olevat bluetooth-palvelut kirjoittamalla sisään

sdptool browse local 

Jos sinulla on jo sarjaporttipalvelu, tee huomaa mikä kanava se on. Jos et t, voit lisätä palvelun:

sdptool add --channel=22 SP 

Kuuntele nyt tätä kanavaa käyttämällä rfcomm:

sudo rfcomm listen /dev/rfcomm0 22 

rfcomm estää, kuunnellen yhteyttä viestillä, kuten

Waiting for connection on channel 22 

Takaisin Androidiin käytin BlueTerm-sovellusta ( http://pymasde.es/blueterm/ , saatavana myös vapaasti Google Play -kaupasta), vaikka minkä tahansa vastaavan sovelluksen pitäisi toimia. Avaa BlueTerm, siirry vaihtoehdot> Yhdistä laite: valitse pariksi liitetty sovitin.

Toivottavasti sovellus pystyi muodostamaan yhteyden. Näet lisävahvistuksen päätelaitteessa, jossa estit kuuntelun viestillä, kuten:

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

Kaikkien kirjoittamiesi BlueTerm-sovellusten tulee olla / dev / rfcomm0. Näet tavaroiden näkyvän kirjoittaessasi avaamalla uuden päätelaitteen ja tekemällä jotain seuraavista:

cat /dev/rfcomm0 

Kommentit

Vastaa

Vaiheet, jotka tylsivät minulle:

Ensinnäkin sinun on muodostettava laitepari. Pariliitos on suhteellisen helppoa. Soitan asiakkaalle (joka alkaa puhua) ja palvelimelle (joka vastaa)

Palvelin on määritettävä ennen: Palvelinpuoli (pääkäyttäjänä):

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

Asiakaspuoli (pääkäyttäjänä):

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

Nyt voit avata sarjapäätteen asiakkaalle:

screen /dev/rfcomm0 115200 

Kommentit:

Kun soitat asiakkaan viimeisen komennon rfcomm connect …, laite /dev/rfcomm0 olla luotu ja liitetty palvelimeen /dev/recomm0. Tämä edustaa sarjaliikennettä molempien välillä.

Viimeinen palvelinkomento: rfcomm watch …. ”kuuntelee” saapuvia yhteyksiä. Kadotetun yhteyden yhteydessä komento käynnistää uuden ”kuuntelutilan”.

Kommentit

  • ismaian antama vastaus vie sinut melkein.Sinun on kuitenkin muistettava, että uudempi bluez-pino tarvitsee erityisen --compat -vaihtoehdon, muuten SP: n lisääminen voi epäonnistua. Katso täällä . Joten säädä / muokkaa systemd / initd-käynnistyksen käynnistyskomentosarjoja siten, että --compat on siellä.

Vastaa

Olen ratkaissut tämän pienellä muunnoksella Prisin komentoihin. Anna heille laukaus, jos jollakin on edelleen ongelmia rfcomm-yhteyden muodostamisessa.

sudo service bluetooth restart 

Tämä ^ varmistaa, että aloitat puhtaalla pöydällä aina, kun yrität muodostaa yhteyttä.

rfcomm add --channel=<a_channel_#> SP 

Tämän kanavanumeron tulisi olla erilainen kuin mikään tällä hetkellä määritetty kanava.

(VALINNAINEN) Kanavien tarkistaminen:

sdptool browse local | grep Channel 

En ole varma, miksi tämä seuraava komento on tarvitaan, mutta se toimi minulle.

rfcomm release 0 

Sitten kuunnella tulevia yhteyksiä:

rfcomm watch 0 <a_channel_#> 

HUOMAUTUS: bt MAC-osoite tiedostossa /etc/bluetooth/rfcomm.conf, mutta ole puhelimesi bt MAC. Myös tässä tiedostossa olevan kanavan on oltava sama kuin kanavalle a_kanava_ # valittu.

Kun tein kaiken tämän, käytän da bt -pääteemulaattori puhelimessani tarkistaaksesi kaiken.

Vastaa

Olen kokeillut erilaisia Bluetooth-työkaluja ja se on ollut vaikeaa löytää oikea komentosarja yhteyden muodostamiseksi ja tietojen vaihtamiseksi bluetooth-moduulin kanssa. Kokeile käyttää rfcommia ja minicomia:

Tämä on minun /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."; } 

Etsi Bluetooth-laitteita:

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

Sidonta rfcommin avulla

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

Huomaa: sidonta 0 viittaa laitteen numeroon 0 (rfcomm0 ) ja 1 on kanava.

Käytä sitten minicomia sudon kanssa ja tallenna kokoonpano, jossa määrität baudinopeuden ja portin. Löydät lisää tietoa täältä .

Vastaa

Sähköpostiosoitettasi ei julkaista. Pakolliset kentät on merkitty *