Guida Unbrick di qualunque Router (con MR-3020)

Stefano Novelli

Fondatore
Amministratore
19 Novembre 2007
7,113
821
8,179
3,236
Un saluto a tutti gli utenti di Inforge,
in questa breve guida voglio dare una mano a chi, come me, si è trovato in difficoltà ad effettuare l'unbrick di qualunque dispositivo a seguito di un flash fatto male di un firmware.

In questa guida farò uso dell'MR-3020, un piccolo router 3/4G prodotto da TP-Link che per cause di mancanza di corrente (la sfiga eh?) ha bloccato il processo di reset di un firmware.

Come ben saprete, il brick in questo caso causa problemi perché l'unico modo che avevate prima per collegarvi al dispositivo era usando Telnet/SSH. Con il firmware bloccato, non si può più refleshare e quindi diventa completamente inutile. Fino ad ora.

Requisiti Minimi
- Un dispositivo brickato
- Un saldatore, stagno e tutto l'occorrente
- 3 cavi femmina-femmina per i jumper
- Un convertitore USB to TTL

Riguardo al convertitore potete trovare a pochi euro il modello RS232 TTL che è questo:
1ruqxuH.png

Nel mio caso ne uso un modello da scantinato, non chiedetemi la versione perchè non ne ho la più pallida idea! Non tener conto del cavo bianco collegato alla 3v3 ;)

s2MaFXm.jpg


Potrebbero cambiare da modello a modello, assicurati che abbia le uscite GND, TXD e RXD (sono scritte solitamente sulla schedina).

http://www.chiark.greenend.org.uk/~sgtatham/putty/download.htmlStudia la situazione
Ogni router fornisce un'interfaccia UART per i propri dispositivi. Nella maggior parte dei casi essa è composta da 4 uscite: 3.3/5V, GND, TX e RX.

Nel caso dell'MR-3020 le uscite si trovano in basso a sinistra sul riquadro rosso e identificabili dalla dicitura P1:
uSTaDVx.jpg

Per potersi interfacciare a queste porte è necessario che si saldino quattro jumper sulla porta P1.
Considera che l'uscita VCC (3.3/5V) non dovrà essere usata in quanto l'alimentazione alla USB viene fornita direttamente dalla porta del PC. Collegandola direttamente alla chiavetta rischi di bruciarla.

Il tuo compito è quello di identificare le porte GND, RX e TX (questo è l'ordine nell'MR-3020 partendo dal basso) e di collegarle direttamente alla chiavetta invertendo RX con il TXD e il TX con il RXD.

Z9Mpssm.jpg



Interfaccia il Router
A questo punto siamo pronti a interfacciarci con il router direttamente al PC. Se saremo fortunati avremo ancora una versione funzionante del terminale (con relativi comandi UNIX), in alternativa potremo refleshare direttamente il Router.

Inutile dire che questa case-history può variare da dispositivo a dispositivo e la guida è pensata solo per dare un'idea del funzionamento ;)

L'interfacing può essere effettuato tramite Putty su Windows, CoolTerm su OSX/macOS (con i drivers). Purtroppo non so darvi dritte per Linux...

In caso di Putty bisogna configurare la Serial console in questo modo:
xqpZ4ma.png


Mentre per CoolTerm dalle impostazioni:
- Indica la porta SLAB_USBtoUART
- imposta il baudrate a 115200
- data bits 8 bits
- parity: none
- stop bits: 1

Se tutto viene riconosciuto siamo pronti ad accedere alla macchina direttamente da console seriale!

Comprendere la Console Seriale
La Serial Console ci permette di comunicare con il Sistema Operativo presente sulla macchina senza utilizzare protocolli esterni. Se questo non fosse possibile possiamo comunque accedere ai log per identificare problemi o vedere in che modo si comporta la macchina in caso di reboot.

Nel caso dell'MR-3020 ho scoperto che riavviandolo tenendo premuto il tasto di reset per 3 secondi cercava all'interno di un server TFTP con indirizzo IP 192.16.8.0.69 un recovery firmware: questo mi ha permesso così di caricare un firmware di ripristino direttamente nel server TFTP in locale che ho creato indicandogli il nome che voleva. L'ha "mangiato" e ha refleshato il firmware tranquillamente.

Tornando a noi se abbiamo una macchina completamente brickata sarà necessario avere per forza il server TFTP; il suo setup risulta essere talmente banale che non starò neanche a spiegarlo. L'unica cosa che mi consiglio di dire è che, collegandosi direttamente alla Ethernet del dispositivo, sarà necessario fissare un IP statico in quanto il DHCP in un dispositivo brickato ovviamente non è disponibile.

Se questo fosse necessario consiglio di eseguire la modalità hornet lanciando il comando tcl direttamente dalla Serial Console: da qui una googlata e si trova il modo per indicare il nuovo firmware e i blocchi di memoria da resettare.

Se invece i comandi UNIX (e il sistema presenta una struttura UNIX) funzionano il metodo più semplice che ho trovato è stato:
  1. Creare un server FTP in locale sul PC
  2. Effettuare un wget dell'immagine del firmware che si intende refleshare
  3. Eseguire l'aggiornamento con i comandi sysupgrade oppure mtd

Considera che molti firmware non permettono la scrittura nella root quindi sarà necessario effettuare il dump del firmware direttamente sul path /tmp dove solitamente è dedicato molto più spazio.

Se avete domande di qualunque tipo o non vi è chiaro qualche passaggio chiedete pure ;)