Archivi tag: openwrt

OpenWrt su 3Com 3CRWER200-75

Un bel giorno la rete qua impazzì. I ping andavano a caso, i pacchetti si duplicavano, non arrivavano a destinazione, robe così. Un gran putiferio. Alla fine, dopo mille prove, siamo arrivati a dare la colpa ad un vecchio router 3com che usavamo come access point. Tolto questo affare dalla rete e tutto è tornato a funzionare regolarmente.

Questo affare poi è stato riposto in un armadio tra la roba non funzionante. A me dispiace vedere questi aggegi dimenticati e, visto che sono un fanatico di OpenWrt, ho provato a mettercelo visto che, nel sito, c’era la procedura per il modello 3CRWER100-75. In realtà io avevo un 3CRWER200-75, non so cosa cambi esattamente, so solo che la procedura ha funzionato regolarmente. Ed ecco quello che ho fatto io.

Innanzitutto tenetevi aprire la pagina apposita sul wiki, scaricatevi il kernel e il root fs, poi dovete installarvi un server tftp, io ho usato tftpd-hpa e ho installato anche putty. Di solito putty lo usavo su windows, ma ho scoperto che esiste anche per Linux. Putty serve semplicemente come terminale telnet, non ho usato il normale telnet già compreso in linux per motivi che spiegherò più avanti.

A questo punto dovete resettare il router per riportarlo alle impostazioni di fabbrica. Per fare questo basta tenere premuto il solito bottoncino e poi gli si da corrente e lo si tiene premuto per circa 10 secondi. Non so perchè ma l’ho dovuto rifare 3 volte.

Adesso il router torna all’impostazione di default e ha l’indirizzo 192.168.1.1, un ping ve lo confermerà, sempre che non abbiate in rete già un altro dispositivo con lo stesso indirizzo.

Ora non dovete fare altro che spegnere e riaccendere il router e lanciare il telnet sulla porta 9000 in un lasso di tempo indefinito in cui redboot ascolta su quella porta e vi da accesso al prompt. Facendolo a mano richiede culo e tempismo, roba che ci becchi tipo 1 volta su 10. Appena avuto accesso bisogna premere CTRL+C. Ed è proprio qua l’inceppo, pare che il telnet non riesco a mandare CTRL+C al prompt per qualche strambo motivo di tabella di caratteri o roba del genere, c’è in giro anche un hack usando netcat ma ho provato e non ha funzionato.

Ed ecco la mia elegante soluzione:

Innanzitto lanciate putty e configuratelo come in questa schermata

In pratica dovete settargli l’indirizzo ip, 192.168.1.1, la porta 9000, dirgli di usare il protocollo telnet e infine salvate la sessione. Io l’ho chiamato telnet9000.

A questo punto aprite il terminale e scrivete questo barbatrucco:

arping -f 192.168.1.1; putty -load telnet9000

Questo fa in modo che appena arping si accorge che l’ho desiderato, l’192.168.1.1, diventa attivo, lancia putty caricandogli, -load telnet9000, la sessione che abbiamo salvato prima: il succo del discorso è che fa il telnet sulla porta 9000 al momento giusto.

A questo punto dovreste avere una schermata di questo tipo:

ovvero siete arrivati al prompt di RedBoot, che è quello che ci interessa.

Ora, pre trasferire l’immagine del kernel e del rootfs, abbiamo bisogno di un server tftp da cui attigente.

Installate, come me, tftpd-hda, non perchè sia meglio di altri ma solo perchè sono riuscito a farlo funzionare alla svelta. Quindi

sudo apt-get install tftpd-hpa

(sudo perchè tanto lo so che usate tutti Ubuntu) poi create una directory per la root del server tftp, io per comodità l’ho creata nella root del file system, quindi /tftpboot, e gli date tutti i permessi del mondo di lettura e scrittura, sennò poi non il client non è contento.

Poi editate il file /etc/default/tftpd-hpa e fatelo diventare più o meno come questo:

# /etc/default/tftpd-hpa

TFTP_USERNAME=”tftp”
#TFTP_DIRECTORY=”/var/lib/tftpboot”
TFTP_DIRECTORY=”/tftpboot”
TFTP_ADDRESS=”192.168.1.101:69″
#TFTP_OPTIONS=”–secure”

L’indirizzo ip 192.168.1.101 non è casuale. Se tornate a putty e al prompt di RedBoot e scrivete

fsconfig -l

vi apparirà una roba tipo questa:

Praticamente RedBoot viene già di default con delle impostazioni sue: l’ip, il gateway e le altre robe. A noi interessa la riga:

Default server IP address: 192.168.1.101

che, praticamente, vuol dire che lui si aspetta che il server tftp sia su quell’indirizzo. Ora noi potremo andarci a leggere la documentazione di redboot e di fsconfig perchè un modo per cambiare quella voce c’è sicuramente, ma chi ce lo fa fare? Basta cambiare l’indirizzo ip della propria macchina che è molto più semplice :) Da qui spiegato il motivo del file di configurazione tftpd-hpa.

A questo punto siamo già un pezzo avanti e possiamo seguire pedissequamente la guida di OpenWrt. Quindi:

fis init

e premete y, poi, al prompt, scrivete:

load -r -b %{FREEMEMLO} /tftproot/openwrt-atheros-vmlinux.lzma
fis create -r 0×80041000 -e 0×80041000 vmlinux.bin.l7
load -r -b %{FREEMEMLO} /tftproot/openwrt-atheros-root.squashfs
fis free
fis create -l 0x2E0000 rootfs
fis list
reset

