Ho comprato un modem per sostituire quello Eminent che non mi consentiva di gestirlo appieno senza dove fare strane manovre tramite wget sulle pagine http ed altro per prelevare i valori della rete, velocità, etc.: quello che volevo era difficile da trovare:
- Compatibile OpenWRT
- Modem ADSL2+
- Gestione delle VLan
- WiFi integrato
La difficoltà è stata individuare e trovare un access point WiFi con modem ADSL gestibile da OpenWRT.
Trovato il modem Astoria ARV4518PW su eBay in Asturia ho atteso che arrivasse in Italia.. due settimane ed il modem era in mio possesso!!
La prima difficoltà obiettiva era capire come poterlo aprire senza distruggere il case plastico. Alla fine il case ha fatto una brutta fine!
Ho trovato un wiki molto interessante che parlava di tutto quello che serviva per domare l’Astoria ai voleri di OpenWRT
http://foro.seguridadwireless.net/openwrt/openwrt-para-roters-astoria-de-ya-com/msg246595/#msg246595
Indubbiamente era una vera operazione a cuore aperto: sostituire il bootloader e successivamente installare il nuovo sistema operativo.
Disintegrate le alette che mantenevano la chiusura ermetica del modem, ho individuato gli header della seriale; credo di aver esagerato in quanto ho anche effettuato il collegamento per l’eventuale recupero a fronte del brick del modem, ma per fortuna non è stato necessario (per intenderci le due saldature sul lato posteriore della piastra).
Non sono riuscito a capire il motivo, ma l’adattatore che ho inizialmente utilizzato a 3v3 non ha funzionato. Vedevo sul terminale minicom che mi richiedeva di premere tre volte la barra spaziatrice per poter entrare nella modalità superuser, ma era come se non facessi nulla. Ho provato anche a cambiare la tensione dell’adattatore a 5v0, ma senza successo.
Ho deciso di provare un altro adattatore usb-seriale e questa volta sono riuscito ad entrare nella modalità superuser e poter effettuare il backup della rom e poter inviare in xmodem (come i tempi della mia bbs !!) il bootloader sul modem.
Sul sito di OpenWrt ho prelevato l’ultima versione ufficiale per il mio modem
http://downloads.openwrt.org/attitude_adjustment/12.09/lantiq/danube/openwrt-lantiq-danube-squashfs.rootfs
e, dopo aver configurato il server tftp sul mio LinuxMint, ho passato il file per l’aggiornamento del sistema.
Il sistema non funzionava bene, in quanto avevo individuato due problemi:
- La scheda wireless non funzionava
- Il modem si sconnetteva e riconnetteva con periodicità
Ho fatto alcune ricerche su Internet ed il problema era conclamato.. non era quindi un problema del mio modem.
Dopo una serie di tentativi infruttuosi, fra cui anche provare ad usare la versione del trunck, ho prelevato l’ultima versione del trunck della 12.09 (che dovrebbe essere pubblicata come 12.09.1),
git clone git://git.openwrt.org/12.09/openwrt.git
scaricato il git del progetto, poi aggiorno i pacchetti da configurare ed installare con
./scripts/feeds update -a ./scripts/feeds install -a
a questo punto il make menuconfig consente di selezionare i pacchetti e moduli del kernel da compilare ed installare.
Potrebbero esserci dei problemi con delle versioni e/o pacchetti mancanti. Sotto Debian e derivate si mette a posto tutto installando con apt-get una serie di pacchetti standard:
sudo apt-get install git-core build-essential sudo apt-get install subversion sudo apt-get install libncurses5-dev zlib1g-dev sudo apt-get install libssl-dev gettext sudo apt-get install xsltproc
Senza esagerare con i pacchetti da installare e con i moduli da installare la compilazione si risolve in una ora circa,
CONFIG_TARGET_lantiq=y
CONFIG_TARGET_lantiq_danube=y
CONFIG_TARGET_lantiq_danube_ARV4518PW=y
Già con la scelta del processore e del tipo di hw, si ha un sistema di base funzionante.
Come riportano le note su OpenWRT per l’installazione del sistema, con il comando
make
si inizia la compilazione dell’ambiente che può essere velocizzata aggiungendo l’opzione
- j <numero di core +1>
purtroppo può capitare che il comando make non vada a buon fine e si rende necessario terminare la compilazione in modalità “singole core”.
Terminata la compilazione, per trasferire il nuovo kernel sul modem bisogna configurare un server tftp nella cui directory di riferimento sia presente il file ARV4518PW-squashfs.image, così come impostato nell’environment del modem, che è possibile modificare, ma ho preferito lasciare invariato.
/tftpboot/ARV4518PW-squashfs.image -> ~/Software/openwrt/openwrt/bin/lantiq/openwrt-lantiq-danube-ARV4518PW-squashfs.image
Ho impostato sul mio pc i due indirizzi che mi sarebbero serviti per la gestione del server tftp e della connessione al modem, in modo che fossi obbligato a cambiare continuamente configurazione.
Una volta impostato il link, si esegue, nel mio caso,
minicom -D /dev/ttyUSB0
che visualizza lo stdout del modem. Fornita l’alimentazione si interrompe il processo di boot con la pressione di un tasto e si lancia l’aggiornamento del fw con
run update_openwrt
ROM VER: 1.0.3 CFG 01 Read ROM VER: 1.0.3 CFG 01 Read EEPROMX X U-Boot 2010.03 (May 16 2012 - 05:51:08) Board: ARV4518PW SoC: Danube/Twinpass/Vinax-VE V1.3, DDR Speed 166 MHz, CPU Speed 333 MHz DRAM: 64 MB Flash: 4 MB Net: searching for rtl8306 switch ... found lq_cpe_eth Hit any key to stop autoboot: 0 ARV4518 => run update_openwrt Using lq_cpe_eth device TFTP from server 192.168.144.100; our IP address is 192.168.144.99 Filename 'ARV4518PW-squashfs.image'. Load address: 0x80500000 Loading: T Abort ARV4518 => run update_openwrt Using lq_cpe_eth device TFTP from server 192.168.144.100; our IP address is 192.168.144.99 Filename 'ARV4518PW-squashfs.image'. Load address: 0x80500000 Loading: ################################################################# ################################################################# ################################################################# ################################################################# ################################################################# ################################################################# ################################################################# ################################################################# ############################################ done Bytes transferred = 2883588 (2c0004 hex) ............................................. done Erased 45 sectors Copy to Flash... 9....8....7....6....5....4....3....2....1....done ARV4518 => bootm ## Booting kernel from Legacy Image at 80500000 ... Image Name: MIPS OpenWrt Linux-3.3.8 Created: 2014-07-16 18:05:28 UTC Image Type: MIPS Linux Kernel Image (lzma compressed) Data Size: 981860 Bytes = 958.8 kB Load Address: 80002000 Entry Point: 80002000 Verifying Checksum ... OK Uncompressing Kernel Image ... OK Starting kernel ...
Il modem esegue il download del nuovo kernel dal server, lo controlla, esegue il flash della memoria e si pone in attesa di un comando che può essere
reset
che esegue la reinizializzazione del modem.
Quindi ho istallato il server apache sul mio pc per poter aggiornare la distribuzione con un link, sia il kenel che i pacchetti applicativi
/var/www/attitude_adjustment/12.09.1/lantiq/danube/packages -> ~/Software/openwrt/openwrt/bin/lantiq/packages/
ho modificato il routing de mio pc e la possibilità del routing fra la scheda wired e la wireless
sudo iptables -t nat -A POSTROUTING -o wlan0 -j MASQUERADE sudo sysctl net.ipv4.ip_forward=1
In questo modo ho aggiornato i pacchetti disponibili e installatu luci
opkg update opkg install luci /etc/init.d/uhttpd enable /etc/init.d/uhttpd start
E’ interessante l’opzione che consente la gestione del led tramite regole di iptables e l’impostazione del modulo del kernel:
nelle regole personalizzate del firewall:
iptables -A INPUT -p tcp –dport 22 -j LED –led-trigger-id netfilter-ssh –led-delay 1000
e nell script di startup
echo ssh > “/sys/class/leds/soc:green:voip/trigger”
in questo modo nella configurazione dei led la configurazione
config led option default '0' option trigger 'netfilter-ssh' option sysfs 'soc:green:voip'
consente di vedere eventuale traffico ssh sullo stato del led del voip (che personalmente non uso).
A questo punto posso monitorare lo stato della linea adsl con
root@OpenWrt:/etc/config# /etc/init.d/dsl_control status Chipset: Ifx-Danube 1.3 Line State: UP [0x801: showtime_tc_sync] Data Rate: 16.382 Mb/s / 1.020 Mb/s Line Attenuation: 18.7dB / 10.4dB Noise Margin: 6.4dB / 9.5dB Line Uptime: 8h 18m 29s
—————–
Finita la prima fase sperimentale con compilazione ed installazione del nuovo OpenWRT tramite tftpt, le successive installazioni risultano molto più semplici !! E’ sufficiente andare in
dobbiam
Sistema -> Backup / Flash firmware -> Flash new firmware image
e caricare il nuovo firmware.
Inoltre è possibile avere molta più ram per installare tutto quello che vogliamo:
possiamo installare una memoria USB come nuova root:
creiamo una partizione e la formattiamo in ext4
dobbiamo installare alcuni pacchetti aggiuntivi:
opkg install kmod-usb-storage-extras opkg install block-mount opkg install kmod-fs-ext4
cd /tmp mkdir cproot mkdir sda1 mount --bind / /tmp/cproot mount /dev/sda1 /tmp/sda1 root@OpenWrt:/tmp# tar -C /tmp/cproot -cvf - . | tar -C /tmp/sda1 -xf - umount /tmp/cproot umount /tmp/sda1
Configuriamo la nuova root
config mount option target / option device /dev/sda1 option fstype ext3 option options rw,sync option enabled 1 option enabled_fsck 0
ed ecco il risultato:
root@OpenWrt:~# df -h Filesystem Size Used Available Use% Mounted on rootfs 14.6G 359.3M 13.5G 3% / /dev/root 1.8M 1.8M 0 100% /rom tmpfs 30.2M 916.0K 29.3M 3% /tmp tmpfs 512.0K 0 512.0K 0% /dev /dev/sda1 14.6G 359.3M 13.5G 3% /
Un modem nuovo (!!) con 13G di spazio !! 🙂
—————————
un paio di giorni fa ho fatto un errore.. ho provato a compilare la nuova versione trunck della 14.07 barrier breaker,, ma per errore ho compilato per il AVR4518PWR01 .. e non AVR4518PWR01A !!
Non s se sia stato quello o altro, ma il mdem era come briccato…rimessa ‘ultima versione della 12.09.1, tutto funzionava .. tranne la connessione adsl.
Tutti i forum dicono “Fate il backup del vecchio firmware e della partizione dati del modem”, ma nessuno ha evidenziato COME restora i dati della partizione di configurazione.
Io ho fatto così:
Ho inserito fra i parametri del uboot la seguente istruzione:
set update_datamodem 'tftp ${ram_addr} ${tftppath}data_ARV4518.data;era 0xb03f0000 +${filesize};cp.b 0x80500000 0xb03f0000 ${filesize}'
copiato nella directory ftfp il file del dump della partizione da 64k effettuata con brndumper e rinominata in data_ARV4518.data
lanciato un
saveenv
per salvare nella nvram del modem l’istruzione e poi
run update_datamodem
in questo modo ho ripristinato la partizione corrotta ( o che perlomeno reputavo tale)
ho provato a mettere sotto la versione rc2 del 14.07 e la adsl ha ripreso a funzionare !!
il solito /etc/init,d/dsl_control mi dava i soliti 16Mb!!
Purtroppo lo spazio della partizione del fs di boot era troppo esigua.. Non potevo installare nulla. Roll back, ma avevo la certezza che il modem funzionasse nuovamente!! 🙂
Ho fatto la copia del openwrt-lantiq-danube-ARV4518PW-squashfs.image sulla tmp del modem, poi il sysupgrade, modificato il opkg.conf per farlo puntare al mio server http e poi via con la reinstallazione dei pacchetti …
Il modem è di nuovo up and running !!



