Reflashing the OpenWrt-Yun image on the Yún

There are situations in which the recommended upgrade procedure does not or cannot work. Typically, this is because there is something wrong with the existing Linux installation. Changing the default configuration and installing packages that take up too much space may cause the installation to become unstable.

This procedure uses U-Boot, something similar to the BIOS on a PC. U-Boot is a very small program executed right after you power on a Yún. With U-Boot you can restore a Yún to its factory settings. To reflash the Yún from the U-Boot prompt, you will download 3 different image files and write their contents on the flash memory of the Yún, erasing all previously stored information. It's a bit like formatting a computer's hard drive.

This should be considered an advanced topic, pay heed to the warnings throughout. These notes are for reference only. You should read and understand this document before trying anything mentioned below.
If you are in doubt about any of these steps, DO NOT follow this guide and send an email to support@arduino.cc

WARNING
Following this guide will VOID the WARRANTY of your Yún

Download and unpack the image files

Download the base images zip file. Extract the three files (uboot, kernel, rootfs).

Setup a TFTP server

For U-Boot to download the 3 files from your computer to the Yún, you first need to setup a TFTP server on your computer.

Setup a TFTP server on Windows

Show Windows instructionsShow Windows instructions

Setup a TFTP server on Mac OS X

Show OS X instructionsShow OS X instructions

Setup a TFTP server on GNU/Linux (Ubuntu, Debian based distributions)

Show instructionsShow instructions

Setup a TFTP server on GNU/Linux (Fedora)

Show instructionsShow instructions

Setup your Yún

Connect your Yún to your computer with a USB cable. Then connect the Yún to your router or your computer with a wired Ethernet cable. This is crucial: you cannot reflash via wifi.

Open the Arduino IDE and upload the YunSerialTerminal example to your Yún.

You'll need to do the next step quickly. Open the Serial Monitor from the Arduino IDE, press the YUN RST button (the white one near the LEDs), and press the Enter button a couple of times on your keyboard. If you're fast enough, you'll get something like the following in the Serial Monitor :

...
...
ATHRS26: s26 reset done
eth1 up
eth0, eth1
Hit any key to stop autoboot: 4 3 2
ar7240>

The ar7240> is U-Boot prompt.

If you don't hit enter at the right time, and don't enter U-Boot, press the YUN RST button once more and retry until you get U-Boot prompt.

Once inside U-Boot, you need to tell it your computer's IP address and the IP address for the Yún. Find the IP for your computer, and choose a unique address for the the Yún. If you're on a home network, you probably won't have any issues assigning something in the appropriate range (if you're in a network full of computers, you first need to ensure the IP address you'll assign to the Yún is not already used by someone else).

For example, your computer's IP address is 192.168.0.231, and you want to assign the Yún the address of 192.168.0.146. First set the IP of your computer in the Serial Monitor :

setenv serverip 192.168.0.231;
and press Enter. Then set the IP address for the Yún :
setenv ipaddr 192.168.0.146;
The Yún is now ready for reflashing.

Reflashing U-Boot (optional)

Reflashing U-Boot is a last option. These commands are only a reference.

In the Serial Monitor, type

tftp 0x80060000 openwrt-ar71xx-generic-linino-u-boot.bin;
and press Enter.

If it takes a long time to see the prompt ar7240> again, it means that you have used the wrong IP address for the Yún or your computer, your TFTP server is not running, or the Ethernet cable between the computer and Yún is not properly connected. Check these variables, and start over by pressing the YUN RST button.

If the U-Boot prompt does appear (it should be quite quick), type the following commands, pressing Enter after each line :

erase 0x9f000000 +0x40000;
cp.b $fileaddr 0x9f000000 $filesize;
erase 0x9f040000 +0x10000

Reflashing Kernel

In the Serial Monitor, type

tftp 0x80060000 openwrt-ar71xx-generic-yun-kernel.bin;
If it takes a long time to see the prompt ar7240> again, it means that you have used the wrong IP address for the Yún or your computer, your TFTP server is not running, or the Ethernet cable between the computer and Yún is not properly connected. Check these variables, and start over by pressing the YUN RST button.

If the U-Boot prompt does appear, type the following commands, pressing Enter after each line :

erase 0x9fEa0000 +0x140000;
cp.b $fileaddr 0x9fea0000 $filesize;

Reflashing OpenWrt-Yun

In the Serial Monitor, type

tftp 0x80060000 openwrt-ar71xx-generic-yun-rootfs-squashfs.bin;
If it takes a long time to see the prompt ar7240> again, it means that you have used the wrong IP address for the Yún or your computer, your TFTP server is not running, or the Ethernet cable between the computer and Yún is not properly connected. Check these variables, and start over by pressing the YUN RST button.

If the U-Boot prompt does appear, type the following commands, pressing Enter after each line :

erase 0x9f050000 +0xE50000;
cp.b $fileaddr 0x9f050000 $filesize;

Rebooting

After completing the above steps, if the U-Boot prompt appears, type the following command in the Serial monitor, followed by Enter :

bootm 0x9fea0000

OpenWrt-Yun will now start its boot process. Wait a couple of minutes (first boot is always slightly slower) and enjoy your freshly reflashed Yún.