Pozbywanie się trybu HiLink z modemu Huawei E3372h

Ponieważ szukanie odpowiedzi na pytanie z tematu zajęło mi chwilę, postanowiłem opisać działającą metodę. Pierwotnie by przełączyć modem z trybu Hilink (czyli widocznego w systemie jako karta sieciowa z routerem, DHCP i NAT) wystarczyło wejść na ukrytą stronę tego routera i kliknąć (http://192.168.8.1/html/switchProjectMode.html). Kiedy ta możliwość została zablokowana, pozostało wgrywanie starszych kodu firmware’u – bez HiLinka. Czasami operacja ta wymagała podania kodu (na sieci są różne jego kalkulatory). Niestety i ta opcja jakiś czas temu odpadła, czemu Hua to przeszkadzało – Mao raczy wiedzieć…

Ostatnia (08.2017) działająca wersja, polega na przełączeniu modemu w tryb serwisowy i wgrania odpowiedniego oprogramowania. Wymaga to rozebrania modemu, ale nie jest skomplikowane. Co poniżej opisuję.

Po co całe to zamieszanie? W moim wypadku E3372h miał pracować z Netgear WNR3500L na Tomato. Można go wprawdzie skonfigurować w wersji HiLink, jednak jakość połączenia (zrywanie, zawieszanie) była nie do zaakceptowania. Dodatkowo pewne funkcje sieciowe nie powinny się dogadać z hostami (np. przetestowany wtedy Bixby nie był w stanie łączyć się do centrali). Problem wynika z podwójnego NATowania (na Tomato i Hua) oraz wszelkiej maści dodatków w modemie „wspomagających” NAT, które nie da się wyłączyć.

Long story short – HiLink musiał zniknąć (choć wpięty do komputera działał przyzwoicie).

Poniższy opis podstał na podstawie tych dwóch stron (oryginał po niemiecku i kopii po angielsku)

Krok 1

Ściągamy dwa repozytoria git’a i kompilujemy je

$ git clone https://github.com/forth32/balong-usbdload
$ cd balong-usbdload
$ make
gcc -O2 -g -Wno-unused-result -c -o balong-usbdload.o balong-usbdload.c
gcc -O2 -g -Wno-unused-result -c -o parts.o parts.c
gcc -O2 -g -Wno-unused-result -c -o patcher.o patcher.c
gcc -O2 -g -Wno-unused-result -c -o ptable-injector.o ptable-injector.c
gcc -O2 -g -Wno-unused-result -c -o loader-patch.o loader-patch.c
gcc -O2 -g -Wno-unused-result -c -o ptable-list.o ptable-list.c


$ git clone https://github.com/forth32/balongflash
$ cd balongflash/
$ make
gcc -O2 -Wunused -Wno-unused-result -D BUILDNO=244 -lz -c -o balong_flash.o balong_flash.c
gcc -O2 -Wunused -Wno-unused-result -D BUILDNO=244 -lz -c -o hdlcio_linux.o hdlcio_linux.c
gcc -O2 -Wunused -Wno-unused-result -D BUILDNO=244 -lz -c -o ptable.o ptable.c
gcc -O2 -Wunused -Wno-unused-result -D BUILDNO=244 -lz -c -o flasher.o flasher.c
gcc -O2 -Wunused -Wno-unused-result -D BUILDNO=244 -lz -c -o util.o util.c
gcc -O2 -Wunused -Wno-unused-result -D BUILDNO=244 -lz -c -o signver.o signver.c
Current buid: 244

Ścigamy firmware Non HiLink ze strony  – np. Huawei_E3372h-153_21.180.01.00.00_Firmware_general_3Ginfo.ru.7z

Krok 2

Rozbieramy modem, odkręcamy dwa torxy przy porcie USB. Oglądamy filmik i  postępujemy zgodnie z instrukcją, czyli zwieramy masę z pierwszym pinem na modemie, podłączamy go do komputera i po kilku sekundach puszczamy. W logach (dmesg) powinien pojawić się taki wpis

[ 1133.023763] option 1-4:1.0: GSM modem (1-port) converter detected
[ 1133.023844] usb 1-4: GSM modem (1-port) converter now attached to ttyUSB0

 

Krok 3

Flashujemy…

Na początku z katalogu balong-usbdload (odpowiedni plik binarny już jest w nim)
./balong-usbdload -p /dev/ttyUSB0 usblsafe-3372h.bin

Następnie z katalogu balongflash. Jako parametr podajemy port USB – u mnie zadziałał ostatni z wykrytych, można przejść wszystkie po kolei (ttyUSB0, ttyUSB1, ttyUSB2), oraz ścieżkę do ściągniętego firmwaru.
./balong_flash -p /dev/ttyUSB2 E3372h-153_UPDATE_21.180.01.00.00.BIN

Niestety nie pokaże Wam wyników tych poleceń – bo mi już terminal wciął historię :/ a złożyłem modem. Ale ogólnie polecania oplują Was komunikatami pisanymi cyrylicą. Pierwszy pokaże dwa procesy aktualizacji, drugi kilka więcej – jeśli nie, to nie ten port USB.

Miłego dłubania!