Palm + Linux + Bluetooth

15 sierpień 2002
Autor :   Piekacz, Cezary
Posiadając kartę Bluetooth SD oraz moduł do komputera stacjonarnego obsługujący ten sam standard zapragnąłem mieć bezprzewodowy dostęp do sieci na Palmie. Niestety próby uruchomienia programu Mocha PPP pod Windowsem spełzły na niczym. Ostatnią deską ratunku pozostał więc stary dobry Linux.iW tym artykule została opisana krok po kroku procedura instalacji sterowników do obsługi urządzeń Bluetooth pod Linuxem oraz konfiguracjęii daemonów do obsługi połączeń z Palmem.
Aby korzystać pod Linuxem z urządzeń obsługujących Bluetooth niezbędne są odpowiednie sterowniki - ja skorzystałem z pakietu Bluez ( http://bluez.sourceforge.net) gdyż jako jedyny miał udokumentowaną zgodność z posiadanym przeze mnie sprzętem. Dostępny jest jeszcze protokół OpenBT ( http://sourceforge.net/projects/openbt/), którego nie udało mi się uruchomić.

Wymagania sprzętowe


Palm

Konfiguracja testowana była na Palmie m505 z kartą Bluetooth SD firmy Palm Inc. / Toshiba. Niestety nie miałem dostępu do rozwiązań TDK bądź Sony, ale one także powinny działać.

Linux

Do komputera stacjonarnego poprzez port USB podłączony był Bluetake Dongle. Urządzenie to kosztuje niecałe 300 zł, ale posiadaja dwie zalety: zasięg do 100m i ładny wygląd w sam raz na biurko ;-). Jeśli posiadacie adapter innej firmy i zastanawiacie się nad kompatybilnością, to pod adresem http://www.holtmann.org/linux/bluetooth/devices.html znajduje się lista obsługiwanego sprzętu.

Ta instrukcja nie obejmuje modułów podłączanych przez port RS, howto opisujące proces instalacji jest dostępne na stronie http://bluez.sourceforge.net/howto/index.html.

Wymagane oprogramowanie


Palm

Wszystkie wymagane sterowniki zapisane są na płycie CD dołączonej do karty SD. Do ich zainstalowania potrzebny będzie Windows, gdyż opakowane są w idtioto-odporny instalator. Poza nimi wystarczy niewielka modyfikacja konfiguracji na Palmie, ale tym zajmiemy się później.

Linux

Linux do pracy z urządzeniami Bluetooth wykorzystuje specjalne protokoły, w tym przypadku BlueZ. Potrzebne będą nam następujące pliki, które można pobrania z internetowej witryny BLueZ Protocol Stack:

Na następnej stronie znajduje się główna część instrukcji.

Konfiguracja krok po kroku


Krok 1 - Kompilacja i instalacja modułów


Aby móc korzystać z urządzeń poprzez port USB, oraz zainstalować wymagane sterowniki, potrzebny jest dostęp do systemu z konta root. Ponadto należy skompilować moduły obsługujące kontroler USB. Linux posiada dwa, uhci oraz usb-uhci. Osobiście polecam ten drugi gdyż z przeczytanej dokumentacji dowiedziałem się, że z pierwszym mogą być problemy (m.in. stabilnościa połączenia).

Wszystkie aktualne dystrybucje Linuxa mają wkompilowaną obsługę USB, niestety bez wspomagania tzw. Hot-Plug. Aby system zobaczył nowe urządzenie, powinno być one podłączone przed urochomieniem komputera.

Jeśli jądro poprawnie go wykryje to po wydaniu polecenia cat /proc/bus/usb/devices powinniśmy ujrzeć:


T: Bus=01 Lev=02 Prnt=33 Port=04 Cnt=03 Dev#= 36 Spd=12 MxCh= 0
D: Ver= 1.10 Cls=e0(unk. ) Sub=01 Prot=01 MxPS=64 #Cfgs= 1
P: Vendor=0a12 ProdID=0001 Rev= 1.84

Klasa e0 oznacza bluetooth, w nawiasie zaś pojawi sie nazwa adaptera, jeśli ją on posiada.

Kolej na instalację sterowników do obsługi tego protokołu. Niektóre dystrybucje, np.: RedHat lub Mandrake, mają je dołączone srandardowo. Można to sprawdzić wydając polecenie lsmod. Jeśli pojawi nam się moduł bluetooth należy go usunąć, gdyż będzie on blokował pracę nowych sterowników.

