Bluetooth – kij ma dwa końce, to mamy dwa kije
„Bluetooth – ząb jest niebieski, to ma dwa kolory” – inna wersja tytułu tej notki.
Ostatnio zainteresowałem się jedną z najpopularniejszych technologii w świecie IT. Mowa oczywiście o Bluetooth, który ideowo miał być kolejnym krokiem do tego, aby wszystkie urządzenia mogły ze sobą współpracować, niezależnie od swoich producentów i typów. Np. laptop Dell i drukarka HP albo PDA od HTC z PC-tem… byle jakim w zasadzie. Pomysł idealny, ku rozwojowi „.NET-owego domu”, gdzie wszystkie cyfrowe technologie winny być totalnie zintegrowane, a wymiana informacji pomiędzy nimi nie sprawia najmniejszego kłopotu. Jednakże założenia jak zwykle to nie to samo co wykonanie – albo raczej odwrotnie. Wykonanie nie jest jeszcze tak dobre jak idea, dlatego trochę ponarzekam :)
Pierwsze zabawy z BT
A powodów do narzekania jest wiele. Może zacznijmy od tego, że posiadam PDA (czasem mówią, że telefon) SPV m3100. Posiada on wiele ciekawych opcji, a jedną z nich jest właśnie Bluetooth. Wymiana plikami pomiędzy nim a innym telefonem okazała się czymś dosyć przyjemnym, rozejście się najnowszego sprawdzianu teraz przebiega o wiele sprawniej, xero bowiem bywa czasem nawet zbędne. Spróbowaliśmy oczywiście z kolegami kilku gier z połączeniem bezprzewodowym – szachy, Carmageddon… Wszystko fajnie, ale do czasu.
Pomyślałem – skoro nie ma problemu z wymianą plikami pomiędzy dwoma „telefonami”, to na pewno moduł Bluetooth na USB do komputera uczyni z niego telefon (poprzez emulację oczywiście)! Poszedłem więc do sklepu elektronicznego, aby wybrać sobie jakiś moduł bluetooth. Zapłaciłem 25 zł, dostałem w dość dużym opakowaniu (niemalże jak na myszkę A4Tech) czarne pudełeczko delikatnie większe szerokością od standardowych pendrive’ów, z dodatkowo wystającą antenką. W opakowaniu był także kabel przedłużający (u mnie nie ma miejsca z tyłu kompa, więc się przydał) oraz płytka CD.
Mój pierwszy BT USB – instalacja
Oczywiście załączoną płytę CD ze „sterownikami” zbagatelizowałem. „Przecież to można znaleść w Internecie” – rzekłem do Sprzedawcy. Okazało się, że nie. Doszedłem na stronę producenta (doszukałem się tego linka dopiero z owej CD) i spróbowałem ściągnąć najnowszą wersję. Na krążku dostałem oprogramowanie BlueSoleil v1.8, do ściągnięcia była ta a także (w przybliżeniu) 2.3, 3.0 i 5.0. Wszystkie te inne okazały się być „płatne”, bowiem po zainstalowaniu urządzenie działało tylko do przetransferowania 5MB danych. Poza tym prędkości ściągania z tego serwisu oscylowały w granicach 2 do 4 KB/s. Porażka, parodia – nie wiem jeszcze jak to nazwać.
Jeżeli chcemy zainstalować urządzenie, to nie instaluje się tylko jego sterownik, ale także i pewne oprogramowanie. Nawet Windows nie wykrywa tego urządzenia chyba do końca jako bluetooth. W Menadżerze Urządzeń (mam angielską wersję systemu) mamy nową kategorię Bluetooth USB, a w niej urządzenie Bluetooth Device. O ile udało mi się dobrze zorientować, to kategoria powinna brzmieć „Bluetooth Devices„, a nazwa urządzenia powinna być mniej więcej adekwatna do modelu czy nazwy sterownika, choćby miałby to być standardowy Generic Bluetooth Driver, który nie chce się w ogóle podpiąć do mojego urządzenia, a jest podobno standardowo w Service Pack-u 2 :P
Próbowałem później zainstalować sterowniki WIDCOMM, które są rzekomo o „wiele lepsze”, ale moje urządzenie nie posiada licencji na ich używanie, a wszelkie „witaminki” po prostu nie działają pod wersją 64-bitową systemu Windows XP :) Sterownik się instaluje z odpowiedniej listy (co więcej ID tego urządzenia JEST domyślnie na tej liście! – VID_1131&PID_1001), ale kiedy z tray-a (jakaś aplikacja BTTray.exe), wywołujemy opcję „Uruchom …coś tam”, to dostajemy informację o nieposiadanej licencji.
No ale nic – skoro dostałem takie a nie inne drivery, których z neta nie można zdobyć łatwą ręką, a żadne inne nie działają, to muszę przy nich zostać. Jednak jest to rozwiązanie niezbyt kompatybilne z systemem, całość jakby na siłę. Np. przeglądanie folderów potrafi się wysypać exceptionem.
Bluetooth a programowanie
Ok, nie poddaję się. Przecież jestem programistą! Jak czegoś nie ma… to teraz czas na zakodowanie czegoś z użyciem tej „cudownej” technologii. Skoro jest tak dużo urządzeń na urządzenia mobilne, wykorzystujących Bluetooth, to może i ja coś stworzę? Pierwsza rzecz jaka przyszła mi na myśl, to skorzystanie z szybkości pisania w języku C#. Byłem prawie pewien, że na SourceForge znajdę jakąś darmową bibliotekę do obsługi połączeń sinozębnego dla Windows XP oraz Windows Mobile 5/6. Zonk, bo nie jest tak jakbym sobie wymarzył.
Mój chwilowy cel to było zaprogramowanie serwera plików opartego o OBEX – technologię do wysyłania plików przez IrDA, tudzież właśnie BT. Pliki listowałyby się według podanych folderów, oczywiście dostęp za podanym hasłem. Serwer miał być dla komputera. Na PDA nie musiałem nawet nic pisać (na względzie klienta), bo mam wbudowany Bluetooth Explorer (w zasadzie to jest część File Explorer). Ewentualnym rozwiązaniem – dla innych telefonow – jest obsługa „niebieskiej technologii” przez Javę – niemalże wbudowana w wersjach komórkowych.
Ale wracając – chciałem napisać „fajniejszy” serwer plików. Aby sobie pomóc, popytałem co nieco Google. Rozczarowałem się, sprawa okazuje się nie być taka prosta. Z wielu linków na google znalazłem takie ciekawsze:
-
http://inthehand.com/library/ – biblioteka InTheHand od 32feet.NET, która zawiera dosyć kompleksową obsługę BT, ale… nie działa na wszystkich urządzeniach. Na moim szczególnie. Wciąż zastanawiam się czy to moduł bluetooth emulujący urządzenie z bluetoothem czy moduł emulujący bluetooth emulujące urządzenie z bluetooth-em.
-
OpenNETCF 2.2 – kolejna biblioteka zawierająca support dla Bluetooth. Na jakimś forum ktoś wypowiadał się, że jest „fully free”, a tymczasem nie mogę znaleść linka do downloadu tejże. Starsza wersja (1.4) nie zawiera obsługi BT.
-
OpenOBEX – (lib) implementacja protokołu do wymiany binarnych plików. Jest tutaj do znalezienia także dodatek ObexFTP dla OpenOBEX. Poza BT jest też IrDA. Nie wiem jednak jak to będzie działało przy użyciu mojego urządzenia (albo w ogóle jakiegokolwiek BT na USB).
-
http://www.programmersheaven.com/2/Transferring-Files-and-Monitoring-Bluetooth-Ports – artykuł o tym jak to zrobić przy użyciu (Virtual) Serial Ports (COM). Jednakże wymaga to od nas napisania całego protokołu od obsługi OBEX, czyli nie tak mało ile byśmy oczekiwali.
-
http://www.devx.com/wireless/Article/11511 – „Make Bluetooth Work for You: Build a Sample Chat Application” – to co powyżej, czyli samemu…
Wniosek? Nie ma łatwej drogi, tzn. gotowego lib’a or sth like that, abym mógł szybko zrealizować swój cel. Jakby nie patrzeć wszystko jest do przestudiowania. Ale tego mało – moje urządzenie po prostu nie funkcjonuje tak jak trzeba.
No dobrze, a jakieś gotowe aplikacje?
Ileż to się naszukałem, aby znaleść coś ciekawego działającego w oparciu o bluetooth, a pozwalałoby mi rozszerzyć użyteczność modułu USB z moim PDA.
Mamy np. taką witrynę: www.blueshareware.com I co? Wszysto płatne nie wiadomo jakie kwoty, a przydatne… mnie po prostu tak sobie.
YouTube też swoje powie – coś o bezpieczeństwie
Jak się już pozałamywałem tym „wspaniałym” supportem (żenada) Bluetooth-a – wszystkie sterowniki i biblioteki dla programistów (ta, jasne) – to zdecydowałem wziąć na luz oraz poszukać nieco niekonwencjonalnych informacji. Jak się okazuje, na popularnym serwisie YouTube można znaleść całkiem pokaźną liczbę filmów związaną z użytecznością a bezpieczeństwem.
Dla przykładu, tutaj mamy prezentację samochodu z bluetooth-em. A tutaj lub szczególnie tutaj z kolei leży nam gust naszego bezpieczeństwa w takim samochodzie. Dziękuję bardzo za takie możliwości :)
Wady i zalety
Podsumowując, wymienię jeszcze raz wady i zalety rozwiązania Bluetooth w dzisiejszym świecie. Zacznę oczywiście od zalet, bo tych jest mniej (najbardziej pod uwagę biorę aktualny support w świecie codingu):
-
komunikacja między różnymi urządzeniami, niezależnie od tego czym są. Odpowiednie usługi pozwalają na odpowiednie akcje, np. wymiana plików.
-
Najnowszy standard (2.0) dochodzi transferami do 2,1 Mb/s, a nawet 3.0 Mb/s. Nie jest to jakoś bardzo wiele, ale patrz punkt następny
-
stosunkowo niskie koszta produkcji, chociaż w tym względzie powstał jego następnik – ZigBee
-
energnooszczędność (patrz też ZigBee, który osiąga to w większym stopniu)
Teraz naturalnie wady, aby nie było za słodko:
-
kiepski support dla programistów. Większość jest przekombinowane, żadnej oficjalnej biblioteki do obsługi tego protokołu. Wszystkie „domowej roboty”, a to dziwne, bo już np. na serwis www było ich stać :P Jedynie cokolwiek można znaleść tu, ale nie wygląda to zachęcająco (nie mowa tylko o graficznej stronie, popatrzcie ile tego, a każde tak naprawdę po trochu do czegoś innego).
-
fatalność w kwestii sterowników na system operacyjny Windows (podobno na Linuxie łatwo o to wszystko :P)
- dodatkowy problem to Bluetooth stack – kolejne utrudnienie w kwestii sterownikowo-systemowe, klik. Oczywiście potworzono kilka standardów – lepsze i gorsze, a nic ze sobą tak naprawde nie współgra (na szczęście dwa urządzenia jak już się połączą to wymieniają się danymi z reguły poprawnie)
-
transfery nie są jakoś specjalnie ustandaryzowane. Teoretycznie najnowszy standard zapewnia nam 2,1 Mb/s czyli 262,5 KB/s. Choćby były to transfery z wersji poprzednich – 712 Kb/s to mamy 89 KB/s. Miał ktoś tyle? Zazwyczaj sięga mi 15 (mam standard 2.0), a z jednym telefonem (jakiś nowszy Sony Ericsson) – osiągnęło bagatela 40 KB/s.
-
bezpieczeństwo leży czasem w gruzach. Poza tym zero inteligentnego sprawdzania, co uwierzytelniony użytkownik robi z naszym połączeniem. Przykład tu.
-
pasmo częstotliwości to 2.4GHz. Czyżby to nie kłoci się z WiFi?
Wszystkie informacje wyciągnięte są z for zagranicznych (co się znalazło przez Google), oraz serwisów o tematyce BT.
Podsumowanie wywodów
Podsumowując, wszystko w technologii Bluetooth jest „fajne”, ale niedopracowane, a standardy biegają wokół siebie jak konkurujące ze sobą mrówki. Mowa o PC, a także ogólnie bezpieczeństwie w kwestii użytkownia. Kupujemy bowiem urządzenie i zastanawiamy się, czy to jest full-Windows-compatible, czy tylko częściowo, bo ma jedynie umożliwić komunikację z innym urządzeniem. Ja niestety trafiłem na ten drugi rodzaj, stąd moje rozpoznanie w najprawdziwszym zwierciadle Bluetooth-a. Niby jeden kij, ale okazuje się, że dwa różne końce to różne Bluetooth-y – nie powinno nam być obojętne jaki moduł kupujemy. Tak więc nic jak czekać na rozwój (a raczej zwój, ze względu na ilość tych „standardów”) tego, co od początku [przez producentów] zapowiada się dobrze.