strona główna
artykuły i recenzje
poradniki
galeria zdjęć
fotoblog

Routery TP-Link w końcu otrzymały automatyczny tryb firmware recovery w U-Boot

Dodano: Sobota, 21 września 2013, godzina 22:19:38
Kategoria: Poradniki

Do tej pory jedynym znanym przeze mnie routerem TP-Link, który fabrycznie wyposażony był w prosty tryb ratunkowy, umożliwiający ponowne wgranie firmware przy pomocy TFTP w U-Boot, był model TL-WR842ND. Jakiś czas temu, przy okazji przeglądania źródeł z TP-Link GPL Code Center dla jednego z najnowszych modeli - TP-Link TL-WR710N(EU) v1, natknąłem się na fragment kodu, który realizował taką funkcjonalność (zobacz mój post na forum OpenRouter). Niedługo potem, na forum eko.one.pl w jednym z wątków pojawiła się informacja o tym, że tryb ten został odkryty w najnowszych, rosyjskojęzycznych wersjach oficjalnego oprogramowania TP-Link dla modeli TL-WDR3600, TL-WDR4300 i innych (z braku dostępu do wszystkich modeli byłem w stanie sprawdzić jedynie niektóre z nich). Co jeszcze ciekawsze, ta sama funkcjonalność została po cichu przemycona, bez żadnej informacji na liście zmian, również i do polskiej wersji firmware, na razie dla modelu TL-WDR4300.

W dalszej części tego wpisu pokazuję, krok po kroku, jak można “zaopatrzyć się” w wersję U-Boot zawierającą ten tryb oraz jak go używać. Na końcu wpisu znajdziecie również listę routerów oraz wersji oryginalnego oprogramowania, w którym znajduje się opisywany tryb ratunkowy. Przy okazji, bardziej zaawansowanym użytkownikom, polecam moją modyfikację U-Boot dla routerów, dostępną w GitHub.

Kilka uwag na początek

TP-Link publikuje aktualizacje oprogramowania (firmware) w dwóch wersjach - zawierające dwa obrazy w jednym pliku (obraz firmware oraz obraz U-Boot) lub zawierające wyłącznie obraz firmware. Na nasze szczęście, producent w nazwie pliku umieszcza informację o tym (słowo kluczowe w nazwie to “boot”), czy zawiera on również obraz U-Boot. Przykładowo, dwa ostatnie, w chwili pisania tego tekstu, aktualizacje firmware dla TL-WDR4300 z polskiej strony zawierały pliki nazwane odpowiednio:

  • wdr4300v1_en_3_13_33_up_boot(130617).bin (plik zawiera obraz firmware oraz obraz U-Boot)
  • wdr4300v1_en_3_13_31_up(130319).bin (plik zawiera wyłącznie obraz firmware)

Tak jest na pewno z obrazami publikowanymi przez polski i inne europejskie oddziały TP-Link. Należy uważać w przypadku wgrywania oryginalnego oprogramowania ze stron chińskich - tam powyższa zasada nazywania plików nie jest regułą.

Drugą, zdecydowanie pewniejszą metodą sprawdzenia czy plik zawiera, poza obrazem firmware, również obraz bootloadera jest wykorzystanie dowolnego edytora HEX. Wystarczy przy jego pomocy przeszukać plik (w trybie tekstowym) pod kątem frazy “U-Boot 1.1.4″. Wynik pozytywny, jak na poniższym zrzucie ekranu, świadczy o zawartości obrazu U-Boot w pliku z aktualizacją oprogramowania:

Ewentualnie, osoby bardziej obeznane w temacie, mogą sprawdzić czy plik zawiera dwa nagłówki (TP-Link stosuje własne nagłówki o rozmiarze 200 bajtów, a ich strukturę, poza oficjalnymi źródłami, można sprawdzić też np. w moim repozytorium zmodyfikowanej wersji U-Boot).

Jeżeli korzystacie aktualnie na routerze z jakiegoś alternatywnego oprogramowania, np. OpenWrt lub Gargoyle, to pod żadnym pozorem nie wolno Wam wgrywać oryginalnego oprogramowania TP-Link zawierającego w pliku również obraz U-Boot! Taka operacja zawsze zakończy się uszkodzeniem routera (na szczęście odwracalnym i w gruncie rzeczy niegroźnym, ale do naprawy wymagającym otwarcia urządzenia i podłączenia się do konsoli szeregowej). Po takim zabiegu router nie uruchomi się już ponownie i będzie się w kółko restartować.

Zasada przy powrocie z OpenWrt/Gargoyle do oryginalnego oprogramowania jest prosta - wgrywamy plik zawierający wyłącznie obraz firmware!

Wgrywamy (na przykładzie TL-WDR4300)

