OLPC Firmware q3a12


Jump to: navigation, search
  This page is monitored by the OLPC team.


OLPC Firmware Release q3a12 - 2009-10-10

This is a stabilization release for B2 machines, fixing numerous issues with the q3a11 firmware that was installed on them during manufacturing. It works on XO-1.5 A1, A2, B1, and B2 systems, but does not work on any XO-1 machines.

Download: q3a12.rom

Changes since q3a11

  • r1416 - Q3A12
  • r1415 - startup optimization to use new fast-path EC board ID command.
  • r1414 - register tweak to not set a reserved bit.
  • r1413 - trac 9473 - make sure obp-tftp package gets closed if the load method aborts.
  • r1412 - changed /usb/wlan to /wlan in boot-device list
  • r1411 - randomize TCP sequence number.
  • r1410 - A couple of startup register tweaks suggested by Via.
  • r1409 - Checkpoint startcominit.fth in preparation for revamping the board type detection to use the EC's new fast-ID command.
  • r1408 - Via C-state test - display sleep time in percent.
  • r1407 - Added C-state testing words c{0-4}-test
  • r1406 - Added via/fsverify.fth
  • r1405 - trac 9474 - buffer conflict was causing fs-update to write bad filesystem data.
  • r1401 - trac 9480 - fixed net devalias - was /usb/wlan, now /wlan for SD-connected wlan module on XO-1.5
  • r1400 - trac 6210 - fixed rmdir and mkdir for ext2 file systems.
  • r1399 - trac 9475 - emacs was crashing when you do a "save-file" due to an error in the ext2fs implementation of $delete! .
  • r1398 - resume.bth - eliminated a lot of ifdef'ed out cruft that was leftover from the Geode code and will never be used for the Via case.
  • r1397 - implement X_firmware_waking_vector support in early startup code, and use it in the Forth resume code to eliminate hardcoded addresses.
  • r1396 - poll the PSON gating state bit instead of using a time delay to determine when CMOS reads will work.
  • r1394 - trac 9451 - eliminated the startup delay before accessing CMOS RAM in the wakeup-from-S3 case, thus speeding-up resume.
  • r1393 - 32-bit memory width - final register value fixups as stipulated by Via.
  • r1390 - Pingd improvements; still needs work.
  • r1388 - support 32-bit memory width controlled by memory ID1 jumper.
  • r1387 - Fixed a compilation error in the tokenizer that was introduced by an earlier change to string handling in the kernel.
  • r1386 - Added early startup diagnostic routines that use MMX registers to avoid the need for memory, while preserving the general register state.
  • r1385 - Added assembler/disassembler support for moves to and from MMX registers.
  • r1384 - Enable I/O recovery time before reading CMOS, at Via's suggestion. It doesn't fix the CMOS-takes-50ms-to-respond problem, but seems like a good thing to do nevertheless.
  • r1383 - fixed several issues with fs-update
    • Now handles large chunk sizes correctly
    • "dir int:\" immediately after fs-update now works
    • Better error checking for truncated .zd files
    • Check the hash by default, using the hardware SHA256 engine for speed
    • Display the CPU temperature to verify that the thermal monitor works (prevents overheating)
  • r1382 - Set up thermal monitor hardware in early startup.
  • r1381 - Fix various batman bugs
    • The batman code has a few problems with Gen 1.5. The formatting also didn't handle negative number right.
    • Add new command 'bat-charge' which will force the charger on and then show vitals.
  • r1380 - Added support for the Via hardware crypto engine - random number generation and fast SHA256.
  • r1379 - Added "capture" feature for Ethernet packet logging in pcap format, viewable by tcpdump and wireshark. Thanks to Luke Gorrie.
  • r1378 - USB Ethernet - improvements in startup reliability, especially for ASIX chips.
  • r1377 - CIFS - implemented next-file-info for dir command.
  • r1376 - When interrupting auto-boot, discard queued-up keyboard characters in case the user typed a lot of escapes.
  • r1375 - New CIFS (SMB) filesystem driver for accessing Windows shares. Requires new version of bios_crypto with DES and MD4 support for password computation.
  • r1374 - added uncache-flash so edits to manufacturing data are stable.
  • r1373 - OFW core - added instance-specific and package-specific versions of 2value. (checkin 2)
  • r1372 - OFW core - added instance-specific and package-specific versions of 2value.
  • r1371 - security - moved sound-end to a different spot in the secure startup sequence so it doesn't slow down access to the ok prompt.
  • r1370 - moved serial-enabled? earlier in the load sequence.
  • r1369 - big batch of selftest improvments to make test-all more suitable for the "SMT test" phase of manufacturing.
  • r1368 - USB UHCI driver - handle NULL_DATA case for td size field.
  • r1367 - Wifi package - added #ssids method.
  • r1366 - printf - added %u formatting specifier.
  • r1365 - fixed problem with USB keyboard installation.
  • r1364 - Via DSDT - Fixes for lid, ebook, and power switches, thanks to Paul Fox.
  • r1363 - file system update utility - added scaling to grid map display so that large filesystem updates will fit on the screen.
  • r1362 - display selftest - added additional test patterns, DCON test, and brightness test.
  • r1361 - don't debounce the power button as doing so causes the short pulse length to be missed. Debouncing is unnecessary anyway since the signal is generated cleanly by the EC.
  • r1360 - fixed issues with "test /wlan"
    • It failed to display any scan results after the first time, because a variable was unitialized
    • The scan result was too long to comprehend - switched to an abbreviated format that shows just signal, SSID, and channel.

