Huawei E8278 (E3372) – zabawa z API, zmiana częstotliwości oraz trybu pracy

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

  1. Dość droga antena kierunkowa
  2. 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.

 

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *