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:
- The BlueZ Kernel 2.2
http://bluez.sourceforge.net/download/bluez-kernel-2.2.tar.gz - The Bluez API library 2.0
http://bluez.sourceforge.net/download/bluez-libs-2.0.tar.gz - The Bluez Utilities 2.0
http://bluez.sourceforge.net/download/bluez-utils-2.0.tar.gz - The Bluez Service Discovery Protocol 0.7
http://bluez.sourceforge.net/download/bluez-sdp-0.7.tar.gz - Zmodyfikowany daemon RFCOMM 1.2 zawierający skrypty Palm/PPP
http://www.harbaum.org/till/palm/bluetooth/rfcommd-1.2.tar.gz
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
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..