Wgrywanie OpenWrt. Ogólny opis postępowania:
- podłączyć router do internetu portem WAN
- używając przeglądarki ustawić hasło systemowe i wifi
- zaktualizować oprogramowanie do wersji deweloperskiej dostępnej na stronie Xiaomi
- zarejestrować urządzenie na stronie Xiaomi używają aplikacji na Androida lub iPhone aby uzyskać hasło do SSH oraz specjalną binarkę do flashowania
- wgrać binarkę SSH
- zalogować się przez ssh i wgrać przez mtd obraz OpenWrt
Cały opis w języku angielskim dostępny jest pod tym adresem:
http://en.miui.com/thread-64391-1-1.html. Ja wykonałem to po swojemu, w trochę innej kolejności, a mimo to wszystko zadziałało poprawnie.
Potrzebujemy: zwykły komputer/laptop z dostępem do internetu, tablet lub smartfon z Androidem lub iPhone, router Xiaomi MiWiFi Mini, czysty pendrive o pojemności 4/8GB. W chwili pisania tego opisu router Xiaomi miał firmware w wersji 2.4.9 oraz wersję deweloperską 2.5.22.
1. (komputer) Instalujemy na komputerze przeglądarkę Chrome lub Chromium (ja akurat użyłem Chromium pod linuksem). Zapewniamy sobie jakieś połączenie z internetem (inna sieć wifi, modem komórkowy).
2. (komputer) Ustawiamy na stałe adres IP na karcie sieciowej komputera na 192.168.31.166.
3. Po wyjęciu z pudełka podłączamy kabel z internetem do wan routera, kabel od komputera podłączamy do portu lan, włączamy zasilanie routera.
4. (komputer) Wchodzimy na stronę
http://192.168.31.1 przeglądarką Chrome i konfigurujmy router ustawiając odpowiednie hasło. Ponieważ strona konfiguracyjna jest po chińsku, więc albo robimy to "na czuja" albo posługujemy się obrazkami znalezionymi w internecie albo korzystamy z automatycznego translatora w Chrome. Dzięki takiemu ustawieniu mamy nadal dostęp do internetu przez wifi czy modem, więc Chrome może nam w locie tłumaczyć stronę routera. Jeżeli podłączony komputer tylko pod router Xiaomi to też uzyskamy połączenie z routerem, ale może nam nie działać internet i może nie działać automatyczny translator.
5. Kończymy konfigurację, ew restartujemy router. Jeżeli wyświetli się informacja o dostępności nowej wersji oprogramowania routera to zezwalamy na aktualizację, niech to zrobi i zrestartuje się.
6. (tablet) Podłączamy tablet do wifi routera. Hasło do wifi zostało ustawione wcześniej w punkcie 4; jeżeli podłączymy nowe urządzenie to pamiętajmy żeby w gui routera wybrać ikonę urządzeń (6.1) zaznaczyć opcję dostępu do internetu dla tego urządzenia (6.2).
7. (komputer) Zakładamy konto na Xiaomi. Jeżeli jeszcze go nie mamy, wchodzimy na stronę
https://account.xiaomi.com/pass/register (jest po angielsku), podajemy wymagane dane, odbieramy mejla i aktywujemy konto.
8. (tablet) Instalujemy aplikację na tablecie. Wchodzimy do wątku
http://en.miui.com/forum.php?mod=viewthread&tid=55889, pobieramy aplikację (8.1 - najpierw każe nam się zalogować na konto Xiaomi i uzupełnić parę informacji).
Pobranie będzie wymagało 1 "kredytu", ale mamy nowe konto więc będziemy mogli to zrobić. Instalujemy aplikację, zezwalamy na instalację z nieznanych źródeł. Aplikacja jest w większości po angielsku z paroma nieprzetłumaczonymi tekstami po chińsku.
9. (tablet) Uruchamiamy aplikację o nazwie "Mi WiFi". Jeżeli będzie pytał się o aktualizację aplikacji - ignorujemy to. Zapyta się o konto Xiaomi (podajemy dane jakimi zarejestrowaliśmy się w punkcie 7), a następnie spróbuje wykryć router (zapyta się o wcześniej ustawione hasło do routera - ustawione było w punkcie 4). Jeżeli się udało to powinna pojawić się informacja o routerze, z lewej strony aplikacji będzie można wysunąć menu z ustawieniami routera.
10. (komputer) Pobieramy firmware SSH do routera. Wchodzimy na stronę
http://www1.miwifi.com/miwifi_open.html, przewijamy mniej więcej na środek strony, klikamy przycisk z napisem SSH (10.1).
Pojawi się następna strona z której pobieramy właściwy plik z firmware (10.2 - w moim przypadku był to plik miwifi_ssh.bin). Zapisujmy także hasło do ssh które jest podane na środku strony (10.3).
Firmware i hasło jest ponoć indywidualne dla każdego routera, firmware i hasła pobrane przez inne osoby nie działają na innych routerach. Więc niestety drogi czytelniku musisz przejść całą drogę.
11. (komputer) Pobieramy wersję deweloperską firmware do Xiaomi. Wchodzimy do
http://www1.miwifi.com/miwifi_download.html. Klikany ikonę routerów (11.1), wybieramy wersję firmware (11.2).
W moim przypadku był to plik o nazwie miwifi_r1cm_firmware_4156a_2.5.22.bin. Zmieniamy jego nazwę na
miwifi.bin. Uwaga - system Windows ukrywa rozszerzenia plików, więc jeżeli używasz Windows to upewnij się że plik nazywa się koniecznie miwifi.bin a nie miwifi.bin.bin!
12. (komputer) Formatujemy pendrive na FAT, nie nadajemy mu żadnej specjalnej nazwy. Nagrywamy do głównego katalogu plik
miwifi.bin13. (router) Wgrywamy do routera nowy soft. Odłączamy zasilanie routera, podłączamy do niego pendrive, wciskamy przycisk reset (to ten obok złącza USB - np. wykorzystujemy do tego wykałaczkę), trzymając wciśnięty przycisk reset włączamy zasilanie. Po paru sekundach router zacznie migać pomarańczową diodą LED, można przycisk reset zwolnić. Jeżeli pendrive ma też LED to powinna ona migać w miarę odczytu danych. W tym przypadku wykonuje się flashowanie routera; jeżeli pomarańczowa dioda nie miga - należy zmienić pendrive na inny. Po całym procesie kolor diody zmieni się na niebieski. Można odłączyć zasilanie routera, odłączamy także pendrive.
14 . (komputer) Podłączamy pendrive do komputera, usuwamy z niego plik miwifi.bin oraz katalog z backupem jeżeli taki powstał. Na pendrive nagrywamy plik
miwifi_ssh.bin, dokładnie pod taką nazwą, uzyskany w punkcie 10.
15. (router) Wgrywamy do routera soft SSH, identycznie jak w punkcie 13. Odłączamy zasilanie routera, podłączamy do niego pendrive, wciskamy przycisk reset, trzymając wciśnięty przycisk reset włączamy zasilanie. Po paru sekundach router zacznie migać pomarańczową diodą LED, można przycisk zwolnić. Całość trwa dość szybko, router znów powinien zaświecić niebieską diodą LED.
16. (komputer) Uruchamiamy klienta SSH (pod windows - putty, pod linuksem/macos - zwykły ssh), łączymy się na adres 192.168.13.1 jako użytkownik root (pod linuksem/macos:
ssh root@192.168.31.1). Jeżeli wszystko przebiegło prawidłowo w poprzednich punktach to zgłosi się router i zapyta się o hasło. Podajemy mu to które było na stronie podczas pobierana firmware SSH w punkcie 10. Jeżeli udało się połączyć powinno nastąpić zgłoszenie:
BusyBox v1.19.4 (2015-08-27 20:02:33 CST) built-in shell (ash)
Enter 'help' for a list of built-in commands.
-----------------------------------------------------
Welcome to XiaoQiang!
-----------------------------------------------------
root@XiaoQiang:~#
17. (router) Do routera należy pobrać OpenWrt do katalogu /tmp. Jeżeli router nadal jest podłączony do internetu to wystarczy polecenie
cd /tmp
wget -O /tmp/firmware.bin http://dl.eko.one.pl/luci/chaos_calmer/ramips/luci-15.05-ramips-mt7620-xiaomi-miwifi-mini-squashfs-sysupgrade.bin
Jeżeli nie - wgrywamy przez winscp (windows) lub scp (linux/macos) wybrane przez nas oprogramowanie do katalogu /tmp np. pod nazwą
firmware.bin.
18. (router) Sprawdzamy z jaką wersją firmware routera mamy do czynienia. Wykonujemy polecenie
cat /proc/mtd
Jeżeli pojawi się:
dev: size erasesize name
mtd0: 01000000 00010000 "ALL"
mtd1: 00030000 00010000 "Bootloader"
mtd2: 00010000 00010000 "Config"
mtd3: 00010000 00010000 "Factory"
mtd4: 00c80000 00010000 "OS1"
mtd5: 00b19a3b 00010000 "rootfs"
mtd6: 00200000 00010000 "OS2"
mtd7: 00100000 00010000 "overlay"
mtd8: 00010000 00010000 "crash"
mtd9: 00010000 00010000 "reserved"
mtd10: 00010000 00010000 "Bdata"
(11 partycji) to jest to wersja "nowa". Jeżeli pojawi się:
dev: size erasesize name
mtd0: 01000000 00010000 "ALL"
mtd1: 00030000 00010000 "Bootloader"
mtd2: 00010000 00010000 "Config"
mtd3: 00010000 00010000 "Factory"
mtd4: 00c80000 00010000 "OS1"
mtd5: 00b26e43 00010000 "rootfs"
mtd6: 00200000 00010000 "OS2"
mtd7: 00100000 00010000 "overlay"
mtd8: 00010000 00010000 "crash"
mtd9: 00010000 00010000 "reserved"
mtd10: 00010000 00010000 "Bdata"
mtd11: 00fa0000 00010000 "firmware"
(12 partycji, wśród nich partycja "firmware") to jest to wersja "stara".
19. Wgrywamy oprogramowanie
Dla wersji nowej:
root@XiaoQiang:/tmp# mtd -r write /tmp/firmware.bin OS1
Dla wersji starej:
root@XiaoQiang:/tmp# mtd -r write /tmp/firmware.bin firmware
Cierpliwie czekamy na wgranie softu. Router zrestartuje się.
20. (komputer) Zmieniamy IP komputera na 192.168.1.166 i w zależności od tego jaką wersję oprogramowania wybraliśmy logujemy się przez telnet lub www i cieszymy działającym OpenWrt.
$ telnet 192.168.1.1
Trying 192.168.1.1...
Connected to 192.168.1.1.
Escape character is '^]'.
=== IMPORTANT ============================
Use 'passwd' to set your login password
this will disable telnet and enable SSH
------------------------------------------
BusyBox v1.23.2 (2015-09-12 11:28:52 CEST) built-in shell (ash)
_ _____ _____
| | / ____|_ _|
| | _ _| | | |
| | | | | | | | |
| |___| |_| | |____ _| |_
|______\__,_|\_____|_____|
----------------------------------------------------------------
| |
| OpenWrt Chaos Calmer 15.05 (r47196) |
| Build time: 2015-10-17 13:07 CEST |
| |
| Cezary Jackiewicz (obsy), http://eko.one.pl |
| |
----------------------------------------------------------------
| Machine: Xiaomi MiWiFi Mini |
| Uptime: 0d, 00:00:55 |
| Load: 1.13 0.36 0.13 |
| Flash: total: 9.2MB, free: 8.8MB, used: 5% |
| Memory: total: 123.4MB, free: 109.8MB, used: 11% |
| WAN: |
| LAN: 192.168.1.1 |
----------------------------------------------------------------
root@OpenWrt:~# cat /proc/mtd
dev: size erasesize name
mtd0: 00030000 00010000 "u-boot"
mtd1: 00010000 00010000 "u-boot-env"
mtd2: 00010000 00010000 "factory"
mtd3: 00f80000 00010000 "firmware"
mtd4: 001244bb 00010000 "kernel"
mtd5: 00e5bb45 00010000 "rootfs"
mtd6: 00930000 00010000 "rootfs_data"
mtd7: 00010000 00010000 "crash"
mtd8: 00010000 00010000 "reserved"
mtd9: 00010000 00010000 "Bdata"
root@OpenWrt:~# cat /proc/cpuinfo
system type : MediaTek MT7620A ver:2 eco:6
machine : Xiaomi MiWiFi Mini
processor : 0
cpu model : MIPS 24KEc V5.0
BogoMIPS : 385.84
wait instruction : yes
microsecond timers : yes
tlb_entries : 32
extra interrupt vector : yes
hardware watchpoint : yes, count: 4, address/irw mask: [0x0ffc, 0x0ffc, 0x0ffb, 0x0ffb]
isa : mips1 mips2 mips32r1 mips32r2
ASEs implemented : mips16 dsp
shadow register sets : 1
kscratch registers : 0
package : 0
core : 0
VCED exceptions : not available
VCEI exceptions : not available
root@OpenWrt:~#
Jeżeli mamy już wgranie OpenWrt to aktualizację wykonujemy standardowo, przez
sysupgrade.