Open Firmware is svn 1416

EC code is version 1.9.11

  • New fast-path ID command - cmd66 code 0xd4

WLAN firmware is 9.70.7.p0

Which Firmware Do You Have?

If your machine is not in secure mode, the firmware version is displayed in the startup banner, as in:

 OLPC XO 1.5, 1 GiB memory installed, S/N SHF7250024D
 OpenFirmware  CL1   Q3A04 Q3A

If your machine is in secure mode, you can go to the Terminal activity and type

 cat /ofw/openprom/model

If your machine is in secure mode but the OS will not start, just go ahead and try to upgrade the firmware anyway. The procedure is safe and will not do anything if you already have up-to-date firmware.

You can see the firmware version in secure mode by powering up with the "check" game button held down.

You can also go to the main Sugar screen, click on the little man and select "about this XO"


When installing new firmware, you must have a well-charged battery and the AC adapter plugged in. The firmware update code will not proceed otherwise. Possible error messages are:

error message how to fix
AC not present plug in the power cord, check the battery LED is on, then try again.
No external power plug in the power cord, check the battery LED is on, then try again,
No battery plug in the battery, check the latches, then try again, or try another battery,
Battery low allow more time for the battery to charge, then try again, or try another battery.

Unsecured Laptop

This section is for unsecured laptops. Most XO-1.5 and XO-1.75 laptops are unsecured. Most developer XO laptops are unsecured. To unsecure your laptop, follow the instructions at Activation and Developer Keys.

You may install using either:

  • a USB drive or SD card,
  • the laptop's internal drive,
  • a network.

Choose one.

Using a USB drive or SD card

  • check the battery is inserted and locked,
  • check that the power cord is in place and the battery indicator is green,
  • insert the USB drive or SD card,
  • turn on the laptop, and get to the 'ok' prompt. See Ok for more detail. You should see:
  • if the downloaded file is on a USB drive, type:
 flash u:\q3a12.rom
  • if the downloaded file is on an external SD card:
 flash sd:\boot\q3a12.rom
  • wait for the laptop to reboot itself,
  • remove the USB drive or SD card.

(Expert users may remove the USB drive after the message "Got firmware" ... at this stage the file has been read and closed.)

Using the laptop internal drive

An alternate method is to download the firmware file to the laptop internal drive and then install from the internal drive.

  • start the laptop,
  • connect to a wireless or wired network,
cd /versions/boot/current/boot/
wget http://dev.laptop.org/pub/firmware/q3a12/q3a12.rom
  • check the battery is inserted and locked,
  • check that the power cord is in place and the battery indicator is green,
  • turn on the laptop, and get to the 'ok' prompt. See Ok for more detail. You should see:
  • if the downloaded file is on an XO-1, type:
flash n:\boot\q3a12.rom
  • if the file is on the internal SD card of an XO-1.5 or XO-1.75:
flash int:\boot\q3a12.rom

Using a network

You will need a compatible USB to ethernet adapter, or an open or WEP wireless access point, connected to the internet.

  • check the battery is inserted and locked,
  • check that the power cord is in place and the battery indicator is green,
  • turn on the laptop, and get to the 'ok' prompt. See Ok for more detail. You should see:
  • if using wireless, type the essid of the wireless network:
essid mynetwork
  • if using a WPA wireless access point, type the WPA key for the network:
wpa passphrase
  • type the flash command using the download link above, but change all slash characters so they are backwards, for example:
flash http:\\dev.laptop.org\pub\firmware\q3a12\q3a12.rom

Secured Laptop

Secured laptops can only use flash firmware that has been signed. All mass-production machines had the latest firmware at the time of manufacture.

Upgrading firmware describes how to upgrade to a newer signed firmware release.

See also

  • Cheat codes for information about how game buttons control startup options.
Personal tools
  • Log in
  • Login with OpenID
About OLPC
About the laptop
About the tablet
OLPC wiki