# OLPC Firmware q2f14

## OLPC Firmware Release q2f14

Works on XO-1 systems.

• support for inflating initrd images from inside a .zip bundle, for ticket #12106 and ticket #12181,
• change the search order for .zip bundles to look for the platform-specific suffix first, falling back to the generic name, ticket #12129,
• align the ramdisk and flattened device tree addresses, ticket #12107,
• support ISO 9660 images on non-optical drives such as USB flash and hard drives, ticket #12018,
• support WEP and WPA passwords containing spaces (parse whole line),
• avoid lid close shutdown after warm reboot from Linux, ticket #12077,
• fixes to the antenna test,
• changes to the USB test, which now identifies the device attached to a port,
• add support for new SPI FLASH replacement parts,
• improved debugger support, ticket #12105,
• same underlying code base as XO-4 firmware.
 Download q2f14.rom Build date time 2012-11-23 23:31:42 Source revision 3461. EC version 1.2.1 Wireless firmware version 5.110.22.p23

## Changes

• 3461 Q2F14
• 3460 OLPC XO-1 XO-1.5 XO-1.75 - fix missing SPI FLASH progress bar dots, using a design from Mitch
• 3452 libertas - spacing fix for antenna test
• 3449 XO-1 - fixed build problem by creating new DCON driver methods "dcon-freeze" and "dcon-unfreeze" on top of the old "set-source" method.
• 3448 XO-1 WLAN driver - added stub definition of multifunction? to satisfy new version of libertas.fth
• 3447 oatstime utility - fixed typo in previous checkin.
• 3446 oatstime utility - simplified the fix in svn 3445 by observing that running one step of a linear congruence adds no entropy to the seed value, thus you might as well just use the seed.
• 3445 OLPC XO-1 - fix missing random-long in oatstime utility by using the psuedo-random generator seeded with time and milliseconds since boot
• 3444 USB - Changed selftest logic so that it will not destroy (by wanton reprobing) the setup of devices that were connected prior to the execution of selftest. This fixes OLPC trac #12254 and corrects the fix to OLPC trac #11845. I also made it possible to invoke the fisheye test by supplying the argument "fisheye" to the usb path, as in "test /usb:fisheye" or "test /usb:fisheye/hub" . The fisheye test is only available when diag-switch? is false.
• 3442 OLPC - report NiMH battery cooling status bit
• 3441 OLPC - use additional graphical indicators for different reflash operations, yellow dots for EC, and plus signs for touchscreen
• 3419 OLPC SPI FLASH driver - converted nested case statements to tables.
• 3417 OLPC SPI FLASH driver - added support for MX25L1635E.
• 3415 shdci -- change clk-delay-cycles for MMC1/3/5 from 31 to 15
• 3408 OLPC - Converted some GPIO numbers to symbolic names in unused test code for wakeups.
• 3400 OLPC: Add tenths digit to battery temperature display
• 3399 spiflash - two parts with different voltage have the same JEDEC ID, the Winbond W25Q16CVSSIG and W25Q16BVSIG, so render them as W25Q16, which also matches the name the vendor has used.
• 3398 spiflash - rework identification logic, verified against GD25Q16B W25Q16CVSSIG MX25L1635E MX25U1635E MX25E8035
• 3397 spiflash - fix for r3396, incorrect id when printed
• 3396 spiflash - fix for r3392, incorrect id
• 3392 spiflash - identify another second source parts by JEDEC ID rather than the short ID alone
• 3391 OLPC - stack imbalance after (hub-selftest) fails causes test-all failure, regression introduced in r2412 by me
• 3390 OLPC - display test was not twiddling DCON during subtest pause
• 3386 spiflash - identify some second source parts by JEDEC ID rather than the short ID
• 3379 Libertas WLAN driver - fix build on XO-1.5, another change of "0 [if]" to "[ifdef] notdef"
• 3374 WLAN - scan buffer display overran actual length, only seen with 8787, see http://dev.laptop.org/ticket/12144
• 3372 decompiler - for strings with embedded control characters, render the characters as #, to fix visual debugger rendering, http://dev.laptop.org/ticket/12104
• 3367 x86 kernel - added bscan code word used by new substring variant.
• 3366 OLPC trac #12106 and #12181 - inflate initrd images from inside a .zip bundle.
• 3365 Libertas WLAN driver - changed "0 [if]" to "[ifdef] notdef" because the former doesn't work the way you think when tokenizing FCode. The problem is that the tokenizer emits an FCode for the "0", so the compile-time "[if]" doesn't see a number on the stack.
• 3364 OLPC - rewrite SPI and EC flash animation scale calculation following review
• 3363 WLAN - fix test-antenna 'a' command
• 3362 SDHCI - fixed ok copy int:\foo int:\bar which was hanging
• 3359 OLPC - make SPI and EC flash animation scale calculation at run time, tested on XO-4
• 3354 OLPC Trac #12135 - oops last checkin had a typo.
• 3353 OLPC Trac #12135 - turn off DCON only if it is already on.
• 3352 OLPC x86 - fixed build regression for platforms where the WLAN driver is in FCode.
• 3351 OLPC x86 - fixed build regression for old platforms where there is no camera sensor node underneath an i2c node.
• 3349 OLPC trac 12129 - Changed the search order for .zip bundles to look for the platform-specific suffix first, falling back to the generic name.
• 3346 Debugger - the "up" keystroke ('U') was not working when debugging inside a do .. loop due to misinterpreting a pointer to the loop end address as a return address.
• 3344 usb.fth: add gpio property for hub reset gpio
• 3343 usb: add a clock-names property for USBPHYCLK
• 3342 WiFi - changed wep and wpa prefix commands to parse the entire line instead of just one word, thus enabling passwords containing spaces.
• 3341 Debugger - improve visual debugger redisplay so it's rarely necessary to use the L command. See OLPC trac #12105.
• 3329 OFW core - extend Forth decompiler and debugger to handle instance defer words.
• 3327 OLPC XO-1 - fix inability to reflash, caused by EC being halted to find the flash size before the enough power check, but on XO-1 the flash need not change size, might also affect XO-1.5 (not yet tested).
• 3326 OLPC XO-1 XO-1.75 XO-4 - fix broken XO-1 build, avoid core words in FCode camera driver on XO-1, and move image sensor probe into load file for XO-1.75 and XO-4.
• 3325 OLPC XO-1 - test-all did "BOUND range exceeded" continuously at ok prompt after USB test, caused by bad stack balance
• 3317 OLPC - Implemented ?ofw-reflash in security.fth so that the version in /boot/olpc.fth will not be used. This has the effect of extending the rule of "bootfw.zip" must be named "bootfw4.zip" for XO-4 to the unsecure boot domain too.
• 3310 Linux support - align the ramdisk and flattened device tree addresses. OLPC Trac #12107. The problem happened when secure-booting an initrd whose size was not a multiple of 4.
• 3285 OLPC - security, use signature-offset for locating version number in next firmware image, #12079
• 3278 OLPC XO-1 - avoid lid close shutdown after warm reboot from Linux, caused by GPIO invert input pin bit left set by Linux, fixes a regression introduced in r2991 ticket #11095, solves ticket #12077
• 3229 SETi camera driver - invert the PCLK polarity so the data is sampled on the correct edge
• 3201 core - rename the loaded file size variable file-size to load-size, as it conflicts with a standard word file-size, rename other references in tree.
• 3197 OLPC - Change all uses of I2C addresses for bit-banged SMBUS (I2C) to use unshifted address form.
• 3194 OLPC - made a new word $call-dcon to break the assumption that the DCON driver is part of the screen node. It is implemented differently on different platforms, depending on the actual location of the DCON driver. For old platforms, it's equivalent to$call-screen .
• 3193 USB EHCI driver - use string-property instead of +compatible so it can be compiled with the FCode tokenizer.
• 3192 OLPC camera test - removed an unnecessary call to full-brightness.
• 3189 OLPC - libertas antenna test, translate baseband processor register antenna numbers to the same numbering as used by the user interface.
• 3188 OLPC - libertas antenna test, comply with new firmware specification that requires ordering of antenna selection commands. Now works on XO-4 A2.
• 3164 SDHCI driver - Use new device tree layout for SDHCI nodes to support Linux SDHCI instantiation via the device tree. I made a cursory attempt to avoid breaking the XO-1 and XO-1.5 builds.
• 3163 SDHCI driver - Wait for write operations to complete more aggressively than before. This fixes a fs-update problem with XO-4. I'm not entirely convinced that this is the right fix, so it probably needs more study, but for now, it seems to work.
• 3143 OLPC - Load the crypto code in stand-init, because demand-loading it during WLAN startup can mess up resolution of later path components.
• 3134 OLPC - oatstime, fix a typo, add name based virtual host support
• 3129 Debugger - added longer stack display to visual mode.
• 3128 Debugger - improvements to visual mode - less likely to lose track of the screen position, new L keystroke to force redisplay.
• 3093 config ec-flags-offset on a per laptop basis
• 3086 OLPC SPIFLASH driver - handle 2 MB parts.
• 3068 disklabel - support ISO 9660 images on non-optical drives such as USB flash and hard drives, by using a logical sector offset to the primary volume descriptor that is consistent with the 512 byte sector size on these devices. ISO 9660:1999 6.1.2 specifies minimum logical sector size, and an offset of 16 sectors to the primary volume descriptor, but does not specify arrangement of data on devices that are not a CD-ROM. Common use is to place the image on other devices in the same way it appears on CD-ROM. #12018
• 3067 OLPC XO-1 XO-1.5 - add missing signature\$, minor regression from svn 3049 prevented new builds from flashing even newer builds
• 3066 OLPC - Added a feature to */fw-version.fth whereby you can personalize your test builds by creating build/fw-suffix with a 2-character identifier, so you don't have to edit fw-version.fth.
• 3064 OLPC - parameterize the location of the signature string in the FLASH, now that we must deal with different FLASH sizes.
• 3058 OLPC - synchronized keyjector.bth templates with latest olpc.bth files.
• 3050 OFW core - another fix to the "relative phandles" suite, this one affecting the rarely used function "delete-package".
• 3049 OLPC - omnibus change to greatly reduce the number of platform-specific ifdefs. The GPIOs are now named in <platform>/config.fth and referenced by name in common code. The drivers that differ between platforms are loaded in <platform>/fw.bth instead of in build-fw.fth . Hopefully this will make the code easier to maintain.

## Which Firmware Do You Have?

The best method for finding out what firmware version you have on a laptop depends on whether the laptop is secured or not, and what operating state it is in.

### Unsecured Laptop

Obtain the Ok prompt, the firmware version is displayed in the startup banner, thus:

 OLPC ..., ... memory installed, ..., S/N SHF7250024D
OpenFirmware  q2f14 ...   EC Firmware Ver:...
^^^^^


You can also obtain the built date:

 ok .built


This is the date and time that this image of the firmware was built by the release engineer.

### Secured Laptop

Power up the laptop with the "check" game button held down. You will be asked to Release the game keys to continue. Release the "check" game button and watch carefully. For a short time the startup banner will be displayed, like this:

 OLPC ..., ... memory installed, ..., S/N SHF7250024D
OpenFirmware  q2f14 ...   EC Firmware Ver:...
^^^^^


Alternatively, if the laptop is already booted, go to the Sugar home view, click on the icon at the centre of the screen and select "My Settings" then "About my Computer." The firmware version is displayed there.

Alternatively, in the Terminal activity or a text console, type:

 cat /proc/device-tree/openprom/model


or

 cat /ofw/openprom/model


With certain older firmware versions, if the operating system will not start, and the laptop is secured, you will not be able to obtain the firmware version using the above methods, so our recommendation is to go ahead and upgrade anyway. The procedure is safe and will not do anything if you already have up-to-date firmware.

## Installation

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:
ok

 flash u:\q2f14.rom

 flash sd:\boot\q2f14.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,
su
cd /versions/boot/current/boot/
wget http://dev.laptop.org/pub/firmware/q2f14/q2f14.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:
ok

flash n:\boot\q2f14.rom

• if the file is on the internal SD card of an XO-1.5 or XO-1.75:
flash int:\boot\q2f14.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:
ok

• 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\q2f14\q2f14.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.