Difference between revisions of "OpenWRT: Build Firmware Linksys WRT1900AC"

From OnnoWiki
Jump to navigation Jump to search
Line 1: Line 1:
WRT1900AC was announced on 6th of January 2014 as a router developed to be used with OpenWrt.
+
==Spesifikasi==
  
Specifications:
 
 
  Model: Linksys WRT1900AC
 
  Model: Linksys WRT1900AC
 
  Technology: Wireless-AC
 
  Technology: Wireless-AC
Line 41: Line 40:
  
 
==Download source code==
 
==Download source code==
 +
 +
Download source code untuk WRT1900AC sekitar 700Mbyte-an
  
 
  cd ~
 
  cd ~
Line 65: Line 66:
 
  ./scripts/feeds update -a
 
  ./scripts/feeds update -a
 
  ./scripts/feeds install -a
 
  ./scripts/feeds install -a
 +
make clean
 +
make defconfig
 +
make menuconfig
 +
make world
  
 
+
==Setup Menuconfig==
Use "make menuconfig" to configure your appreciated
 
configuration for the toolchain and firmware.
 
  
 
For WRT1900AC:
 
For WRT1900AC:
Line 87: Line 90:
  
  
 +
==Lokasi image==
  
After applying the patches in this directory to the OpenWrt Build you can generate an image by doing the following:
+
After the build completes the firmware image for the WRT1900AC will be
 
+
located at:
 
 
Instalasi aplikasi pendukung
 
  
  apt-get install gcc binutils bzip2 flex python perl \
+
  ./bin/mvebu/openwrt-mvebu-mamba-jffs2-128k.img
make, find, grep, diff, unzip, gawk, getopt, libz-dev and libc headers.
 
  
  
 
+
==Update Image==
Use "make menuconfig" to configure your image.
 
 
 
Simply running "make" will build your firmware.
 
It will download all sources, build the cross-compile toolchain,
 
the kernel and all choosen applications.
 
 
 
After the build completes the firmware image for the WRT1900AC will be
 
located at:
 
./bin/mvebu/openwrt-mvebu-mamba-jffs2-128k.img
 
  
 
How to update from Belkin/Linksys UI
 
How to update from Belkin/Linksys UI
  
Login into WRT1900AC local UI
+
* Login into WRT1900AC local UI
 
+
* Navigate to the Connectivity tab
Navigate to the Connectivity tab
+
* Select Manual firmware update
 
+
* Select image to load (e.g., openwrt-armadaxp--jffs2-128k.img)
Select Manual firmware update
+
* Select Update firmware
 
 
Select image to load (e.g., openwrt-armadaxp--jffs2-128k.img)
 
 
 
Select Update firmware
 
  
 
After the firmware is updated, the unit will reboot, and the default ip address will be 192.168.200.1
 
After the firmware is updated, the unit will reboot, and the default ip address will be 192.168.200.1
Line 133: Line 121:
 
Your OpenWrt Project
 
Your OpenWrt Project
 
http://openwrt.org
 
http://openwrt.org
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
03/05/2014
 
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
 
CONTENTS
 
Topic -------- Section
 
----- -------
 
o OVERVIEW....................................................... 1.0
 
o BUILDING OPENWRT............................................... 2.0
 
o HOW TO BOOT UP TO LINUX........................................ 3.0
 
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
 
1.0 OVERVIEW
 
This document provides a quickstart guide on Mamba OpenWRT SDK V4.0
 
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
 
2.0 BUILDING OPENWRT
 
How to build the openwrt:
 
1. Setup the Linux server and install all packages for openwrt:
 
Refer: http://wiki.openwrt.org/doc/howto/buildroot.exigence
 
2. Make sure the server is connected to the Internet.
 
3. Preparation:
 
Extract the release source from tarball
 
# tar xzfv mamba-openwrt-v4.0.tar.gz
 
Extract the opensource (dl_v4.0.tar.gz) the dl folder
 
Update packages and luci for some advanced features ( such as
 
Web Management).
 
# cd mamba-openwrt-vX.Y
 
