7.13.14. Łączenie się z Internetem przez GPRS

Ten rozdział opisuje jak połączyć się z Internetem za pomocą telefonu komórkowego wykorzystując system GPRS. General Packet Radio System (GPRS) jest metodą dostępu do Internetu w sieciach GSM, która, w przeciwieństwie do zwykłego połączenia komutowanego (Sekcja 7.13.6) oraz połączenia HSCSD, charakteryzuje się pakietową transmisją danych. Trzy cechy odróżniają system GPRS od pozostałych metod dostępu: po pierwsze, użytkownik płaci tylko za ilość przesłanych danych a nie za czas połączenia. Po drugie, GPRS jest szybszy od zwykłego połączenia dial-up z siecią przez telefon komórkowy (9,6 kbs) bo pozwala na łączenie kilku kanałów i osiągnięcie przepływu do abonenta (downstream) do 115 kbs (na razie ani sieci ani telefony nie wspierają jeszcze tak dużych prędkości transmisji). Po trzecie, system GPRS pozwala odbierać połączenia i SMS-y w trakcie trwania sesji (połączenia) GPRS. Sesja jest wówczas na czas połączenia zawieszana, a po jego zakończeniu - wznawiana. Dodatkowym atutem jest czas nawiązywania połączenia - jest kilkakrotnie krótszy niż w przypadku zwykłych modemów dial-up.

Usługa GPRS musi być aktywowana u operatora telefonii komórkowej (w niniejszym opisie, dla uproszczenia wszystkie przykłady i konfiguracja będą przedstawione dla sieci Era). W Erze aktywacja usługi jest za darmo, standardowo nie ma również żadnej opłaty miesięcznej w abonamencie. Koszt: 49 gr (+VAT) za 100 kB wysłanych i (oddzielnie) odebranych danych (na poziomie protokołu IP). "Kwantem rozliczeniowym" jest właśnie 100 kB. Oznacza to, że minimalna opłata za sesję GPRS wynosi 49 gr (dane odebrane) + 49 gr (dane wysłane) = 98 gr (kilkaset bajtów musi być zawsze wysłanych i odebranych w ramach nawiązywania połączenia). Sesja GPRS przerwana połączeniem przychodzącym i (automatycznie) wznowiona, jest traktowana jak pojedyncza sesja (choćby trwała nawet cały dzień :-). GPRS jest bardzo użyteczny przy połączeniach shellowych. Połączenie tekstowe/konsolowe z serwerem jest relatywnie tanie (chociaż do każdego znaku należy doliczyć nagłówek IP) i nie ma ciągłej presji czasu jak w przypadku zwykłego połączenia dial-up przez telefon komórkowy.

Naturalnie, system GPRS musi być wspierany przez telefon. Aktualnie coraz więcej telefonów ma wbudowanego GPRS-a, są to m.in.: Nokia 6310, 6310i, 7650, 8310; Ericsson R520, T65i, T39, T68; Siemens ME45, M50, S55 i wiele innych.

Sesje GPRS mogą być uruchamiane na dwa sposoby:

7.13.14.1. IrDA

W podrozdziale tym opisany jest sposób instalacji i konfiguracji systemu IrDA na Linuksie z jednym z nowszych systemów RedHat (rodzina 7.x, 8.x, 9.x). Starsze systemy RedHat wymagały łat na jądro (teraz IrDA jest już standardowo wspierana) oraz doinstalowania pakietu irda-utils (obecnego w nowszych wersjach systemu).

IrDA jest obecna we wszystkich obecnie produkowanych laptopach a wyposażenie komputera stacjonarnego w system IrDA (dioda podczerwieni podłączana do płyty głównej) to kwestia kilkudziesięciu złotych.

Zanim zaczniemy konfigurować IrD-ę na Linuksie, powinniśmy dokładnie dowiedzieć się jakie są ustawienie w naszym systemie (sprawdzić w BIOS-ie). Często należy uaktywnić system IrDA, ponieważ może być standardowo wyłączony. Należy sprawdzić pod którym portem komunikacyjnym będzie widoczna IrDA. W przypadku laptopów będzie to zwykle COM2, czyli /dev/ttyS1. Co ciekawe, niektóre systemu biurkowe, wyposażone w dwa porty COM, podpinają IrD-ę pod COM2 - prawdopodobnie wyłączając standardowy, "kablowy" port szeregowy. Warto także sprawdzić numer portu i przerwanie przydzielone przez BIOS.

Po włączeniu IrD-y w BIOS-ie i odczytaniu jej parametrów uruchamiany Linuksa. Następnie:

Teraz sprawdzamy czy nasz telefon zostanie wykryty przez system: włączamy IrD-ę w telefonie i stawiamy naprzeciwko nadajnika (ang. transceiver) IrD-y. Wywołujemy komendę:
cat /proc/net/irda/discovery
Jeśli telefon został wykryty to program cat powinien na wyjściu na wyjściu zwrócić informację jak poniżej:
IrLMP: Discovery log:

nickname: Nokia 6310i, hint: 0xb125, saddr: 0xb4bd12f0, daddr: 0x0000b624
Wartości nickname, hint, saddr i daddr mogą się różnić w zależności od modelu telefonu - ważny jest fakt pojawienia się tej całej linii. W przypadku niewykrycia urządzenia zostanie zwrócony pusty log:
rLMP: Discovery log:
Powodem jest zwykle niewłączenie IrD-y w telefonie lub niewidzenie się czytnika IrD-y w telefonie i w komputerze (niektóre telefony mają podczerwień na czubku, a inne - z boku obudowy).

Jeśli telefon został wykryty możemy spróbować się połączyć z telefonem za pomocą programu minicom (tu drobna dygresja: minicom jest programem do komunikacji przez porty/łącza szeregowe. W nomenklaturze komputerowej człon "com", "COM" lub "comm", pochodzący zapewne od słowa "communication", oznacza komunikację szeregową (ang. serial communications), kojarzoną zwykle z portami szeregowymi, tzw. COM-ami w pececie i interfejsem RS-232. Jak się ma IrDA to komunikacji szeregowej? Otóż wiele standardów, w tym także bezprzewodowych, wspiera tryb komunikacji który jest identyczny do tego znanego z RS-232. W przypadku IrD-y tryb ten zwie się IrCOMM (Infared COMM) a w przypadku Bluetootha RFCOMM (Radio Frequency COMM). Dzięki temu istnieje prosta możliwość przeniesienia setek programów wykorzystających komunikację szeregową do nowych zastosowań oraz możliwość tworzenia nowych aplikacji, w oparciu o tradycyjny i opanowany sposób komunikacji. Program minicom nie wie i nie musi wiedzieć, że porozumiewa się poprzez łącze bezprzewodowe. Koniec dygresji). Tu uwaga! Urządzeniem, które należy wskazać programowi minicom jest /dev/ircomm0 a nie /dev/ttyS1. Sprawdzamy czy odpowiada na komendy Hayesa (AT). Odpowiada? Więc IrDA została zainstalowana.

7.13.14.2. GPRS - Konfiguracja pppd

