JTAG jest interfejsem sprzętowym, który umożliwia bezpośredni dostęp do pamięci Flash danego urządzenia. Istnieje wiele rozwiązań tego typu interfejsu. Dzięki temu interfejsowi jesteśmy w stanie naprawić urządzenie(w tym przypadku router) w czasie, gdy inne(programowe) sposoby zawodzą.
Do naprawy potrzebne jest odpowiednie oprogramowanie. Dostępne jest zarówno na Windowsa jak i Linuxa.
HairyDairyMaids JTAG Tools v4.5
HairyDairyMaids JTAG Tools v4.8
Powyżej zamieszczono linki do dwóch wersji tego oprogramowania. Zalecane jest użycie najnowszej wersji(4.8), ale czasami z różnych względów trzeba użyć starszej wersji. Każda z tych paczek zawiera schematy, binarki pod Windows, sterownik giveio.sys oraz kod do skompilowania pod Linuxa.
Kompilacja jest prosta wystarczy komenda
make
Przy przypadku Ubuntu przed zabawa JTAGiem należy wykonać komendy, które aktywują LPT.
sudo modprobe ppdev sudo rmmod lp
Używając narzędzie JTAG Tools(wrt54g) należy mieć prawa administratora, lub użyć programu „sudo”.
Aby korzystać z DeBrick Utility musimy zainstalować bibliotekę giveio.sys która znajduje się w ściągniętej paczce, kopiujemy ją do C:\WINDOWS\system32\drivers następnie uruchamiamy LoadDrv i w ścieżce do biblioteki „Full pathname of driver” wpisujemy c:\windows\system32\drivers\giveio.sys i naciskamy Start.
Uruchamiamy ponownie komputer przechodzimy do Menedżera urządzeń> Widok> Pokaż ukryte urządzenia, wybieramy Sterowniki niezgodne z Plug and Play i z rozwijanej listy giveio przechodzimy do sekcji Sterownik> Uruchamianie i wybieramy opcje Automatycznie, następnie uruchamiamy ponownie komputer.
Kopiujemy plik wrt54g.exe na dysk c: podpinamy JTAG i zasilacz do routera. Uruchamiamy konsole systemową poprzez wpisanie w okienku uruchom komendy cmd. Następnie wpisujemy:
cd c:\
W tej chwili możemy juz naprawić swój router, komendami opisanymi poniżej.
Każdy AP oparty na chipie Broadcom 47XX i 53XX zawiera trzy bloki:
CFE jest to bootloader, który uruchamiany jest od razu po włączeniu routera do sieci zasilania i odpala KERNEL.
Bardzo rzadko zachodzi konieczność usuwania CFE.
NVRAM jest to pewnia część flasza w której przechowywane są najważniejsze ustawienia routera do poprawnej pracy
KERNEL jest to typowa dystrybucja linuksa na którą przeznaczona jest największa objętość pamięci flash.
Oprogramowanie umożliwia wykonywanie trzech czynności:
W przypadku skasowania KERNELa wykonujemy polecenie
wrt54g -erase:kernel
W podobny sposób możemy skasować inne bloki. Do programowania używamy przełącznika -flash: np:.
wrt54g -flash:cfe
Co spowoduje wgranie CFE do pamięci Flash.
W przypadku prostych napraw(np. po źle wgranym fimware, przerwany upgrade przez zanik napięcia) wystarczy usunąć KERNEL i NVRAM(w przypadku Linksysów) lub sam KERNEL w przypadku Motoroli. Usunięcie NVRAM może spowodować poważniejsze uszkodzenie Motoroli.
Nie zalecane jest programowanie KERNELA poprzez JTAG, gdyż w czasie transmisji powstają błędy w czasie transmisji tak dużego pliku, poza tym trwa to bardzo długo. Podobnie jest z CFE, bardzo rzadko kasuje sie ten blok, najczęściej sie robi jego backup na wszelki wypadek :]
wrt54g -backup:cfe
Bardzo często wystarczy skasować NVRAM oraz KERNEL, wówczas wystarczą komendy:
wrt54g -erase:nvram wrt54g -erase:kernel
Następnie możemy załadować nowy soft po TFTP.
WRT pins 1/2 ---------> ^ +3.3v 1uf
+--------------+||------------- to GND
|16
--------------
| |
WRT pin 6 <--- 9 | from rs232 | 8 <--- rs232 DB9(a) pin 2 (do 7 piny maxa)
| (ttyS0) |
WRT pin 4 --> 10 | to rs232 | 7 --> rs232 DB9(a) pin 3 (do 8 pinu maxa)
.......... | ......... |...........
WRT pin 5 <-- 12 | from rs232 | 13 <-- rs232 DB9(b) pin 2
| (ttyS1) |
WRT pin 3 --> 11 | to rs232 | 14 --> rs232 DB9(b) pin 3
| |
+-------- 5 | max232 |
| 1uf | |
+---||+-- 4 | <-charge |
| pump | 1uf
+-------- 3 | <-caps | 6 ----||+---- to GND
| 1uf | --> | 1uf
+--+||--- 1 | | 2 ---+||---- to GND
| 15 |
--------------
|
WRT pins 9/10 ---------+------------- connect to pin 5 on
| both DB9(a) and DB9(b) serial connectors
-----
---
Motorola wyprowadzenia RS232
o
o o RX0 (pin 9 maxa)
GND o o RX1
o o TX1
VCC o o TX0 (pin 10 maxa)
W przypadku posiadania systemu Windows w sumie nie musimy niczego dodatkowego instalować wystarczy standardowo dołączany program Hyperterminal. W momencie, gdy używamy Linuxa sprawa jest nieco inna. Musimy doinstalować program, który będzie wyświetlał dane wyjściowe z routera. Jeżeli dysponujemy środowiskiem Gnome warto użyć „gtkterm”.
JP1 Pin 1: 3.3V Pin 2: 3.3V Pin 3: Tx (ttyS1) Pin 4: Tx (ttyS0) Pin 5: Rx (ttyS1) Pin 6: Rx (ttyS0) Pin 7: NC Pin 8: NC Pin 9: GND Pin 10: GND
_____________________ |GND| . |TXD|RXD| . | |VCC| . | . | . | . | ̅̅̅̅̅̅̅̅̅̅̅̅̅̅̅̅̅̅̅̅̅ |Power| |Ethernet|
WLAN ___________________ |RX1|TX1|GND|RESET| |RX0|TX0|VCC| . | ̅̅̅̅̅̅̅̅̅̅̅̅̅̅̅̅̅̅̅ |Power|
Dyskusja