# ./scripts/feeds update packages
 
# ./scripts/feeds update luci
 
# ./scripts/feeds update routing
 
# ./scripts/feeds update xwrt
 
# ./scripts/feeds install -a -p packages
 
# ./scripts/feeds install -a -p luci
 
# ./scripts/feeds install -a -p routing
 
4. Configuration the openwrt:
 
# cd mamba-openwrt-vX.Y
 
To enable/disable packages manually:
 
# make menuconfig
 
You can also utilize the pre-config file (which enables Web Management):
 
# cp belkin/mamba_basic_config .config
 
5. Building the openwrt:
 
# cd mamba-openwrt-vX.Y
 
# make dirclean
 
# make V=s
 
6. Binary files after finish compile (or extract from release binaries):
 
# tar xzvf mamba-openwrt-vX.Y.bin.tar.gz
 
# cd mamba-openwrt-vX.Y.bin
 
# ls
 
md5sums
 
openwrt-mvebu-jffs2-128k.img
 
openwrt-mvebu-Mamba-rootfs.tar.gz
 
openwrt-mvebu-root.jffs2-128k
 
openwrt-mvebu-uImage-armada-xp-mamba
 
openwrt-mvebu-uImage-initramfs-armada-xp-mamba
 
packages/
 
Then put all the openwrt-armadaxp-*** to tftp server (/tftpboot folder)
 
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
 
3.0 HOW TO BOOT UP TO LINUX
 
1. Configure the ethernet:
 
Make sure the ethernet of board working, then we can get the files from tftp server for boot up Linux.
 
2. Set up environment variables required for Dual Boot (Primary Boot + Alternative Boot)
 
Mamba support Dual Boot with the following features:
 
+ Linksys and OpenWRT firmware use the same flash layout (mtdparts U-boot variable)
 
+ Linksys and OpenWRT firmware use the same kernel boot arguments (bootargs is the same and independent of the firmware)
 
+ Linksys and OpenWRT share the syscfg partition for storing configuration files.
 
+ Linksys and OpenWRT firmware can be flashed to Primary Boot partition or Alternative Boot partition (the ping-pong effect: when we upgrade firmware from Primary partition the new firmware is written to the Alternative partition, next bootcmd is set to Alternative partition. When we upgrade firmware from Alternative partition the new firmware is written to the Primary partition, next bootcmd is set to Primary partition)
 
The defaul U-boot environment variables are listed below
 
u-boot> setenv alt_kern_addr '0x3200000'
 
u-boot> setenv alt_kern_size '0x400000'
 
u-boot> setenv pri_kern_addr '0xa00000'
 
u-boot> setenv pri_kern_size '0x400000'
 
u-boot> setenv openwrt_fw_size '0x2800000'
 
u-boot> setenv default_load_addr '0x2000000'
 
u-boot> setenv console 'console=ttyS0,115200'
 
u-boot> setenv firmware_name 'openwrt-mvebu-jffs2-128k.img'
 
u-boot> setenv serverip '192.168.200.2'
 
u-boot> setenv auto_recovery 'yes'
 
u-boot> setenv boot_part '1'
 
u-boot> setenv default_mtdparts 'mtdparts=armada-nand:1024K(uboot)ro,256K(u_env),256K(s_env),1m@9m(devinfo),40m@10m(kernel),37m@13m(rootfs),40m@50m(alt_kernel),37m@53m(alt_rootfs),80m@10m(ubifs),-@90m(syscfg)'
 
u-boot> setenv jffs2_mtdparts 'mtdparts=armada-nand:1024K(uboot)ro,256K(u_env),256K(s_env),1m@9m(devinfo),40m@10m(kernel),37m@13m(rootfs),40m@50m(alt_kernel),37m@53m(alt_rootfs),80m@10m(ubifs),-@90m(syscfg)'
 
u-boot> setenv openwrt_mtdparts 'mtdparts=armada-nand:1024K(uboot)ro,256K(u_env),256K(s_env),1m@9m(devinfo),40m@10m(kernel),37m@13m(rootfs),40m@50m(alt_kernel),37m@53m(alt_rootfs),80m@10m(ubifs),-@90m(syscfg)'
 
