************************************************************** * Unbricking WAG354G * * v 0.1 * * Author: Marco Vedovati * * mailto: marco.v83@gmail.com * ************************************************************** * * * License: this doc is licensed under a * * Creative Commons Attribution-NonCommercial-ShareAlike 2.5 * * info @: http://creativecommons.org/licenses/by-nc-sa/2.5/ * * * ************************************************************** * As always, standard disclaimer: This is a free guide! * * I take no responsibility for any loss, damage or injury * * arising from the application of it. * ************************************************************** Questa guida disponibile nelle seguenti lingue: [IT] Se vuoi puoi tradurla in altre lingue. Per farvore fammelo sapere. Per errori o altre cose utili che non ho scritto, non esitate a contattarmi Versions: 0.2: restyling (2007/02/12) 0.1: initial release (2007/01/01) ------- Index: .Intro .Strumenti necessari .Azione .Alcune considerazioni ------- Intro Procedura per l'unbricking del router WAG354G (testata su v1) a seguito di un flash fallito. ------ Strumenti necessari: * Un client tftp. Io consiglio di usare quello disonibile in linux da linea di comando. * Cavo di rete straight. * Un firmware ufficiale linksys. ------ Azione La procedura che ho seguito io la seguente, magari non tutti i passi sono necessari. Impostare la vostra scheda di rete con un ip statico. Io ho impostato la mia con: IP: 192.168.1.10 netmask: 255.255.255.0 gateway: 192.168.1.1 Collegare il cavo di rete tra la vostra scheda di rete e il router (io ho usato la porta 1 del router). Collegare l'alimentazione al router. A questo punto dovreste vedere il led "power" del router lampeggiare continuamente (molto frustrante!). Aprire una shell (il comando da scrivere quello dopo "$ "): Entrate nella cartella in cui avete il firmware. Il mio in /home/marco/Desktop: marco@helix:~$ cd Desktop Rinominare il firmware in upgrade_code.bin: marco@helix:~/Desktop$ mv nome_del_firmware_.bin upgrade_code.bin Lanciare tftp: marco@helix:~/Desktop$ tftp tftp> Digitando un punto di domanda vi appariranno i comandi disponibili: tftp> ? Commands may be abbreviated. Commands are: connect connect to remote tftp mode set file transfer mode put send file get receive file quit exit tftp verbose toggle verbose mode trace toggle packet tracing status show current status binary set mode to octet ascii set mode to netascii rexmt set per-packet retransmission timeout timeout set total retransmission timeout ? print help information Io ho impostato le opzioni verbose e trace, utili per capire che cosa sta succedendo: tftp> verbose Verbose mode on. tftp> trace Packet tracing on. L'opzione binary invece *necessaria* per trasferire il file in formato binario: tftp> binary mode set to octet A questo punto impostare il server a cui inviare il firmware tramite il comando connect. Notare che questo comando non d nessuna risposta, serve solo ad impostare l'ip del server, senza trasmettere alcun dato. tftp> connect 192.168.1.1 Ora scollegare l'alimentazione dal router, e digitare questo comando di trasferimento verso il server seguito dal nome del file: tftp> put upgrade_code.bin Io ho impostato le opzioni verbose e trace, utili per capire che cosa sta succedendo: Ora scollegare l'alimentazione dal router, e digitare questo comando di trasferimento verso il server seguito dal nome del file: tftp> put upgrade_code.bin Inserire lo spinotto di alimentazione del router, all'incirca 1 secondo dopo aver premuto invio. Questa la parte pi difficile: dovete trovare i tempi giusti (ma anche aevere una buona dose di culo). Se il trasferimento ha inizio, viene stampato a video qualcosa simile a questo: ..... sent DATA received ACK sent DATA received ACK sent DATA received ACK sent DATA received ACK sent DATA received ACK ..... tftp> Il trasferimento dura circa 10-15s, dopo di che il vostro client torna ad accettare comandi. Potete uscire scrivendo quit: !!ATTENZIONE!!. A questo punto, dovrebbe essere andato tutto nel verso giusto, ma NON scollegare assolutamente il router, poich deve ancora scompattare e copiare nella flash il contenuto della ram. Questa operazione dura circa 45sec. Aspettate pazientemente e non mettetevi a pingare, accedere all'interfaccia web o altro. Il router SI RIAVVIA DA SOLO. Potete ricominciare a giocare con il router solo quando il led power smette di lampeggiare e rimane acceso fisso. ------ Alcune considerazioni 1)Non necessario collegare il cavo console al router. D'altra parte esso sarebbe utile per fermare il bootloader, in maniera da allungare la finerstra in cui accetta il firmware. 2)Io ho resuscitato il mio router, anche se non riuscivo a pingarlo, e pensavo veramente che fosse irrecuperabile. 3)Il bootloader pspboot ha dei vincoli di tempo molto stretti, quindi potrebbe essere necessario ripetere la sequenza di "put upgrade_code.bin" e accensione del router più volte, magari con tempi diversi. Se non funziona neanche cos, invertire le operazioni, cio accendere il router, attendere un tempo variabile (0-2s) e inviare il comando "put upgrade_code.bin" Nel caso in cui il trasferimento fallisce, la risposta del client questa: tftp> put upgrade_code.bin putting upgrade_code.bin to 192.168.1.1:upgrade_code.bin [octet] sent WRQ sent WRQ sent WRQ sent WRQ sent WRQ Transfer timed out. Non rinunciate subito, al primo colpo molto probaile che non funzioni! ~~~~~~~~~~~~~~~~~~~~~~~~~~~~THE END!~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~