Aggiornamento, novembre 2026: a distanza di quattro anni sono riuscito a installarci OpenWrt. Il seguito è in OpenWrt su un router Fastweb Telsey CPVL7.
Il Telsey CPVL7 è un router che Fastweb ha dismesso da tempo. In passato gli era stata tolta la porta fibra, al cui posto era stata collegata una presa Ethernet. Era rimasto spento per almeno tre o quattro anni. Volevo capire cosa ci fosse dentro e se si potesse ancora farne qualcosa, liberandolo dai programmi dell’operatore.
La console seriale
Il primo passo è stato saldare i connettori sulla scheda e collegare un adattatore USB-TTL. Saldare i pin non basta: per abilitare la console serve anche un ponticello di stagno su A1 e A2, e va tolta la resistenza da 0 ohm in B.

TX e RX vanno incrociati con quelli dell’adattatore. La console va a 115200 baud:
sudo screen /dev/tty.usbserial-XXX 115200
Al login bastano user / user, che portano a una CLI ridotta. Da lì il comando sh apre una shell BusyBox come root. Con la shell a disposizione si vede con che cosa si ha a che fare: un BCM6368 a 400 MHz, 64 MB di RAM e 16 MB di flash parallela, con Linux 2.6.21.5 e BusyBox 1.00. La radice è uno squashfs compresso con la variante LZMA di Broadcom, riconoscibile dal magic qshs, che con un LZMA standard non si apre.
Dalla shell si può anche smontare il bridge e assegnare un indirizzo a mano a una porta, per raggiungere l’interfaccia web anche quando la configurazione non è quella giusta:
ifconfig br0 down
brctl delbr br0
ifconfig eth0 10.0.120.1 netmask 255.255.255.0
eth0 è la prima porta da destra. Con il computer su 10.0.120.2 si entra su http://10.0.120.1 con l’account di supporto, e da lì si può caricare un file di configurazione funzionante. Dopo il caricamento servivano ancora due comandi via telnet, il secondo per fare il NAT in uscita dalla porta eth5:
iptables -D FORWARD 4
iptables -t nat -A POSTROUTING -o eth5 -j MASQUERADE
Il dump della flash
Linux espone una sola partizione, l’immagine in uso, quindi per avere tutta la flash bisogna partire dal bootloader. È un CFE di Broadcom, e premendo Ctrl-C durante l’avvio ci si ferma al prompt CFE>. Il suo comando dm stampa il contenuto della memoria in esadecimale, e la flash è mappata lì.
Basta quindi uno script che mandi dm sulla seriale e ricomponga i byte dal testo: ho usato cfetool, in Python con pyserial. Non è veloce, perché a circa 2 kB/s i 16 MB richiedono quasi due ore, ma non scrive nulla.
Com’è organizzata la flash
Con binwalk si estrae lo squashfs, e confrontando i file con il dump si ricostruisce la mappa:
| Offset | Contenuto |
|---|---|
0x000000 | Bootloader, con il board ID CPVL7 a 0x684 |
0x020000–0x72cb50 | Immagine 1: CPVL7_IPV6_SIP_FAST, versione 10.30L.25 |
0x740000–0xa20000 | Vuota |
0xa20000–0xcc0000 | Dati compressi senza tag, forse residui di una vecchia copia del firmware |
0xcc0000–0xfdb9ec | Immagine 2: CPVL7_SIP_FASTWEB_R, versione 25.0L.0 |
0xfe0000–0xff8000 | Vuota |
0xff8000–0x1000000 | Dati, forse la configurazione |
Le due immagini seguono lo stesso schema: un tag Broadcom di 256 byte, poi il root filesystem e il kernel. Dall’immagine 2 ho estratto anche il kernel, che comincia a 0x255100 dall’inizio dell’immagine: dopo un’intestazione di 12 byte c’è un normale LZMA, che scompattato arriva a 2,6 MB.
L’immagine 2 è molto più piccola dell’altra, con un root filesystem da 2,4 MB contro 6,4 MB, e ha una R in fondo al tag: potrebbe essere un’immagine ridotta o di recupero.
Si può mettere OpenWrt?
Per il CPVL7 non ho trovato un’immagine di OpenWrt. Ho scaricato come riferimento le build di OpenWrt 22.03.2 per il Telsey CPVA642 e il Pirelli A226M, oltre al firmware del CPVA642, ma sono tutte per il chip 6358. Anche il progetto cfe-bcm63xx, dedicato a questo bootloader, cita 6338, 6348 e 6358, non il 6368.
Scrivere una di quelle immagini sul CPVL7 non avrebbe senso. Con un backup completo, una shell di root e la mappa della flash la base c’è, ma per andare oltre serve una build fatta apposta per questa scheda.