u-boot> setenv linksys_altnandboot 'nand read $default_load_addr $alt_kern_addr $alt_kern_size; setenv bootargs $console $default_mtdparts root=/dev/mtdblock7 ro rootfstype=jffs2 init=/sbin/init; bootm $default_load_addr;'
 
u-boot> setenv linksys_nandboot 'nand read $default_load_addr $pri_kern_addr $pri_kern_size; setenv bootargs $console $default_mtdparts root=/dev/mtdblock5 ro rootfstype=jffs2 init=/sbin/init; bootm $default_load_addr;'
 
u-boot> setenv openwrt_altnandboot 'nand read $default_load_addr $alt_kern_addr $openwrt_fw_size; setenv bootargs $console $default_mtdparts root=/dev/mtdblock7 ro rootfstype=jffs2 init=/sbin/init; bootm $default_load_addr;'
 
u-boot> setenv openwrt_nandboot 'nand read $default_load_addr $pri_kern_addr $openwrt_fw_size; setenv bootargs $console $default_mtdparts root=/dev/mtdblock5 ro rootfstype=jffs2 init=/sbin/init; bootm $default_load_addr;'
 
u-boot> setenv flash_alt_image 'tftp $default_load_addr $firmware_name; nand erase $alt_kern_addr 0x2800000;nand write $default_load_addr $alt_kern_addr ${filesize};'
 
u-boot> setenv flash_pri_image 'tftp $default_load_addr $firmware_name; nand erase $pri_kern_addr 0x2800000;nand write $default_load_addr $pri_kern_addr ${filesize};'
 
u-boot> setenv update_both_images 'run flash_pri_image;run flash_alt_image'
 
u-boot> setenv altnandboot 'run linksys_altnandboot'
 
u-boot> setenv nandboot 'run linksys_nandboot'
 
u-boot> setenv bootcmd 'run nandboot'
 
# save all environment variables
 
u-boot> saveenv
 
3. Burn the Firmwares to NAND
 
# to burn firmware image to Primary Boot partition
 
u-boot> run flash_pri_image
 
# to burn firmware image to Alternative Boot partition
 
u-boot> run flash_alt_image
 
4. Boot up firmware
 
# boot firmware image from Primary Boot partition
 
u-boot> run nandboot
 
# boot firmware image from Alternative Boot partition
 
u-boot> run altnandboot
 
 
5. If you want to reset the OpenWRT configuration to default, there are several ways to do that
 
5.1 Erase the whole syscfg partition in U-boot
 
WARNING: this will also erase the configuration data of alternative boot
 
u-boot> setenv mtdparts $default_mtdparts
 
u-boot> nand erase.part syscfg
 
Boot up OpenWrt again. The boot script will first show "ubifs sysfs not ready yet; using ramdisk", the boot script will automatically format and create a new empty syscfg partition to store configuration data.
 
5.2 Factory reset in OpenWrt Failsafe Mode
 
If the ubifs syscfg partition is already properly formatted, this method is preferred. It only tries to remove the configuration files and leave the alternative boot configuration files intact.
 
Boot up OpenWrt. When you see the failsafe prompt as below
 
"Press the [f] key and hit [enter] to enter failsafe mode "
 
Enter "f" and then "enter" (You can also enter the failsafe mode via the HW button, then telnet to the board to have console command line)
 
When you reach the command line interface. Run one of the two command below:
 
firstboot
 
# or
 
firstboot jffs2reset
 
NOTE: If the syscfg partition is not formatted yet. The above command will try to reformat and create a new empty syscfg partition.
 
Reboot the system
 
reboot -f
 
5.3 Factory reset in OpenWrt Normal Mode
 
If the ubifs syscfg partition is already properly formatted, this method is preferred. It only tries to remove the configuration files and leave the alternative boot configuration files intact.
 
Boot up OpenWrt normally. When you reach the command line interface. Run one of the two command below
 
