Huawei E8278 to ciekawy kieszonkowy modem/router LTE niestety jego WebUI jest dość ubogi i nie ma wielu opcji konfiguracji. Na szczęście z pomocą rusza społeczność która szybko rozprawiła się z wbudowanym w modemy Huawei API. W tym poście mini poradnik jak min. zmienić częstotliwość pracy (aka LTE BAND) co jest super przydatne jeśli chcemy poprawić stabilność łącza.
Na wstępie ostrzeżenie - nie ponoszę odpowiedzialności za działanie poniższych metod, niektóre zmiany mogą być trudno odwracalne lub nawet uszkodzić modem.
Poradnik ten jest pisany z myślą o Huawei E8278 ale powinien też działać na innych modemach bez WiFi jak E3372 i inne.
0x01 - Zarys sytuacji
Ok skoro najważniejsze mamy za sobą zaczynamy zabawę z modemem, tylko po co skoro teoretycznie modem zawsze wybierze najlepszy tryb pracy? No właśnie nie zawsze...
W moim przypadku modem łączył się z dwoma BTS'ami nazwijmy go A i B. A był blisko jednak ze względu na przeszkody był i duże obciążenie stabilność łącza była słaba (duży szybkość ale wysoki i skaczący ping 80-200). Natomiast B był daleko ale jakość sygnału była dobra i nie był obciążany. Różnica w jakości internetu była kolosalna. Modem praktycznie zawsze "wybierał" BTS A więc tu pora na nasze majsterkowanie.
Wymusić BTS można na dwa sposoby
- Dość droga antena kierunkowa
- Programowe wymuszenie częstotliwości (jeśli obydwie stacje pracują na różnych)
0x02 - API Modemów Huawei
Większość modemów huawe posiada wspólne API z którego korzysta min. WebUI czyli webowy interfejs sterowania modemem z przeglądarki. Api jest rozbudowane i pozwala zmieniać bardzo wiele opcji nawet jeśli te nie są dostępne z poziomu WebUI. W większości modemów bez WiFi możemy wysyłać komendy bez autoryzacji, trzeba tylko wygenerować token sesji, w przypadku E8278 jest nieco inaczej gdyż modem posiada Wifi i możliwość logowania do panelu przez sieć bezprzewodową.
0x03 - Przykładowe komendy
Aby wysłać komendę do API trzeba wykonać zapytanie GET/POST HTTP do webservera. Do tego posłużymy się curl'em (skrypty bash linux'a):
#!/bin/bash curl 'http://192.168.1.1/api/user/login' --data '<?xml version="1.0" encoding="UTF-8"?><request><Username>admin</Username><Password>YWRtaW4=</Password></request>' curl 'http://192.168.1.1/api/net/net-mode'
- 192.168.1.1 to adres naszego WebUI (część modemów posiada 192.168.8.1)
- admin to domyślny login
- YWRtaW4= to hasło potraktowane base64 (w tym przypadku domyślne "admin")
Taki skrypt powinien wyświetlić listę dostepnych trybów pracy:
$ bash ./huawei.sh <?xml version="1.0" encoding="UTF-8"?><response>OK</response><?xml version="1.0" encoding="UTF-8"?> <response> <NetworkMode>03</NetworkMode> <NetworkBand>400000</NetworkBand> <LTEBand>20000800C4</LTEBand> </response>
Opis zwróconych parametrów:
NetworkMode (tryb pracy sieci) |
00 - automatycznie (wszystkie sieci) 01 - tylko 2G 02 - tylko 3G 03 - Tylko 4G (LTE) 99 - bez zmian Można łączyć tryby, np. 0302 = 3G + 4G. |
NetworkBand (częstotliwość) |
80 - GSM1800 300 - GSM900 80000 - GSM850 200000 - GSM1900 400000 - UTMS B1 (2100) 800000 - UTMS B2 (1900) 4000000 - UTMS B5 (850) 2000000000000 - UTMS B8 (900) 1 - BC0A 2 - BC0B 4 - BC1 8 - BC2 10 - BC3 20 - BC4 40 - BC5 400 - BC6 800 - BC7 1000 - BC8 2000 - BC9 4000 - BC10 8000 - BC11 10000000 - BC12 20000000 - BC13 80000000 - BC14 3FFFFFFF - wszystkie obsługiwaneMożna sumować wartości np. GSM900 + UTMS B8 = 0x2000000000000 + 0x300 = 0x2000000000300 |
LTEBand (pasmo sieci) |
1 - B1 (FDD 2100) 4 - B3 (FDD 1800) 40 - B7 (FDD 2600) 80 - B8 (FDD 900) 80000 - B20 (FDD 800) 2000000000 - B38 (TDD 2600) 8000000000 - B40 (TDD 2300) 800C5 - pasma EU (LTE Band 1, 3, 7, 8, 20) 800D5 - pasma EU/Asia/Africa (LTE Band 1, 3, 5, 7, 8, 20) 7FFFFFFFFFFFFFFF - wszystkie pasmaJ/w można sumować. |
Aby z kolei sprawdzić statystyki łącza:
bash ./huawei.sh <?xml version="1.0" encoding="UTF-8"?><response>OK</response><?xml version="1.0" encoding="UTF-8"?> <response> <CurrentConnectTime>1451</CurrentConnectTime> <CurrentUpload>1029598</CurrentUpload> <CurrentDownload>2665750</CurrentDownload> <CurrentDownloadRate>9475</CurrentDownloadRate> <CurrentUploadRate>5223</CurrentUploadRate> <TotalUpload>50645009</TotalUpload> <TotalDownload>432376996</TotalDownload> <TotalConnectTime>18042</TotalConnectTime> </response>
0x04 - Zmiana częstotliwości
Chcemy wymusić pracę modemu na określonym paśmie w tym przypadku B1 (FDD2100).
Aby tego dokonać musimy wykonać zapytania POST:
#!/bin/bash curl 'http://192.168.1.1/api/user/login' --data '<?xml version="1.0" encoding="UTF-8"?><request><Username>admin</Username><Password>YWRtaW4=</Password></request>' curl -d '<request> <NetworkMode>03</NetworkMode> <NetworkBand>400000</NetworkBand> <LTEBand>7FFFFFFFFFFFFFFF</LTEBand> </request>' -X POST 'http://192.168.1.1/api/net/net-mode'
Czyli najpierw logowania a następnie właściwe zapytanie z pożądanymi parametrami sieci.
0x05 - Zakończenie
Api jest bardzo rozbudowane jak pisałem i na pewno każdy znajdzie tam coś dla siebie 🙂 Można wysyłać i odczytywać SMS'y, przesyłać pliki na kartę SD, dodawać i usuwać i kontakty, sprawdzić moc sygnału i wiele więcej.
Rozległa lista komend znajduje się na forum http://www.bez-kabli.pl/viewtopic.php?t=42168.
Z kolei na moim GitHub'ie użyte tutaj skrypty BASH.