Próbuję skonfigurować wirtualny port szeregowy za pośrednictwem adaptera USB-Bluetooth w systemie Linux i wysłać do niego wiadomość za pośrednictwem urządzenia z systemem Android. Jestem na jądrze 3.6. Jestem w stanie sparować się z urządzeniem z powodzeniem za pomocą gnome-bluetooth, a także mogę wysyłać do niego pliki.
Aby skonfigurować port szeregowy, najpierw dodaję kanał z profilem SP do mojego adaptera:
sdptool add --channel=22 SP
Następnie nazywam „Listen” za pomocą rfcomm:
rfcomm listen /dev/rfcomm0 22
który się blokuje
Waiting for connection on channel 22
Najwyraźniej rfcomm utworzy / dev / rfcomm0 po udanym połączeniu. Gdy to nastąpi, chciałbym użyć czegoś takiego jak cutecom do wysyłania wiadomości tam i z powrotem na podłączone urządzenie.
Na moim urządzeniu z Androidem otwieram terminal Bluetooth SPP (jest ich kilka, próbowałem kilka różnych) i próbuję się połączyć. Wszystkie zawodzą.
Biorąc pod uwagę, że mogę z powodzeniem sparować i wysłać pliki bez żadnych problemów, wiem, że parowanie i komunikacja Bluetooth działa.
Nie jestem zbyt pewien, co jeszcze mogę spróbować. Użyłem „sdptool Browse” na moim urządzeniu lokalnym i urządzeniu z Androidem, aby upewnić się, że nie ma żadnych konfliktów kanałów RFCOMM.
Poniższe kroki dla mnie zadziałały:
Najpierw musisz sparować urządzenia. Parowanie jest stosunkowo łatwe. Zadzwonię do klienta (który zaczyna mówić) i serwera (który odpowiada)
Musisz skonfigurować serwer wcześniej: po stronie serwera (jako root):
Po stronie klienta (jako root):
Teraz, aby otworzyć terminal szeregowy na kliencie:
Komentarze:
Po wywołaniu ostatniego polecenia rfcomm connect ... na kliencie urządzenie
/dev/rfcomm0
zostanie utworzone i powiązane z serwerem/dev/recomm0
. To reprezentuje połączenie szeregowe między nimiOstatnie polecenie serwera:
rfcomm watch
.... „nasłuchuje” połączeń przychodzących. W przypadku utraty połączenia polecenie uruchomi ponownie nowy stan „nasłuchiwania”.źródło
--compat
opcji, w przeciwnym razie dodanie SP może się nie powieść. Zobacz tutaj . Więc dostosuj / popraw skrypty startowe systemd / initd, aby--compat
tam były.Rozwiązałem to z niewielką zmianą poleceń Pris. Daj im szansę, jeśli ktoś nadal ma problemy z ustanowieniem połączenia rfcomm.
To ^ zapewnia, że zaczynasz z czystym kontem za każdym razem, gdy próbujesz skonfigurować połączenie.
Ten numer kanału powinien być inny niż jakikolwiek aktualnie przypisany kanał.
(OPCJONALNIE) Aby sprawdzić kanały:
Nie jestem pewien, dlaczego to następne polecenie jest potrzebne, ale zadziałało dla mnie.
Następnie nasłuchuj nadchodzących połączeń:
UWAGA: adres bt MAC w /etc/bluetooth/rfcomm.conf, ale adres MAC bt telefonu. Również kanał w tym pliku musi być taki sam, jak kanał wybrany dla a_channel_ #.
Kiedy to wszystko zrobiłem, użyłem emulatora terminali bt w telefonie, aby to wszystko sprawdzić.
źródło
Próbowałem różnych narzędzi bluetooth i trudno było znaleźć prawidłową sekwencję poleceń do łączenia i wymiany danych z modułem bluetooth. Spróbuj użyć rfcomm i minicom:
To jest mój /etc/bluetooth/rfcomm.conf
Wyszukaj urządzenia Bluetooth:
Powiązanie za pomocą rfcomm
NB: Powiązanie 0 odnosi się do urządzenia o numerze 0 (rfcomm0), a 1 oznacza kanał.
Następnie użyj minicom z sudo i zapisz konfigurację, w której określisz szybkość transmisji i port. Więcej informacji znajdziesz tutaj .
źródło