Modem LTE pod OpenWRT (Huawei E3372s-153)

Spis treści

Modem LTE jest zwykle przeznaczony dla jednej stacji roboczej. Podpina się go do portu USB i zwykle po chwili można zestawić połączenie z siecią. W przypadku, gdy mamy kilka komputerów i na każdym z nich chcemy mieć internet, to mamy z grubsza trzy wyjścia. Pierwszym z nich jest dokupienie kolejnych modemów LTE, co zwykle nie wchodzi w grę. Drugą opcją jest zakup routera LTE. Różni się on od zwykłego routera WiFi tym, że ma już wbudowany modem LTE. Jeśli jednak dysponujemy własnym routerem WiFi, to niekoniecznie musimy się go pozbywać, zwłaszcza w przypadku, gdy już zakupiliśmy osobno modem LTE. Jeśli na tym routerze WiFi jesteśmy w stanie zainstalować firmware OpenWRT, to istnieje duża szansa na to, że damy radę ten router przerobić na router LTE. W tym wpisie postaramy się ten zabieg przeprowadzić z wykorzystaniem routera TP-LINK Archer C7 v2 oraz modemu LTE Huawei E3372s-153 w wersji NON-HiLink.

Czy OpenWRT rozpozna modem Huawei E3372s-153

Przed przystąpieniem do przerabiania routera na router LTE, dobrze jest zaktualizować firmware do najnowszej wersji Chaos Calmer (CC). Obrazy można pobrać stąd. W tym przypadku został użyty OpenWRT w wersji 15.05.1 (r49087). Jako, że modemy LTE się różnią między sobą dość znacznie, to inne pakiety trzeba będzie zainstalować na routerze. Modem Huawei E3372s-153 może pracować w trybie RAS (Remote Access Services) lub NDIS (Network Driver Interface Specification). Różnica między tymi dwoma trybami polega na tym, że w trybie RAS modem działa przez interfejs szeregowy, a połączenie jest realizowane przy pomocy demona PPP. Natomiast w przypadku trybu NDIS, modem zachowuje się i działa jak zwykła karta sieciowa, przez co jesteśmy w stanie osiągnąć większą prędkość transferu. W trybie RAS nie damy rady wyciągnąć więcej niż 25-30 mbit/s. Niemniej jednak, trzeba się liczyć z faktem zwiększenia zapotrzebowania na RAM i procesor w przypadku, gdy chcemy korzystać z trybu NDIS.

To czy modem obsługuje tryb NDIS można ustalić wydając modemowi polecenie AT^SETPORT? . By to zrobić pod OpenWRT, musimy tam doinstalować pakiet picocom . Następnie logujemy się na router po SSH i wydajemy w terminalu to poniższe polecenie:

# picocom -b 115200 /dev/ttyUSB0

Prawdopodobnie będą nam przeskakiwały jakieś komunikaty i by je wyłączyć, musimy dodatkowo wydać te dwa poniższe polecenia:

ate1
at^curc=0

W tej chwili jesteśmy w stanie rozmawiać z modem bez przeszkód. Odczytajmy zatem jakie porty ma modem Huawei E3372s-153 :

AT^SETPORT=?

^SETPORT:3: 3G DIAG
^SETPORT:10: 4G MODEM
^SETPORT:1: 3G MODEM
^SETPORT:12: 4G PCUI
^SETPORT:13: 4G DIAG
^SETPORT:5: 3G GPS
^SETPORT:14: 4G GPS
^SETPORT:A: BLUE TOOTH
^SETPORT:16: NCM
^SETPORT:A1: CDROM
^SETPORT:A2: SD

Sprawdźmy także aktualną ich konfigurację:

AT^SETPORT?

^SETPORT:A1,A2;12,10,16,A1,A2

Wszystko co zostało zwrócone w poleceniu AT^SETPORT? jest włączone. Mamy tam także 16 , który odpowiada za tryb NDIS. Jeśli byłby on wyłączony, to wtedy modem może nie chcieć się połączyć w trybie NDIS. W przypadku, gdy faktycznie ten port nie jest włączony, to aktywujemy go w poniższy sposób:

AT^SETPORT="A1,A2;12,10,16,A1,A2"
AT^RESET

Mamy zatem modem w trybie NDIS. By działał on nam pod OpenWRT musimy doinstalować kilka pakietów. Przede wszystkim, potrzebne nam jest wsparcie dla portu USB, a to realizowane jest przez pakiety kmod-usb-core , kmod-usb2 , kmod-usb-serial oraz kmod-usb-serial-option . Potrzebujemy także pakietu usb-modeswitch , który przełączy nam tryb modemu. Chodzi o to, że standardowo modemy LTE mają w sobie zaszyte sterowniki dla systemu windows. Po podpięciu takiego modemu do portu USB w komputerze, system wykrywa go jako CD-ROM lub pendrive, z którego jesteśmy w stanie te sterowniki zainstalować. Po instalacji sterowników, w systemie pojawia nam się modem w miejscu tego poprzedniego urządzenia. By zrealizować takie zachowanie na linux'ach, w tym też i OpenWRT, potrzebny nam jest właśnie ten usb-modeswitch . Musimy także doinstalować pakiet comgt-ncm , który zapewni wsparcie dla modemu pracującego w trybie NDIS (NCM). Ten pakiet dociągnie kilka zależności, min chat , comgt i wwan . Poniżej dla uproszenia jest polecenie instalujące te wszystkie rzeczy:

# opkg update
# opkg install \
kmod-usb-core \
kmod-usb2 \
kmod-usb-serial \
kmod-usb-serial-option \
usb-modeswitch \
comgt-ncm \
comgt \
chat \
wwan

