Openwrt su Netgear DGN2200v1

Pubblicato il dom 06 marzo 2016 in howto • 5 min read

La sezione modem del mio modem/router ha cessato di funzionare e, piuttosto che buttare via questo giocattolino che mi ha servito fedelmente per 5 anni 24/7, ho deciso di riutilizzarlo installandovi OpenWRT.

Per coloro, fra di voi, che non hanno mai sentito parlare del progetto OpenWRT si tratta di un firmware basato su Gnu/Linux che supporta decine di modelli di dispositivi di diversi produttori. Le possibilità di utilizzo sono infinite, limitate solo dalla vostra fantasia e... beh dalle caratteristiche hardware del vostro dispositivo.

Potete utilizzare vostro dispositivo come router, firewall, VPN server, DNS caching, transparent proxy, server samba, print server, ftp server, download station, etc ...

Io ad esempio ho sostituito con Openwrt il firmware di tutti i miei router/AP casalinghi. Ne ho montato alcuni presso alcuni clienti SOHO per gestire la loro rete in ufficio con piena soddisfazione di tutti devo dire.

Se volete saperne di più visitate la pagina ufficiale del progetto.

L'occorente per installare OpenWRT sul DGN2200v1 è:

  • DGN2200 v1 (conoscere la revisione hardware è fodamentale. Se installaste un firmware sbagliato rischiereste di brickare il vostro router trasformandolo in un bel fermacarte);
  • Cacciaviti Torx;
  • Cavo di rete;
  • Adattatore USB to serial TTL a 3V3 Volts (Io ho usato un FTDI232RL);
  • Saldatore e tirastagno(se non siete capaci di usarne uno, vi consiglio di affidarvi ad un esperto);
  • Un computer/laptop con privilegi di amministratore/root;
  • Un software per gestire la comunicazione seriale (screen, minicom, picocom, PuTTY);
  • Un server TFTP funzionante (io ho usato su Arch Linux tftp-hpa);
  • L'immagine del firmware scaricata dal sito ufficiale nella sezione download.

Io ho usato l'ultima versione stabile di OpenWRT, ovvero Chaos Calmer (15.05).

Scaricate il file openwrt-15.05-brcm63xx-generic-96358VW-generic-squashfs-cfe.bin dalla sottosezione brcm63xx/generic/, dopo aver selezionata la versione di OpenWRT voluta, nel mio caso la 15.05 appunto. Rinominate il file openwrt-15.05-brcm63xx-generic-96358VW-generic-squashfs-cfe.bin in qualcosa di più semplice da ricordare, ad es. firmware.bin.

Non mi dilungherò su come impostare un server TFTP sul vostro computer. Usate la wiki di OpenWRT e/o Google, esistono decine di tutorial che spiegano in dettaglio come fare.

Dunque, come primo passo dovete saldare i pin sulla porta seriale a bordo del router.

  • Svitate il case di plastica. La porta seriale si trova immediatamente sotto la scheda wireless.
  • Con il tirastagno dovete prima liberare i fori dallo stagno presente. Questa parte è un po' una rogna ed occorre manualità oltre che una certa esperienza con il saldatore. Nell'immagine sottostante potete vedere il risultato. (ho scattato la foto quando ancora dovevo liberare il foro della massa).

Porta seriale

Dopo over saldato i pin dovreste ottenere qualcosa del genere

Porta seriale

  • Impostate la scheda di rete ethernet del vostro pc con l'indirizzo fisso 192.168.1.100 e netmask 255.255.255.0. Disabilitate il vostro firewall oppure configuratelo in modo da permettere le connessioni UDP in entrata sulla porta 69.

  • Collegate il cavo di rete ad una qualunque porta lan del modem.

  • Collegate il vostro adattatore USB to Serial TTL alla scheda non alimentata secondo lo schema:

    +--------------------+
    | Adattatore | Modem |
    +--------------------+
    |    GND     |  GND  |
    |    TX      |  RX   |
    |    RX      |  TX   |
    +--------------------+

Io ho usato questo adattatore

FTDI232RL USB to serial TTL

Ecco un'immagine del collegamento

Collegamento

  • Avviate il programma per gestire la seriale. I parametri della connessione sono 115200 bps, 8N1. Come impostarli dipende dal soft che usate. Ecco per comodità la configurazione di PuTTY

PuTTY seriale

  • Accendete il modem. Dovreste vedere scorrere l'output della connessione seriale. Premete un tasto qualunque per arrestare il boot del modem. Occhio che avete solo un secondo. Se non doveste riuscirvi vi basterà spegnere e riaccendere il modem e riprovare.

    Questo dovrebbe essere l'output mostrato:
DGN2200 Boot Code V1.0.6
CFE version 1.0.37-102.9 for BCM96358 (32bit,SP,BE)
Build Date: Fri Nov  6 12:05:36 CST 2009 (weal@svn)
Copyright (C) 2000-2009 Broadcom Corporation.
Parallel flash device: name AM29DL800B, id 0x22cb, size 8192KB
CPU type 0x2A010: 300MHz, Bus: 133MHz, Ref: 64MHz
CPU running TP0
Total memory: 33554432 bytes (32MB)
Boot Address 0xbe000000


Board IP address                  : 192.168.1.1:ffffff00
Host IP address                   : 192.168.1.100
Gateway IP address                :
Run from flash/host (f/h)         : f
Default host run file name        : vmlinux
Default host flash file name      : bcm963xx_fs_kernel
Boot delay (0-9 seconds)          : 1
Board Id (0-5)                    : 96358VW
Number of MAC Addresses (1-32)    : 11
Base MAC Address                  : xx:xx:xx:xx:xx:xx
PSI Size (1-64) KBytes            : 48
Main Thread Number [0|1]          : 0

