View source for Flashing the Neo FreeRunner
From Openmoko
You do not have permission to edit this page, for the following reasons:
You can view and copy the source of this page:
Template used on this page:
Return to Flashing the Neo FreeRunner.
You do not have permission to edit this page, for the following reasons:
You can view and copy the source of this page:
Template used on this page:
Return to Flashing the Neo FreeRunner.
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à |
Openmoko regularly releases updated versions of the Openmoko root filesystem, the kernel, and the Bootloader (called U-Boot) as binary images. These may be programmed into the Flash memory (NAND) of Neo FreeRunner. For that, you can use the USB cable and another computer which will run an Openmoko-provided tool to flash the Neo FreeRunner "through" USB.
Inside the FreeRunner 3 software components are working:
All software components in the FreeRunner are bundled together into binary images.
The FreeRunner has two kinds of internal program storage: NOR flash and NAND flash. On a desktop computer when you want to replace the operating system (OS), you would boot it from a CD-ROM drive, then copy OS files from the CD to the internal hard drive. The FreeRunner does not have a CD-ROM drive and files must typically be re-written/flashed directly into internal storage (NAND flash). Alternatively, it is possible to boot from a microSD where all the files have been loaded onto.
NOR flash is small and stores only a special boot program used when you need to re-write the contents of the NAND flash. Usually it is not necessary to re-write the the NOR flash. Instructions to do so is here: Flashing NOR.
NAND flash acts more like a hard drive. It is divided into 3 partitions for the bootloader, kernel, and root filesystem. Being on different partitions, each component can be flashed separately. For example if you are trying to install a modified kernel, you only have to follow the steps to flash the kernel image.
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.
You may install this distribution on the microSD card, in order to boot from microSD card. That allows you to keep another distribution installed in NAND (for instance to test 2008.08 while still having 2007.2 for default boot).
You will download that program on your desktop computer. It will allow 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. There is a separate page to describe it in more detail: dfu-util.
MacOS X: MacOS_X#Graphical_Flashing_with_Openmoko_Flasher
Linux: http://downloads.openmoko.org/releases/Om2008.9/dfu-util
Make sure it is executable by setting the permissions with this command: chmod a+x dfu-util
Linux 64-bit: You need 64-bit version of dfu-util, which usually can be found in your distribution repository. If your destribution does not provide 64-bit dfu-util, or it consistently fails with a "-62" error, you have two ways to go:
Windows: http://projects.openmoko.org/frs/?group_id=166&release_id=162
See additional driver installation instructions for Windows at Dfu-util-windows
Note: While there has been some limited success reported using dfu-util from within a Virtual Machine (such as VMware), in general it is not possible to use dfu-util in this fashion. You must use dfu-util on an operating system that has direct access to the physical USB device hardware.
Optionally, you may want to use this GUI tool instead the dfu-util commands: NeoTool
Exactly what files you need depends on what you are trying to install. 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.
Note that the dfu-util connection does not use Ethernet over USB - that is, you should not attempt to set up a usb0 network interface on your GNU/Linux host desktop (on Windows, you need a DFU class driver, or you can use the LibUSB-Win32 driver described on the Dfu-util-windows page). The dfu-util utility sets up its own connection to the FreeRunner. In fact, you will not be able to make an Ethernet-over-USB connection to the FreeRunner when it is at the uBoot menu; this type of connection is only available when the FreeRunner has booted fully.
After connecting the FreeRunner to your host via USB cable, you can test whether dfu-util "sees" the FreeRunner by executing:
dfu-util -l
If you get error messages from the dfu-util command then try again. Often it works on the second try.
dfu-util uses the DeviceFirmwareUpgrade protocol, and may list more than one device. If so, try unplugging the other device (e.g. a USB mouse) or using the -d switch to tell dfu-util which device it should talk to, as described at the relevant bug report [1].
Also, please remember to execute the dfu-util command with sufficient privileges (ie. root) -- you will need complete control over the usb bus.
If you have a working image that you're happy with but want to try something different, you should probably do a Pre-Flash Backup.
dfu-util can be used to read flash memory, write memory, and get information from the device.
This is the general command format to write an image file to a (predefined) "partition name" (referred to as altsetting in dfu-util help/manual) :
dfu-util -a <altsetting> -R -D <file_name>
where:
-a altsetting : Specify the altsetting of the DFU interface by name or by number
-R : Issue USB Reset signalling once we're finished
-D file_name : Write firmware from file_name into device
On Linux, you run dfu-util from a command shell prompt. If you have not put it somewhere on your command path you probably need to prefix it with a "./" like this ./dfu-util. On some systems you need to be root before this will work and on Ubuntu you must preface the command with "sudo" or you will get the following error: "Cannot claim interface: could not claim interface 2: Operation not permitted"
On Windows, you need to open a command window and run from a command line. Use Start-Run Program and type "cmd" to open a Window.
More detailed manual for dfu-util is available here : Dfu-util
GUI frontend for dfu-util (and more): NeoTool
Note: The phone needs to be in the U-boot bootup menu for this to work. Get there by holding down the aux button while powering up the device.
The command format is
dfu-util -a kernel -R -D /path/to/uImage
When flashing succeeds the following will be shown:
status(0) = No error condition is present Done!
Flashing may fail with an error -110. This indicates that the kernel is too big for the default kernel partition. uboot can be used to change the size of the default partitions on the device. It may also mean that you are trying to put the wrong thing in the kernel space.
The root filesystem has to be an image in jffs2 format. If the file you downloaded is zipped or compressed (has a .gz, bz2, .zip, tar, tar.gz or .tgz extension) you have to uncompress it first.
The command format is
dfu-util -a rootfs -R -D rootfs_filename.jffs2
| U-Boot where rootfs_filename.jffs2 is the name of the file containing the root file system.
The flashing process can take up to 15 minutes for a ~70MB image. It is also wise to make sure that your Neo has enough battery charge prior to flashing.
When flashing succeeds the following will be shown:
status(0) = No error condition is present Done!
NOTE: In most cases you don't need to flash your bootloader. Flash it only if you want to update for a specific feature or due to a specific problem. |
The boot loader (U-boot) file should have a .bin extension. As with the root filesystem, if the file you downloaded is zipped or compressed (has a .gz or .zip extension) you have to uncompress it first.
The command format is
dfu-util -a u-boot -R -D uboot.bin
where uboot.bin is the name of the boot loader binary image file.
Reminder: You should have boot from NOR first, in order to flash the boot-loader in NAND. After flashing succesfully, make sure you reboot from NAND's newly flashed boot loader, to benefit from the updates.
(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
You should now be able to boot into the new images.
Pay attention to booting from the NAND flash this time, in particular if you upgraded the boot-loader (in short: 1. press and hold power button down, and then 2. press aux button)
The boot menu should be labelled *** BOOT MENU (NAND) *** this time (see booting from NAND for more detailed instructions).
DFUScript 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