Instalacja i uruchomienie połączenia przez sieć komórkową (GPRS/EDGE/UMTS/HSPA/LTE/CDMA)
Ostatnia zmiana: 2025-01-25 09:42
Mimo posiadania łączy kablowych o ogromnych przepustowościach rzędu gigabitów, nadal zdarzają się miejsca że dostęp do internetu można zrealizować tylko przy pomocy modemu komórkowego, pełniącego rolę głównego połączenia lub tylko podłączenia zapasowego np. w przypadku problemów głównego dostawcy internetu.
Dawnej dość powszechnym rozwiązaniem było używanie modemów podłączanych przez USB, obecnie najczęściej stosuje się urządzenia posiadające wbudowany modem lub dołączony telefon na kablu USB.
Dla przypomnienia: w zależności od obsługiwanej technologii przez modem, jego zdolności do agregacji pasm 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 150 - 300Mbit/s
LTE Advanced - 300Mbit/s do 1Gbit/s
5G - do gigabitów (?)
To są prędkości teoretycznie, w praktyce w zależności od umiejscowienia modemu i obciążenia stacji bazowych można np. na LTE osiągnąć 40, 60, do 200Mbit/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.
W niektórych przypadkach, zwłaszcza przy słabym zasięgu, modemy USB mogą wymagać więcej energii niż jest w stanie dostarczyć port USB w routerze. W takich przypadkach może okazać się niezbędne połączenie modemu przez hub USB, koniecznie aktywny, z własnym zasilaniem.
Niektóre modemy (np. Sierra Wireless 307) mogą być przełączone w "airplane mode". Należy wtedy wyłączyć ten tryb korzystając z programów firmowych, np. Sierra Wireless Watcher.
Obsługa modemów w OpenWrt
Do działania modemu niezbędne jest zainstalowanie kilku składników:
Zwykłe wsparcie dla USB, pozwalające routerowi "widzieć" urządzenia na usb. W zależności od typu i modelu urządzenia mogą być wymagane różne pakiety, niekiedy specyficzne dla danej platformy.
- 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.
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
Jak już wcześniej wspomniano, niezbędne mogą być jeszcze dodatkowe pakiety specyficzne dla danej platformy lub urządzenia oraz np. włączenie zasilania USB, po szczegóły dotyczące obsługi USB w danym modelu routera odsyłam do wiki projektu OpenWrt.
Sterowniki do modemu
Mimo że kernel linuksowy obsługuje bardzo dużą liczbę modemów to może się trafić modem mniej znanego producenta lub wyjęty z jakiegoś urządzenia który nie będzie obsługiwany przez żaden sterownik. Należy wykonać polecenie
# cat /sys/kernel/debug/usb/devices
i odszukać pozycję związaną z danym modelem. Jeżeli dla przykładu zobaczymy tam takie sekcje:
T: Bus=01 Lev=02 Prnt=02 Port=03 Cnt=01 Dev#= 3 Spd=480 MxCh= 0
D: Ver= 2.00 Cls=00(>ifc ) Sub=00 Prot=00 MxPS=64 #Cfgs= 1
P: Vendor=05c6 ProdID=9011 Rev= 0.00
S: Manufacturer=Qualcomm, Incorporated
S: Product=Qualcomm CDMA Technologies MSM
C:* #Ifs= 5 Cfg#= 1 Atr=e0 MxPwr=500mA
I:* If#= 0 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=ff Driver=(none)
E: Ad=81(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
E: Ad=01(O) Atr=02(Bulk) MxPS= 512 Ivl=4ms
I:* If#= 1 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=ff Driver=(none)
E: Ad=82(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
E: Ad=02(O) Atr=02(Bulk) MxPS= 512 Ivl=4ms
I:* If#= 2 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=ff Prot=ff Driver=(none)
E: Ad=83(I) Atr=03(Int.) MxPS= 64 Ivl=2ms
E: Ad=84(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
E: Ad=03(O) Atr=02(Bulk) MxPS= 512 Ivl=4ms
z informacją
Driver=(none) oznacza to że modem nie został automatycznie rozpoznany i nie został załadowany do niego żaden sterownik. Można spróbować wymusić załadowanie np. ogólnego sterownika
option następującym poleceniem:
# echo "05c6 9011" > /sys/bus/usb-serial/drivers/option1/new_id
Gdzie
05c6 i
9011 to wartości odpowiednio
Vendor i
ProdID danej sekcji z modemu. Mogą wtedy pojawić się interfejsy /dev/ttyUSBx, które prawdopodobnie będzie można wykorzystać do połączenia modemem.
W podobny sposób można spróbować załadować inne sterowniki np. qmi:
# echo "05c6 9011" > /sys/bus/usb/drivers/qmi_wwan/new_id
Ustawienia te znikną po restarcie systemu, więc można je dopisać np. do pliku
/etc/rc.local.
Polecenie
cat /sys/kernel/debug/usb/devices jest także przydatne do sprawdzenia z jakim modemem mamy do czynienia i jakie sterowniki zostały załadowane do jego obsługi, tym samym sugerując sposób konfiguracji połączenia.
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. Jeżeli karta sim nie wymaga pinu to nie należy go podawać.
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.
Poniższe przykłady zostały pokazane w postaci poleceń
uci oraz wynikiem działa w/w poleceń które tworzą sekcję konfiguracyjną w pliku
/etc/config/network.
Chaos Calmer/LEDE/OpenWrt 18.06 i nowsze wydania
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 oraz odpowiednią opcję
device - zależy ona o zainstalowanego firmware w modemie i konfiguracji portów.
Ustawienie niewłaściwego kodu pin może prowadzić do zablokowania karty SIM!
Automatyczny wybór trybu połączenia
# 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.
Jeżeli używana jest inna sekcja niż "wan" należy pamiętać o odpowiednim ustawieniu firewalla (ustawić dodatkową strefę lub dołączyć sekcję od modemu do strefy wan firewalla)!
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.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 'device' '/dev/ttyUSB0'
option 'pincode' '1234'
option 'apn' 'internet'
Opcja "proto 3g" NIE OKREŚLA że modem pracuje tylko w trybie 3G (UMTS/HSPA). To tylko określenie nazwy protokołu połączenia (RAS) a nie trybu pracy modemu. Modem który potrafi połączyć się po LTE w tym trybie także połączy się na LTE jeżeli tylko jest taka możliwość.
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.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 '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, Huawei E3372h-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'
Wymuszenie LTE:
# uci set network.wan.mode=lte
# uci commit network
# ifup wan
Tryby pracy definiowane są w pliku
/etc/comgt/ncm.json, nie wszystkie odmiany modemów mogą akceptować te polecenia.
Niektóre modemy Huawei E3372 są brandowane dla różnych operatorów i nie przedstawiają się jako "huawei". Z tego powodu skrypty połączeniowe mają problem z identyfikacją modemu i nie chcą obsługiwać tego modemu. Więcej szczegółów można znaleźć np. na
forum.
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 oraz niektórych modemów LTE/5G na miniPCIe/M.2
# 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'
Wymuszenie LTE:
# uci set network.wan.modes=lte
# uci commit network
# ifup wan
Nie wszystkie odmiany modemów mogą akceptować wymuszenie trybu pracy.
Dla niektórych modemów np. ZTE może być wymagane opóźnienie w nawiązywaniu połączenia:
# uci set network.wan.delay=30
# uci commit network
Niektóre modemy mogą wymagać wyłączenia opcji autoconnect:
# uci set network.wan.autoconnect=0
# uci commit network
Niektóre nowsze modele modemów (Sierra MC7455, Quectel EC25) pracują tylko w trybie "raw-ip" i wymagają systemu z kernelem w wersji 4.9 lub wyższej, ew odpowiednich łatek dla starszych wersji systemu.
QMI nie potrafi zmienić automatycznie APN. Jeżeli wykorzystywany był inny apn i musimy go zmienić to można wykonać to ręcznie (wystarczy jeden raz):
# chat -t 3 -e '' 'AT+CGDCONT=1,"IP","vpn.static.pl"' OK >> /dev/ttyUSB1 < /dev/ttyUSB1
Gdzie:
- vpn.static.pl: nowy APN który ma być używany
- /dev/ttyUSB1: interfejs diagnostyczny modemu
Niektóre modemy nie przydzielają automatyczne adresu IP (np. te zawarte z TP-Linkach TL-MR6400v4/v5), należy więc wyłączyć pobieranie z nich adresu z DHCP i skorzystanie z qmi:
# uci set network.wan.dhcp=0
# uci commit network
Obsługa modemów w trybie karty sieciowej (np. HiLink)
Dotyczy nowych modemów LTE np. Huawei E3272 HiLink, Huawei E3372 HiLink, Huawei E5573, Vodafone/Huawei K5150, Netgear AirCard 810S
# 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.device=eth1
# uci commit network
# reboot
Czyli sekcja wan powinna wyglądać następująco:
config 'interface' 'wan'
option 'proto' 'dhcp'
option 'device' 'eth1'
(dla wydań starszych niż OpenWrt 21.02-rc2 opcję
device należy zmienić na
ifname)
Gdzie
eth1 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.
eth2; zobacz w logach pod jaką nazwą się pojawił). Interfejs można także znaleźć np. takim poleceniem (jeżeli modem korzysta z CDC):
# 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), bo w niektórych przypadkach modem może mieć taki sam adres domyślny jak router.
Obsługa modemów "hostless"
Dotyczy nowych modemów LTE np. ZTE MF823, niektórych modeli telefonów komórkowych, Netgear AirCard 810S
# 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.device=usb0
# uci commit network
# reboot
Czyli sekcja wan powinna wyglądać następująco:
config 'interface' 'wan'
option 'proto' 'dhcp'
option 'device' 'usb0'
(dla wydań wcześniejszych niż OpenWrt 21.02-rc2 opcję
device należy zmienić na
ifname)
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 (np. na 192.168.2.1).
Dla niektórych modemów zamiast usb0 może powstać następny interfejs - eth1, eth2 itd. więc właśnie taki trzeba podać zamiast usb0.
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, Vodafone/Huawei K5150 lub niektórych modemów LTE/5G na złączu miniPCIe lub M.2
# 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/ttyHS1
# uci set network.wan.device=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/ttyHS1'
option 'device' 'hso0'
option 'pincode' '1234'
option 'apn' 'internet'
(dla wydań wcześniejszych niż OpenWrt 21.02-rc2 opcję
device należy zmienić na
ifname)
Wartość opcji
device (odpowiedni interfejs) można znaleźć poleceniem
# grep Application /sys/class/tty/*/hsotype
Obsługa tetheringu - Android
W routerze ustawiamy:
# 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.device=usb0
# uci commit network
# reboot
Czyli sekcja wan powinna wyglądać następująco:
config 'interface' 'wan'
option 'proto' 'dhcp'
option 'device' 'usb0'
(dla wydań wcześniejszych niż OpenWrt 21.02-rc2 opcję
device należy zmienić na
ifname)
Gdzie
usb0 to dodatkowy interfejs utworzony przez sterownik (może być różny w zależności od routera i ilości modemów).
W smartfonie:
Po podłączeniu kablem USB należy w smartfonie w menu "Ustawienia" włączyć transmisję danych, następnie wybrać opcję typu "Udostępnianie internetu" czy "Modem i hotspot" a następnie włączyć opcję typu "Router USB" czy "Modem USB". Nazwy menu i opcji są różne w zależności od modelu smartfona i wersji systemu Android.
Obsługa tetheringu - iPhone
W iPhone należy włączyć transmisję danych: Ustawienia -> Sieć komórkowa -> Dane sieci kom. (włączone), a następnie "Hotspot osobisty": Ustawienia -> Hotspot osobisty -> Hotspot osobisty (włączone).
W routerze instalujemy sterowniki oraz specjalny program który umożliwia skorzystanie z interfejsu szeregowego, a następnie uruchamiamy go:
# opkg install kmod-usb-net-ipheth usbmuxd
# usbmuxd
Konfigurujemy połączenie sieciowe:
# uci del network.wan
# uci set network.wan=interface
# uci set network.wan.proto=dhcp
# uci set network.wan.device=eth2
# uci commit network
Czyli sekcja wan powinna wyglądać następująco:
config 'interface' 'wan'
option 'proto' 'dhcp'
option 'device' 'eth2'
(dla wydań wcześniejszych niż OpenWrt 21.02-rc2 opcję
device należy zmienić na
ifname)
Gdzie
eth2 to kolejny interfejs który pojawi się po podłączeniu kablem iPhone (może być różny w zależności od routera i ilości modemów).
Na ekranie smartfona pojawi się pytanie "Ufać temu komputerowi?", należy wybrać "Zaufaj". Uruchomienie połączenia na routerze:
Demon
usbmuxd należy uruchomić każdorazowo przed podłączeniem iPhone.
Barrier Breaker
Konfiguracja jest identyczna jak dla Chaos Calmer - brak jest tylko automatycznego wyboru połączenia przez pakiet
wwan (nie ma takiego pakietu dla wydania BB). Należy więc posłużyć się tymi samymi ustawieniami.
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.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 '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ć
firewallOpcja
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:
- Orange: cdma@orange, orange
- Nordisk Polska: CDMA, CDMA
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 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:
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:
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 SMSOdczytywanie USSD
Patrz
wysyłanie i odbieranie wiadomości SMSOdczyt 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 skrypty samoczynnie ponawiają próbę i łączą się ponownie. Bywają jednak sytuacje, kiedy modem połączenie trzyma, natomiast nie ma możliwości przesłania żadnego pakietu, nawet ping nie przechodzi. W takich sytuacjach przyda się tester połączenia.
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 host 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.
Serwery na łączu 3G/4G
Wszyscy polscy operatorzy blokują ruch przychodzący z zewnątrz, więc mając łącze przez modem 3G/4G 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 prepaidach 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.