czwartek, 24 czerwca 2010

Reanimacja TP-LINK TL-WR1043ND



Wrzucając zły obraz dd-wrt z wcześniejszego openwrt przez mtd, popsułem swojego nowego TP-LINK'a. Skutek: Power świeci, reszta diod mruga co kilka sekund, brak jakiejkolwiek komunikacji przez sieć. W desperacji zacząłem przeszukiwać fora z openwrt, dd-wrt itp. Okazało się, że jest ratunek: coś w stylu:

"Jest Boot jest Impreza!"

Wszystko co tutaj opisze znajdziecie na forach, ja tylko pozbierałem wszystkie info w jedno miejsce. Sposób wymaga on żadnych nadzwyczajnych umiejętności lutowania czy bycia elektronikiem :)

Będziemy potrzebowali:
-Kabel do starych Nokii CA-42
-Lutownice
-Trochę szczęścia i dużo cierpliwości :)

Pierwszym etapem będzie przygotowanie interfejsu, którym będziemy się łączyć z naszym routerem. Do tego będzie potrzebny kabelek CA-42, jest to rs232, czyli pospolity COM pod USB.
Ja oczywiście chciałem iść na łatwiznę, pożyczyłem kabel do naprawy ap(pod COM'a), niestety działał tylko w jedną stronę - nie mogłem wykonywać poleceń w uboocie. Dodatkowo potrzebowałbym VCC, nie kombinując poleciałem do sklepu i zakupiłem ca-42 za 18zł

Musimy odciąć końcówkę od strony telefonu - jest wiele producentów kabli CA-42, różne znaczenia kolorów, nas interesują trzy kable:

GND - masa
RX -kabel do wysyłania
TX - kabel do odbierania

Trzeba poprostu samemu dojść który jest który.
googlujcie:
ca-42 pinout
ca-42 tx rx
i szukajcie swojego opisu swojego modelu.

od shibby z openlinksys:




Jeśli nie znajdziesz to idź na koniec posta do: "Jeśli się nie uda"

Zajmiemy się teraz naszym routerem, musimy go rozkręcić: Tutaj jest miejsce w którym przyda się cierpliwość, 2 śruby są pod gumowymi nóżkami(od strony portów LAN) następnie odchylamy górna i dolną część obudowy, uwalniamy zatrzaski(czarne, podłużne) znajdujące się w okolicach diód przedniego panelu, oraz białe łączące górna i dolną przykrywę, żeby ułatwić ich ściąganie możemy delikatnie wysunąć czarą część obudowy. łatwo napisać trudniej zrobić... powodzenia :)

Po rozbiórce lokalizujemy miejsce na goldpin'y na płycie:



Będziemy musieli znaleźć albo zakupić piny, które będziemy wlutowywać. Zawsze można też skorzystać ze starej płyty głównej albo jakiegoś scalaka....
Lutujemy TYLKO GND, TX, RX,
VCC w naszym przypadku nie jest potrzebne. Do lutowania najlepiej 2 osoby, jedna trzyma płytę routera i próbuję wcisnąć pin od górnej strony, druga grzeje lutownicą cynę która znajduję się w miejscach na piny z drugiej strony płytki. W okolicy lutowania nie ma żadnych miejsc które moglibyśmy uszkodzić. Musimy teraz wykombinować jakąś wtyczkę np. od wiatraka w komputerze, tak żeby łatwo podłączyć i odłączyć wtyczkę. Następnie instalujemy stery do kabla(jeśli już tego nie zrobiliśmy).


Teraz ściągamy program putty, oraz go konfigurujemy:

Oczywiście nr portu COM wybieramy zgodnie z naszą konfiguracją w systemie(do podglądu w Menadżeże urządzeń). Jeśli już wszystko jest ustawione, klikamy Open w putty oraz podłączamy zasilanie do routera,  Wyskoczy nam log startowy z uboota:

U-Boot 1.1.4 (Nov 17 2009 - 11:56:26)

AP83 (ar9100) U-boot 0.0.11
DRAM:
sri
32 MB
id read 0x100000ff
flash size 8MB, sector count = 128
Flash: 8 MB
Using default environment

In: serial
Out: serial
Err: serial
Net: ag7100_enet_initialize...
No valid address in Flash. Using fixed address
: cfg1 0xf cfg2 0x7114
eth0: 00:xx:xx:xx:xx:xx
eth0
eth0
Autobooting in 1 seconds## Booting image at bf020000 ...
Uncompressing Kernel Image ... Error: Bad gzipped data
GUNZIP ERROR - must RESET board to recover

