GPRS w praktyce Łukasz Jachowicz wersja 1.2 (11.02.2003 z poprawką z 26.11.2004) Każdego dnia jesteśmy atakowani reklamami sieci komórkowych, które za niewielkie pieniądze oferują nowoczesne telefony z obsługą GPRSu. GPRS (General Packet Radio Service) to pakietowa transmisja danych. Jej przewaga nad innymi metodami przesyłania informacji polega na tym, że połączenie jest wykorzystywane tylko w czasie rzeczywistej transmisji, co zmniejsza koszty (płacimy za wysłane dane, a nie czas pracy w sieci) oraz pozwala na jednoczesne używanie tego samego telefonu do rozmów lub wysyłania SMSów. Dodatkowo zapewnia (przynajmniej teoretycznie) przepustowość nieosiągalną w typowej sieci komórkowej, więc telefon z GPRSem może stanowić namiastkę stałego łącza. Tyle teorii. W praktyce wszystko wygląda trochę gorzej - przy mało intensywnym korzystaniu z sieci, dziennie przesyłam około 1 megabajta danych. Przy użyciu stacjonarnego telefonu kosztowałoby mnie to około złotówki, tu jednak kosztuje to blisko pięć razy więcej. Po podsumowaniu miesięcznych kosztów, może okazać się, że lepszym pomysłem jest założenie stałego łącza, i to niekoniecznie o najniższej przepustowości. Są jednak miejsca, w których GPRS jest niezastąpiony - pociąg, nudna konferencja, plaża... Zwłasza, że poprawne skonfigurowanie połączenia nie powinno zająć dłużej niż kilka minut. Poniższy opis opieram na swoich doświadczeniach z siecią IDEA, jednak wykorzystanie go przez klientów innych operatorów nie powinno stanowić dużego problemu. Pierwszą rzeczą, którą trzeba zrobić, jest podłączenie naszego telefonu do komputera. W moim przypadku jako gateway do sieci służy PowerPC z PLD, więc - jak widać - wszystko działa idealnie nawet na dość egzotycznych maszynach. Ze względów praktycznych najlepiej wykorzystać do tego kabelek, gdyż połączenie podczerwienią może zostać łatwo przerwane w chwili, kiedy odbierzemy dzwoniący do nas podczas korzystania z sieci telefon. Pakiety przydatne do łączenia się to wvdial oraz ppp. Warto również pamiętać o wkompilowaniu w jądro obsługi protokołu ppp - choć większość kerneli dostępnych standardowo w dystrybucjach ma już tę opcję włączoną. Teraz czas na konfigurację. Wvdial jest bardzo prosty w obsłudze, automatycznie uruchamia pppd w odpowiedniej chwili i potrafi przeprowadzić autoryzację w prawie każdy znany sposób, więc do pliku /etc/wvdial.conf wystarczy podać podstawowe parametry połączenia (jak niżej). Pózniej wystarczy już tylko uruchomić program wvdial bez podawania parametrów i po chwili pojawimy się w sieci. Może się jednak okazać, że nie na długo - tak było w moim przypadku. Połączenie było zrywane co niecałe dwie minuty, co skutecznie uniemożliwiało jakąkolwiek normalną pracę. Rozwiązaniem problemu było zakomentowanie linijki lcp-echo-failure 10 w pliku /etc/ppp/options (PLD). Po kilku dniach, znużony koniecznością ręcznego uruchamiania wvdiala za każdym razem, kiedy usiądę przy komputerze, napisałem skrypt wykrywający podłączenie telefonu i automatycznie łączący z internetem. Przed jego wykorzystaniem warto za pomocą polecenia statserial -d /dev/ttyS1 (lub ttyS0, jeśli komórka jest podłączona do portu COM1) sprawdzić, jaki powinien być wynik przy telefonie podłączonym do komputera. W moim wypadku jest to 16422 i z tego, co wiem - tak być powinno. Jeśli uzyskasz inny wynik, zmodyfikuj skrypt tak, żeby prawidłowo wykrywał stan podłączenia telefonu. Gotowy skrypt można uruchamiać automatycznie przy starcie komputera, dzięki czemu można zaoszczędzić sporo uderzeń w klawiaturę... Z internetu przez komórkę korzystam już od kilku miesięcy. W tej chwili jedyną przeszkodą w wygodnej pracy są już tylko ciągłe awarie Nokii 6310, który potrafi się zawiesić w najbardziej nieprzewidywalnych momentach. Bardzo często zdarza się, że telefon przestaje reagować na jakiekolwiek sygnały ze strony komputera lub pokazuje aktywne połączenie GPRS mimo, iż zostało ono zerwane dawno temu. Bywa, że nie potrafi zainicjować połączenia i - mimo iż wysyła dane do komputera - nie potafi sam się podłączyć do internetu. Rozwiązaniem jest niestety tylko fizyczne odłączenie komórki od kabla, wyłączenie i załączenie telefonu i ponowne podłączenie do komputera. Z nieznanych mi powodów komórka włączona z podłączonym kabelkiem często w ogóle nie zauważa jego istnienia. Utrudnia to zastosowanie tego telefonu jako urządzenia mogącego wysyłać komunikaty o awariach systemu lub jako elementu instalacji alarmowej, jednak nowsze modele (i inne telefony) zapewnie radzą sobie o wiele lepiej. Bądz co bądz, GPRS to ciągle nowa i nie do końca idealnie działająca technologia... zawartość /etc/wvdial.conf [Dialer Defaults] Modem = /dev/ttyS1 Baud = 115200 Init1 = ATZ Phone = *99# Username = ppp Password = ppp prosty skrypt wykrywający podłączenie telefonu: #!/bin/bash while true do let res="`statserial -d /dev/ttyS1`" if [ $res == 16422 ] then echo gprs started at `date +%d-%m-%Y,%H:%M.%S` >> /var/log/gprs.log wvdial 2 > /dev/null echo gprs stopped at `date +%d-%m-%Y,%H:%M.%S` >> /var/log/gprs.log fi sleep 5 done Aktualizacja: Maksymilian Wojakowski podpowiada, że "aby nie zrywało połączenia, należy wyłączyć wysyłanie echo requests. Serwery PPP GPRS w większości nie odpowiadają na echo requests i w efekcie komp po naszej stronie "myśli", że połączenie zostało zerwane, mimo iż działa ono w najlepsze."