Archivi tag: dd-wrt

Debrick via JTAG su fonera 2100/2200

Questo tipo di debrick è proprio un dito nell’ano…
E’ durato parecchio e sulla mia fonera, purtroppo, non ha funzionato.
Quando la seriale non risponde è l’unica soluzione che risolve al 98% dei casi il brick della nostra amatissima fonera.
Se riuscite a debrickarla in questo modo, non vi resta che aggiustare le ultime cose via seriale in quanto con questo metodo vi illustro come rimettere il solo RedBoot. Ok?

Di cosa abbiamo bisogno?
1. Porta parallela LPT (quella vecchia della stampante):

lg_lw60_case_lpt

2. Abbiamo bisogno di un programma chiamato tjtag scaricabile dopo una piccola donazione dal sito:  tjtag.com
Se volete fare solo delle *prove* io l’ho trovato versioni ancora free di questo programma: Lista tjtag [merlino60]
La più recente in versione free è la: tjtag-3.0.2-RC2
Con questo software, andremo a debrickare non solo la fonera, ma moltissimi altri router: ricordatevelo.

Realizzate un cavo (non troppo lungo) con 4 resistenze da 100Ohm chiamato wiggler cable: Costruzione Cavo DLC5 (Wiggler) unbuffered

Ora dovremo collegare la nostra fonera al cavo jtag in questo modo:

Jtag-schematic

Nota: notare la resistenza da 100Ohm tra vcc e il pin di test

Pinout fonera:

4-FONERA_2200A_JTAG_v2.6
3-FONERA_2200A_BOARD_JTAG

Nota: il pinout della fonera 2100 è identico a quello della 2200 in quanto entrambe usano il pinout standard jtag 2.6

Dovreste ottenere una cosa del genere, a me non è venuta molto bene:

dscn0392u

Ora lanciamo il servizio che ci permetterà di usare la porta lpt:

1. Unzippate questo pack: giveio.zip
2. Start > Esegui > cmd
3. Entrate nella directory del pack
4. loaddrv
5. date il path della dll giveio.sys
6. Install, start
Dovreste avere una cosa del genere:

giveio_status

Date alimentazione alla fonera.

Ora andate nel folder di tjtag sempre dal prompt dei comandi.
E date un bel -probeonly
Dovrebbe apparirvi una cosa del genere:

Probeoonly

Se si blocca in resuming cpu… premete CTRL + C
Se vi appaiono tutti 11111111111…1 CPU ID, significa che tjtag non ha riconosciuto la cpu e quasi sicuramente è un problema di wiring
Se il probe non dovesse andar a buon fine inserite anche questi switch /noemw /noreset

Se è andato tutto ok non ci resta che:

1. Cancellare tutta la flash
2. Ricaricare RedBot
3. Caricare la tabella di configurazione come partizione nascosta

Punto 1: flash erasing
tjtag3 -erase:custom /window:a8000000 /start:a8000000 /length:30000
oppure (sconsigliato)
tjtag3 -erase:wholeflash

Il primo comando cancella solo la partizione di RedBoot, infatti il lenght è proprio 30000 (il lenght tipico di RedBoot)
Il secondo (sconsigliato) è più invasivo in quanto cancella tutta la flash.

Punto 2: flashing RedBoot
Scaricate dal sito di dd-wrt la versione GIUSTA per la vostra fonera di RedBoot, rinominatela in custom.bin e inseritela nella directory di tjtag.
Date questo comando:
tjtag3 -flash:custom /window:a8000000 /start:a8000000 /length:30000

Flashiamo dall’indrizzo a8000000 per un leght di 30000 il file custom.bin
L’operazione è molto lunga, quindi aspettate con pazienza.

Punto 3: modifica e upload della tabella di configurazione
Scaricate ed installate un qualsiasi HEX Editor, ad esempio: XVI32
Io vi sconsiglio di effettuare questa operazione in quanto potreste rischiare di incorrere in problemi di calcolo del checksum.
Scaricate il file board_config_template.bin dal sito di Matteo Cicutin:  board_config_template.bin
Aprite il file board board_config_template.bin con XVI32 e andate alla riga 60:

capture
Ed inserite il MAC Address della vostra fonera (presente nell’etichetta incollata sul retro) al posto delle caselle:
00 11 22 33 44 55
Esempio:
00 11 22 33 44 55 diventa [esempio] -> 00 28 ae 87 fd f2
Questo rappresenta il MAC della scheda Ethernet della fonera.
Di seguito ci sarà un altro blocco, fate la stessa cosa ma incrementate l’ultima coppia di 1 rispetto al MAC dell’ethernet. Questo sarà il MAC della scheda wireless.
Esempio:
00 11 22 33 44 56 diventa [esempio] -> 00 28 ae 87 fd f3