Najpierw wydajemy polecenie rmmod usb-uhci i rmmod bluetooth, a następnie kasujemy skompilowany moduł (rm /lib/modules/wersja_kernela/kernel/drivers/usb/bluetooth.o). Teraz należy rozpakować i skompilować pakiet z główną biblioteką. Wykonujemy po kolei następujące polecenia:
tar xvfz bluez-kernel-2.2.tar.gz
cd bluez-kernel-2.2
./configure
./make
./make install

UWAGA: Przed włączeniem modułów należy odłączyć adapter, w przeciwnym wypadku nie będzie on rozpoznawany przez system !


Aby sterowniki były automatycznie ładowane przy starcie systemu należy w pliku /etc/modules.conf dodać następujące wpisy:


alias net-pf-31 bluez
alias bt-proto-0 l2cap
alias bt-proto-2 sco
alias bt-proto-4 bnep


Ładujemy moduły wydając polecenia modprobe usb-uhci oraz modprobe hci_usb i jeśli wszystko poszło dobrze po wydaniu polecenia grep -i bluez /var/log/messages powinniśmy zobaczyć:


Jul 28 20:13:30 romulan kernel: BlueZ Core ver 2.0 Copyright (C) 2000,2001 Qualcomm Inc
Jul 28 20:13:30 romulan kernel: BlueZ HCI USB driver ver 2.0 Copyright (C) 2000,2001 Qualcomm Inc

Jeśli zamiast wersji 2.0 zobaczymy 1.1 oznacza to, że coś poszło nie tak. Należy wtedy odłączyć urządzenie, usunąć z pamięci wszystkie sterowniki i załadować je dopiero jego po ponownym podłączeniu.

Kolejny krok to zainstalowanie The Bluez API library 2.0 i The Bluez Utilities 2.0. W systemie dostępny będzie program hciconfig służący do aktywowania protokołu Bluetooth. Wydajemy polecenie hciconfig hci0 up i jeśli nie dostaniemy żadnych komunikatów o błędach, podajemy następne - hciconfig -a. Na ekranie powinniśmy zobaczyć:


hci0: Type: USB
BD Address: 00:60:57:02:28:59 ACL MTU: 192:8 SCO MTU: 64:8
UP RUNNING PSCAN ISCAN
RX bytes:69 acl:0 sco:0 events:8 errors:0
TX bytes:27 acl:0 sco:0 commands:7 errors:0
Features: 0xff 0xff 0x09 0x00
Packet type: DM1 DM3 DM5 DH1 DH3 DH5 HV1 HV2 HV3
Link policy:
Link mode: SLAVE ACCEPT
Name: '**********************'
Class: 0x000100
HCI Ver: 1.1 (0x1) HCI Rev: 0xbc LMP Ver: 1.1 (0x1) LMP Subver: 0xbc
Manufacturer: ****************************


Aby zmienić nazwę komputera na rozpoznawaną przez inne komputery/palmtopy/telefony należy zmodyfikować plik /etc/bluetooth/hcid.conf i uruchomić daemon hcid. Jeśli w pobliżu mamy włączonego Palma (oraz aktywowaliśmy moduł w Preferences w zakładce Bluetooth), to po wydaniu polecenia hcitool scan powinniśmy ujrzeć:

Scanning ...
00:02:EE:0F:EE:2E Cezex 6310
00:07:E0:00:4D:DC Cezex Palm


Krok 2 - Parowanie urządzeń i konfiguracja Palma


W Launcherze wybieramy Preferences, zakładkę Bluetooth i wchodzimy do Trusted Devices. Teraz klikamy na Add Device i kiedy Palm wykryje komputer stacjonarny i poprosi o hasło podajemy to, które znajduje się w pliku: /etc/bluetooth/pin (standardowo jest BlueZ, ale oczywiście można je zmienić). Jeśli wszystko poszło dobrze możemy przejść do ostatniego kroku jakim jest...

Krok 3 - Udostępnianie połączenia


Na tym etapie sprawimy, aby Palm korzystając z PPP miał dostęp do Internetu. Bluetooth ma zaimplementowany protokół SDP służący do enkapsulacji protokołów wymienianych pomiędzy dwoma urządzeniami. Aby Palm mógł nawiązać połączenie przez PPP należy pod Linuxem skompilować The Bluez Service Discovery Protocol 0.7. Aby go aktytować należy wydać polecenia:

> sdpd
> sdptool add LAN
LAN Access service registered


Na Palmie wchodzimy w zakładkę Connection i tworzymy nowe połączenie o następujących parametrach:




Jeśli nie można wykryć PC-ta, a pojawia się on w Trusted devices to należy sprawdzić następujące rzeczy:

  • Czy jest uruchomiony daemon sdp
  • Czy hcicontrol -a pokazuje "Class: 0x000100" (musi być uruchomiony daemon hcid oraz poprawnie skonfigurowany plik /etc/bluetooth/hcid.conf)


