Upgrading the firmware
How you update the firmware depends on what method you can use and what board type you have.
Finding your current firmware version
The version of the firmware is displayed by OpenFirmware when the laptop boots and prior to loading the kernel. The version number is a series of 5 digits after the text
OpenFirmware CL1
An example would be 'Q2B74'. The last 3 digits of this string (B74) are the most important. The 'B' stands for the 2nd major revision and originally indicated the target board for the firmware ie. BTest. The 4th major revision 'D' is being used for mass production laptops. We try hard to keep backwards compatibility so later series of firmware (with a few exceptions) run on earlier boards.
The 2 digits are the revision number of that firmware. Higher numbers equal more recent firmware versions. On B4 machines, the firmware version is not displayed on startup, but can be found using the command:
dmesg | more
on the terminal (Ctrl-Alt-F1 and login as root). This will show a line like:
[ 10.210194] OLPC board with OpenFirmware: CL1 Q2C18 Q2C
Laptop Upgrades
This is the procedure to upgrade any laptop other than ATest boards (which were just bare boards, without a laptop around them). Check with a member of the OLPC firmware or hardware staff if you have an ATest board.
Via Auto Updater
If your current firmware version is earlier than the firmware in the Autoreinstallation_image then you can just use that procedure for the update. Note: that this procedure will also upgrade the image in your nand flash, which contains the entire Linux operating system and all your user and system files. This means it will ERASE what is in your nand and re-write it. The auto-installation procedure backs up and restores certain directories, but doesn't save every modified file in the system. You may lose any data you have stored on the filesystem unless you first back it up. If you do not want your nand erased, then please do the manual upgrade (below) instead.
Manual upgrade
Before you manually upgrade your firmware you should first ensure that your battery is charged and that you have good AC power. If the firmware upgrade is interrupted by a power loss the result will most likely be a laptop that will not power up anymore (a "brick"). The only recovery method from a failed flash requires disassembling the laptop and using special equipment to reprogram the hardware.
- Upgrade steps
- Download the latest firmware image from the Firmware page. See above for decoding the version numbers. You can also just pick the firmware released on the latest date.
- Copy this image to a USB disk, "key" or "stick". The filesystem can be ext2, ext3, or FAT. If you choose FAT, remember the 8.3 filename limit; use a name like q2d03.rom. OpenFirmware does not support long filenames on FAT.
- Insert this key into a laptop that is turned off.
- Plug the laptop into AC power, and make sure it has a good battery
- If you are running Q2C11 firmware through Q2C27, hold down one of the "X" game key (just above the power button) as you power on the laptop; this tells it to not immediately boot Linux. If you have earlier or later firmware, just turn on the laptop.
- When you see the prompt "Type the Esc key to interrupt automatic startup", press the upper left key on the keyboard (marked with an "X" in a circle). If you don't do it in time, hold down the power button for four seconds to power off, and try again.
- You should now be at a prompt that says 'ok'
- At the 'ok' prompt type
flash u:\<path_to_rom>
where<path_to_rom>
is the path to the firmware on your USB stick. An example would beflash u:\q2c14.rom
. For arcane reasons, you need to use backslash (\) not forward-slash (/). - When the upgrade is complete, the laptop will power off. You might want/need to unplug the power and remove the battery for a few seconds and then replace both and power it back up. This resets the Embedded Controller so it will use the new firmware.
- To upgrade your NAND (Linux) image manually from a USB stick, boot the XO into the 'ok' prompt as above.
- Type
copy-nand u:\<path_to_img>
. You must have both the .img and .crc. files for the nand image on the USB stick. - When complete, hold the power button down to shut down; then power back up.