Howto flash » History » Version 2

Version 1 (Eric Krausser, 01/01/2012 11:10 PM) → Version 2/10 (Eric Krausser, 01/02/2012 01:00 AM)

h1. How to Howto flash

If you are aware of OpenWRT or DD-WRT: initial flashing of a ZRouter firmware will be done the same way.

A lot of our work / knowledge is based on the information on their websites. So it's always a good idea to visit and if our pages suffer information about board details, bootloader tips, flashing tutorials and so on. We thank OpenWRT and DD-WRT for sharing this information and we hope they will benefit from our work as we do.

Flashing depends on board type and it's bootloader. In most cases you have to read board specific instructions which you will hopefully find in zrouter board definitions, in this wiki or on OpenWRT / DD-WRT.

h2. Preparations

* before you open your device be sure you can successfully build a ZRouter firmware for it
* create a serial connection between your workstation and your device (mostly you have to open it and you need a special converter in hardware)
* start an TFTP service in your LAN or on your workstation, the operating system doesn't matter
* connect the ethernet port of your device (if it's a router it's mostly the WAN port) with your switch or workstation, so it can link to the TFTP server

h2. Instructions

h3. Serial connection

Establish the serial connection with a terminal program. You need board specific parameters like speed, stop bit and negation.

On FreeBSD, in most cases
# /usr/bin/cu -s <speed> -l <serial-port>
# /usr/bin/cu -s 115200 -l /dev/cuaU0
will do.

If you don't know the &lt;speed> (you'll see nothing or garbage when speed is wrong), try 115200, 57600, 38400, 19200 and 9600 until you see something useful after powering up the device. The &lt;serial-port> depends on your converter hardware: use _/dev/cuaU0_ if it's connected via USB and _/dev/cuad0_ for old serial "COM" port. Of course, for every available port on your system the trailing number grows. To exit _cu_ type "~." (tilde, dot) or "~ ." (tilde, blank, dot). It's a bit confusing, but _cu_ is always with you in FreeBSD base system. Never forget the man pages of tools you are using before giving up.

h3. Enter and configure bootloader

What you see in the terminal when powering up the device is the bootloader how it's booting the kernel of the currently installed firmware. Before the kernel boots, the bootloader usually gives the possibility to enter it's commandline by hitting a key or key sequence. As you can guess it depends on the bootloader what keys to hit.

If you can see a commandline prompt and the kernel doesn't load, you did it.

Now you can configure some options, e.g. the IP and the TFTP server IP if you flash by this service.

h4. u-boot loader

Show configuration

Set IP and TFTP Server IP
setenv ipaddr
setenv serverip

h3. Flashing firmware from TFTP

Put the ZRouter firmware to the directory served by the TFTP service.

You can test the download on a workstation:
# /usr/bin/tftp
tftp> get servername:firmware.bin
Received 8126415 bytes during 1.8 seconds in 15918 blocks
tftp> quit

Now you do the same on the device with bootloaders capabilities.

h4. u-boot loader

1. Erase area in flash
> erase <address> +<size>

2. Fetch firmware (will use server defined with "setenv serverip &lt;address>")
> tftpboot <target-address-RAM> firmware.bin

3. Copy firmware from memory to flash
> cp.b <target-address-RAM> <target-address-flash> <size>

4. Boot flashed firmware
> bootm <target-address-flash>