capture

Ora, salvate il file e rinominatelo in custom.bin date a tjtag il comando per l’upload del file:
tjtag3 -flash:custom /window:a87f0000 /start:a87f0000 /length:10000

Benissimo, è finita!
Riavviate il tutto e caricate dalla seriale dd-wrt (seguite l’altra mia guida!).

Alcune note di chiusura:
Questo metodo non è molto documentato, il mio è stato un lavoro di ricerca e traduzione del sito ufficiale dd-wrt.com e del loro forum.

La fonte principale è:  http://www.matteocicuttin.it/

Nel caso in cui tjtag non dovesse funzionare nel modo giusto, aggiungete gli switch su ogni comando: /noemw /noreset

Se usate una versione maggiore-uguale della versione 3.0.2 di tjtag, aggiungete lo switch su ogni comando: /cable:dlc5

Nel caso in cui la cosa non dovesse andare a buon fine non vi resta che contattare mr. Tornado passandogli, però, un dump della flash aggiungedo il seguente switch al comando: tjtag3 -probeonly /flash_debug
Oppure (per versioni superiori alla 3.0.2): tjtag3 -probeonly /byte_mode /cable:dlc5

Debrick via FonFlash su Fonera 2100/2200

Questo è il metodo più banale per il debrick o aggiornamento della propria fonera.
Esegue, grosso modo, gli stessi comandi dati sulla seriale ma in completa autonomia e attraverso il cavo rj45.

1. Scaricate ed installate la libreria WinCap: http://www.winpcap.org/install/default.htm
2. Scaricate FonFlash da: http://www.gargoyle-router.com/download.php
capture
3. Scarichiamo la versione più recente di dd-wrt per la nostra fonera
4. Riavviamo il pc per consentire la corretta installazione di WinCap

Colleghiamo la fonera al computer via ethernet, ma NON diamo ancora alimentazione.

Da FonFlash

1. Select Firmware Type: -> DD-WRT
2. Select Network Interface: -> la propria scheda ethernet connessa alla fonera
3. Select Firmware Type: -> Diamo il path dell’immagine dd-wrt linux.bin
4. Cliccate su Flash Router Now!
6. No packet… – fregatevene
5. Diamo alimentazione alla fonera… flashing.

Attendiamo alcuni minuti et voilà!
Fonera con firmware DD-WRT

Debrick via SERIALE su Fonera 2100/2200

In un mio precedente articolo vi ho illustrato come realizzare il wiring della fonera 2100/2200 con un convertitore seriale rs232.
Oggi vi parlerò di come effettuare il debrick, via seriale, tramite comandi RedBoot.

Adessi vi linko l’articolo che ho scritto su come realizzare il wiring via seriale sulla vostra fonera: wiring su seriale

Scarichiamo la giusta versione dd-wrt per le nostre fonera, in particolare scaricate quella raccomandata la build 14986, ovviamente prendete la versione “console”.

Scaricate ed installate tftp: http://tftpd32.jounin.net/
Questo software permetterà di poter uploaddare dal proprio pc alla fonera il file .bin dd-wrt appena scaricato.

Dunque, disconnettetevi da qualsiasi rete wifi, staccate il vostro cavo ethernet e collegatelo alla fonera.
Nelle proprietà della scheda di rete, impostate un ip statico (ad esempio):
Ip Statico: 192.168.1.166
Subnet: 255.255.255.0
Gateway: 192.168.1.1
DNS: 192.168.1.1
Convalida all’uscita SI
Sicuramente vi farà tipo errore o qualcosa del genere, fregatevene e fate ok ok ok avanti avanti 🙂

Ora tftp deve essere configurato così:

1. Inserire il file bin nella cartella di tftp

2. Collegate il cavo rj45 alla fonera

3. Dovrebbe apparirvi su “Server Interface” di tftp l’indirizzo: 192.168.1.166

4. Se il punto 3 non si verifica, andate in settings > DHCP ed impostate gli stessi valori che avete impostato nella vostra scheda di rete.

Una volta realizzato ciò (e aver installato i driver del proprio convertitore seriale) dobbiamo metterci in comunicazione con la nostra fonera.
Scarichiamo ed installiamo PuTTY: PuTTY

Ora apriamo la comunicazione seriale, avendo premura di:

1. Settare il giusto baudrate, per molte versioni di RedBoot quello di default è 9600 per altre è 115200.
Se vi troverete a leggere caratteri strani cambiare il baud rate.

capture

2. Selezionare la giusta porta COM; nel mio caso è la 5, dipenderà dal vostro dispositivo su che COM è installato.

Una volta aperta la console, date alimentazione alla nostra fonera e vi apparirà per magia una cosa del genere:

+PHY ID is 00xx:xxxx
Ethernet eth0: MAC address xx:xx:xx:xx:xx:xx
IP: 0.0.0.0/255.255.255.255, Gateway: 0.0.0.0
Default server: 0.0.0.0

RedBoot(tm) bootstrap and debug environment [ROMRAM]
Non-certified release, version v1.3.0 - built 16:57:58, Aug 7 2006
Copyright (C) 2000, 2001, 2002, 2003, 2004 Red Hat, Inc.
Board: ap51


RAM: 0x80000000-0x81000000, [0x80040450-0x80fe1000] available
FLASH: 0xa8000000 - 0xa87f0000, 128 blocks of 0x00010000 bytes each.
== Executing boot script in 1.000 seconds - enter ^C to abort

Premete subito CTRL + C in modo tale da ottenere il prompt dei comandi.

RedBoot>

Una volta dentro è fatta.

Diamo questo comando: ip_address -l 192.168.1.254/24 -h 192.168.1.166
In modo tale da poter comunicare con tftp

Diamo subito il comando: fis init
E otteniamo questo:
RedBoot> fis init
About to initialize [format] FLASH image system - continue (y/n)? y
*** Initialize FLASH Image System
... Erase from 0xa83e0000-0xa83f0000: .
... Program from 0x80ff0000-0x81000000 at 0xa83e0000: .

Diamo il comando: load -r -b 0x80041000 linux.bin
Questo caricherà tramite tftp l’immagine linux.bin presente nella cartella tftp.
Se ci saranno errori dovrete rivedere la configurazione di rete e le impostazioni di tftp.
Otterrete una cosa del generE:
Using default protocol (TFTP)
Raw file loaded 0x80041000-0x80662fff, assumed entry at 0x80041000

Bene… l’ultimo comando, quello di flashing: fis create linux
Ora non toccate nulla e aspettate diversi minuti: il flashing è lungo!
Output:
... Erase from 0xa8030000-0xa8652000: ...................................................................................................
... Program from 0x80041000-0x80663000 at 0xa8030000: ...................................................................................................
... Erase from 0xa87e0000-0xa87f0000: .
... Program from 0x80ff0000-0x81000000 at 0xa87e0000: .

Il grosso è finito.
L’ultima finezza è quella di aggiustare lo script di booting.
Diamo il comando: fconfig
Ed aggiustiamo lo script in questo modo:
Run script at boot: true
Boot script:
.. fis load -l vmlinux.bin.l7
.. exec
Enter script, terminate with empty line
>> fis load -l linux
>> exec
>>
Boot script timeout (1000ms resolution): 10
Use BOOTP for network configuration: false
Gateway IP address:
Local IP address: 192.168.1.254
Local IP address mask: 255.255.255.0
Default server IP address:
Console baud rate: 9600
GDB connection port: 9000
Force console for special debug messages: false
Network debug at boot time: false
Update RedBoot non-volatile configuration - continue (y/n)? y
... Erase from 0xa87e0000-0xa87f0000: .
... Program from 0x80ff0000-0x81000000 at 0xa87e0000: .

Date: reset
Ed è finito!!!

Riassumendo, i comandi sono in tutto 4:

1. fis init
2. load -r -b 0x80041000 linux.bin
3. fis create linux
4. fconfig (opzionale)

Potreste, però, trovarvi tra le mani una fonera con firmwre originale fon, dovrete seguire la prima parte di questa guida: http://www.dd-wrt.com/wiki/index.php/La_Fonera_Flashing

Debrick Fonera? Metodi per resuscitarla…

Molti sono i motivi per un debrick: può capitare di installare male una versione di dd-wrt, salta la corrente, un collegamento può uscire fuori, diamo comandi sbagliati etc etc
E senza troppi ringraziamenti ci ritroveremo tra le mani un bel ferma carte.

Oggi vi illustro sommariamente quali sono i metodi più diffusi per il debrick delle fonera.

1. via FonFlash
2. via seriale
3. via jtag
4. desoldering, flashing via spi & soldering

Più si va avanti e più la cosa si fa seria… io li ho provati tutti e 4 su una fonera 2200.
Non vi racconto come sono arrivato al punto 4, ma vi racconto (a grosse linee) di cosa si parla per ciascun punto.

