TP-Link TD-W8970 & OpenWRT

A volte arriva l’ora di aggiornare il proprio hardware.

Questa volta è stata l’ora della Fonera 2100. L’avevo comprata quasi 6 anni fa per divertirmi a modificarla, poi è diventata il mio router WiFi che per quasi 5 anni è stato acceso ininterrottamente, salvo aggiornamenti e cadute di corrente. Insomma, ha avuto un’onorata carriera, benché scaldasse moltissimo, però recentemente aveva cominciato a riavviarsi o si spegneva il segnale wireless, magari sia per il maggior numero di dispositivi connessi, sia perché aveva OpenWRT Attitude Adjustment, e i 16MB di RAM si sentivano.

Ho deciso così di investire 45€ in un router molto interessante: il TP-Link TD-W8970. È un router con modem ADSL2+/VDSL2, quindi è pronto per la falsa fibra, anche se da me arriverà tra anni, in più ha uno switch gigabit ethernet, wireless 802.11n a 2.4GHz con 3 antenne removibili (ovvero permettono di raggiungere i 300Mbit/s con canali a 40MHz, conformemente allo standard 802.11 e alla normativa UE), 2 porte USB 2.0. Ma la cosa più interessante è che il dispositivo, a differenza di molti altri modelli, non ha una SoC Broadcom, ma è basato sulla piattaforma Lantiq XRX200, quindi ha la completa compatibilità con OpenWRT, incluso modem integrato.

Volendo ci sarebbe anche il TD-W8980, la versione dual band, che però costa 30€ in più, ma visto che ho solo dispositivi a 2,4GHz ho risparmiato, perché in quest’altro modello le antenne da 2,4GHz sono interne, quelle esterne sono per i 5GHz.

Disclaimer

Non mi assumo alcuna responsabilità per danneggiamenti a cose e/o a persone, chiunque sceglie di procedere secondo le istruzioni di seguito riportate si prende ogni responsabilità.

In ogni caso mi sento di consigliare di leggere tutto l’articolo prima di fare qualsiasi cosa.

Requisiti

L’installazione di OpenWRT non è delle più semplici, poiché con la release del 28/08/2013 è stato aggiunto un controllo, si pensa di una firma RSA. Rimane possibile però il flash tramite seriale.

Per poter eseguire il flash c’è bisogno di un cavo di rete, un cacciavite a stella, un convertitore seriale USB-TTL o RS232-TTL, alcuni cavi da breadboard o spezzoni di filo monocore ed eventualmente una breadboard per andare meglio a collegare il tutto.

Vi sconsiglio di stagnare i fili, visto che le piazzole del collegamento seriale non sono in superficie, ma sono già forate dalla parte visibile e in quella inferiore hanno dello stagno che ferma l’eventuale filo da breadboard o filo monocore. Inoltre, poiché che non c’è alcun’etichetta che testimoni l’integrità del case del router, se rimettete il firmware originale, se non stagnate, nessuno potrà dire che l’avete modificato.

Come requisito software c’è un browser, un terminale seriale (Serial console di Arduino in tutte le piattaforme, getty, minicom, CuteCOM etc su Linux, Hyperterminal su Windows), un server tftp (per esempio Tftpy, basta spostare il contenuto della cartella bin nella cartella del progetto). Un client telnet è comodo per impostare la password di root anziché farlo con LuCI.

Oltre a tutto ciò, può far comodo avere sempre un altro metodo di accesso a Internet qualora qualcosa vada storto. Quindi può essere comodo un altro router oppure uno smartphone.

Quanto al firmware, le immagini ufficiali di OpenWRT per questo router non hanno LuCI (dovremo aspettare la release ufficiale di Barrier Breaker) e nella RC 2 il wireless aveva un bug. Quindi andremo ad utilizzare il repository dell’utente rylos. Il file openwrt-lantiq-xrx200-TDW8970-sysupgrade_rNNNNN.image dovrebbe bastare, e dovrebbe anche includere il blob binario per il modem, tuttavia vi consiglio di scaricare anche quello (dsl_vr9_firmware_etc.bin) e il backup del firmwre originale (restore_kernel_rootfs_org.7z).

Se non vi sentite abbastanza al sicuro col backup del fimrware di Rylos, potete anche farvi il vostro backup con un’immagine live di OpenWRT, seguendo queste istruzioni, tuttavia non tratterò l’argomento qui.

Apertura del case

Il case è molto facile da aprire: ci sono 4 viti a stella sulla parte inferiore, direttamente accessibili, non ci sono gommini, o peggio, etichette, che le coprono.

Una volta tolte si rimuove la parte superiore con una certa pressione. La parte per cui bisogna fare più attenzione sono gli angoli.

Flash tramite seriale

Prima di fare effettivamente il flash, consiglio di preparare il server TFTP, attaccare il cavo di rete e impostare sulla scheda cablata un indirizzo IP statico ed appartenente alla rete 192.168.1.0/24, evitando il primo e l’ultimo (rispettivamente 192.168.1.1 e 192.168.1.254). Infine preparate il terminale seriale per essere avviato con velocità 115200, modalità 8N1 (ovvero 8 bit per i dati, 1 bit di stop, nessuna parità) e controllo/handshake hardware in base al vostro convertitore, in genere disabilitato. Fine linea Unix (\n, o LF o Line feed o 0xA).

Vi consiglio di farlo prima perché dopo se non stagnate probabilmente potrete lavorare con una mano sola, perché con l’altra dovrete tenere fermi i cavi.

Il collegamento dovrà essere fatto secondo questo schema: dall’alto al basso, VCC (3.3V), GND, Rx, Tx.

Seriale nel TD-W8970, immagine presa dal wiki di OpenWRT

Ricordatevi che Rx e Tx del dispositivo e del convertitore vanno collegati incrociati e VCC non va collegata, salvo particolari esigenze, come l’alimentazione del MAX2323.

Nel mio caso ho dovuto tenere i cavi fermi con una mano, e operare con l’altra.

Comunque una volta fatto il collegamento avviate il terminale seriale e bloccate con t il boot.

A questo punto date i seguenti comandi (escluse le cose tra parentesi, sono i miei commenti):

setenv ipaddr 192.168.1.254; setenv serverip 192.168.1.x (IP del computer)
tftpboot 0x80800000 openwrt-lantiq-xrx200-TDW8970-sysupgrade_rNNNNN.image (dovrebbe produrre degli ### per il trasferimento)
sf erase 0x20000 0x7a0000
sf write 0x80800000 0x20000 0x680004

A questo punto mi pare si riavvii, quando vedete che si sta avviando OpenWRT potete anche staccare la console seriale.

Manca solo l’ultimo passaggio: impostare la password di root al primo avvio. Potete farlo o dalla console seriale, se non l’avete staccata, o con telnet (telnet 192.168.1.1), o con l’interfaccia web.

Il comando da dare è passwd root.

Configurazione

Nel mio ultimo test mi pare PPPoE non andasse, bisogna invece configurare il router con PPPoA, secondo i parametri del vostro fornitore di servizi. Se avete Alice e volete utilizzare IPv6 ricordatevi di abbassare di 40 byte l’MTU (da 1500 a 1460 per PPPoA, da 1492 a 1452 se riuscite a far andare PPPoE).

Inoltre bisogna impostare nel file /etc/config/network, sotto la sezione di vdsl, la xfer_mode a atm anziché a ptm (option xfer_mode 'atm', dovrebbe essere l’ultima riga). Potete farlo con l’editor nano, visto che rylos lo ha incluso.

Se l’ADSL non va ancora assicuratevi che ci sia il file vdsl.bin in /lib/fimrware, altrimenti caricatelo con scp (è il file dsl_vr9_firmware_etc.bin che vi avevo fatto scaricare). Potete usare Filezilla o semplicemente scp dsl_vr9_firmware_etc.bin root@ip_del_router:/lib/firmware/vdsl.bin. Andrebbe bene anche la copia del file e poi il link col nome di vdsl.bin.

Per IPv6 vi consiglio di seguire le istruzioni ufficiali.

Questo router ha una buona CPU (MIPS da 500MHz) e una certa quantità di RAM (64MB), tuttavia vi sconsiglio di sforzarlo troppo con per esempio PHP. Invece dovrebbe essere buono come NAS, anche se leggevo, non ricordo dove, che la velocità è di circa 10MB/s, quindi in realtà non si sfrutta la gigabit, se non tra i vari computer.

Bibliografia e licenza

Licenza: Creative Commons BY-SA 3.0 Unported.

C’è un thread in italiano sul forum di Hwupgrade, cominciato dallo stesso Rylos, tuttavia non ho preso niente da qui per incompatibilità di licenza con il wiki di OpenWRT.

55 commenti