Resetting...


i tak w kółko informacja będzie się powtarzać, naszym zadaniem będzie wpisanie ciągu znaków: "tpl" po tej linijce:

Autobooting in 1 seconds

Powinien w tym miejscu wyskoczyć znak zachęty: ar7100>
Jeśli nie reaguje na polecenie, idź na koniec do "Jeśli nie działa:"

Następnie musimy w jakiś cywilizowany sposób dostarczyć firmware naszemu routerowi, czyli:
1. Ściągamy serwer tftp.
2. Specjalnie przygotowany firmware, dla upewnienia się sprawdzamy sumy kontrolne:

MD5: E712A4A274765A8E63E4B84AA2BCA99E
SHA1: 8B20344B19160006355F02A6BCC895353F4A4A2E

3. Ustawiamy ip na karcie sieciowej: 192.168.0.5 maska 255.255.255.0.
4. Tworzymy katalog i umieszczamy tam plik firmware.
5. odpalamy serwer tftp oraz ustawiamy ścieżkę do katalogu z firmware.
6. Podłączamy kartę sieciową z routerem.

Pozostaje nam teraz tylko czysta przyjemność, czyli zrobienie porządków w pamięci rotera po kolei w programie putty(oczywiście wcześniej połączyliśmy się z uboot'em):

Czyścimy pamięć routera:

erase 0xbf020000 +7c0000

Następnym poleceniem ściągamy z naszego serwera tftp firmware:

tftpboot 0x81000000 code.bin

Zapisujemy ściągnięty firmware tam, gdzie jego miejsce:

cp.b 0x81000000 0xbf020000 0x7c0000

Odpalamy boota:

bootm 0xbf020000

i huura! wszystko działa :)


Teraz spokojnie możemy szaleć z różnymi firmware(openwrt, dd-wrt) wiedząc ze umiemy spowrotem go reanimować :)

Wielkie podziękowania dla paco52327 bez niego by się nie udało ;]

Jeśli nie dziala:

Musimy wykombinować które piny na naszym kablu to GND RX i TX, z reguły GND to czarny.
Odpalamy putty, łączymy się i obserwujemy co się wyświetla, mając wtyczkę podpiętą do wlutowanych goldpin'ów z drugiej strony odizolowane kable od ca-42 stosujemy metodę prób i błędów.

Parę wskazówek(których nie jestem pewien, ale mnie pomogły)
- napięcie między GND, a tx oraz GND, a rx to 3.3V.
- złączenie rx i tx przy dobrze podpiętej masie powoduje echo, czyli putty odsyła to co ty napiszesz, tak pisali na forach, u mnie po prostu wyświetlało to co napisałem
- jeśli wyskakuje ciąg krzaków, na pewno coś jest źle podpięte, albo jest ustawiona zła prędkość połączenia.
- jeśli ładnie wszystko wyświetla, a nie reaguje na "tpl" prawdopodobnie coś nie tak z rx'em, albo używasz normalnego COM'a podpiętego do płyty, w tym przypadku potrzebujesz dodatkowo VCC




Dla dociekliwych mój log z flashowania:

ar7100> erase 0xbf020000 + 7c0000
Usage:
erase - erase FLASH memory

ar7100> asd
Unknown command 'asd' - try 'help'
ar7100> erase 0xbf020000 +7c0000

First 0x2 last 0x7d sector size 0x10000 125
Erased 124 sectors
ar7100> tftpboot 0x81000000 code.bin
dup 1 speed 1000
Using eth0 device
TFTP from server 192.168.0.5; our IP address is 192.168.0.2
Filename 'code.bin'.
Load address: 0x81000000
Loading: #################################################################
#################################################################
#################################################################
#################################################################
#################################################################
#################################################################
#################################################################
#################################################################
#################################################################
#################################################################
#################################################################
#################################################################
#################################################################
#################################################################
#################################################################
#################################################################
#################################################################
#################################################################
#################################################################
#################################################################
#################################################################
#################################################################
#################################################################
#################################################################
############################
done
Bytes transferred = 8126464 (7c0000 hex)
ar7100> cp.b 0x81000000 0xbf020000 0x7c0000
Copy to Flash... write addr: bf020000
done
ar7100> bootm 0xbf020000

pomocne linki: