Instalacja i uruchomienie połączenia poprzez sieć komórkową (GPRS/EDGE/UMTS/HSPA/LTE/CDMA)
Ostatnia zmiana: 2016-02-03 07:55

Czasami zdarza się, że padnie połączenie do naszego ISP i zwykle dzieje się to wtedy, kiedy koniecznie trzeba coś zrobić. Być może przydało by się jakieś łącze alternatywne, umożliwiające dostęp do internetu w standardowy sposób. Czemu nie sieć komórkowa? Ponieważ większość nowych telefonów posiada modemy, dostępne są też oddzielne modemy GSM, to dlaczego by nie wykorzystać tego jako źródło internetu? Dostępne są specjalne rutery przeznaczone do obsługi sieci komórkowych - np. Linksys WRT54G3G czy Huawei D100, ale przecież już mamy jeden, więc...

Dla przypomnienia: w zależności od obsługiwanej technologii przez modem i zasięgu/dostępu naszego operatora komórkowego, możliwe są do uzyskania następujące prędkości:

GPRS - do 56kbit/s
EDGE - do 250kbit/s
UMTS - do 384kbit/s
HSDPA - do 7,2Mbit/s
HSPA+ - do 42Mbit/s
LTE - do 150Mbit/s

To są prędkości teoretycznie, w praktyce w zależności od umiejscowienia modemu i obciążenia stacji bazowych można np. na HSDPA osiągnąć 2-4Mbit/s.
Poniższy poradnik dotyczy zarówno podłączonego telefonu GSM pod USB, jak również popularnych modemów na USB np. Huawei, ZTE czy Sierra.

Obsługa modemów w OpenWrt

Do działania modemu niezbędne jest zainstalowanie kilku składników:

  • sterowniki do USB
Zwykłe wsparcie dla USB, pozwalające routerowi "widzieć" urządzenia na usb.

  • program przełączający modem
Zwykle po podłączeniu modem nie jest od razu gotowy do pracy tylko udostępnia wirtualny CD-ROM zawierający np. program do obsługi modemu pod Windows. Aby działał jako zwykły modem należy użyć programu który wyłączy ten cd-rom i przełączy go w odpowiedni tryb pracy. Wykorzystywany jest do tego zwykle pakiet usb-modeswitch który wykonuje tą czynność automatycznie. W poprzednich wydaniach OpenWrt pakiet ten podzielony był na dwie części - sam program usb-modeswitch oraz dane zawierające informacje o poszczególnych modemach - usb-modeswitch-data. W nowych wydaniach OpenWrt został usunięty pakiet usb-modeswitch-data, a jego zawartość została przeniesiona w zmienionej formie do pakietu usb-modeswitch (który także został zmieniony i nie zawiera już ani skryptów ani programu usb-modeswitch, całość została zastąpiona programem usbmode). Dane do przełączania modemów zawarte poprzednio w katalogu /etc/usb-modeswitch.d zostały zastąpione jednym plikiem /etc/usb-mode.json z którego odczytywane są niezbędne informacje.

  • sterowniki do modemu
W zależności od typu modemu i jego producenta, niezbędne jest zainstalowanie odpowiednich sterowników. Zwykle używa się jednego o nazwie option, ale mogą być także specyficzne dla producenta (sierrawireless) lub ze względu na protokół (qmi, mbim).

  • skrypty obsługujące dany typ połączenia
Ostatni element to same skrypty pozwalające nawiązać podłączenie korzystając z określonego sposobu komunikacji z modemem. W zależności od modelu modemu może on wymagać połączenia w jedynym z kilku trybów: RAS (z wykorzystaniem ppp, ograniczona przepustowość do ok 20-30Mbps), NDIS (ncm, qmi, mbim, directip) lub w trybie karty sieciowej. Niestety trzeba wiedzieć w jakich trybach modem potrafi pracować i wybrać odpowiedni tryb połączenia. Niektóre modemy potrafią pracować w kilku różnych trybach (np. RAS i NDIS).

Wsparcie dla usb i program przełączający

Do instalacji jest podstawowa obsługa USB i pakiet do przełączania modemów:


    # opkg update
    # opkg install kmod-usb-core kmod-usb2 usb-modeswitch libusb-1.0