i due comando load hanno bisogno comunque del percorso assoluto, mistero, altrimenti se la prende a male e non trova il file. Se load ritorna errori di lettura vuol dire che non avete dati abbastanza permessi alla directory /tftproot, provate anche a dargli un chown -R nobody eventualmente.

Dopo il reset il router si riavvia e farà il boot con OpenWrt. Attenzione che il boot sarà un po’ più lento rispetto al firmware originale.

Per accedere telnettate l’192.168.1.1 e avrete accesso al prompt di OpenWrt, leggete le robe scritte, settando la password, con passwd, si imposta la password e si attiva automaticamente il server ssh.

Ora avete un router con OpenWrt e potete farci un po’ quello che vi pare

openwrt su una nanostation 5

come i più attenti letori ricorderanno tempo fa un fulmine ha fatto un sacco di casino, tra cui bruciare le porte ethernet di un po’ di ciaffi wi-fi, uno di questi così è una nanostation 5 il cui wi-fi funziona ancora bene, ma l’ethernet no (inspiegabilmente il power over ethernet funziona). in queste condizioni diventa un po’ inutile ma con il firmware originale diventa ancora più inutile quindi, visto che rimane inutilizzato (no, come repeater adesso non mi serve visto che lavora a 5ghz) ho ben pensato di metterci openwrt, tanto anche airos (il firmware originale) è basato su linux quindi tanto vale usare openwrt e metterci su un po’ di servizi pressochè inutili :)

di documentazione ce n’è in giro, basta googlare, io ho trovato questo http://wiki.openwrt.org/toh/ubiquiti/nanostation e questo http://wiki.ninux.org/UbiquitiNanostation5 che dicono più o meno le stesse cose ma, diciamo, non sono daccordo e comunque non sono aggiornate (la storia del tftp non funziona perchè dopo un po’ va in timeout)

è semplicissimo: dovete prima scaricarvi il firmware di openwrt, dentro ha un chip atheros quindi dovete prendervi il firmware giusto, volendo ve lo potete fare partendo dai sorgenti ma qualche anima buona ci ha già pensato, scaricatevi questo http://downloads.openwrt.org/kamikaze/8.09.2/atheros/openwrt-atheros-ubnt5-squashfs.bin

a questo punto armarvi di un computer con una scheda wi-fi che supporta i 5ghz (il mio mac lo supporta e manco lo sapevo)(tutto questo discorso perchè l’ethernet non funziona), vi date un indirizzo che sua sulla stessa rete e aprite l’interfaccia web, e andate nella scheda system e poi fate l’upload del firmware dall’apposito bottone. ecco uno screenshot

firmware screenshot

(clicka per ingrandire)

poi fate upload. qua un warning vi avvertirà che il firmware non è ufficiale e tutte quelle robe li… andate avanti e guardate la barra di caricamento. dopo un po’ andrà in time-out, vuol dire che ha finito e si sta riavviando.

a questo punto si riavvierà con openwrt su cui però è disabilitato il wi-fi, ah, la porta ethernet non va… bella inculata… eh no, qui casca l’asino

nella paginetta di openwrt che spiega come fare, questa http://wiki.openwrt.org/toh/ubiquiti/nanostation, spiega anche come aprirlo e dentro c’è una porta seriale già pronta (un po’ come sulla fonera), la posizione della porta seriale non corrisponde al mio modello (quella della foto forse è una nanostation2 oppure un modello più vecchio). io, siccome sono magnanimo, ho fatto una nuova foto con la pedinatura, eccola

(clicka per ingrandire)

come vedete non usa lo standard a 5 volt, ma a 3,3 volt, per cui avete bisogno di un adattatore da 5 a 3,3. io me lo sono costruito da solo con un vecchio cavo per un cellulare nokia (sono magnanimo ma anche prigro, sono quasi sicuro di aver fatto un post anche su questo ma non ho assolutamente voglia di cercarlo, quindi fate voi :) )

a questo usate un software qualsiasi per comunicare con la seriale (minicom o hyperterminal o putty), settate i soliti parametri 9600 8 1 e quando collegate il tutto vi ritroverete col prompt di openwrt pronto a fare tutto quello che volete (o quasi)

esperimenti interattivi con La Fonera

lasciamo un attimo da parte l’openmoko… io ho questa fonera e ci ho aggiornato il firmware, l’ultima versione di openwrt, in cui pare sia piu’ facile interagire con la porta gpio.

leggendo le varie guide si puo’ leggere che ci sono 4 porte disponibili e si puo’ anche pilotare un led. visto che non ho voglia adesso di immattirmi col saldatore, mi limitero’ a pilotare il led.

e’ oltremodo semplice, basta un:

echo “1″ > /sys/class/leds/wlan/brightness

e il led della wlan si accendera’, per spegnerlo basta:

echo “0″ > /sys/class/leds/wlan/brightness

da qui mi sono fatto una spartana interfaccia web per comandare l’accensione e lo spegnimento, il codice e’ banalmente questo:

#!/bin/sh
echo “0″ > /sys/class/leds/wlan/brightness
echo “Content-type: text/html”
echo “”
echo “<HTML><HEAD><TITLE>led status</TITLE></HEAD>”
echo “<BODY>”
LED=`cat /sys/class/leds/wlan/brightness`
echo “<img src=\”../”$LED”.png\”>”
echo “<form action=\”accendi.cgi\” method=\”POST\”>”
echo “<input type=\”submit\” value=\”accendi\”>”
echo “</BODY></HTML>”

basta cambiare gli opportuni parametri per farlo accendere o spegnere

per ora null’altro da aggiungere.