Versione 6 del 2006-05-23 16:55:19

Nascondi questo messaggio
Italiano English
Modifica History Actions

ResuscitareWrtConJtag

Guida per resuscitare un WRT54G con EJTAGBR BR Autore: HairyDairyMaid (a.k.a. lightbulb) (hairydairymaid@yahoo.com) BR Tradotto da: ac3bf1 (ac3rent.it - ac3bf1@gmail.com) for ninux.org (23/05/2006) BR

http://www.ac3rent.it/files/docs/ResuscitareWrtConJtag/01_wrt.jpg BR

Chiarimenti: BR

1) Se utilizzate l’EJTAG o qualsiasi forma di JTAG, lo fato ***ESCLUSIVAMENTE A VOSTRO RISCHIO***.BR 2) Ne l’autore, ne la Linksys, possono essere tenuti responsabili per danni causati a qualsiasi oggetto utilizzando questa guida (includendo il router). [se volete lamentarvi con la Broadcom per non aver rilasciato le specifiche del chip siete benvenuti]BR 3) Queste procedure annulleranno la garanzia del WRT. (ovviamente pero se avete gia aperto il coperchio, la garanzia è scaduta).BR 4) Odio scrivere documentazione – quindi non chiedetemi un’altra guida.BR BR Introduzione BR Suppongo che starete leggendo questa guida perche avete un wrt da resuscitare, o perche altri modi per flashare il chip Intel non hanno funzionato fino ad ora. BR BR Beh io sfortunatamente mi sono trovata in questa posizione... cercando di aggiornare il firmware e crashava, e non riuscivo a recuperarlo con nulla. Quindi ho pensato che non dovevo essere l’unico in questa situazione, e che ci sarebbe bisogno di un recovery utilizzando JTAG sulla flash. Ho iniziato a seguire questo progetto e ho subito scoperto che Broadcom era il peggior fabbricatore di chip nel rilasciare informazioni sui loro prodotti, a meno che si firmasse una NDA, e si giurava di non divulgare informazioni relative a Broadcom. (I loro chip sono ok – ma la loro natura “proprietaria” è terribile) BR BR Comunque – dato che Broadcom non aveva voglia di cooperare nel rilasciare il file della Boundary Scan Definition Language (BSDL), e/o le specifiche del chip per il bcm4712, c’era solo una alternativa, ovvero EJTAG. EJTAG utilizzerebbe la stessa porta del JTAG Boundary Scan. Fortunatamente la Broadcom ah inserito il supporto per l’EJTAG 2.0 a chip bcm4712 utilizzando nel router WRT54G v2. Questo è quello che ho deciso di utilizzare. Io comunque non ho condiviso pienamente tutto quello che il EJTAG ha da offrire. BR BR Dato il fatto che l’obiettivo di questo progetto è SOLAMENTE quello di recuperare/reflashare una cattiva flash (alcune o tutte le sue parti) o di fare copie di backup della flash (alcune o tutte le sue parti) – Ho solo scritto questa guida utilizzando il minimo indispensabile di EJTAG per parlare con la flash utilizzando delle routines DMA su EJTAG. BR Detto questo andiamo avanti... BR

Requisiti BR Per far resuscitare la flash del tuo router WRT54g v2 utilizzando EJTAG/JTAG hai bisogno solo di due cose:BR 1) UN cavo parallelo JTAG. Ho costruito il mio per pochissimo utilizzando pezzi di scarto. Altrimenti puoi comprarne uno chiamato “Xilinx III parallel JTAG cable” o possibilmente uno stile “Wiggler.”BR 2) Software per fare la comunicazione e parlare con la flash. Io ho scritto il mio che rilascio sotto la licenza GPL. (download)BR