Posiadacze modelu TL-WDR4300 mają sprawę w pewnym sensie ułatwioną, ponieważ firmware z trybem recovery znalazł się w ostatniej, w chwili pisania tego tekstu, oficjalnej aktualizacji w języku polskim, oznaczonej: TL-WDR4300_V1_130617. Wystarczy wgrać tę wersję, oczywiście TYLKO I WYŁĄCZNIE z poziomu oryginalnego oprogramowania (ze względu na zawartość obrazów firmware i U-Boot w pliku).

Jeżeli na routerze zainstalowane macie aktualnie alternatywne oprogramowanie, to należy wykonać trochę więcej kroków, kolejno:

Jeżeli używacie innego modelu, np. TL-WDR3600, to procedura będzie podobna, ale ze względu na brak (na razie?) trybu recovery w ostatnich aktualizacjach na polskiej stronie, trzeba sięgnąć po rosyjskojęzyczną wersję oprogramowania w wersji TL-WDR3600_V1_130527_RU. I tak jak w przypadku TL-WDR4300, jeżeli korzystacie z alternatywnego oprogramowania, najpierw należy wykonać powrót do wersji oficjalnej przy pomocy pliku bez obrazu U-Boot (np. ze strony eko.one.pl) i dopiero wtedy wgrać wersję rosyjskojęzyczną. Użytkownicy oryginalnego oprogramowania mogą oczywiście od razu, z jego poziomu, wgrać aktualizację zawierającą obraz firmware oraz U-Boot w jednym pliku.

Jeżeli ktoś ma trudności z językiem rosyjskim, to strona do aktualizacji oprogramowania znajduje się na 3 pozycji w ostatnim menu (plik /userRpm/SoftwareUpgradeRpm.htm).

Używamy

Opisywany tryb recovery wykorzystuje po stronie routera klienta TFTP (IP routera: 192.168.0.86), który próbuje w nieskończoność (żeby przerwać ten tryb bez dostępu do konsoli szeregowej należy po prostu odłączyć zasilanie), z serwera TFTP pracującego na IP 192.168.0.66, pobrać plik o konkretnej nazwie (patrz niżej). Żeby wejść w tryb recovery należy podczas uruchamiania routera (od razu po podłączeniu do prądu) wcisnąć i przytrzymać przycisk WPS/Reset (lub Reset w przypadku innych urządzeń).

Urządzenie w żaden sposób nie informuje niestety o wejściu w tryb recovery i nie odpowiada też na ICMP Echo Request czyli tzw. ping. Jedyny sposób na sprawdzenie, czy router oczekuje na połączenie z serwerem TFTP, to podejrzenie transmisji na karcie sieciowej, np. przy pomocy oprogramowania Wireshark.

Oczywiście, przed samym uruchomieniem routera i wejściem w tryb recovery, należy podłączyć go kablem sieciowym z komputerem, skonfigurować adres IP karty sieciowej oraz uruchomić serwer TFTP:

  • IP: 192.168.0.66
  • Maska: 255.255.255.0
  • Nazwa pliku: wdr4300v1_tp_recovery.bin, wdr3600v1_tp_recovery.bin lub inna, w zależności od modelu (nazwę można rozszyfrować np. podglądając przy pomocy Wireshark odpowiedni pakiet z zapytaniem - patrz niżej)

Przykładowy zrzut z konsoli szeregowej całego procesu wgrywania oprogramowania przy pomocy trybu ratunkowego poniżej (na przykładzie modelu TP-Link TL-WDR3600):

U-Boot 1.1.4 (May 27 2013 - 16:15:39)
 
U-boot DB120
 
DRAM:  128 MB
id read 0x100000ff
flash size 8MB, sector count = 128
Flash:  8 MB
Using default environment
 
PCIe Reset OK!!!!!!
In:    serial
Out:   serial
Err:   serial
Net:   ag934x_enet_initialize...
No valid address in Flash. Using fixed address
 wasp  reset mask:c03300
WASP  ----> S17 PHY *
: cfg1 0x7 cfg2 0x7114
eth0: ba:be:fa:ce:08:41
athrs17_reg_init: complete
eth0 up
eth0
dup 1 speed 1000
Using eth0 device
TFTP from server 192.168.0.66; our IP address is 192.168.0.86
Filename 'wdr3600v1_tp_recovery.bin'.
Load address: 0x80060000
Loading: #################################################################
	 #################################################################
	 #################################################################
	 #################################################################
	 #################################################################
	 #################################################################
	 #################################################################
	 #################################################################
	 #################################################################
	 #################################################################
	 #################################################################
	 #################################################################
	 #################################################################
	 #################################################################
	 #################################################################
	 #################################################################
	 #################################################################
	 #################################################################
	 #################################################################
	 #################################################################
	 #################################################################
	 #################################################################
	 #################################################################
	 #################################################################
	 ############################
done
Bytes transferred = 8126464 (7c0000 hex)
original_product_id = 36000001
 
 original_product_ver = 01
 
 recovery_product_id = 36000001
 
 recovery_product_ver = 01
 
 auto update firmware: product id verify sucess!
 
First 0x2 last 0x7d sector size 0x10000
 125
Erased 124 sectors
Copy to Flash... write addr: 9f020000
done

Po prawidłowym wgraniu obrazu nastąpi restart routera i próba załadowania nowego oprogramowania. W przypadku niepowodzenia (np. po wgraniu złego obrazu), router będzie kontynuować bootowanie znajdującego się we FLASH systemu.

Modele z trybem recovery

Poniżej zamieszczam listę wersji oryginalnego oprogramowania TP-Link, w których pojawił się opisywany tryb recovery. Wszystkie poniższe wersje zostały przeze mnie sprawdzone na wymienionych urządzeniach - stan na dzień 21.09.2013:

Prawdopodobnie ten tryb trafił do znacznie liczniejszej grupy urządzeń TP-Link, na przełomie maja i czerwca tego roku. Jeżeli posiadacie jakiś inny model niż wymieniony powyżej i na rosyjskojęzycznej stronie wsparcia TP-Link znajduje się dla niego plik aktualizacji z tego okresu, zawierający obraz U-Boot, to warto go wgrać (oczywiście z poziomu innej oryginalnej wersji oprogramowania!) i sprawdzić!

Kilka uwag na koniec

Jak wynika z zamieszczonego powyżej zrzutu z konsoli, tryb ten posiada prostą weryfikację wgrywanego obrazu (sprawdzeniu podlega nagłówek obrazu). Jest to zabezpieczenie przed wgraniem obrazu przeznaczonego dla innego modelu. Oczywiście, możliwe jest wgranie przy pomocy tego trybu obrazów OpenWrt/Gargoyle, ponieważ one również wyposażone są w odpowiedni nagłówek. I co więcej, nie ma znaczenia czy będzie to plik factory, czy sysupgrade.

Należy pamiętać jedynie o kilku sprawach. Przede wszystkim, tryb ten nie obsługuje plików zawierających obrazy firmware i U-Boot. Należy wgrywać plik zawierający wyłącznie obraz firmware (czyli stosujemy taką samą zasadę jak przy powrocie do oryginalnego oprogramowania z OpenWrt/Gargoyle). Ponadto, przed wykonaniem aktualizacji do nowej wersji oryginalnego firmware, jeżeli plik zawiera obraz U-Boot, warto upewnić się wcześniej czy tryb ten nie został z niego usunięty i ewentualnie wyciąć z pliku aktualizacyjnego obraz U-Boot wraz z jego nagłówkiem.

» komentarzy: 5 «

tech-blog | Tryb recovery w oprogramowaniu TP-Link dla modeli TL-WDR3600, TL-WDR4300, TL-MR3020 i TL-MR3220v2
Dodany: Niedziela, 22 września 2013 o godzinie: 13:01:19

[...] Więcej informacji o tym jak się zaopatrzyć w ten tryb i jak go używać znajdziecie w moim krótkim artykule pt. Routery TP-Link w końcu otrzymały automatyczny tryb firmware recovery w U-Boot. [...]

jarek
Dodany: Niedziela, 17 listopada 2013 o godzinie: 23:53:20

Super!

Mam tylko jedno pytanie:
Mam wgrany OpenWRT AA. Czy jestem w stanie bez podłączania się kablami do konsoli sprawdzić wersję swojego u-boot’a?

pepe2k
Dodany: Poniedziałek, 18 listopada 2013 o godzinie: 00:06:32

Tak, zrzuć sobie partycję z U-Bootem i przejrzyj plik w jakimś edytorze HEX.

jarek
Dodany: Poniedziałek, 18 listopada 2013 o godzinie: 01:21:02

Dzięki!

Zrzut partycji u-boot’a do pliku (może się komuś przyda):

dd if=/dev/$(grep ‘”u-boot”‘ /proc/mtd |cut -c 1-4) of=/tmp/uboot.backup

Marcin
Dodany: Czwartek, 26 lutego 2015 o godzinie: 11:24:19

Bełkot.
Dla laika ten opis to bełkot, a szkoda. Czuć przez skórę, że treść jest cenna.

» dodaj komentarz «





» Komentarze dodane przez niezarejestrowanych użytkowników muszą być zatwierdzone przez moderatora


» kategorie wpisów

