OpenWRT: Flash Mikrotik RB433
Installation overview
Here are the three main steps of the installation:
- Boot the board on OpenWrt from the network (netboot): DHCP and TFTP servers required on the host.
- Install OpenWrt to the internal flash with wget2nand: HTTP or FTP server required on the host.
- Reboot on the new installation, configure, etc.
Netboot
The bootloader of RB433 is able to load an image in elf format via BOOTP into RAM and execute it.
Build the Target
You need to get OpenWrt trunk. In menuconfig choose:
Target System: Atheros AR7xxx/AR9xxx Subtarget: Devices with NAND flash (mostly Mikrotik) Target Images: ramdisk (and also tar.gz if you plan to do a permanent install with the same image)
Now build the ram disk version. While it's building create the tftp-root directory if not already done and a symlink to the ram disk image
sudo mkdir -p /tftpboot # sudo ln -sf $(HOME)/openwrt/rb433uah-netboot/bin/ar71xx/openwrt-ar71xx-nand-vmlinux-initramfs.elf /tftpboot/openwrt.elf
cp openwrt-ar71xx-mikrotik-vmlinux-initramfs.elf /tftpboot/openwrt.elf chmod -Rf 777 /tftpboot/
Setup the Host
You need a BOOTP and a TFTP server on your host machine, we use dnsmasq here, since it can provide both services. Install dnsmasq with:
sudo apt-get install dnsmasq
Changes in
vi /etc/dnsmasq.conf
only listen on the interface which is directly connected to the RouterBoards WAN (PoE) port. e.g.
interface=eth0
allow a DHCP range, e.g.
dhcp-range=192.168.0.50,192.168.0.150,12h
allocate an IP address to the board, e.g.
- dhcp-host=00:0C:42:XX:XX:XX,192.168.6.101
dhcp-host=00:0C:42:72:E0:41,192.168.0.100
(replace the XX with the MAC address of your board!)
enable dnsmasq's built-in TFTP server
enable-tftp
set the root directory for files available via FTP.
tftp-root=/tftpboot
set filename (produced above) and tftpd server for BOOTP, e. g.
dhcp-boot=/tftpboot/openwrt.elf,boothost,192.168.0.6
Finally restart dnsmasq
/etc/init.d/dnsmasq restart
You will probably need to set the IP of the interface manually:
sudo ip addr add 192.168.6.1/24 dev eth0
Setup the Target
Install
apt-get install screen
Cara loginnya
screen /dev/ttyUSB0 115200,cs8,-ixon,-ixoff
- Connect to the serial port with a null modem cable (115200, 8N1).
- Press a key shortly after powering the board.
- Press o to change the boot device
- Press e to boot from ethernet in the future.
- Press x to leave setup (-o-e-x is needed only once, the boot method is saved in non-volatile memory)
Untuk memperbaiki
tekan o - o - x
RouterBOOT booter 3.02 RouterBoard 433AH CPU frequency: 680 MHz Memory size: 128 MiB NAND size: 128 MiB Press any key within 2 seconds to enter setup..
If everything is setup correctly it should look like:
RouterBOOT booter 2.16
RouterBoard 433AH
CPU frequency: 680 MHz Memory size: 128 MB
Press any key within 2 seconds to enter setup.. trying bootp protocol.......... OK Got IP address: 192.168.6.101 resolved mac address 4E:80:00:00:00:00 Gateway: 192.168.6.1 transfer started ................................... transfer ok, time=7.16s setting up elf image... OK jumping to kernel code Linux version 2.6.26.7 (joerga@thinkpad) (gcc version 4.1.2) #2 Mon Nov 10 11:23:37 CET 2008 console [early0] enabled ...
RouterBOOT booter 3.02 RouterBoard 433AH CPU frequency: 680 MHz Memory size: 128 MiB NAND size: 128 MiB Press any key within 2 seconds to enter setup.. trying bootp protocol.... OK Got IP address: 192.168.0.100 resolved mac address 00:03:0D:E3:DB:76 Gateway: 192.168.0.6 transfer started ........................................................................................
Permanent Installation
You need a working netboot first, see above. Please note also that you cannot reflash from a previous OpenWrt installation, you need the netboot in any case.
Target Image
If you want to use the same trunk image as the netboot image (cf. above), you need to have the tar.gz target selected in the Target Images menu and rebuild if you didn't select it before. You can also use one of the pre-built images (tested with 12.09-rc2); in the download area, browse the ar71xx/nand/ directory and pick the two following files:
- openwrt-ar71xx-nand-rootfs.tar.gz
- openwrt-ar71xx-nand-vmlinux-lzma.elf
If you don't have many devices to install and your netbooted system can access the Internet, you can probably pass the download URL directly to wget2nand as well, that will save you the web server configuration step (see below).
Save your RouterOS license key
If you have access to the MikroTik's Winbox software, you can export the license file from System→Licence, as stated on the RouterBoard 411 page.
Otherwise, boot RouterOS and export the key to a file:
/system license output
Then list the files on your device to see which file the .key file was saved:
/file print
On a fresh install, the key file should be #1 (or #0 on a RB433UAH); to open the editor with file #1, type:
/file edit 1 value-name=contents
Then copy-paste the text in a file on your computer. The differences between the obtained key file and a key exported with Winbox are that the SoftwareID line is not present in the latter, and there are no empty lines, so you should probably delete all the empty lines in your file prior to import it for a new installation; the SoftwareID line should not bother the installer (untested).
Erase the NAND Flash
If you want to install OpenWrt permanently into the NAND flash you once need to erase the NAND flash to get rid of the RouterOS stuff:
- connect via serial line
- press a key shortly after powering the RB433 up
- press e and type yes to format the flash from the bootloader
Setup the Host
An HTTP web server is required on the host, e.g. mini-httpd in Ubuntu. Install the mini-httpd web server
sudo apt-get install mini-httpd
In /etc/default/mini-httpd change
Start daemon
START=1
In /etc/mini-httpd.conf change
On which host mini_httpd should bind
host=192.168.6.1
Run in chroot mode
chroot
Where are the web files stored
data_dir=/home/openwrt/rb433uah/bin/ar71xx/
Restart the mini-httpd web server
sudo /etc/init.d/mini-httpd restart
Install OpenWrt into Flash
Start netboot (see above). Press ENTER to get a shell prompt. Execute:
wget2nand http://192.168.6.1
This script will set an IP address via dhcp on br-lan. The output should look like:
root@OpenWrt:/# wget2nand http://192.168.6.254 Connecting to 192.168.6.254 (192.168.6.254:80) kernel 100% |*******************************| 1041k 0:00:00 ETA Connecting to 192.168.6.254 (192.168.6.254:80) rootfs.tgz 100% |*******************************| 4243k 0:00:00 ETA Erasing filesystem... [ 137.110000] nand_erase_nand: attempt to erase a bad block at page 0x00002240 [ 137.140000] nand_erase_nand: attempt to erase a bad block at page 0x00003ac0 [ 137.180000] nand_erase_nand: attempt to erase a bad block at page 0x00005d40 [ 137.620000] nand_erase_nand: attempt to erase a bad block at page 0x00026a80 [ 137.850000] nand_erase_nand: attempt to erase a bad block at page 0x000373c0 [ 137.860000] nand_erase_nand: attempt to erase a bad block at page 0x00037440 [ 138.000000] yaffs: dev is 32505861 name is "mtdblock5" rw [ 138.000000] yaffs: passed flags "" [ 138.020000] yaffs: dev is 32505862 name is "mtdblock6" rw [ 138.020000] yaffs: passed flags "" Mounting /dev/mtdblock6 as new root and /dev/mtdblock5 as kernel partition Copying kernel... Preparing filesystem... ./ ./tmp/ ./usr/ ./usr/lib/ ./usr/lib/opkg/ … ./proc/ ./sys/ ./www/ ./root/ ./var Cleaning up... Image written, you can now reboot. Remember to change the boot source to Boot from Nand
Reboot the RB433 and change the boot source to NAND.
USB Ports
To have the USB ports work on the RB433UAH, you need to install the kmod-usb2 package, as explained on the USB Basic Support page. See also the USB Overview page.