Costruire il cavo JTAG BR Il cavo JTAG puo essere di vari tipi; comunque, ho deciso di usare uno tipo quello della Xilinx, dato che sono molto facili da costruire, per un costo irrisorio, o nullo. Puoi comunque utilizzare un cavo JTAG di tipo Wiggler. Dato che il va Xilinx l’ho fatto da solo, questo è quello che descriverò: BR BR Parti necessarie: BR 1) Un connettore parallelo DB25 con i pin saldabiliBR 2) Quattro resistenze da 100-ohmBR 3) Un vecchio pezzo di cavo da 12 o 14 pin con un connettore ad una estremità (da una vecchia PC card) o puoi usare il cavo che vuoi e saldare le tue parti.BR 4) Un connettore a 12 pin maschio (da saldare sulla piastra)BR BR Non scriverò una spiegazione molto dettagliata, dato che le foto renderanno il tutto piu semplice.BR BR Ecco uno schema semplice per come fare il connettore parallelo e dove mappano i segnali.BR BR http://www.ac3rent.it/files/docs/ResuscitareWrtConJtag/02_jtag_layout.jpg BR BR Nota:[[BR]] Non hai bisogno dei pin VCC e TRST sull’interfaccia: il TRST è gia incluso (?) sul WRT54G, ecco perche non c’è (il bisogno di avere) il pin TRST sulla board. Ma forse vorrai fare un cavo JTAG generico che funzioni anche con altri apparati (come ho fato io – ma non ce ne + bisogno), anche se hanno un pin TRST. Dato che questo è solo un cavo passivo, fai attenzione a non farlo troppo lungo. 75 cm hanno funzionato per me.BR BR Mi è stato detto che questo tipo di cavo potrebbe non funzionare con tutti i tipi di porte parallele in mercato. Puoi trovare dei link a degli schemi per vari tipi di cavi sul sito JTAG-tools (link?). Comunque, il cavo passivo ha funzionato bene per me ed è probabilmente sufficiente per la maggior parte delle persone.BR BR Sull’altro lato del cavo: BR BR http://www.ac3rent.it/files/docs/ResuscitareWrtConJtag/03_jtag_table.jpg BR BR (Questo è stato preso dalla guida della Broadcom per il BCM47XX)BR BR Non preoccupatevi per il collegamento del pin 1(TRST) o del pin 11 (RESET) dato che funziona anche senza di quelli. Io li ho collegati me non li ho usati per il WRT54G v2.BR BR Ecco alcune foto del mio cavo parallelo JTAG Xilinx: BR BR http://www.ac3rent.it/files/docs/ResuscitareWrtConJtag/04_jtag_cable.jpg BR BR (Il cavo piccolo non è necessario)BR BR http://www.ac3rent.it/files/docs/ResuscitareWrtConJtag/05_jtag_12pin.jpg BR BR La parte del connettore JTAG (da una vecchia PC card)BR BR http://www.ac3rent.it/files/docs/ResuscitareWrtConJtag/06_jtag_db25.jpg BR BR La Parte del connettore DB25 (notate il modo economico con il quale ho collegato le resistenze direttamente al connettore)BR BR http://www.ac3rent.it/files/docs/ResuscitareWrtConJtag/07_jtag_db25_b.jpg BR BR Un’altra foto (un po mossa - scusate)BR BR http://www.ac3rent.it/files/docs/ResuscitareWrtConJtag/08_jtag_done.jpg BR BR Giusto prima di richiudere il connettore DB25BR BR OK – questo dovrebbe bastare – (*Odio* scrivere documentazione)BR BR Una volta che avete il cavo assemblato dovrete saldare un maschio da 12 pin sulla board del WRT54G v2. La mia board aveva i buchi delle saldature gia pieni, quindi ho dovuto dissaldarli e aspirare le saldature. Una volta fatto cio, è stato facile saldare il maschio da 12 pin al suo posto.BR BR http://www.ac3rent.it/files/docs/ResuscitareWrtConJtag/09_wrt_jp2.jpg BR BR JP2 – è il connettore maschio JTAG (sinistra)BR JP1 – è il maschio seriale (destra – da un altro progetto)BR BR http://www.ac3rent.it/files/docs/ResuscitareWrtConJtag/10_wrt_jp2_b.jpg BR BR Un’altra foto del connettore JTAG saldato (sinistra)BR Una volta che il cavo è stato fatto, e il connettore JTAG è saldato al suo posto, sei pronto per collegare il tutto. Ecco un paio di foto mie: BR BR http://www.ac3rent.it/files/docs/ResuscitareWrtConJtag/11_wrt_jtag.jpg BR BR WRT54G v2 & cavo JTAG pronti all’usoBR BR http://www.ac3rent.it/files/docs/ResuscitareWrtConJtag/12_wrt_jtag_b.jpg BR BR BR Ecco il mio cavo JTAG Xilinx collegato e pronto all’uso sul WRT54G v2 (nota: il cavo piccolo non collegato trasporta il segnale / VCC TRST che non serve sul WRT54G v2 ed è per questo che no è collegato)BR BR Il SoftwareBR Una volta che il cavo è stato fatto (od è stato comprato) ed è pronto all’uso, allora il software + l’ultimo pezzo. Ho scritto io il mio software che parla sulla porta JTAG via lo standard EJTAG 2.0.BR BR Una cosa da annotare è che JTAG (almeno su parallela) è abbastanza lento. Questa è una cosa molto importante da ricordare dato che potrebbe impiegarci molto tempo per flashare l’intero chip in una volta o addirittura l’immagine del kernel. Suggerisco di flashare la CFE (come si voglia) e la NVRAM, poi utilizzate il normale metodo tftp su ethernet per recuperare/riflashare un’altra immagine del kernel.BR BR Ci sono due file sorgenti inclusi (qui e qui) scritti per essere compilati sotto linux: BR - wrt54g.cBR - wrt54g.hBR BR Compila questi come compileresti qualsisi altro file sorgente sotto linux. Ho anche incluso un semplice makefile (qui). Una volta che questo è fatto, sei quasi pronto per utilizzare il software. BR BR Un paio di cose prima: BR 1) Sii certo che la porta parallela sia “accessibile” – dai il comando “rmmod lp” se necessario.BR 2) Collega sempre il cavo alla parallela del pc e alla board del WRT PRIMA di alimentare il WRTBR 3) Sii furbo – fai un backup prima di flashare o eliminare qualsiasi cosa. (Non venire a piangere se non lo fai)BR 4) Di nuovo – flashare su parallela è un processo lento – (si molto piu lento che su ethernet) – non diventare impaziente.BR BR BR Per eseguire il software scrivi: BR BR ./wrt54g <enter> BR BR E vedrai quanto segue: BR BR wrt54g: read/write flash memory via EJTAGBR usage: wrt54g [option]BR -backup:cfeBR -backup:nvramBR -backup:kernelBR -backup:wholeflashBR -erase:cfeBR -erase:nvramBR -erase:kernelBR -erase:wholeflashBR -flash:cfeBR -flash:nvramBR -flash:kernelBR -flash:wholeflashBR BR Queste sono le opzioni con le quali puoi far girare il programma. Facendo partire il programma con qualsisi delle opzioni lo farà eseguire immediatamente, e lo farà eseguire fino al completamento (quindi attento all’opzione scelta!)BR BR Un paio di note: BR - Fare il backup del Kernel o della WholeFlash impiegherà molto tempo (gia ho menzionato cio – no?)BR - L’immagine da flashare deve risiedere nella stessa directory del programmaBR - L’immagine da flashare deve essere chiamata in uno dei seguenti modi: CFE.BIN, NVRAM.BIN, KERNEL.BIN, WHOLEFLASH.BINBR - Ogni volta che si esegue un backup l’immagine verrà salvata con uno di questi nomi: CFE.BIN.SAVED, NVRAM.BIN.SAVED, KERNEL.BIN.SAVED, WHOLEFLASH.BIN.SAVEDBR - Ogni volta che flashate una porzione della flash con questa utility, l’utility prima farà un erase di di quella parte della flashBR - Eseguire un comando per flashare, NON farà automaticamente i backup di cio che è dentro la destinazione. E’ compito tuo fare prima i backup.BR BR BR NOTAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA

