Archive

Archive for January, 2012

TP-Link WR1043ND debrick

January 21st, 2012 14 comments

Ma sikeresen unbrickeltem a routeremet, amire a felelőtlen bleeding edge dd-wrt verziók felelőtlen feltöltögetése miatt volt szükség.

A setting elég érdekes volt, a szívás hosszas, de leginkább azért mert az OpenWRT oldalán a router részletes leírásában a soros port pinjei rosszul voltak megadva. Az RX és a TX fel volt cserélve. És hogy én kísérletezésből kipróbáljam őket fordítva, az nagyon sokára történt meg. Amikor már hosszas utánaolvasások után az is kiderült, hogy biztosan 115200 baudos kell legyen a terminál beállítása. Ja és amikor már túlvoltam egy Prolific USB to serial kábel használatán és már azt hittem az nem is működik a gépemen (OS X Lion, csak hogy variáljunk) de amelyik Linux-szal, vagy Windows géppel próbálgattam szintán nem működött megfelelően. Nyilván a pinek cseréje miatt. Szóval USB to serial konvertáláshoz épp az Arduinomat használtam. Tudom, kicsit túlzás, de gondoltam abban is van ilyen chip, hátha rá lehet venni. A neten kihalófélben lévő információ, de használható dumb USB-soros konverterként az Arduino. Szóval sok érdekesség volt az egészben, ezért leírom mindenki okulására, összefoglalva, hogyan kell egy TP-Link WR1043ND v1.1 wifi routert unbrickelni, visszahozni az élőhalott állapotból egy sikertelen firmware frissítés, flash-elés után.

Az Arduino lebutítása USB-soros konverterré:
A digitális 0 az RX az 1 a TX.
A lebutítást, azaz a mikrokontroller kiiktatását a RESET pin és a GROUND pin rövidre kapcsolásával lehet elérni.

A soros porton elérni kívánt eszköz rákötése az Arduinora így:

Eszköz ::::::::::::: Arduino
TX ----------------- RX
RX ----------------- TX
GROUND ------------- GROUND

VCC-t, tehát a tápot nem szabad rákötni az eszközre. Ez minden USB-soros konverterre igaz!

Az unbrickhez az OpenWRT oldaláról származó és fórumokon többszörösen igazolt megoldás működött, még annak ellenére is, hogy a konkrét számokat firmware-enként módosítani kellene. Nekem ezek a számok működtek pontosan.

Figyelembe kell venni, hogy honnan szerzel firmware-t amire visszaállnál és az mire jó. Lásd: http://wiki.openwrt.org/toh/tp-link/tl-wr1043nd

Ha a hivatalos letöltési helyről szerzed, akkor nem kell vagdosni, mert ott nem …boot… elnevezésű image-ek vannak.
Én biztosra mentem és a már említett, többszörösen bevált fórumhozzászólásba csatolt szerkesztett image-et töltöttem le és írtam a routerre. (hvandrie hozzászólása itt, sajnos a csatolmány csak akkor tölthető le, ha regisztrálsz a fórumba)

A letöltött image-et tedd be egy könyvtárba.

Tölts le egy TFTP szerver programot. A TFTP szerver programodban az induló könyvtárat állítsd arra a könyvtárra, amiben a letöltött image van. Érdemes az image-et átnevezni valami egyszerűen begépelhetőre, mert pl. nálam a soros terminálba nem lehetett bemásolni dolgokat.

Kell egy soros terminal program. Feltettem egy GoSerial nevű programot. Wondowson a PuTTY tökéletes megoldás. A terminal kapcsolódási beállításai:
baudrate: 115200
data bits: 8
parity: none
stop bits: 1
hw flow control: none

Állítsd be a statikus 192.168.0.5 címet a gépeden és kösd össze UTP kábellel is a gépedet a routerrel (annak egyik LAN portjával).

Indítsd el a routert. Ha minden jól ment, megjelennek az üzenetek a terminalban.

Kicsit nézegetheted, ízlelgetheted a hibát, ami miatt összeomlott. Nekem újra és újra indult végtelen ciklusban. Ez volt nálam a hibaüzenet:

Autobooting in 1 seconds## Booting image at bf020000 ...
Uncompressing Kernel Image ... Error: Bad gzipped data
GUNZIP ERROR - must RESET board to recover

Resetting...·

Van egy pont, amikor közbe lehet avatkozni. Azt írja ki egyszercsak, hogy ‘Autobooting in 1 seconds’. Ekkor kell nagyon gyorsan beírni, hogy ‘tpl’.

Az ezután a terminalban végzett kung-fu-ról itt egy részletes log az OpenWRT oldalán összehasonlításként.

Én minden értéket pontosan úgy írtam be ezek után, mint a kiemelt parancsok (amik egyébként egy az egyben megegyeznek a fórumozó hvandrie leírásával is) és sikeresen visszahoztam a routert az élők sorába.