Co nowego na stronie (wpisów: 43)
Dzikie.NET (wpisów: 16)
Humor (wpisów: 46)
Inne (wpisów: 34)
Kapsle Tymbark (wpisów: 29)
Moje projekty i pomysły (wpisów: 43)
Narzekam na… (wpisów: 16)
Nowości w galerii (wpisów: 12)
Nowości, ciekawostki (wpisów: 595)
O mnie (wpisów: 36)
Wordpress (wpisów: 1)
Zabawki (wpisów: 9)
Zdjęcie bez komentarza (wpisów: 91)
Zdjęcie z komentarzem (wpisów: 23)
Strony w domenie tech-blog.pl wykorzystują pliki cookies w celach statystycznych, analizy oglądalności oraz na potrzeby wyświetlania reklam. Jeżeli nie wyrażasz na to zgody, zmień ustawienia wykorzystywanej przeglądarki internetowej. Więcej informacji na stronie Polityka prywatności i cookies (ciasteczka).

» archiwum wpisów

styczeń 2014 (wpisów: 2)
grudzień 2013 (wpisów: 6)
listopad 2013 (wpisów: 27)
październik 2013 (wpisów: 21)
wrzesień 2013 (wpisów: 27)
sierpień 2013 (wpisów: 8)
lipiec 2013 (wpisów: 8)
czerwiec 2013 (wpisów: 6)
maj 2013 (wpisów: 16)
kwiecień 2013 (wpisów: 17)
marzec 2013 (wpisów: 18)
luty 2013 (wpisów: 22)
styczeń 2013 (wpisów: 19)
grudzień 2012 (wpisów: 20)
listopad 2012 (wpisów: 33)
październik 2012 (wpisów: 25)
wrzesień 2012 (wpisów: 15)
maj 2012 (wpisów: 1)
kwiecień 2012 (wpisów: 1)
marzec 2012 (wpisów: 1)
styczeń 2012 (wpisów: 2)
grudzień 2011 (wpisów: 1)
listopad 2011 (wpisów: 7)
październik 2011 (wpisów: 4)
wrzesień 2011 (wpisów: 1)
sierpień 2011 (wpisów: 3)
lipiec 2011 (wpisów: 2)
czerwiec 2011 (wpisów: 3)
maj 2011 (wpisów: 1)
marzec 2011 (wpisów: 3)
luty 2011 (wpisów: 5)
styczeń 2011 (wpisów: 5)
grudzień 2010 (wpisów: 6)
listopad 2010 (wpisów: 2)
październik 2010 (wpisów: 1)
wrzesień 2010 (wpisów: 4)
sierpień 2010 (wpisów: 2)
lipiec 2010 (wpisów: 4)
kwiecień 2010 (wpisów: 4)
marzec 2010 (wpisów: 12)
luty 2010 (wpisów: 4)
styczeń 2010 (wpisów: 1)
listopad 2009 (wpisów: 1)
październik 2009 (wpisów: 1)
wrzesień 2009 (wpisów: 1)
sierpień 2009 (wpisów: 3)
lipiec 2009 (wpisów: 2)
czerwiec 2009 (wpisów: 6)
kwiecień 2009 (wpisów: 1)
marzec 2009 (wpisów: 25)
luty 2009 (wpisów: 9)
styczeń 2009 (wpisów: 13)
grudzień 2008 (wpisów: 7)
listopad 2008 (wpisów: 11)
październik 2008 (wpisów: 1)
wrzesień 2008 (wpisów: 9)
sierpień 2008 (wpisów: 49)
lipiec 2008 (wpisów: 2)
czerwiec 2008 (wpisów: 39)
maj 2008 (wpisów: 52)
kwiecień 2008 (wpisów: 49)
marzec 2008 (wpisów: 58)
luty 2008 (wpisów: 38)
styczeń 2008 (wpisów: 12)
grudzień 2007 (wpisów: 16)
listopad 2007 (wpisów: 2)
październik 2007 (wpisów: 8)
wrzesień 2007 (wpisów: 16)
sierpień 2007 (wpisów: 7)
lipiec 2007 (wpisów: 3)
czerwiec 2007 (wpisów: 3)
maj 2007 (wpisów: 11)
kwiecień 2007 (wpisów: 11)
marzec 2007 (wpisów: 16)
luty 2007 (wpisów: 9)
styczeń 2007 (wpisów: 13)
grudzień 2006 (wpisów: 5)
listopad 2006 (wpisów: 4)
październik 2006 (wpisów: 13)
wrzesień 2006 (wpisów: 15)
sierpień 2006 (wpisów: 8)
lipiec 2006 (wpisów: 5)
czerwiec 2006 (wpisów: 39)
maj 2006 (wpisów: 38)
All rights reserved Copyright 2006-2012 Piotr Dymacz