*** Press any key to stop auto run (1 seconds) ***
Auto run second count down: 1
CFE>
  • Al prompt CFE> digitate f 192.168.1.100:firmware.bin:
CFE> f 192.168.1.100:firmware.bin

A questo punto, se il vostro server TFTP funziona a dovere, dovreste vedere questo output:

Loading 192.168.1.100:firmware.bin ...
Finished loading 2818052 bytes
Flashing root file system and kernel at 0xbe010000: .............................................
*** Image flash done *** !
Resetting board...

Il modem si dovrebbe riavviare. Lasciate che esegua normalmente il boot. Ecco l'output:

DGN2200 Boot Code V1.0.6
CFE version 1.0.37-102.9 for BCM96358 (32bit,SP,BE)
Build Date: Fri Nov  6 12:05:36 CST 2009 (weal@svn)
Copyright (C) 2000-2009 Broadcom Corporation.
Parallel flash device: name AM29DL800B, id 0x22cb, size 8192KB
CPU type 0x2A010: 300MHz, Bus: 133MHz, Ref: 64MHz
CPU running TP0
Total memory: 33554432 bytes (32MB)
Boot Address 0xbe000000
Board IP address                  : 192.168.1.1:ffffff00
Host IP address                   : 192.168.1.100
Gateway IP address                :
Run from flash/host (f/h)         : f
Default host run file name        : vmlinux
Default host flash file name      : bcm963xx_fs_kernel
Boot delay (0-9 seconds)          : 1
Board Id (0-5)                    : 96358VW
Number of MAC Addresses (1-32)    : 11
Base MAC Address                  : xx:xx:xx:xx:xx:xx
PSI Size (1-64) KBytes            : 48
Main Thread Number [0|1]          : 0

*** Press any key to stop auto run (1 seconds) ***
Auto run second count down: 0
Booting from only image (0xbe010000) ...
Code Address: 0x80A00000, Entry Address: 0x80a00000
LZMA: Prossible old LZMA format, trying to decompress..
Decompression OK!
Entry at 0x80a00000
Closing network.
Closing DMA Channels.
Starting program at 0x80a00000
[    0.000000] Linux version 3.18.20 (buildbot@builder1) (gcc version 4.8.3 (OpenWrt/Linaro GCC 4.8-2014.04 r46450) )
[    0.000000] Detected Broadcom 0x6358 CPU revision a1
[    0.000000] CPU frequency is 300 MHz
[    0.000000] 32MB of RAM installed
[    0.000000] board_bcm963xx: Boot address 0xbe000000
[    0.000000] board_bcm963xx: CFE version: 1.0.37-102.9

...[CUT]......[CUT]......[CUT]......[CUT]......[CUT]......[CUT]...

BusyBox v1.23.2 (2015-07-24 15:49:35 CEST) built-in shell (ash)
  _______                     ________        __
 |       |.-----.-----.-----.|  |  |  |.----.|  |_
 |   -   ||  _  |  -__|     ||  |  |  ||   _||   _|
 |_______||   __|_____|__|__||________||__|  |____|
          |__| W I R E L E S S   F R E E D O M
 -----------------------------------------------------
 CHAOS CALMER (15.05, r46767)
 -----------------------------------------------------
  * 1 1/2 oz Gin            Shake with a glassful
  * 1/4 oz Triple Sec       of broken ice and pour
  * 3/4 oz Lime Juice       unstrained into a goblet.
  * 1 1/2 oz Orange Juice
  * 1 tsp. Grenadine Syrup
 -----------------------------------------------------

Fatto! Il vecchio modem adesso è un router su cui gira con il nuovo fiammante firmware OpenWRT.

Non vi resta altro che installare i drivers wifi e configurare il router per adattarlo alle vostre esigenze.

Come fare? Questa è un'altra storia. Intanto cominciate a leggere la wiki.

... ... ...

Update 2016.03.15

Qui trovate l'immagine del firmware con i drivers b43 per il wireless già caricati. Ho aggiunto anche il pacchetto luci-ssl, per accedere all'interfaccia tramite protocollo https, e il pacchetto wpad-mini. Inoltre ho rimosso i pacchetti ppp e ppp-mod-pppoe. Qui il video del flashing del firmware.

Update 2016.07.30

NB: Il pacchetto contenente l'interfaccia di gestione grafica luci, relativo alla release 15.05.1, non è presente nei repositories.

Per aggiornare il router ad una nuova versione di OpenWRT la procedura è la seguente: Copiate sul router l'immagine del firmware aggiornato, ad esempio openwrt-15.05.1-brcm63xx-generic-96358VW-generic-squashfs-cfe.bin,

scp openwrt-15.05.1-brcm63xx-generic-96358VW-generic-squashfs-cfe.bin root@<ip-router>:/tmp

Collegatevi tramite SSH, ed eseguite questo comando:

sysupgrade -c /tmp/openwrt-15.05.1-brcm63xx-generic-96358VW-generic-squashfs-cfe.bin

aspettate che la procedura termini e che il router si riavvi.

Qui trovate l'immagine del firmware con i drivers b43 per il wireless già caricati. Ho aggiunto e il pacchetto wpad-mini.

Inoltre ho rimosso i pacchetti ppp e ppp-mod-pppoe.