Opisany tu sposób konfiguracji połączenia przez GPRS został zaczerpnięty z dokumentu Mikko Rapeliego pt.: "Of Linux, GPRS Phones, Serial Cable, IrDA, Bluetooth and USB" (http://www.iki.fi/mikko.rapeli/linux_gprs.html) i zmodyfikowany na potrzeby połączenia z siecią Era przez telefon Nokia 6310i. W plikach pozostawiono angielskie komentarze autora, żeby ułatwić ich dostosowanie do innych konfiguracji (np. Plus GSM, telefony Siemensa itd). Thank you, Mikko. Good job.

Żeby skonfigurować program pppd w celu obsługi systemu GPRS należy stworzyć 4 pliki:

Warto również stworzyć 2 skrypty (z flagą wykonywalności), które automatycznie ustawią nam przekazane prze Erę adresy DNS-ów:

Uwaga! W przypadku telefonów Nokia 6310/6310i (może też innych?) stwierdziliśmy objaw zrywania połączenia GPRS po ok. dwóch minutach. Żeby się go pozbyć należy otworzyć plik /etc/ppp/options i sprawdzić czy w pliku jest następująca linia (lub podobna):

lcp-echo-failure 4
Jeśli jest - należy ją usunąć albo wykomentować. Należy się również upewnić czy opcji tej nie ma w innych plikach odczytywanych przy połączeniu, można to sprawdzić np. programem grep:
grep -r lcp-echo-failure /etc/ppp

Teraz czas na przetestowanie połączenia. Wywołanie komendy:

pppd call gprs
spowoduje odczytanie przez pppd pliku /etc/ppp/peers/gprs i uruchomienie zawartych tam instrukcji. Na wyjściu powinniśmy otrzymać komunikaty drukujące kolejne fazy połączenia: komendy AT, wybieranie numeru i otrzymanie adresu IP. Powinny nam zostać również przesłane adresy IP serwerów DNS (ostatni komunikat przed odłączeniem się od terminala). Za obsługą opcja adresów IP serwerów DNS stoi opcja usepeerdns, dzięki kórej adresy IP zostaną umieszczone w pliku /etc/ppp/resolv.conf a następnie przekopiowane przez nasz skrypt /etc/ppp/ip-up.local do /etc/resolv.conf Zakończenie połączenia następuje przez wywołanie:
killall pppd
Ta barbarzyńska z pozoru metoda zakończenia połączenia sprawuje się wyśmienicie, w tym wywołuje skrypty /etc/ppp/if-down i /etc/ppp/if-down.local (czyli zamyka połączenie w sposób jaki byśmy oczekiwali).

W przypadku połączenia GPRS istotna jest ilość wysłanych i odebranych bajtów. Informację tę można zdobyć wywołując komendę pppstats (przed zakończeniem połączenia!).

7.13.14.3. Instalacja Sony Ericsson GC75, GC75e, GC85

W tym podrozdziale zostanie opisana instalacja modemow GPRS Sony Ericsson GC75 i GC75e oraz konfiguracja pppd dla połączenia GPRS IDEA.

Obie karty PCMCIA są standardowo wykrywane jako modemy.Instalacja obu modeli sprowadza się do odpowiedniej konfiguracji jądra.

I tak dla:

Przy tak skonfigurowanym jądru po wsunięciu karty pcmcia do slotu powinniśmy zobaczyc komunikat wygladający mniej wiecej tak:

ttyS0 at I/O 0x3f8 (irq = 3) is a 16550A
Jeśli korzystamy z X'ow możemy skorzystać z polecenia dmesg.

W tym momencie nasz modem pcmcia jest gotowy do pracy. Została nam jeszcze konfiguracja pppd.

7.13.14.4. Instalacja Sony Ericsson GC89 oraz konfiguracja blueconnect.

Instalacja Sony Ericsson GC89 mozna podzielic na dwie czesci: modułu wlan i modemu edge/gprs.

Aby zainstalować modem edge/gprs musimy posiadać odpowiednio skonfigurowane jądro. Możemy skorzystać z opisu dla reszty kart pcmcia Sony Ericsson z poprzedniego rozdziału Sekcja 7.13.14.3. Po poprawnym skonfigurowaniu jądra i włożeniu karty pcmcia do gniazda powinniśmy zobaczyć podobny komunikat:

ttyS14 at I/O 0x4000 (irq = 21) is a 16550A
Na rożnych komputerach może być to odpowiednio ttyS6, ttyS4, irq = 169, itp... . Następnym krokiem jest upewnienie się, że istnieje dowiązanie /dev/ttyS14, a jeśli go nie ma powinniśmy je utworzyć mknod'em (tak trzeba zrobic w przypadku Debian for Szarp).
# mknod /dev/ttyS14 c 4 78
Następnie musimy zainstalować setserial, w przypadku Debiana możemy posłużyć się apt-get.
# apt-get install setserial
Nasza karta jest "dość wybredna" jeśli chodzi o predkości z jaką bedzie chciala z nami rozmawiać. Mamy dwie możliwośći (bynajmniej tyle udalo sie znaleźć). Podam je odrazu z przykładem konfiguracji portu szeregowego:

Teraz musimy pamietać o poprawnym wpisaniu prędkości do konfiguracji pppd.

Aby uruchomić moduł wlan, musimy skorzystać z ndiswrapper'a. Dokładny opis instalacji ndiswrappera znajdziemy w Sekcja 7.12.2. Nasze drivery znajdziemy na dołączonej płycie do SE GC89 (Wlan-2k/semwl5.inf).

Konfiguracja pppd dla blueconnect znajduje się w paczce edge-gprs udostępnianej przez Praterm S.A. Po zainstalowaniu jej musimy wypelnić pole z naszym numerem pin w pliku /etc/chatscripts/blueconnect-chat, i sprawdzić czy wszystkie dane w /etc/ppp/peers/blueconnect są poprawne, jak scieżka do modemu i jego predkość. Dla tych którzy nie mają Debiana, poniżej znajduje się zestaw plików do pppd.

/etc/ppp/peers/blueconnect

updetach
#debug
connect "chat -v -f /etc/chatscripts/blueconnect-chat"
38400
/dev/ttyS14
crtscts
local
noipdefault
defaultroute
usepeerdns
novj
nobsdcomp
nopcomp
noaccomp
#noauth
user "erainternet"
/etc/chatscripts/blueconnect-chat
ABORT "NO DIALTONE"
ABORT "NO ERROR"
ABORT "NO ANSWER"
ABORT "BUSY"
TIMEOUT 60
"" "AT"
OK "AT?F" #W miejscu "?" powinien być ampersand, z pewnych względów nie moglem go użyć.
OK "AT+CPIN=TWOJ_NUMER_PIN"
OK "AT+CMEE=1d\d\d\d\d\d\d\d\d\d\d\d\d\d\d\d\d\d\d\d\"
OK 'AT+CGDCONT=1,"IP","erainternetd\d\d\d\d\d\d\d\d\d\d\d\d\d\d\d\d\d\d\d\"'
OK "ATDT*99***1#"
Musimy jeszcze pamietać o wpisaniu do /etc/ppp/pap-secrets
erainternet * erainternet
Teraz możemy już wpisać pppd call blueconnect.

7.13.14.5. Konfiguracja pppd do zestawiania połączeń EDGE i GPRS.

Praterm S.A udostępnia pakiet, "edge-gprs_1.0.0-1_i386.deb", który zawiera gotwy zestaw plików konfiguracyjnych pppd. Dla tych którzy nie korzystają z debów, pomocny może być poniższy opis. Pierwszym etapem jest zalogowanie sie do sieci GSM. Mozemy do tego celu użyć programu minicom, lub dopisac te dwie linijki do "chatscript'a". NP.

minicom --noinit /dev/ttyS0
A nastepnie po pojawieniu się okienka wpisujemy.
AT+CFUN=1,1
AT+CPIN=YOUR_SIM_CARD_PIN
Pozostalo nam juz tylko nawiązanie połączenia GPRS (EDGE). Powinniśmy stworzyć nastepujące pliki np: