fonera


come promesso ho “debrickato” la mia fonera utilizzando la tecnica del cavo seriale.

La suddetta tecnica è da utilizzarsi quando il nostro amato wrt non è più raggiungibile da rete TCP/IP a seguito di chissà quali smanettamenti pindarici: nel mio caso avevo imputtanato le immagini di boot e successivamente, da dentro il RedBoot, impostato l’IP a 0.0.0.0…..una vera catastrofe!

Ok, fortunatamente il “brickaggio” e il conseguente “debrickaggio” è un’attività che va alla grande tra gli smanettoni, tant’è che su internet si possono trovare tonnellate di pagine web sull’argomento 🙂 ma il fattor comune di tutti i metodi di recupero sta nel fatto che il wrt “brickato” ci lascia sempre una possibilità quasi fosse un finto morto…..la porta seriale!

Già, questi apparatini, se li guardate bene da dentro, hanno spesso quanche pin buttato da una parte apparentemente inutilizzato….ragazzi, tre o quattro di quelli fanno una porta seriale ovvero un GND, TX, RX e, a volte, un Vcc.

Andiamo con ordine: la porta seriale in questione ci mette in comunicazione con la consolle del wrt dove possiamo effettuare le procedure di ripristino ma attenzione, spesso quei famigerati pin non si possono collegare direttamente alla porta seriale di un PC………..motivo? il solito: le seriali dei wrt sono in TTL mentre quelle dei PC sono le classiche RS232. Bene, la soluzione consiste nell’utilizzare un convertitore TTL/RS232 e il gioco è fatto. Di tali convertitori il mondo ne è pieno, tant’è che su ebay ve li tirano dietro (okkio che costa più la spedizione che il componente….) però al solito perchè non essere dei bravi ambientalisti, ovvero votati al riuso di tutta quella robaccia che giace inutilizzata da qualche parte a casa nostra? Cosi ho fatto, in sostanza ho utilizzato il cavetto seriale del mio vecchio cellulare Siemens Me45 che, guarda caso, contiene proprio un convertitore TTL/RS232.

Torniamo al Fonera. Il mio modello (FON2200) contiene all’interno, vicino all’alimentazione, un connettore maschio a quattro pin che fanno appunto la porta seriale TTL più una alimentazione da 3,3 volts.

Ottimo, googleggiando trovo la piedinatura corretta e, non si sa mai, utilizzo un tester per verificarla ovvero, partendo dall’alto abbiamo:

1 – GND (la massa)

2 – TX (trasmissione)

3 – RX (ricezione)

4 – Vcc (3,3 volts).

perfetto, taglio il cavo seriale dell’Me45 dalla parte del connettore cellulare e connetto i fili nero, verde, giallo e rosso rispettivamente all’1, 2, 3, 4 del Fonera (in realtà ho fatto una cosa più fina, ovvero ho preso un cavetto piatto a 4 fili con un connettorino femmina ad una estremità e ho collegato i fili dell’Me45 all’altra). A questo punto siamo pronti per andare in consolle! bene, sul mio fidato linux mi istallo il minicom e, con la classica configurazione i 9600 N81 entro nel RedBoot……fiu’…..ha funzionato……

ok, il resto è noia, riconfiguro l’ip ad un valore decente e riboostrappo…..ho circa 10 secondi per andare in telnet sulla porta 9000, dove il mio amato Fonera mi sta aspettando per essere riflashato 🙂 stavolta con openwrt.

Tutto è bene quel che finisce bene, adesso che ho il mio bel cavetto seriale “home made” mi sento dentro una botte di ferro :))))

benissimo,

mi sono fatto mandare tre “la Fonera” e così mi sono ritrovato con questi tre gioiellini (vers. 2200) tra le mani. Come da mio precedente post in pochi minuti le ho “dd-wrt”-zzate e poi ho cominciato a smanettarci.

Tanto per capire bene la differenza tra interfaccia WAN e LAN e interazione con il bridge (la fonera ha solo una scheda di rete), decido di mettere la WAN in modalità client DHCP e di assegnare un IP statico alla LAN: faccio l’operazione da interfaccia web, salvo e applico, aspetto………bricked!

Uhm, andiamo a vedere cosa è successo: collego il cavo di rete tra la eth0 del mio laptop e la ethernet della fonera e “sniffo” con il comando tcpdump -i eth0. Riavvio la fonera e mi accorgo che questa si mette effttivamente alla ricerca di un DHCP server (richieste Bootp) ma, una volta ricevuto un IP, non succede più nulla.

D’istinto do il comando telnet ip_fonera 9000, dove con ip_fonera c’e’ l’IP fornitogli dal dhcp e….mi ritrovo dentro al RedBoot! Non mi chiedete come sia potuto succedere…..vabbe’, mi faccio coraggio e penso che una volta che ho il RedBoot via telnet, rieseguire l’update del firmware sia un gioco da ragazzi, sia che usi ap51 o il tftp, no?