Dalej niezbędna jest konfiguracja konkretnego typu połączenia. Niektóre z niżej wymienionych pakietów dostępne są tylko w moim repozytorium (nie są częścią oficjalnego wydania BB/CC). Należy pamiętać o podaniu właściwego pinu i APN (ew. jeszcze opcji username/password). Opcja device może być inna - należy to odpowiednio ustawić w zależności od posiadanego modelu modemu.

W niektórych obrazach (np. LuCI czy Gargoyle) podane pakiety mogą już być zainstalowane, wystarczy więc odpowiednio tylko skonfigurować połączenie. Jeżeli nie ma wymaganych pakietów i nie ma połączenia z internetem - można je ściągnąć "ręcznie" z repozytorium i zainstalować - patrz faq.

Chaos Calmer

Konfiguracja jest praktycznie taka sama jak dla Barrier Breaker i należy posłużyć się taki samymi ustawieniami. W systemie doszedł jeszcze jeden pakiet o nazwie wwan, który potrafi zautomatyzować wybór sterownika modemu


    # opkg install wwan comgt chat comgt-ncm comgt-directip uqmi umbim usb-modeswitch
    # uci del network.wan
    # uci set network.wan=interface
    # uci set network.wan.proto=wwan
    # uci set network.wan.pincode=1234
    # uci set network.wan.apn=internet
    # uci commit network
    # reboot

Czyli sekcja wan powinna wyglądać następująco:


    config wan
        option proto wwan
        option pincode 1234
        option apn internet

Skrypty automatycznie wykrywają rodzaj modemu i ustawiają właściwy typ połączenia. Wykrywanie odbywa się na podstawie bazy danych modemów, która zawarta jest w plikach /lib/network/wwan/*. W miarę możliwości należy unikać tego automatu, bo nie zawsze właściwie wykrywa typ połączenia i interfejsy. Korzystniej jest ustawić konkretny określony typ połączenia, tak jak przedstawiono poniżej.

Barrier Breaker

Przykładowe konfiguracje. Jeszcze raz przypomnienie: należy ustawić odpowiedni PIN (lub go pominąć jeżeli karta SIM nie ma ustawionego pinu), właściwy APN obraz odpowiednią opcję device - zależy ona o zainstalowanego firmware w modemie i konfiguracji portów.

Obsługa modemów w trybie RAS (ppp)

Dotyczy większości modemów wyposażonych w interfejsy szeregowe np. Huawei E169, Huawei E173, Huawei E3131


    # opkg install chat comgt kmod-usb-serial kmod-usb-serial-option
    # uci del network.wan
    # uci set network.wan=interface
    # uci set network.wan.proto=3g
    # uci set network.wan.service=umts
    # uci set network.wan.device=/dev/ttyUSB0
    # uci set network.wan.pincode=1234
    # uci set network.wan.apn=internet
    # uci commit network
    # reboot

Czyli sekcja wan powinna wyglądać następująco:


    config 'interface' 'wan'
        option 'proto' '3g'
        option 'service' 'umts'
        option 'device' '/dev/ttyUSB0'
        option 'pincode' '1234'
        option 'apn' 'internet'

Obsługa modemów w trybie RAS korzystających ze sterowników Abstract Control Modem (ACM)

Dotyczy niektórych modeli modemów np. Nokii czy telefonów komórkowych pracujących w trybie modemu.


    # opkg install chat comgt kmod-usb-acm
    # uci del network.wan
    # uci set network.wan=interface
    # uci set network.wan.proto=3g
    # uci set network.wan.service=umts
    # uci set network.wan.device=/dev/ttyACM0
    # uci set network.wan.pincode=1234
    # uci set network.wan.apn=internet
    # uci commit network
    # reboot

Czyli sekcja wan powinna wyglądać następująco:


    config 'interface' 'wan'
        option 'proto' '3g'
        option 'service' 'umts'
        option 'device' '/dev/ttyACM0'
        option 'pincode' '1234'
        option 'apn' 'internet'


Obsługa modemów w trybie NCM

Dotyczy nowych modemów LTE np. Huawei E3272s-153, Huawei E3372s-153 (nie HiLink!)


    # opkg install chat comgt-ncm kmod-usb-net-cdc-ncm kmod-usb-serial kmod-usb-serial-option kmod-usb-net-huawei-cdc-ncm
    # uci del network.wan
    # uci set network.wan=interface
    # uci set network.wan.proto=ncm
    # uci set network.wan.device=/dev/ttyUSB0 # lub /dev/cdc-wdm0
    # uci set network.wan.pincode=1234
    # uci set network.wan.apn=internet
    # uci commit network
    # reboot

Czyli sekcja wan powinna wyglądać następująco:


    config 'interface' 'wan'
        option 'proto' 'ncm'
        option 'device' '/dev/ttyUSB0'
        option 'pincode' '1234'
        option 'apn' 'internet'

Obsługa modemów w trybie Huawei NCM

Dotyczy modemów wymagających specjalnego protokołu komunikacyjnego Huawei w trybie NCM, np. Huawei E3131s-2


    # opkg install chat comgt-ncm kmod-usb-net-huawei-cdc-ncm 
    # uci del network.wan
    # uci set network.wan=interface
    # uci set network.wan.proto=ncm
    # uci set network.wan.device=/dev/cdc-wdm0
    # uci set network.wan.pincode=1234
    # uci set network.wan.apn=internet
    # uci commit network
    # reboot

Czyli sekcja wan powinna wyglądać następująco:


    config 'interface' 'wan'
        option 'proto' 'ncm'
        option 'device' '/dev/cdc-wdm0'
        option 'pincode' '1234'
        option 'apn' 'internet'

Obsługa modemów w trybie QMI

Dotyczy nowych modemów LTE np. Huawei E398, ZTE MF821 lub niektórym modemów LTE na miniPCIe


    # opkg install uqmi kmod-usb-net-qmi-wwan
    # uci del network.wan
    # uci set network.wan=interface
    # uci set network.wan.proto=qmi
    # uci set network.wan.device=/dev/cdc-wdm0
    # uci set network.wan.pincode=1234
    # uci set network.wan.apn=internet
    # uci commit network
    # reboot

Czyli sekcja wan powinna wyglądać następująco:


    config 'interface' 'wan'
        option 'proto' 'qmi'
        option 'device' '/dev/cdc-wdm0'
        option 'pincode' '1234'
        option 'apn' 'internet'

Obsługa modemów HiLink (w trybie karty sieciowej)

Dotyczy nowych modemów LTE np. Huawei E3272 HiLink, Huawei E3372 HiLink


    # opkg install kmod-usb-net-cdc-ether
    # uci del network.wan
    # uci set network.wan=interface
    # uci set network.wan.proto=dhcp
    # uci set network.wan.ifname=eth2
    # uci commit network
    # reboot

Czyli sekcja wan powinna wyglądać następująco:


    config 'interface' 'wan'
        option 'proto' 'dhcp'
        option 'ifname' 'eth2'

Gdzie eth2 to dodatkowy interfejs utworzony przez sterownik (może być różny w zależności od routera i ilości modemów - może to być także np. eth1; zobacz w logach pod jaką nazwą się pojawił). Interfejs można także znaleźć poleceniem:


    # grep -Hi "cdc ethernet control" /sys/class/net/*/device/interface | cut -f5 -d/

