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 email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *