Flashing the Neo FreeRunner
From Openmoko
Languages: |
English • العربية • Български • Česky • Dansk • Deutsch • Esperanto • Eesti • Español • فارسی • Suomi • Français • עברית • Magyar • Italiano • 한국어 • Nederlands • Norsk (bokmål) • Polski • Português • Română • Русский • Svenska • Slovenčina • Українська • 中文(中国大陆) • 中文(台灣) • Euskara • Català |
Most of the software on the Neo FreeRunner can be updated or changed. The root filesystem, the kernel, and the Bootloader can be modified with the program dfu-util from a computer. This page does not describe flashing the NOR Flash which requires a debug board. See Flashing NOR for this procedure.
The NAND Flash is divided into 3 partitions for the bootloader, kernel, and root filesystem. Each component can be flashed separately.
The bootloader is a small program that runs first and starts everything else when th/e FreeRunner is powered on. The bootloader is independent of the distribution you use. The kernel and the root filesystem are provided by the distribution.
Before you start: Erasing the root filesystem or flashing the bootloader are radical measures. Take the time to ponder the necessity. Sometimes problems can be fixed by only updating the kernel.
Contents |
Image files to flash into FreeRunner memory
There are separate image files for all 3 software components. In most cases you will need to install a Kernel (uImage) and a Root Filesystem (rootfs). In rare cases, when there is a bug you need fixed, you will also install a new bootloader.
Please read Distributions for choosing the distribution which fits your needs, and then see Download for downloading.
Do a backup
If you have a working image that you're happy with but want to try something different, you should probably do a Backup.
Using dfu-util
Dfu-util is a command-line tool to flash the FreeRunner. It is available for Linux, MacOS X, and Windows. DFU-util allows you to connect to the FreeRunner through the USB cable and control its bootloader. That connection uses a special protocol which addresses the bootloader's interface, and differs from USB networking. For more details, see the separate dfu-util page.
See Manuals/Dfu-util
NeoTool (GUI)
Instead of the command-line-based DFU-util, you can use NeoTool, a graphical tool for flashing the FreeRunner: see the NeoTool page.
DFUScript - A command line script to simplify dfu-util
DFUScript was developed to assist users who have multiple devices in using dfu-util via the command line. Information on where to download and use DFUScript can be found on DFUScript.
Alternative: using nandwrite
This approach involves writing the rootfs into nand directly on the phone from a system already running on it, not necessarily via usb from a computer.
If you have a system running from a different partition that you intend to flash (for example sd card), you can use nandwrite to do the work, which is much faster (it takes about 30s to write a 59MB jffs2 image).
See Nandwrite for more information.
Optional: Verifying boot-loader version
(Optional) After an upgrade, you may wish to check that the u-boot version matches the one you have just flashed. You can use 'grep Bootloader /dev/mtdblock1' from a shell on the FreeRunner (and possibly the 1973 as well) to get the NAND u-boot version, like this:
root@om-gta02:~# grep Bootloader /dev/mtdblock1 Neo1973 Bootloader U-Boot 1.3.2+gitr18+64eb10cab8055084ae25ea4e73b66dd03cc1a0cb
You can grep for the same string in /dev/mtdblock0 to retrieve the NOR u-boot version:
root@om-gta02:~# grep Bootloader /dev/mtdblock0 Neo1973 Bootloader U-Boot 1.3.2-moko12
Troubleshooting
Okay, so you just reflashed. The splash screen pops up, but uBoot fail to load the kernel, and return to boot menu. WTF?
- It is likely that the wrong bits went to the wrong place. Try reflashing just the kernel, double checking that you select the uImage.bin kernel file, not the u-boot.bin bootloader file.
- Try redownloading and reflashing the kernel, checking file integrity with the MD5 hash sums.
Distibution specific
Qtmoko V26:
download the tarbal hereand save it in /tmp
# extract the kernel mkdir /tmp/qtmoko cd /tmp/qtmoko tar -xzvpf ../qtmoko-debian-v26.tar.gz
# get the matching bootloader here and save it in /tmp
# download the rootfs hereand save it in /tmp
# Flash the bootloader dfu-util -a u-boot -R -D /tmp/u-boot_glamo242.udfu
# Flash the kernel dfu-util -a kernel -R -D /tmp/qtmoko/uImage-GTA02.bin
# Flash the rootfs dfu-util -a rootfs -R -D /tmp/qtmoko-debian-v26.jffs2
# powerdown the freerunner and power it on again. # in a console, uname -a should give you: # Linux neo 2.6.29-rc3-v26 #1 Sat Aug 28 13:11:14 CEST 2010 armv4tl GNU/Linux