Ustawienia dla połączenia można stworzyć automatycznie korzystając z dołączonego Bluetooth Wizard. Po zakończeniu procesu powinniśmy ujrzeć uśmiechniętą żółtą buźkę.

Teraz przechodzimy do zakładki Network i ustawiamy:




Następnie potrzebny będzie nam wirtualny port szeregowy do ustanowienia połączenia - nazywa się on rfcomm 1.2.

Po kompilacji i instalacji tego pakietu otrzymujemy daemon rfcomm wraz z plikiem konfiguracyjnym /usr/local/etc/rfcommd.conf. Musimy teraz zmodyfikować ustawienia dla pppd w /etc/ppp/peers/bluetooth.options. Podajemy adres IP komputera stacjonarnego, Palma oraz serwera DNS. Na koniec pozostaje nam tylko uruchomić /usr/local/sbin/rfcommd -s.

Przed wykonaniem następnej czynności warto na innej konsoli obserwować co się dzieje w systemie (tail -f /var/log/messages). Nadeszła więc chwila prawdy - w zakładce Network klikamy na Connect i po kilku sekundach otrzymujemy komunikat Established - hura, udało się !





Krok 4 i ostatni - Aktywowanie forwardowania pakietów


Bezprzewodowe połączenie jest super, ale to nie wszystko. Aby Linux poza własnymi zasobami dał nam także dostęp do całej sieci (a co za tym idzie do Internetu) należy włączyć IP forwarding. Zakładając, że w systemie mamy kartę sieciową dostępną jako eth0 oraz zainstalowany pakiet iptables, wydajemy polecenia:

> echo 1 >/proc/sys/net/ipv4/ip_forward
> iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

I to już wszystko. Pozostaje tylko odpalić program TopGun SSH i cieszyć się bezprzewodowym dostępem do serwera :)

Na ostatniej stronie znajduje się opis automatyczne aktywacji modułów przy starcie
systemu oraz dodatkowe linki.

Dodatek - automatyczna aktywacja modułów przy starcie systemu


Jeśli nie chcemy po każdym restarcie komputera wstukiwać wszystkiego ręcznie, proponuję stworzyć sobie skrypt i dopisać go na końcu pliku /etc/rc.d/rc.local.


#!/bin/bash
#modul ladujemy tylko wtedy gdy nie robi tego za nas system automatycznie przy starcie
#w przeciwnym razie mozemy dostac na Palmie komunikat o bledzie modemu
modprobe hci_usb
#nie wiem czemu po zaladowaniu każdego daemona trzeba chwile odczekac
#jesli sie tego nie zrobi nawiazanie polaczenia z linuxem nie bedzie mozliwe
hciconfig hci0 up
sleep 1
hcid
sleep 1
sdpd
sleep 1
sdptool add LAN
sleep 1
/usr/local/sbin/rfcommd -s
echo 1 >/proc/sys/net/ipv4/ip_forward
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

Dodatkowe linki


  • Połączenie Palm Vx z Linuxem przez moduł Red-M Blade
  • Strona domowa projektu Bluez
  • Bluez HOWTO
  • Palm Bluetooth - strona dla programistów
  • Strona domowa protokołu Bluetooth


    Na podstawie artykułu autorstwa Ten adres pocztowy jest chroniony przed spamowaniem. Aby go zobaczyć, konieczne jest włączenie w przeglądarce obsługi JavaScript..
  • Tag :


    O Serwisie

    Wortal PDAclub.pl to serwis internetowy zajmujący się tematyką technologii mobilnych. U nas znajdziesz najnowsze informacje o smartfonach, tabletach, smartwatch i innych urządzeniach mobilnych pracujących zarówno pod kontrolą Apple iOS jak i Google Android czy też Windows. PDAclub.pl to także jednao z najstarszych forów internetowych, gdzie każdy użytkownik znajdzie fachową pomoc.

    PDAclub POLECA


    W ramach naszej witryny stosujemy pliki cookies w celu świadczenia usług na najwyższym poziomie, w tym w sposób dostosowany do indywidualnych potrzeb. Korzystanie z witryny bez zmiany ustawień dotyczących cookies oznacza, że będą one zamieszczane w urządzeniu końcowym. Można dokonać w każdym czasie zmiany ustawień dotyczących cookies. Więcej szczegółów w naszej Polityce Prywatności. Akceptuję otrzymywanie plików cookies z serwisu pdaclub.pl. Akceptuję