Modemu Huawei E3372s-153 nie da rady odpalić bez odpowiedniego sterownika kernela. W OpenWRT są dostępne dwa: kmod-huawei-hw-cdc oraz kmod-usb-net-huawei-cdc-ncm . Ten pierwszy pochodzi od producenta Huawei i nie jest już rozwijany od lat. Dlatego też powinniśmy korzystać z kmod-usb-net-huawei-cdc-ncm :

# opkg install kmod-usb-net-huawei-cdc-ncm

W przypadku routera TP-LINK Archer C7 v2, modem został podpięty bezpośrednio do portu USB z pominięciem aktywnego HUB'a USB. Transfer jaki udało mi się póki co zarejestrować to około 25-30 mbit/s w obie strony i jest to mniej więcej tyle ile szło wyciągnąć przy podłączeniu tego modemu bezpośrednio do komputera. Warto jednak zaznaczyć, że routery WiFi nie mają zbyt wydolnych napięciowo portów USB i w sporej części przypadków wymagane będzie zastosowanie aktywnego HUB'a USB z zasilaczem. W przeciwnym wypadku modem może nie być w stanie, np. przełączyć się w tryb LTE. Archer C7 v2 zdaje się radzić sobie bez tego dodatkowego balastu.

Po zainstalowaniu potrzebnych nam pakietów, modem powinien zostać rozpoznany przez OpenWRT mniej więcej w poniższy sposób:

# cat /sys/kernel/debug/usb/devices
...
T:  Bus=02 Lev=01 Prnt=01 Port=00 Cnt=01 Dev#=  2 Spd=480  MxCh= 0
D:  Ver= 2.10 Cls=00(>ifc ) Sub=00 Prot=00 MxPS=64 #Cfgs=  1
P:  Vendor=12d1 ProdID=15b6 Rev= 1.02
S:  Manufacturer=HUAWEI_MOBILE
S:  Product=HUAWEI_MOBILE
C:* #Ifs= 5 Cfg#= 1 Atr=c0 MxPwr=  2mA
I:* If#= 0 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=02 Prot=12 Driver=option
E:  Ad=82(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
E:  Ad=02(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
I:* If#= 1 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=02 Prot=10 Driver=option
E:  Ad=84(I) Atr=03(Int.) MxPS=  10 Ivl=32ms
E:  Ad=83(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
E:  Ad=03(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
I:  If#= 2 Alt= 0 #EPs= 1 Cls=ff(vend.) Sub=02 Prot=16 Driver=huawei_cdc_ncm
E:  Ad=86(I) Atr=03(Int.) MxPS=  16 Ivl=2ms
I:* If#= 2 Alt= 1 #EPs= 3 Cls=ff(vend.) Sub=02 Prot=16 Driver=huawei_cdc_ncm
E:  Ad=86(I) Atr=03(Int.) MxPS=  16 Ivl=2ms
E:  Ad=85(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
E:  Ad=04(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
I:* If#= 3 Alt= 0 #EPs= 2 Cls=08(stor.) Sub=06 Prot=50 Driver=usb-storage
E:  Ad=87(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
E:  Ad=05(O) Atr=02(Bulk) MxPS= 512 Ivl=125us
I:* If#= 4 Alt= 0 #EPs= 2 Cls=08(stor.) Sub=06 Prot=50 Driver=usb-storage
E:  Ad=88(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
E:  Ad=06(O) Atr=02(Bulk) MxPS= 512 Ivl=125us

Konfiguracja modemu Huawei E3372s-153 pod OpenWRT

Potrzebujemy jeszcze konfiguracji, która umożliwi nam nawiązanie połączenia z internetem. Interesuje nas głównie plik /etc/config/network . Odszukujemy w nim sekcję config interface 'wan' i przepisujemy ją do poniższej postaci:

config interface 'wan'
      option 'device'   '/dev/ttyUSB0'
      option 'proto'    'ncm'
      option 'mode'     'lte'
      option 'pincode'  ''
      option 'apn'      'internet'
      option 'username' ''
      option 'password' ''

To jakie wartości umieścimy wyżej zależy głównie od operatora, z którego zamierzamy korzystać. W tym przypadku połączenie zapewnia Play, a jako że oferuje on darmowy internet LTE, to trzeba tutaj wymusić tryb połączenia LTE przy pomocy opcji mode . Jeśli korzystamy z innych operatorów i nie koniecznie łączymy się po LTE, to w pliku /etc/gcom/ncm.json są wyszczególnione tryby pracy modemu, z których możemy skorzystać. Mamy do dyspozycji preferlte , preferumts , lte , umts , gsm oraz auto . W przypadku zabezpieczenia karty SIM kodem PIN, uzupełniamy odpowiednio opcję pincode . Opcje apn , username password dostosowujemy zgodnie z instrukcjami operatora.

Zapisujemy teraz konfigurację i uruchamiamy router ponownie wpisując w konsoli polecenie reboot . Po chwili router powinien się odpalić, a modem połączyć z internetem. W przypadku odłączenia modemu i jego ponownego podłączenia, nie musimy restartować routera. System wykryje podłączony modem i automatycznie postara się skonfigurować połączenie.

Mikhail Morfikov avatar
Mikhail Morfikov
Po ponad 10 latach spędzonych z różnej maści linux'ami (Debian/Ubuntu, OpenWRT, Android) mogę śmiało powiedzieć, że nie ma rzeczy niemożliwych i problemów, których nie da się rozwiązać. Jedną umiejętność, którą ludzki umysł musi posiąść, by wybrnąć nawet z tej najbardziej nieprzyjemniej sytuacji, to zdolność logicznego rozumowania.