APN i pin ustawia się w gui modemu (które jest dostępne pod adresem http://192.168.8.1 lub http://192.168.1.1 - zależy od typu modemu). Może być wymagana zmiana adresu IP LAN routera (np. na 192.168.2.1).

Obsługa modemów "hostless"

Dotyczy nowych modemów LTE np. ZTE MF823, niektóre modele telefonów komórkowych


    # opkg install kmod-usb-net-rndis
    # uci del network.wan
    # uci set network.wan=interface
    # uci set network.wan.proto=dhcp
    # uci set network.wan.ifname=usb0
    # uci commit network
    # reboot

Czyli sekcja wan powinna wyglądać następująco:


    config 'interface' 'wan'
        option 'proto' 'dhcp'
        option 'ifname' 'usb0'

Gdzie usb0 to dodatkowy interfejs utworzony przez sterownik (może być różny w zależności od routera i ilości modemów). APN i pin ustawia się w gui modemu. Może być wymagana zmiana adresu IP LAN routera.

Obsługa modemów w trybie DirectIP

Dotyczy głównie modemów Sierra Wireless


    # opkg install comgt-directip kmod-usb-net-sierrawireless
    # uci del network.wan
    # uci set network.wan=interface
    # uci set network.wan.proto=directip
    # uci set network.wan.device=/dev/ttyUSB3
    # uci set network.wan.pincode=1234
    # uci set network.wan.apn=internet
    # uci commit network
    # reboot

Czyli sekcja wan powinna wyglądać następująco:


    config 'interface' 'wan'
        option 'proto' 'directip'
        option 'device' '/dev/ttyUSB3'
        option 'pincode' '1234'
        option 'apn' 'internet'

Obsługa modemów w trybie MBIM

Dotyczy nowych modemów LTE oraz innych np. D-Link DWM-156 ver. A4


    # opkg install umbim kmod-usb-net-cdc-mbim
    # uci del network.wan
    # uci set network.wan=interface
    # uci set network.wan.proto=mbim
    # uci set network.wan.device=/dev/cdc-wdm0
    # uci set network.wan.pincode=1234
    # uci set network.wan.apn=internet
    # uci commit network
    # reboot

Czyli sekcja wan powinna wyglądać następująco:


    config 'interface' 'wan'
        option 'proto' 'mbim'
        option 'device' '/dev/cdc-wdm0'
        option 'pincode' '1234'
        option 'apn' 'internet'

Obsługa modemów HSO

Dotyczy głównie modemów Option


    # opkg install comgt comgt-hso kmod-usb-net kmod-usb-net-hso
    # uci del network.wan
    # uci set network.wan=interface
    # uci set network.wan.proto=hso
    # uci set network.wan.device=/dev/ttyHS3
    # uci set network.wan.ifname=hso0
    # uci set network.wan.pincode=1234
    # uci set network.wan.apn=internet
    # uci commit network
    # reboot

Czyli sekcja wan powinna wyglądać następująco:


    config 'interface' 'wan'
        option 'proto' 'hso'
        option 'device' '/dev/ttyHS3'
        option 'ifname' 'hso0'
        option 'pincode' '1234'
        option 'apn' 'internet'

Wartość opcji device (odpowiedni interfejs) można znaleźć poleceniem


    # grep Application /sys/class/tty/*/hsotype

Attitude Adjustment

Poniższe informacje zostały zachowane w celach archiwalnych i nie należy używać poniższych ustawień o ile faktycznie nie jest używany OpenWrt w wersji AA (12.09)

Szybka instalacja



    # opkg update
    # opkg install kmod-usb-core kmod-usb2 kmod-usb-serial kmod-usb-serial-option usb-modeswitch usb-modeswitch-data libusb
    # opkg install chat comgt
    # uci del network.wan
    # uci set network.wan=interface
    # uci set network.wan.proto=3g
    # uci set network.wan.service=umts
    # uci set network.wan.device=/dev/ttyUSB0
    # uci set network.wan.pincode=1234
    # uci set network.wan.apn=internet
    # uci set network.wan.username=internet
    # uci set network.wan.password=internet
    # uci commit network
    # ifup wan

czyli w pliku /etc/config/network sekcja wan powinna wyglądać następująco:


    config 'interface' 'wan'
        option 'proto' '3g'
        option 'service' 'umts'
        option 'device' '/dev/ttyUSB0'
        option 'pincode' '1234'
        option 'apn' 'internet'
        option 'username' 'internet'
        option 'password' 'internet'

Należy pamiętać o podaniu właściwego urządzenia, kodu PIN, apn, loginu i hasła stosowanie do wymagań danego operatora (dane mogą się różnić dla określonych usług):

  • Aero2: darmowy, (puste), (puste) <- darmowy internet od Aero2
  • Cyfrowy Polsat: multi.internet, (puste), (puste)
  • Orange: internet, internet, internet
  • Play: internet, (puste), (puste)
  • Plus: internet, (puste), (puste)
  • T-Mobile: internet, (puste), (puste)
Jeżeli tworzymy inną sekcję niż wan - dodatkowo trzeba ustawić firewall

Opcja service to nie jest wymuszenie trybu pracy! To tylko przełącznik CDMA/GSM. Ma więc zostać umts, niezależnie od tego czy mamy edge czy lte.

Dla CDMA ustawienia wyglądają następująco:


    config 'interface' 'wan'
        option 'proto' '3g'
        option 'service' 'cdma'
        option 'device' '/dev/ttyUSB0'
        option 'username' 'CDMA'
        option 'password' 'CDMA'

Oczywiście należy pamiętać o ustawieniu odpowiedniego urządzenia, użytkownika i ew. hasło:

  • Sferia: sferia, sferia
  • Orange: cdma@orange, orange
  • Nordisk Polska: CDMA, CDMA
  • Plus: cdma@plus, (puste)
Zobacz także wsparcie dla modemów GSM w OpenWrt.

Gotowe obrazy

Katalog do pobrania obrazów: http://dl.eko.one.pl/gargoyle-pl/attitude_adjustment/ar71xx/
Jest to polska wersja systemu Gargoyle ze wsparciem dla modemów przeznaczona dla routerów z rodziny ar71xx. Lista zmian oraz zawartość obrazów dostępna jest tutaj.

Obsługiwane są popularne modemy na USB, np. firmy Huawei lub Sierra Wireless. W razie problemów z połączeniem należy zapoznać z konfiguracją przedstawioną poniżej, a także ze wsparciem dla modemów GSM w OpenWrt oraz projektem 3ginfo. Dla modemów LTE warto zaznajomić się z opisem tych modemów.

Jeżeli modem ma slot na kartę mikro SD to można na nim wykonać extroot - rozszerzenie flash, o ile modem zostanie przełączony w odpowiedni tryb pracy.

Połączenie można "wyklikać" instalując Gargoyle PL. Przykładową konfigurację dla sieci Orange zaprezentowano poniżej:



USB

Oczywiście w systemie musi istnieć wsparcie dla usb, więc:


    # opkg update
    # opkg install kmod-usb-core kmod-usb2 kmod-usb-serial kmod-usb-serial-option usb-modeswitch usb-modeswitch-data libusb

W zależności od posiadanego modemu GSM niezbędne może okazać się także zainstalowanie pakietu kmod-usb-serial-sierrawireless (do urządzeń Sierra Wireless) lub kmod-hso (modemy firmy Option). Dla telefonów/smartfonów czy innych modemów podłączonych przez USB może okazać się niezbędne zainstalowanie pakietu kmod-usb-acm. Urządzeniem jest wtedy /dev/ttyACM0.

PPP

Do poprawnego działania połączenia ppp (tryb RAS znany z windows) niezbędne jest jeszcze zainstalowanie pakietów kmod-ppp, ppp (powinny być w systemie) oraz chat i comgt


    # opkg install kmod-ppp ppp chat comgt

Pakiet comgt pierwotnie przeznaczony był dla modemów Option/Vodafone, ale zawiera uniwersalne skrypty do połączenia ppp, więc będzie użyteczny do tego celu.

Sprzęt

Pod podłączeniu modemu (telefonu Nokia E51 w tym przypadku) zostanie zapewne wyświetlony w logu (od odczytania przez logread) podobny komunikat do tego


    hub.c: new USB device 01:03.0-2, assigned address 3
    usb.c: USB device 3 (vend/prod 0x421/0x42) is not claimed by any active driver.

Urządzenie zostało podłączone, ale nie jest obsługiwane przez żaden sterownik. To normalna sprawa, bo możemy posiadać nowsze urządzenie. W takim razie należy w pliku /etc/modules.d/60-usb-serial zmienić wpis, żeby wyglądał tak


    usbserial vendor=0x421 product=0x42

gdzie wartości vendor oraz product należy oczywiście wpisać właściwe wg informacji pokazanej w logach. Ta opcja dotyczy tylko urządzeń obsługiwanych bezpośrednio przez sterownik usbserial. Po zmianach należy zresetować ruter lub załadować moduł ponownie:


    # rmmod usbserial
    # insmod usbserial

i powinny pokazać się właściwe komunikaty


    usb.c: registered new driver serial
    usbserial.c: USB Serial support registered for Generic
    usbserial.c: Generic converter detected
    usbserial.c: Generic converter now attached to ttyUSB0 (or usb/tts/0 for devfs)
    usbserial.c: Generic converter detected
    usbserial.c: Generic converter now attached to ttyUSB1 (or usb/tts/1 for devfs)
    usbserial.c: USB Serial Driver core v1.4

Większość obecnych modemów 3G obsługiwana jest przez sterownik option, dodanie obsługi nowego urządzenia sprowadza się do wydania polecenia np.


    # echo "12d1 1506" > /sys/bus/usb-serial/drivers/option1/new_id

Gdzie liczby to odpowiednio vendor i product odczytany z modemu.
Modem jest gotowy i dostępny. Dla kernela z serii będzie to interfejs /dev/ttyUSB0, dla kernela z serii 2.4 - /dev/usb/tts/0.

UWAGA: niektóre modemy/telefony wymagają specjalnej konfiguracji żeby uruchomić modem w nich. Nokia 6630 (Symbian 2nd) nie wymaga żadnych ustawień. Nokia E51 (Symbian 3th) po podłączeniu do usb wymaga wybrania opcji "PC Suite" a nie "Transfer danych" bo inaczej będzie widoczna jako zwykły dysk. Popularny modem Huawei E220 i inne tego producenta (E160, E169, E170, E180) wymagają po podłączeniu przestawienia w tryb modemu (program huaweiaktbbo lub usb_modeswitch). Inne modemy/telefony mogą wymagać innych ustawień. Po instalacji pakietu pakietu usb-modeswitch i usb-modeswitch-data nastąpi automatyczne przełączenie urządzenia w tryb modemu; jeżeli to nie nastąpiło - patrz rozdział poniżej.

Oczywiście - musimy mieć włączoną usługę pakietowej transmisji danych (GPRS) u operatora ale o tym, mam nadzieję, nie trzeba przypominać.

Konfiguracja

Jest już banalna - w pliku /etc/config/network należy zmienić sekcję wan lub dodać nową. Ja dodałem nową, bo chciałem aby to łącze było zapasowe a nie zastępowało mi moje podstawowe. Nowa sekcja powinna wyglądać tak:


    config interface HSDPA
        option proto 3g
        option service umts
        option device /dev/ttyUSB0
        option pincode 1234
        option apn internet

Opcja pincode można pominąć, jeżeli kod pin jest usunięty z karty. Jeżeli korzystamy z innego operatora, należy zmienić apn oraz dodać obsługę user/password. Np. dla Ery wygląda to następująco:


        option apn erainternet
        option username erainternet
        option password erainternet

Dla pozostałych operatorów należy odpowiednio zmienić apn, user oraz password.

Należy pamiętać o ustawieniu odpowiedniego urządzenia: /dev/ttyUSB0 dla kernela 2.6 lub /dev/usb/tts/0 dla kernela 2.4. Dla modułu kmod-usb-acm jest to natomiast /dev/ttyACM0.
W przypadku problemów w połączeniu można dodać opcję debug do ppp:


    option pppd_options debug

Firewall

Aby dodatkowo umożliwić korzystanie z tego połączenia komputerom podłączonym przez wifi lub kabel, należy dodać odpowiednie reguły do firewalla. UWAGA: jeżeli sekcja nazywa się wan NIE musisz tego robić. Wymagane jest tylko w przypadku innych nazw sekcji (jak HSDPA w tym przypadku). Do dopisania do /etc/config/firewall:


    config zone
        option name HSDPA
        list network HSDPA
        option input REJECT
        option output ACCEPT 
        option forward REJECT
        option masq 1 

    config forwarding 
        option src lan
        option dest HSDPA

Uruchomienie

Ponieważ całość została skonfigurowana w nowej sekcji, aby uruchomić połączenie należy wydać tylko jedno polecenie:


    # ifup HSDPA

Po kilku sekundach połączenie powinno się ustanowić i ruter powinien normalnie udostępnić internet dla naszej sieci. Właśnie zrobiliśmy Router 3G!
Na konsoli mogą pojawić się rożne komunikaty, np


    SIM ready
    PIN set successfully

Aby zakończyć połączenie:


    # ifdown HSDPA

Testy

Jeżeli połączenie zostało zestawione powinien pojawić się interfejs 3g-HSDPA (lub o podobnej nazwie)


    root@OpenWrt:# ifconfig
    [...]
    3g-HSDPA Link encap:Point-to-Point Protocol  
        inet addr:77.112.61.221  P-t-P:10.6.6.6  Mask:255.255.255.255
        UP POINTOPOINT RUNNING NOARP MULTICAST  MTU:1500  Metric:1
        RX packets:746 errors:0 dropped:0 overruns:0 frame:0
        TX packets:4711 errors:0 dropped:0 overruns:0 carrier:0
        collisions:0 txqueuelen:3 
        RX bytes:41745 (40.7 KiB)  TX bytes:1712493 (1.6 MiB)

Powinna także zmienić się trasa domyślna na 3g-HSDPA


    root@OpenWrt:# route
    Kernel IP routing table
    Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
    10.6.6.6        *               255.255.255.255 UH    0      0        0 3g-HSDPA
    [...]
    default         10.6.6.6        0.0.0.0         UG    0      0        0 3g-HSDPA

Dla testów - wynik pingowania jednego z portali


    root@OpenWrt:# ping -c 10 eko.one.pl
    PING eko.one.pl (94.152.131.216): 56 data bytes
    64 bytes from 94.152.131.216: seq=0 ttl=59 time=353.604 ms
    64 bytes from 94.152.131.216: seq=1 ttl=59 time=373.311 ms
    64 bytes from 94.152.131.216: seq=2 ttl=59 time=373.101 ms
    64 bytes from 94.152.131.216: seq=3 ttl=59 time=382.899 ms
    64 bytes from 94.152.131.216: seq=4 ttl=59 time=352.661 ms
    64 bytes from 94.152.131.216: seq=5 ttl=59 time=372.452 ms
    64 bytes from 94.152.131.216: seq=6 ttl=59 time=342.253 ms
    64 bytes from 94.152.131.216: seq=7 ttl=59 time=372.029 ms
    64 bytes from 94.152.131.216: seq=8 ttl=59 time=371.806 ms
    64 bytes from 94.152.131.216: seq=9 ttl=59 time=361.605 ms

    --- eko.one.pl ping statistics ---
    10 packets transmitted, 10 packets received, 0% packet loss
    round-trip min/avg/max = 342.253/365.572/382.899 ms

Czas odpowiedzi ping będzie tym mniejszy, im nowocześniejszej technologii będziemy używać. Dla LTE możliwe jest osiągnięcie 10-12ms.

Wymuszenie trybu pracy

Najważniejsze to znalezienie wymaganego polecenia AT. Niektóre wymienione są na forum bez-kabli.pl; każdy typ modemu może wymagać innych poleceń. Po ustaleniu polecenia wymuszenie danego trybu pracy można wykonać na kilka sposobów. W podanych przykładach podano wymuszenie trybu 3G dla modemów Huawei.
Uwaga ponownie: opcja service w konfiguracji to nie jest wymuszenie trybu pracy! To tylko przełącznik CDMA/GSM. Ma więc zostać umts, niezależnie od tego czy mamy edge czy lte. Zmienia się to tylko dla modemów CDMA.
UWAGA: w najnowszych builach Gargoyle PL wymuszenie dostępnie jest jako jedna z opcji konfiguracyjnych w GUI - obsługuje modemu Option, Novatel, Huawei, lecz nie wszystkie modele urządzeń to obsługują.

plik chat



    # vi /etc/chatscripts/3g.chat

i dodajemy odpowiednie polecenie, np może to wyglądać tak:


    ABORT BUSY
    ABORT 'NO CARRIER'
    ABORT ERROR
    REPORT CONNECT
    TIMEOUT 10
    "" "AT&F"
    OK "ATE1"
    OK "AT^SYSCFG=14,2,3FFFFFFF,2,4"   <-- tu dodano linię
    OK 'AT+CGDCONT=1,"IP","$USE_APN"'
    SAY "Calling UMTS/GPRS"
    TIMEOUT 30
    OK "ATD*99***1#"
    CONNECT ' '

ręczne podanie polecenie

Przez wpisanie tego polecenie np. do /etc/rc.local, który uruchamia się przy starcie systemu


    MODE="AT^SYSCFG=14,2,3FFFFFFF,2,4" gcom -d /dev/ttyUSB0 -s /etc/gcom/setmode.gcom

jako pierwszą linię w pliku /etc/rc.local.

Oraz inny sposób, które zadziała tylko w moich obrazach Backfire (bo są przerobione skrypty)

konfiguracja sieci



    # uci set network.wan.mode="AT^SYSCFG=14,2,3FFFFFFF,2,4"
    # uci commit network

Przełączenie urządzenia w tryb modemu

W niektórych przypadkach po podłączeniu modem działa jako wirtualny CDROM, zawierający sterowniki dla Windows, MacOS lub Linuksa. Aby przełączyć modem w pożądany tryb należy uruchomić program usb_modeswitch z odpowiednimi parametrami.

Po instalacji usb-modeswitch oraz pakietu usb-modeswitch-data zbędne staje się ręczne modyfikowanie jakichkolwiek plików. Pakiety te zawierają już cały mechanizm automatycznie wykrywający i przełączający znane modemy. Poniższy tekst do końca akapitu został pozostawiony jedynie w celach informacyjnych.

Najpierw jednak należy znaleźć identyfikator urządzenia. Polecenie:


    # cat /proc/bus/usb/devices 

wyświetli informację o połączonych urządzeniach USB. W przypadku modemu E160 interesujące są linie


    P:  Vendor=12d1 ProdID=1003 Rev= 0.00
    S:  Manufacturer=HUAWEI Technology
    S:  Product=HUAWEI Mobile

Modem ukrywa się pod identyfikatorem Vendor=12d1/ProdID=1003. Przełączenie modemu to wywołanie programu usb_modeswitch z odpowiednimi parametrami:


    # usb_modeswitch -v 12d1 -p 1003 -c /etc/usb_modeswitch.d/12d1:1003

Gdzie 12d1:1003 to pobrane wcześniej VendorID/ProdID

Modem można też przełączyć "na stałe". Dla modemów Huawei wykonuje się to poleceniem AT^U2DIAG (zobacz jakie parametry przyjmuje: http://3g-modem.wetpaint.com/page/Huawei+AT-commands#fbid=Y0St-8SoSZa)
Dla wydania Barrier Breaker patrz informacje na końcu poradnika.

Odczytywanie smsów

Patrz wysyłanie i odbieranie wiadomości SMS

Odczyt siły sygnału



    # echo -e "AT+CSQ\r" >/dev/ttyUSB2 && grep -m1 "CSQ:" /dev/ttyUSB2

lub


    # gcom -d /dev/ttyUSB2 sig

lub patrz projekt 3ginfo.

Automatyczny restart połączenia

Generalnie po zerwaniu połączenia ppp samoczynnie ponawia próbę i łączy się ponownie. Bywają jednak sytuacje, kiedy modem połączenie trzyma, natomiast nie ma możliwości przesłania żadnego pakietu, nawet ping nie przechodzi.
Tworzymy skrypt o nazwie tester.sh w katalogu /bin


    # touch /bin/tester.sh
    # chmod 755 /bin/tester.sh

o następującej zawartości


    #!/bin/sh
    if ! ping -q -c 1 -W 10 google.com > /dev/null; then
        (ifup wan) &
    fi

Skrypt pinguje adres google.com - jeżeli nie dostanie odpowiedzi przez 10s to wznawia połączenie na interfejsie wan.
Następnie można dodać wywołanie tego skryptu do crona i uruchamiamy go:


    # /etc/init.d/cron stop
    # echo "*/2 * * * * /bin/tester.sh" >> /etc/crontabs/root
    # /etc/init.d/cron enable
    # /etc/init.d/cron start

Od tej pory co 2 minuty nastąpi wywołanie skryptu. Jeżeli brama nie odpowie w ciągu 10s - nastąpi wznowienie połączenia.

Podtrzymania połączenia HSPA+

Dodajemy do pliku /etc/rc.local jako pierwszą linię:


    (while true; do ping google.com > /dev/null; sleep 3; done) &

Odblokowanie wszystkich częstotliwości modemów Huawei

Problem z modemami (zwłaszcza z Play) opisany jest w wątki z forum bez-kabli.pl. Pod OpenWrt sprowadza się to do wydania polecenia:


    # ifdown wan
    # echo "AT^SYSCFG=2,2,3FFFFFFF,1,2" > /dev/ttyUSB0

Generalnie to polecenie służy do odblokowania wszystkich częstotliwości oraz wybranie 3G jako preferowanego, więc jest przydatne dla większości modemów Huawei.

Opłaty

Nic nie ma za darmo - opłaty za połączenie zależne są od stawki danego operatora. W chwili pisania tego poradnika w mojej taryfie (operator: Plus) koszt to ok 12gr za 100KB przesłanych danych. Można wykorzystać kartę prepaidową , wtedy koszt spada do 1gr za 100KB. Można wykupić specjalny pakiet na transmisję danych - np. 100MB za ok 5zł lub dokupić iPlusa i mieć limit 8GB za 60zł. Stawki u różnych operatorów znacznie się różnią, więc należy wybrać najkorzystniejszą i o najlepszym zasięgu/technologi w miejscu wykorzystania.

Serwery na łączu 3G

Wszyscy polscy operatorzy blokują ruch przychodzący z zewnątrz, więc mając łącze przez modem 3G nie ma da się na nim postawić serwera WWW czy dostać się do routera przez ssh, mimo że dostajemy adres IP z puli publicznej. Aby to było możliwe należy wykupić odpowiednią usługę w planach abonamentowych; w preapidach nie jest to w ogóle możliwe.

Zakończenie

Można zrobić automatyzację - np. uruchamiać/kończyć połączenie w przypadku naciśnięcia przycisku na obudowie.