Compilare Openwrt per TP-LINK W8970
Ultimo aggiornamento: giovedì 21 Gennaio 2016
Compilare Openwrt
L’11 settembre 2015 è uscita finalmente la versione stabile di Openwrt per tutti i dispositivi supportati.
Naturalmente anche per il nostro fido TP-LINK W8970.
Come sempre sono già disponibili le immagini precompilate ma al solito hanno un equipaggiamento software di default non molto ampio e bisogna impostare qualcosa per cucirlo per bene sul nostro router.
Io mi sono ricompilato i sorgenti della versione trunk e , ad un primo utilizzo, sembra funzioni tutto.
Magari potreste darmi qualche feedback
Se volete ricompilarvi voi stessi la vostra versione di Openwrt potete fare così, come da guida:
Per prima cosa bisogna avere come sistema operativo Linux, non fa differenza la distribuzione.
Su ubuntu bisogna avere dei pacchetti scaricati per proseguire nella compilazione dunque diamo i seguenti comandi:
$ sudo apt-get update $ sudo apt-get install git-core build-essential libssl-dev libncurses5-dev unzip
Alcuni feed sono disponibili solo tramite svn percui, se si vogliono i loro sorgenti bisogna installare anche:
$ sudo apt-get install subversion mercurial
Per altre distribuzioni più famose i comandi da dare sono questi:
-
Arch Linux
pacman -S --needed subversion asciidoc bash bc binutils bzip2 fastjar flex git gcc util-linux gawk intltool zlib make cdrkit ncurses openssl patch perl-extutils-makemaker rsync sdcc unzip wget gettext libxslt boost libusb bin86 sharutils b43-fwcutter findutils
-
Debian 7 Wheezy:
apt-get install libncurses5-dev zlib1g-dev gawk
-
Fedora 20 – 64Bit
yum install -y subversion binutils bzip2 gcc gcc-c++ gawk gettext flex ncurses-devel zlib-devel make patch unzip perl-ExtUtils-MakeMaker \ glibc glibc-devel glibc-static quilt ncurses-lib sed sdcc intltool sharutils bison wget
-
openSUSE 13.2
zypper install asciidoc bash bc binutils bzip2 fastjar flex git-core gcc-c++ gcc util-linux gawk gtk2-devel intltool jikes zlib-devel mercurial make genisoimage ncurses-devel libopenssl-devel patch perl-ExtUtils-MakeMaker python-devel rsync ruby sdcc unzip wget gettext-tools libxslt-tools zlib-devel subversion
-
Ubuntu 12.04LTS:
sudo apt-get install build-essential subversion git-core libncurses5-dev zlib1g-dev gawk flex quilt libssl-dev xsltproc libxml-parser-perl mercurial bzr ecj cvs unzip
-
Ubuntu 64bit:
sudo apt-get install build-essential subversion libncurses5-dev zlib1g-dev gawk gcc-multilib flex git-core gettext libssl-dev
-
Centos x86-64:
yum install subversion binutils bzip2 gcc gcc-c++ gawk gettext flex ncurses-devel zlib-devel make patch unzip perl-ExtUtils-MakeMaker glibc glibc-devel glibc-static quilt ncurses-lib sed sdcc intltool sharutils bison wget git-core openssl-devel xz
Ora si può scegliere di voler compilare la versione trunk, o la stable.
Per la versione trunk diamo da terminale:
git clone git://git.openwrt.org/openwrt.git
Per la stable:
git clone git://git.openwrt.org/15.05/openwrt.git
Poi ci assicuriamo che il proprietario della cartella dove sono i sorgenti siano dell’utente in uso:
sudo chown -R user:user /openwrt/
Poi diamo:
cd openwrt ./scripts/feeds update -a ./scripts/feeds install -a
Fatto questo procediamo alla configurazione.
Una volta fatto questo, andiamo a configurare la nostra immagine openwrt dando:
make menuconfig
Da questa schermata semigrafica, è possibile scegliere tutte le opzioni e funzionalità da aggiungere al router.
Mi raccomando non esagerate con l’aggiungere pacchetti perchè lo spazio sul router è limitato.
Chi mastica di ambienti linux e ricompilazioni di kernel saprà che scegliendo <*> su un pacchetto, verrà integrato nel kernel, scegliendo <M> esso non verrà incluso nel kernel ma verrà ugualmente compilato per permetterne l’installazione in seguito.
Se scegliamo <N> naturalmente il pacchetto non verrà compilato.
Per il nostro router, di base possiamo aggiungere:
In ‘Target System’ selezionare Lantiq e in “Subtarget” selezionare XRX200
In ‘Target Profile’, cambiamo il driver wifi di default, dunque il TP-Link TD-W8970
Dunque abbiamo settato il .config per la compilazione in modo da avere i driver per il nostro device.
Da ora iniziamo a selezionare le applicazioni/pacchetti base che necessitiamo, in base a ciò che vogliamo aggiungere alla build.
Mi raccomando non esagerate con l’aggiunta di pacchetti.
Ad esempio potremmo voler aggiungere Luci, che è il pannello web di gestione del router.
Dunque andiamo in Luci e selezioniamo in Collections, ‘luci’ e ‘luci-ssl’
Tornando in Luci, potremmo scegliere da Aplications luci-app-p910nd, luci-app-samba, luci-app-statistics e luci-app-wol.
Andando di nuovo nel pannello Luci, possiamo andare a selezionare la lingua italiano per luci in Modules
Ora andiamo in Kernel Modules e, se la nostra idea e collegare alla porta USB un hard disk installiamo il supporto necessario.
Entriamo in ‘Filesystems’.
Qui selezioniamo kmod-fs-ext4 e kmod-fs-vfat, kmod-fs-ntfs.
Andiamo a ‘Utilities’ e entriamo ‘Filesystem’. Cerchiamo e selezioniamo ntfs-3g
Ora torniamo in Kernel Modules e entriamo in USB support e selezioniamo kmod-usb-core, kmod-usb-ohci, kmod-usb-printer, kmod-usb-storage e kmod-usb2.
Ora scorriamo in Kernel Modules incontriamo Native Language Support e entriamo. Selezioniamo kmod-nls-cp437, kmod-nls-cp850, kmod-nls-cp852, kmod-nls-iso8859-15 e kmod-nls-utf8.
AGGIORNAMENTO DICEMBRE 2015
Ora nei sorgenti sono stati aggiunti anche i firmware per il chip Lantiq.
Invece di applicare la relativa patch ci basta andare in Firmware, dalla prima pagina del menuconfig e selezionare dsl-vrx200-firmware-xdsl-a
Ora, premendo varie volte esc, possiamo salvare il .config e uscire e proseguire.
Con questo abbiamo fatto la preparazione per compilare un firmware con le seguenti caratteristiche:
hardware basato su lantiq, driver wifi del tplink w8970, LuCi localizzato in italiano, supporto per USB (disco con formato ext2, ext3, ext4, ntfs, fat16 e fat32) e samba.
Potremmo voler aggiungere ad esempio, come ho fatto nel mio .config, transmission per i torrent, nano, come editor dei testi, il supporto al dns dinamico.
Dopo questi passaggi possiamo applicare le patch dell’utente Matteo85, che ho trovato nel forum HardwareUpgrade e scaricabili dal suo dropbox
da terminale, sempre dalla cartella openwrt, diamo per ogni patch il comando
$ git am nomefile.patch
Una volta applicate tutte le patch possiamo dare un
$ make prereq
per vedere se abbiamo tutti i requisiti soddisfatti per procedere nella compilazione.
Ora possiamo compilare col comando
$ make -j 3 V=s
Dando il comando in questo modo l’output della compilazione sarà visibile su schermo per evidenziare magari eventuali errori di compilazione.
L’opzione -j 3 è adatta se si ha processore dual core. Avessimo un quad core possiamo mettere -j 5 ecc.
Anche dando comunque solo make, la compilazione verrà effettuata.
Al termine della compilazione potrete trovare l’immagine compilata all’interno della cartella del sorgente nel percorso
/bin/lantiq
Si può mettere sul router o dall’interfaccia luci oppure flashando da seriale come da precedente guida.
Ora bisogna fare qualche piccola modifica per permettere al router di connettersi a internet.
Collegarsi da browser al router tramite indirizzo 192.168.1.1 e impostare la password.
Successivamente collegarsi tramite ssh al router da terminale con:
$ ssh root@192.168.1.1
Una volta immessa la password andare a modificare con nano il file /etc/config/network mettendo dove dice option xfer_mode ‘ptm’, sostituire a ptm atm.
Ora da luci, nel browser si deve settare la connessione:
A me ha funzionato mettendo i dati come da immagine.
E’ importante riempire il campo Service name, non riempiendolo non mi funzionava:
Considerando che la compilazione richiede tempo, soprattutto se non si ha un pc di ultima generazione, lascio la mia immagine openwrt in download in modo da poter ricevere feedback per eventuali malfunzionamenti e migliorie.
Scarica l’immagine Openwrt customizzata da me.
rendo disponibile anche il mio config per chi volesse usarlo come punto di partenza.
Ringrazio gli utenti Totix92 e Matteo85 per la disponibilità sul forum.
FONTE
http://wiki.openwrt.org/doc/howto/buildroot.exigence
http://www.hwupgrade.it/forum/showthread.php?t=2643260
Qui ci sono le build di Totix92
Qui ci sono le patch di Matteo85
grazie per le informazioni….e sopratutto grazie per aver condiviso la tua immagine. non appena mi libero dagli impegni la installero e ti faccio sapere come va.
Jackladen
Grazie, man mano che farò altre build le metterò sempre nello stesso posto.
Ciao sto compilando anche io non riesco ad applicare le patch mi da sempre errore
Me too.
exxa@exxa:~/openwrt$ git am 0001-optimize-for-speed.patch
Applying: optimize for speed
error: patch failed: target/linux/lantiq/Makefile:14
error: target/linux/lantiq/Makefile: patch does not apply
error: target/linux/lantiq/dts/TDW89X0.dtsi: does not exist in index
Patch failed at 0001 optimize for speed
The copy of the patch that failed is found in:
/home/exxa/openwrt/.git/rebase-apply/patch
When you have resolved this problem, run “git am –continue”.
If you prefer to skip this patch, run “git am –skip” instead.
To restore the original branch and stop patching, run “git am –abort”.
ciao,
come promesso ho installato la tua build…..per il momento tutto ok. vorrei chiederti un favore, anzi 2,
quali repositori metto?
in luci mi manca il tool per configurare i punti di mount degli h.d. , sai per caso come si chiama il pacchetto da installare?
grazie
Jackladen
Ciao. Per i punti di mount, puoi settarli dal menù “punti di mount” in sistema, anche se di solito io li metto a mano modificando il file /etc/config/fstab.
Per quanto riguarda i repositories, avendo ricompilato io, se devo installare qualcosa, metto i pacchetti compilati da me. Comunque puoi usare anche quelli di chaos chalmer, dovrebbero andare.
src/gz chaos_calmer_base http://downloads.openwrt.org/snapshots/trunk/lantiq/xrx200/packages/base
src/gz chaos_calmer_packages http://downloads.openwrt.org/snapshots/trunk/lantiq/xrx200/packages/packages
src/gz chaos_calmer_luci http://downloads.openwrt.org/snapshots/trunk/lantiq/xrx200/packages/luci
src/gz chaos_calmer_routing http://downloads.openwrt.org/snapshots/trunk/lantiq/xrx200/packages/routing
src/gz chaos_calmer_telephony http://downloads.openwrt.org/snapshots/trunk/lantiq/xrx200/packages/telephony
src/gz chaos_calmer_management http://downloads.openwrt.org/snapshots/trunk/lantiq/xrx200/packages/management
grazie per le risposte….
cit. “puoi settarli dal menù “punti di mount” in sistema,” ….è proprio questo menù che non c’è!!!!hai ragione, potrei farlo da fstab ma preferirei l’interfaccia grafica. I pacchetti di chaos calmer funzionano.
ora vorrei metterci del mio……preferirei avere una versione stabile. sto cercando di compilare la chaos calmer. sono partito dal tuo .config ed ho fatto delle piccole aggiunte:
-ZRAM ENABLE
-luci-app-p910nd.
-luci-app-transmission
-transmission-remot
-aria2
-wget.
ovviamente, se funge tutto, vorrei condividere il mio lavoro qui sopratutto perchè il 99% è farina del to sacco. ho solo una domanda riguardo alle patch di Matteo85…tu quai hai inserito? mi sapresti dare una brevissima descrizione delle varie funzionalità? grazie
attenzione che con la stabile mi risulta che i nuovi driver del modem non funzionano, e dovresti mettere quelli vecchi. Le patch di Matteo85 van bene per la trunk. Tipo la 003 aggiunge proprio i driver del modem, quelli nuovi, così non devon esser aggiunti a mano ma sono già nell’immagine. Se segui il forum su hwupgrade vedrai che è spiegato tutto. E anche sull’ottima wiki di openwrt.
Filippo, ho scoperto da pochi giorni il tuo blog, e ti faccio i miei complimenti! Sei utilissimo e molto preparato
Grazie!
rieccomi…..sto compilando da trunk…..
problema nell’applicazione della patch con il comando su descritto. invece di
git am nome.patch
ho eseguito
git add nome.patch
Le patch stavano nella cartella di openwrt, dopo aver applicato la patch se davo
git status
mi usciva un elenco ccon il nome delle patch presenti in cartella eccetto quelle applicate, quindi, credo siano state applicate correttamente.
adesso sto compilando, o meglio, sta compilando.
vediamo cosa ne esce fuori e poi vi aggiorno.
grazie
Filippo anche io ti ringrazio ho messo la tua release e funge tutto ok grazie!!
Ciao Filippo sto per flashare la tua immagine ma volevo chiederti, prima di metterla, se nonostante tu abbia compilato con la lingua italiana è ancora possibile poi selezionare l’inglese dalle impostazioni di Luci.
L’immagine è compilata in italiano.
Comunque se vuoi altre lingue puoi installarle con opkg o da Sistema —> Software selezionando i pacchetti di luci nella lingua desiderata.
Ad esempio puoi installare luci-i18n-base-en per la lingua inglese e poi magari ti installi la lingua anche per altre eventuali app che hai installato. Ad esempio per il firewall, per transmission ecc…… basta cercarle comunque in Software
Grazie mille per la spiegazione, gentilissimo!
E’ la prima volta che provo OpenWRT quindi ancora non lo conosco bene e non so con precisione tutto quello che ci si può fare! 🙂
Mi attira molto il fatto di poter usare transmission con un hd connesso direttamente, al momento ho una configurazione simile ma su un raspberry pi.
Io attualmente uso proprio transmission che scarica su hard disk collegato
Comodissimo!
Ciao filippo , come ti chiami sul forum hwupgrade?Sto anch’io seguendo tutta la discussione per iniziare a lavorare sul firmware,al momento lavoro su macchina virtuale.
Come ti trovi con trasmission? Con quanti torrent in download noti rallentamenti del router o blocchi(seed e numero di connessioni limitate? velocità?)
64 mb di ram mi sembrano troppo pochi per gestire torrent 5-6 torrent senza problemi..Creando la partizione di swap sul disco sei riuscito a risolvere? così facendo però non va mai in idle..
Ciao Filippo ho installato finalmente la tua build, openwrt è davvero spettacolare. Sono due giorni che gioco senza sosta con le infinite possibilità di avere un router con linux sopra!
L’unico problema è che molto spesso si inchiodano i campi delle varie informazioni nella schermata di Overview su “Collecting Data…” a te capita mai?
Non ho avuto problemi ma ho notato che a volte, se lo metto troppo sotto sforzo, mi si resetta tutta la configurazione. È pur sempre la versione trunk. Comunque credo che a breve ricompilo una nuova versione per vedere come va al momento.
Ciao Filippo, volevo chiederti se il problema allo switch (i pacchetti che si propagano a tutte le porte invece che solamente a quella giusta) è stato risolto con le nuove build.
Grazie!
Ho provato a fare una configurazione, ma non ho trovato il firmware “dsl-vrx200-firmware-xdsl-a” che indichi. Sono andato nella cartella e, in effetti, manca. Da dove la recupero?