Punto 1: Via FonFlash
Esistono alcuni software che riescono a debrickare la fonera via ethernet senza neanche smontarla.
Il più blasonato è fonflash: FonFlash
Questo permette di flashare la nostra fonera in modo molto semplice senza troppi casini.
In pratica, darà gli stessi comandi del punto 2 ma in maniera autonoma.

Punto 2: Via Seriale
Questo è quello più apprezzato.
Se non avete brickato RedBoot potete entrare nei prompt dei comandi del bootloader della fonera e fare ciò che vi pare in stile “MS-Dos”.
Cancellerete le aree di memoria, uploadderete nuove immagini dd-wrt via tftp e potrete configurare manualmente alcune impostazioni di booting (vedi: fconfig).
Non solo… con questo comando potrete aggiornare anche RedBoot.
Ma ve lo sconsiglio fortemente, perchè se aggiornate male RedBoot passerete direttamente al punto 3 🙂
Il wiki di riferimento è questo: http://www.dd-wrt.com/wiki/index.php/LaFonera_Software_Flashing

Punto 3: Via JTAG
Qui le cose si complicano ancora di più.
Esiste un software scritto in linea di comando da un certo Tornato del forum dd-wrt.com.
Questo software si chiama tjtag e lo potete scaricare donando almeno 5$ al creatore: tjtag.com
In sintesi, tramite cavo dlc5/wiggler, vi interfaccerete sul pettinte jtag presente sulla vostra fonera (non più la seriale!).
E, se sarete fortunati, potete: arare tutta la memoria e flashare RedBoot (e non dd-wrt).
In questo modo potete andare al punto 2 e aggiustare la situazione.
Ma, tjtag con me ha fatto cilecca: non mi ha riconsciuto la memoria flash dove risiede il bootloader e dd-wrt, più precisamente la memoria era una: MX25L6405

Punto 4: Desoldering, flashing, soldering.
Questo è il metodo definitivo, dissalderete la memoria e la riprogrammerete con un programmatore SPI esterno.
Per ora l’ho solo dissaldata (e male) e sto attendendo dalla Cina una memoria nuova, il programmatore e l’adattatore.

Di ognuno di questi punti, scriverò (nel tempo) un articolo di approfondimento.

A presto

Wiring della seriale su Fonera 2100/2200

FON è un’organizzazione no-profit spagnola operante nel campo delle comunicazioni wireless nata originariamente come movimento cooperativo.

Nel settembre 2006 viene prodotta la Fonera, una piattaforma hardware/software di proprietà della stessa Fon, dotata di porta ethernet per il collegamento al router ADSL (la Fonera non è un modem ADSL) e di una antenna omnidirezionale rimovibile.

fonte: http://it.wikipedia.org/wiki/FON

Fonera divenne molto famosa in quanto spesso, per pubblicizzare questo movimento, veniva addirittura regalata o venduta a pochissimi euro.

Ciò che rende davvero interessante queste piccoli router è la possibilità di potervi installare firmware open come dd-wrt od open-wrt, entrambi derivati da firmware in uso su linksys wrt54gl.

Questi firmware rendono la fonera molto customizzabile e può essere usata sotto molte configurazioni interessanti, tra le quali la configurazione da repeater.

Oggi giorno si trovano ancora questi oggettini su ebay, ma questa stessa guida, con ogni probabilità può essere utilizzata su gran parte dei router presenti sul database dd-wrt: http://www.dd-wrt.com/site/support/router-database

Infatti basta avere una porta seriale e un convertitore USB-RS232.

Personalmente ho usato un convertitore acquistato per pochi spiccioli su ebay che monta un Silabs CP2102 (fratello scemo dell’ FTDI FT232RL)

miniusb2ttl2323

I collegamenti effettuati sono i seguenti:

PIN CP2102 – Fonera 2100

2 RXD -> Tx

3 TXD -> Rx

4 GND -> GND

1 3,3V ->Vcc

Come si può notare Rx e Tx sono invertiti.

Sotto il pinout del modulo acquistato dalla cina:

pindefinition

Seriale su Fon 2100:

fonserialpinout2100

Seriale su Fon 2200:

Conn_fon2200

Il collegamento finale risulta essere questo:

02042011185

Ora basterà collegare il cavo ethernet tra il pc e la fonera, dare alimentazione e seguire le tante guide che esistono sulla rete:

http://www.dd-wrt.com/wiki/index.php/LaFonera_Software_Flashing

http://www.wifi-ita.com/fon/180-flash-fonera-via-seriale-v1.html

http://www.wifi-ita.com/fon/371-flash-fonera-via-seriale-v2.html

Una volta sbloccata ho eseguito altre mod: ventola e seriale leggermente più accessibile