Bene, provo con l’ap51, questo mi dice che i pacchetti arp di fonera non sono della giusta lunghezza (si aspetta 60 ma riceve 42) e quindi rimane in attesa indefinita; ok, provo con tftp, mi istallo il demone sul mio laptop, metto i firmware nella cartella giusta, faccio un prova (non si sa mai) con un client tftp e poi configuro RedBoot con il comando ip_address per chiamare il mio laptop. Lancio il mitico comando fis init e poi load passandogli anche -h ip_laptop (l’address del mio laptop) ma il RedBoot mi va in errore ! (il tcpdump non vede partire neanche una richiesta tftp).

Inorridito gli do di fconfig e, in un momento di raptus disabilito il bootp al RedBoot, così, penso, l’ap51 può lavorare come suo solito. Risultato: adesso fonera utilizza un IP 0.0.0.0, irraggiungibile da chiunque! Ahhhhhhhhhhhhhhhh……

ok, ho deciso di farmi un cavo seriale e di ricominciare da li: ho trovato come modificare il cavo seriale del mio vecchio Siemens ME45, la prox. settimana gli dò di saldatore.

Dopo essermi innamorato anche io di Fonera (a dir il vero del loro “la Fonera 2200”, ovvero il piccoletto bianco che te lo regalano per pochi euro) decido, come un pò tutti gli smanettoni linux, che era il caso di fargli fare quello che volevo io 🙂

Decido di istallarci sopra dd-wrt (lo stesso si applica per openwrt) ma dopo una breve ricerca su internet mi accorgo che esistono tonnellate di pagine su come riflashare il firmware …. ma anche quintali di richieste di aiuto su casi andati male!

Vabbè, essendo un tipo sintetico decido che vale la pena estrapolare dai vari metodi istallativi uno che, in pochi minuti e con tre semplici passaggi riesca ad istallare dd-wrt e/o openwrt senza grossi problemi e senza farsi venir il mal di testa con i vari RedBoot, kolofonium, primo.html , tftp, etc.

Per i tecnologici: L’idea è semplice, dal momento che “la Fonera 2200” viene inviata con openwrt istallato sopra, significa pure che è possibile procedere senza dover andare ad installare di nuovo il RedBoot, basta soltanto, nei primi dieci secondi, avviare la procedura tftp per l’upgrade del firmware.

Ok, direte voi, rimane il problema del dover istallare un server tftp e procedere con tutti quei comandi “marziani” come

“fis init
load -r -v -b 0x80040450 rootfs.squashfs
fis create -b 0x80040450 -f 0xA8030000 -l 0x00700000 -e 0x00000000 rootfs
load -r -b %{FREEMEMLO} kernel.lzma
fis create -r 0x80041000 -e 0x80041000 vmlinux.bin.l7
fis load -l vmlinux.bin.l7
exec”

no ragazzi, io lo voglio far fare a mia sorella!

Allora, gli amici dei freifunk, da bravi tedeschi iper smanettoni hanno realizzato un piccolo eseguibile che esegue l’upgrade firmware di fonera realizzando tutta la noiosa procedura del tftp, semplicemente eseguendo un programmino da riga di comando, vediamo come:

1) scaricarsi il programmino ap51-flash-1.0-38 e il firmware che volete voi (dd-wrt o openwrt);

2) collegare il cavo di rete tra “la Fonera” e il vostro pc, es. utilizzzando la eth0;

3) collegare l’alimentazione elettrica di “la Fonera” ed eseguire l’upgrade firmware che, nel caso di dd-wrt é ‘ap51-flash-1.0-38 eth0 root.fs vmlinux.bin.l7 nvram’.

Nel caso tutto vada bene l’output dovrebbe essere:

Reading rootfs file root.fs with 2875392 bytes…
Reading kernel file vmlinux.bin.l7 with 786432 bytes…
rootfs(0x006d0000) + kernel(0x000c0000) + nvram(0x00010000) sums up to 0x007a0000 bytes
Non arp received. Make sure, the device is connected directly!
Peer MAC: 00:18:84:80:3f:04
Peer IP : 192.168.1.1
Your MAC: 00:ba:be:ca:ff:ee
Your IP : 192.168.1.0
Setting IP address…
Loading rootfs…
Sending rootfs, 5632 blocks…
Initializing partitions…
Rootfs partition size now 0x006e0000
Flashing rootfs…
Loading kernel…
Sending kernel, 1536 blocks…
Flashing kernel…
Creating nvram…
Setting boot_script_data…
Done. Restarting device…

bene, ora avete un dd-wrt che risponde sulla lan alla url http://192.168.1.1, entrate come utente root (passwd:admin) e ….buon smanettamento!

P.S: il tutto funziona SOLO per Fonera modello “FON2200”, mentre per il  vecchio modello “FON2100A/B/C” la procedura è quella descritta qui