Instrukcja aktualizacji firmware'u modemu MDM9250 wbudowanego w ruter MF286D z zainstalowanym OpenWRT, od wersji np.: B02 do B12.
Instrukcja ma zastosowanie do aktualizacji firmware'u modemu z zainstalowaną tzw. wersją Nordic czyli: BD_TELIAMF286DV1.0.0B02
Przeczytaj dwa razy zanim zapytasz na forum o to, co tutaj jest już czarno na białym. (zbyt często się to zdarza)
=======================================================================
UWAGA:
Wymagana zimna krew i umiejętność czytania ze zrozumieniem.
Instrukcja pisana jest krok po kroku. Ale robisz to na własną odpowiedzialność.
Jeżeli sam zainstalowałeś i skonfigurowałeś OpenWRT w oparciu o to forum, to będzie to dla Ciebie proste.
Jeżeli nie czujesz się na siłach, może nie warto ryzykować teraz.
A jeżeli według Ciebie w poniższych opisach jest za dużo skrótów myślowych, zacznij od tego:
FAQ o OpenWrt https://eko.one.pl/forum/viewtopic.php?id=12021
Na tym forum są dwie nierozłączne i szanujące się grupy: czytelnicy i praktykujący ryzykanci.
Nic na siłę.
=======================================================================
Konieczne pakiety oraz programy:
Konieczne:
PuTTY - program na PC, optymalnie połączony po LAN, potrzebny do otwarcia sesji terminalowej SSH z ruterem (root@openwrt:~#)
WinSCP - program na PC, optymalnie połączony po LAN, do przesyłania pobranych plików do rutera
picocom - pakiet zainstalowany na OpenWRT, uruchamiany w sesji terminalowej SSH w linii komend terminala (root@openwrt:~#)
adb-enablemodem - pakiet zainstalowany na OpenWRT
Instalacja wszystkich pakietów na ruterze za pomocą poleceń: (instaluj i nie dopytuj czy trzeba...)
root@openwrt:~# opkg update
root@openwrt:~# opkg install picocom adb-enablemodem iperf3
=======================================================================
Ruter może być cały czas włączony aż do ostatniego etapu i nie trzeba go ciągle uruchamiać ponownie po każdej aktualizacji. Karta SIM też może być cały czas włożona.
Dla pewności: połączenie PC z ruterem po LAN (Ethernet) a nie po WiFi.
=======================================================================
Aby się dowiedzieć jaka jest wersja aktualnie na modemie należy użyć instrukcji
root@openwrt:~# picocom -b 115200 /dev/ttyUSB2
ttyUSBx w zależności od tego, na którym wewnętrznym (niedostępnym fizycznie z zewnątrz) porcie USB jest podłączony modem
a następnie wpisać w tym samym terminalu komendę:
W efekcie otrzymamy:
Manufacturer: ZTE CORPORATION
Model: MF286DMODULE
Revision: BD_TELIAMF286DV1.0.0B02
SVN: 01
IMEI: ............................................
+GCAP: +CGSM
BD_TELIAMF286DV1.0.0B02 w tym przypadku oznacza, że modem ma wersję B02.
Potrzebne pliki różnicowe dla Nordic są w katalogu Nordic Modem Update (up to B12)
link:
https://mega.nz/folder/exQHlRKA#Dv9sxWFdUgd_Omy9UjOPkA
Instrukcja w j.angielskim jest w pliku update_modem_with_openwrt.txt
Poniżej dla celów m.in. archiwalnych po polsku.
=======================================================================
PROCEDURA:
Aktualizacja powinna być wykonywana jedna po drugiej, więc jeśli twój modem ma B03, musisz zaktualizować do B04, następnie B05 i tak dalej.
1. Wyodrębnij na PC każdy plik o nazwie imageB0XnaB0Y (gdzie X to bieżąca kompilacja, a Y to wersja docelowa).
Jeśli twój modem jest w wersji 1.0.0B03, powinieneś użyć plików wewnątrz imageB03naB06 i tak dalej.
2. Skopiuj z PC, przy pomocy WinSCP, dwa pliki o nazwach „delta.package” i „delta.signature” do rutera OpenWRT, do folderu
/tmp
(powinieneś mieć już wcześniej zainstalowany pakiet "adb-enablemodem")
3. Połącz się za pomocą PuTTY (SSH, port 22) do routera, a następnie skopiuj te dwa pliki do folderu "cache" modemu za pomocą:
root@openwrt:~# adb push /tmp/delta.package /cache/
root@openwrt:~# adb push /tmp/delta.signature /cache/
4. Następnie otwórz ponownie sesję z modemem "picocom":
root@openwrt:~# picocom -b 115200 /dev/ttyUSB2
5. Użyj 5 poleceń "at+fotactr" w kolejności jak poniżej:
at+fotactr=0
+FOTACTR: 0,0 <-- jeśli 0, to modem widzi pakiet aktualizacji
OK
at+fotactr=1
+FOTACTR: 1,0 <-- jeśli 0, walidacja poprawna, 1 walidacja niepoprawna, 2 oczekiwanie
OK
at+fotactr=5
+FOTACTR: 5,486202 <-- ta ostatnia liczba wskazuje rozmiar pakietu aktualizacyjnego w bajtach (tutaj jest to 486kB dla B11)
OK
at+fotactr=8
+FOTACTR: 8,0 <-- jeśli 0, to OK, usunie stary plik *.flg z katalogu /cache (może się wyświetlić także +FOTACTR: 8,-1)
OK
at+fotactr=2
+FOTACTR: 2,0
FATAL: read zero bytes from port
term_exitfunc: reset failed for dev UNKNOWN: Not a tty
...komunikat term_exitfunc o rozłączeniu z modemem, sugerujący trwającą procedurę restartu modemu
Po chwili modem zrestartuje się i ponownie uruchomi.
(trzeba równolegle obserwować np. web panel LuCI gdzie widać czas pracy modemu "uptime", jak pokaże się wyzerowany licznik, oznacza, że modem wznowił działanie. Jak nie, to odczekać ok. 5 minut pomiędzy aktualizacjami)
6. Powtarzamy PROCEDURA dla kolejnych wersji/plików
=======================================================================
Na koniec, po wykonaniu docelowej, ostatniej aktualizacji, czyli po B12, konieczne jest wykonanie „reboot” rutera
(komenda terminalowa: root@openwrt:~# reboot), który zaktualizuje dane wyjściowe „ATI” i wyczyści pliki tymczasowe.
Po restarcie rutera i wykonaniu komendy ATI (patrz: picocom) otrzymamy:
Manufacturer: ZTE CORPORATION
Model: MF286DMODULE
Revision: BD_TELIAMF286DV1.0.0B12
SVN: 12
IMEI: ............................................
+GCAP: +CGSM
BD_TELIAMF286DV1.0.0B12 w tym przypadku oznacza, że modem ma już wersję B12.
=======================================================================
Po aktualizacji uaktywnia się Agregacja uplinku. (patrz: picocom) AT+ZULCA? wskazuje, że AT+ZULCA=1
Można wyłączyć wpisując: AT+ZULCA=0
Jeżeli ktoś zauważył więcej zmian lub ma uwagi do opisu procedury, to proszę o info.
Dzięki wsparciu @Focus mamy dodatkowe przydatne informacje:
jeżeli ktoś do CACHE modemu wrzucił nie te delty co trzeba, to można je usunąć z CACHE ręcznie przez adb.
No i pliki do modemu można też wrzucać bezpośrednio z nośnika USB z pominięciem /tmp routera.
root@OpenWrt:~# adb shell ls cache
battery_percent update.log upgrade_progress.txt
restore update.rt
root@OpenWrt:~# adb push /mnt/sda/delta.package /cache/
1791 KB/s (485269 bytes in 0.264s)
root@OpenWrt:~# adb push /mnt/sda/delta.signature /cache/
4 KB/s (256 bytes in 0.056s)
root@OpenWrt:~# adb shell ls cache
battery_percent restore upgrade_progress.txt
delta.package update.log
delta.signature update.rt
root@OpenWrt:~# adb shell rm cache/delta.signature
root@OpenWrt:~# adb shell rm cache/delta.package
root@OpenWrt:~# adb shell ls cache
battery_percent update.log upgrade_progress.txt
restore update.rt
Korzystam z: MF286D; Kernel 6.12.60 r32225 i AW1000; Kernel 6.12.85 r34359
Wypełnij ankietę. Poprawiamy tłumaczenie LuCI. Szczegóły w tym poście