Prendi il tempo per fare i backup di ogni sezione prima di fare qualsiasi altra cosa. Questa è una cosa intelligente da fare in caso si peggiori la situazione dopo; e magari ti conviene salvare quei backup in un posto sicuro. Credo che se mi ricordo bene, l’immagine CFE.BIN.SAVED (la porzione della CGE nella flash) contenga il MAC Address SPECIFICO del router.

FINEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE

BR OK – ora che avete visto le opzioni che bisogna conoscere, manca una cosa prima di eseguire il programma... BR BR Devi scrivere il comando richiesto per intero e giusto prima di dare l’invio, collegare l’alimentazione al WRT54G. In altre parole prepara e collega il JTAG al pc e al router con l’alimentazione del router SCOLLEGATA, poi scrivi il comando desiderato, collega l’alimentazione al router e dai l’invio. Il comando dovrebbe inziare a lavorare e si potrà vedere il progresso sullo schermo.BR BR *** NOTA IMPORTANTE *** [BR]] Ogni volta che rieseguite il programma, seguite le indicazioni sopra riportate – è importante dato che il WRT54G v2 ha un Watchdog Timer al suo interno che resetterà tutto in un momento inappropriato se non puo essere disabilitato dal software.BR BR Un ultimo commento – se eliminate la NVRAM – molte volte è quanto basta per sbloccare (?) la flash; provate questo prima. Inoltre – se la CFE e il KERNEL sono intatti allora caricherà(?) una copia refreshata della NVRAM nel suo spazio una volta svuotato (al prossimo avvio).BR BR E’ un’ottima idea riavviare l’unità durante le operazioni (backup/eliminazione/flash) e svolgere i passi menzionati prima velocemente dopo aver collegato l’alimentazione al router.BR BR OK – ne ho abbastanza di scrivere documentazione – quindi spero che sia stata utile! In bocca al lupo nel resuscitare il vostro router WRT54G v2.BR BR Divertitevi! BR - hairydairymaid (a.k.a. lightbulb)BR BR