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.