firstboot
 
# or
 
firstboot jffs2reset
 
Reboot the system
 
reboot
 
 
5.4 Factory reset via WebUI
 
Login OpenWRT WebUI, go to System > Backup/Flash Firmware > Reset to defaults, press the "Perform Reset" button and choose "Yes" when the confirmation prompt appears
 
6. Overlay on syscfg partition sequence
 
If the syscfg partition is not found (it is defined in mtdparts variable at Uboot). OpenWRT will just mount read-only root filesystem. We cannot write to the read-only file system.
 
If the syscfg partition is found and is formatted as ubifs properly (it should have one syscfg volume inside the partition), OpenWRT will mount the syscfg partition and use the directory /openwrt_overlay for storing configuration files.
 
If the syscfg partition is found but it is not formatted properly (ubifs_mount failed), the system will first use ramfs (tmpfs) for overlay the root. Later in the init script (/etc/init.d/S95done), the system will try to recover from the ubifs_mount failed by formatting the syscfg partition. So on the second boot, we should not see this ubifs_mount issue again.
 
7. OpenWRT sysupgrade behavior
 
Mamba support two partitions for booting Linux. When doing OpenWRT sysupgrade
 
+ If current firmware boot is from Primary Boot partition (boot_part=1), the new firmware is written to Alternative Boot partition. Sysupgrade also sets two U-boot environment variables for next boot "bootcmd=run altnandboot" "boot_part=2". The system is rebooted and on next boot the system will boot from Alternative Boot partition.
 
+ If current firmware boot is from Alternative Boot partition (boot_part=2), the new firmware is written to Primary Boot partition. Sysupgrade also sets two U-boot environment variables for next boot "bootcmd=run nandboot" "boot_part=1". The system is rebooted and on next boot the system will boot from Primary Boot partition.
 
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
 
 
 
 
 
 
 
 
==Referensi==
 
 
* https://github.com/wrt1900ac/opensource
 
* http://wjianz.wordpress.com/2014/09/18/useful-links-on-building-openwrt-for-wrt1900ac/
 
* https://github.com/jimmychungbelkin/Mamba/blob/master/Mamba_Openwrt_SDK_QS_v4.8.txt
 
* https://github.com/Chadster766/McWRT/releases
 
* http://support.linksys.com/en-us/support/routers/WRT1900AC
 
* https://github.com/wrt1900ac/opensource
 

Revision as of 08:00, 8 January 2015

Spesifikasi

Model: 	Linksys WRT1900AC
Technology: 	Wireless-AC
Standards: 	802.11a, 802.11b, 802.11g, 802.11n. 802.11ac
Frequency: 	Dual
Bands: 	Simultaneous: 2.4 GHz (Wireless-N), 5.0 GHz (Wireless-AC)
Security: 	WEP 64/128-bit, WPA2-Personal & Enterpise (AES/TKIP), WPS
Antennas: 	4x External Detachable Antennas
Antenna Gain (peak): 	2.4GHz: 2.5dBi
5GHz: 3.8dBi
Antenna Type: 	Dipole
Output Power: 	2.4GHz: 19dBm
5GHz: 21dBm
Warranty: 	2 year hardware limited warranty
OS Compatibility: 	Windows, Mac
Minimum System Requirements: 	PC with CD or DVD drive, running Windows XP SP3 (32-bit), Vista SP1/SP2 (32 & 64-bit), Win7 (32-bit & 64-bit) and Win8 (32-bit & 64-bit)

Mac: Wi-Fi enabled with CD or DVD drive, Mac OS® X Leopard v10.5.8 or later, Snow Leopard v10.6.1 or later, Lion v10.7, or Mountain Lion v10.8 Available USB 2.0 port

Package Contents: 	Linksys Dual Band Gigabit Wi-Fi Router AC1900, WRT1900AC, Quick Start Guide, CD-ROM with Documentation, 4 Antennas, Ethernet Cable, Power Adapter, Power Cord

Hardware Highlights:

SoC 	Ram 	Flash 	Network 	USB 	Serial 	JTag 	eSata
Marvell MV78230 	256 MiB 	128 MiB 		1×2.0 1×3.0 	Yes 	


Siapkan Aplikasi Pendukung

sudo su
apt-get update
apt-get install subversion gawk flex sharutils bison libz-dev zlib1g-dev patch \
fakeroot lzma git-core build-essential unzip libncurses5-dev curl php-xml-parser \
libexpat1 libexpat1-dev libssl-dev
cd /usr/local/src
wget http://www.cpan.org/modules/by-module/XML/XML-Parser-2.43.tar.gz
tar zxvf XML-Parser-2.43.tar.gz
cd /usr/local/src/XML-Parser-2.43
perl Makefile.PL
make install

Download source code

Download source code untuk WRT1900AC sekitar 700Mbyte-an

cd ~
git clone https://github.com/jimmychungbelkin/Mamba

Source code akan berada di

~/Mamba
./scripts/feeds update
./scripts/feeds install meshwizard openssh-server openssh-client
./scripts/feeds install freifunk-common freifunk-gwcheck freifunk-mapupdate
./scripts/feeds install luci luci-app-meshwizard luci-app-olsr luci-app-olsr-services
./scripts/feeds install luci-app-olsr-viz luci-app-freifunk-policyrouting luci-mod-freifunk
./scripts/feeds install luci-theme-freifunk-generic olsrd olsrd-mod-txtinfo olsrd-mod-dyn-gw
./scripts/feeds install olsrd-mod-dyn-gw-plain olsrd-mod-dot-draw
./scripts/feeds install olsrd-mod-arprefresh olsrd-mod-watchdog olsrd-mod-tas olsrd-mod-httpinfo
./scripts/feeds install olsrd-mod-pgraph olsrd-mod-secure olsrd-mod-bmf
./scripts/feeds install luci-app-upnp minidlna miniupnpc miniupnpd luci-app-minidlna
./scripts/feeds install libdlna libgupnp libgupnp-dlna rtorrent
./scripts/feeds install usb-modeswitch usb-modeswitch-data usbutils multiwan
./scripts/feeds install 6in4 6rd 4th 6to4 6tunnel libdaemon aprx usb-modeswitch
./scripts/feeds install pptpd ppp-mod-pptp smstools3 picocom
./scripts/feeds install kamailio4 kamailio asterisk18 asterisk11
./scripts/feeds update -a
./scripts/feeds install -a
make clean
make defconfig
make menuconfig
make world

Setup Menuconfig

For WRT1900AC:

The "Target System" in make menuconfig should be set to "Marvell Armada XP/370"
The "Subtarget" in make menuconfig should be set to "Mamba"
In "Target Images" in make menuconfig you should enable "jffs2"



Barrier Breaker

=

Barrier-Breaker/openwrt-armadaxp--jffs2-128k.img - prebuilt image based on OpenWrt Barrier-Breaker Barrier-Breaker/patch_submission_1.6.tar.gz - patch files for standard OpenWrt Package

OpenWRT git base revision: e97be7a104e5c809ae4638cf169823249a505698 OpenWRT svn base revision: 40006


Lokasi image

After the build completes the firmware image for the WRT1900AC will be 
located at:
./bin/mvebu/openwrt-mvebu-mamba-jffs2-128k.img


Update Image

How to update from Belkin/Linksys UI

  • Login into WRT1900AC local UI
  • Navigate to the Connectivity tab
  • Select Manual firmware update
  • Select image to load (e.g., openwrt-armadaxp--jffs2-128k.img)
  • Select Update firmware

After the firmware is updated, the unit will reboot, and the default ip address will be 192.168.200.1

The OpenWrt system is documented in docs/. You will need a LaTeX distribution and the tex4ht package to build the documentation. Type "make -C docs/" to build it.

To build your own firmware you need to have access to a Linux, BSD or MacOSX system (case-sensitive filesystem required). Cygwin will not be supported because of the lack of case sensitiveness in the file system.


Sunshine! Your OpenWrt Project http://openwrt.org