OLPC Firmware q4d25


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


OLPC Firmware Release q4d25

Works on XO-1.75 C2 only.

This is an early development release, use with caution.

Download q4d25.rom
Build date time 2012-11-26 00:11:32
Source revision 3465
EC version 1.0.00
CForth version bbdf8572
Wireless firmware version Libertas thinfirm 9.0.7.p2


Open Firmware

  • 3465 Q4D25
  • 3463 OLPC XO-1.75 - do not align the length of the ramdisk, fix for ticket #12107
  • 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
  • 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 ticket #12254 and corrects the fix to OLPC ticket #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
  • 3438 OLPC ARM accelerometer test - more tweaks to the test limits as suggested by the vendor.
  • 3435 OLPC ARM - Fixed a build problem by changing the way that the recently introduced clock-divider-regval property is calculated.
  • 3432 OLPC ARM - In dcon node, changed the name to "clock-divider-regval"
  • 3431 OLPC ARM - Added device node for Video SRAM (/vsram) and some DCON panel description properties, per jnettlet.
  • 3429 fix typo in disabling of static branch prediction
  • 3424 OLPC ARM audio test - workaround channel-swapping problem (ticket #12096). Also added some experimental code.
  • 3423 OLPC ARM - accelerometer selftest
  • 3422 OLPC XO-1.75 - remove BSL support, was used for prototyping
  • 3421 OLPC ARM - accelerometer selftest - manufacturing was seeing a small false-negative fallout from the accelerometer test.
  • 3419 OLPC SPI FLASH driver - converted nested case statements to tables.
  • 3417 OLPC SPI FLASH driver - added support for MX25L1635E.
  • 3416 OLPC ARM - In the interrupt-controller node compatible property, use only "mrvl,mmp3-intc" on MMP3, instead of a list that includes both mmp3 and mmp2.
  • 3415 shdci -- change clk-delay-cycles for MMC1/3/5 from 31 to 15
  • 3411 ALC5631 CODEC driver - make it possible to select different serial bit formats, for experimentation.
  • 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
  • 3394 OLPC ARM - Turn off audio clock when closing sound driver, so that test repetitions will work correctly. This may require turning the clock back on prior to starting Linux.
  • 3393 OLPC ARM - assign "0 0 reg" properties to several devices
  • 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
  • 3389 OLPC XO-1.75 - incorrect bundle suffix, regression from r3349, affected XO-1.75 only, reported by Daniel Drake
  • 3388 OLPC XO-1.75 - fix incorrect SPI FLASH size detection for XO-1.75 only, the same JEDEC ID exists on parts with different sizes.
  • 3386 spiflash - identify some second source parts by JEDEC ID rather than the short ID
  • 3381 OLPC XO-1.75 - Added progress messages to the script from the previous checkin.
  • 3380 OLPC XO-1.75 - Script to modify fuse settings so that production 1 GHz MMP2 chips use the same speed code as 1 Ghz engineering sample chips.
  • 3379 Libertas WLAN driver - fix build on XO-1.5, another change of "0 [if]" to "[ifdef] notdef"
  • 3375 OLPC ARM: convert s3-selftest to use sus power measurement
  • 3374 WLAN - scan buffer display overran actual length, only seen with 8787, see http://dev.laptop.org/ticket/12144
  • 3373 OLPC - accelerometer stack effect comment fix
  • 3372 decompiler - for strings with embedded control characters, render the characters as #, to fix visual debugger rendering, http://dev.laptop.org/ticket/12104
  • 3371 OLPC - signed fs-update, fix for uninitialised buffer pointer, ticket #12186
  • 3369 OLPC - fixed a possible unitialized buffer address in fs-update.
  • 3366 OLPC ticket #12106 and ticket #12181 - inflate initrd images from inside a .zip bundle.
  • 3365 Libertas WLAN driver - changed "0 [if]" to "[ifdef] notdef"
  • 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
  • 3361 OLPC WLAN driver - report 802.11n firmware capability when present, tested on XO-4 B1 with 8686 and 8787
  • 3360 OLPC WLAN driver - extend antenna testing to 8787
  • 3359 OLPC - make SPI and EC flash animation scale calculation at run time, tested on XO-4
  • 3358 OLPC ARM: Update strp so it gets a valid suspend power reading
  • 3356 OLPC ARM - add DMA mux to IRQ device tree nodes and refer to it in the audio driver.
  • 3355 OLPC - adjust SPI and EC flash animation for larger parts, tested on XO-4
  • 3354 OLPC ticket #12135 - oops last checkin had a typo.
  • 3353 OLPC ticket #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.
  • 3350 OLPC XO-1.75 - support old OS releases from OFW with new device tree layout.
  • 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.
  • 3345 OLPC ARM SDHCI - removed now-redundant SDHCI clock register settings from stand-init.
  • 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 ticket #12105.
  • 3338 OLPC ARM audio driver - Use mmp2 in compatible property name on XO-1.75, thus making it easy for the Linux driver to auto-configure itself.
  • 3337 OLPC WLAN driver - Support both 8686 and 8787 WLAN modules from the same driver.
  • 3336 OLPC WLAN driver - Use $read-file instead of boot-read in find-fw, so the result is always in allocated memory, and can thus be safely freed.
  • 3335 OLPC ARM - Renamed l2$-efr to l2$-efr! (no existing users so rename is innocuous), added l2$-efr@ (the register is readable despite what the manual says).
  • 3334 OLPC ARM - Added aliases for I2C devices so the support for short-lived "linux,unit#" property can be removed from the kernel patch set.
  • 3333 OLPC ARM - Added /dma device node to bind the new peripheral DMA Linux driver from Marvell.
  • 3332 OLPC XO-1.75 XO-4 - image sensor properties were applied to camera, move them to the image sensor node, related r3330 and r3326.
  • 3331 OLPC XO-1.75 - remove compass (never shipped) and touchscreen support (XO-4 A1 only), due to limit of ROM being reached
  • 3330 OLPC XO-1.75 XO-4 - fix regression introduced by r3326 that caused Data Abort during startup.
  • 3329 OFW core - extend Forth decompiler and debugger to handle instance defer words.
  • 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.
  • 3324 OLPC XO-1.75 XO-4 - ensure RTC SQWE is enabled before using it as SoC slow clock, related to CForth 2cf4585dace915da58fe47282a1b92db815a23b3
  • 3320 OLPC ARM - reinstate memctrl-va in dramrecal.fth to fix 1.75 build regression.
  • 3319 OLPC XO-4 - Neonode, add support for numeric version comparisons in manufacturing scripts
  • 3318 OLPC ARM - send brighter/dimmer messages to the DCON driver instead of the screen driver, now that the DCON is in its own node. This fixes Data Abort problems that happened when you typed the brightness keys.
  • 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 ticket #12107. The problem happened when secure-booting an initrd whose size was not a multiple of 4.
  • 3305 OLPC ARM audio driver - missed a couple of mute bits for OUTMUX.
  • 3303 OLPC ARM audio driver - device tree tweaks for instantiating the Linux audio driver from the device tree.
  • 3287 OLPC - suppress image size smaller than disk size now that builds size themselves to available space
  • 3285 OLPC - security, use signature-offset for locating version number in next firmware image, ticket #12079
  • 3281 OLPC ARM - Moved the security Processor communication protocol driver after the USB driver in the load sequence so the ambiguous pathname /keyboard will resolve to /ap-sp/keyboard instead of /usb/keyboard after a USB keyboard has been attached. Manufacturing test scripts need that behavior per OLPC ticket #12074.
  • 3272 OLPC ARM - Changed the error threshold for suspend-state power to accomodate the observed power draw of the XO-4 A2 boards. When we have newer boards and better characterization, this threshold may need further tweaking.
  • 3271 OLPC ARM - On a wakeup, do a deeper reinit of the display controller, as the simplistic reinit doesn't work on MMP3.
  • 3270 OLPC ARM - Implemented suspend/resume for XO-4, in the process refactoring the XO-1.75 suspend/resume code so much of it could be shared.
  • 3269 OLPC ARM - Map the memory controller in early startup code so it doesn't have to be done later.
  • 3263 OLPC ARM - Changed the compatible name lists for the apbc and pmua nodes so they tell the Linux driver which style of power island fiddling to use.
  • 3262 OLPC ARM - Added "reg-w@" and "reg-w!" to the list of I2C interface methods and used them in the codec driver.
  • 3261 Fixed a commentary typo in the previous checkin.
  • 3260 OLPC ARM - Converted the MMP2 DCON driver to call it's I2C parent bus for I2C services, instead of using the bit-banged SMBUS driver directly. Also added I2C methods to the parent node for the image sensor, paving the way for later conversion of that driver.
  • 3259 OLPC ARM - Now that all TWSI child devices have been converted to use the new factoring, removed the old top-level /twsi node from the device tree and removed the global TWSI driver code. The only global references to twsi are now in the suspend/resume code (to be fixed) and an incidental one in MFPR pin attributes.
  • 3258 OLPC ARM - Converted the RTC driver to use the new TWSI factoring, at the same time changing all occurrences of the method names "byte@" and "byte!" to "reg-b@" and "reg-b!".
  • 3257 OLPC ARM - Converted the nn-touchscreen driver to use the new TWSI factoring. It now has no references to "twsi" - so it doesn't care what kind of I2C hardware implements its system interface. There is now only one "touchscreen" device node.
  • 3256 OLPC ARM - This checkin goes with the previous one, fixing a build failure.
  • 3255 OLPC ARM - Created a proper device-tree factoring of the OFW TWSI driver with the goal of replacing the present global version. The new version has methods in /i2c@N nodes, delegating the work to code in /packages/twsi . The global version is still present and is still used for RTC and touchscreen. The codec and accelerometer drivers have been converted over to use the new code. This resolves OLPC ticket #12072 (there was a simpler way to fix 12072, by renaming one of the accelerometer nodes, but this refactoring needed to be done eventually.)
  • 3251 OLPC ARM - RTC - Changed the name of the internal RTC from "/rtc" to "/wakeup-rtc" so existing procedures that use "/rtc" to mean the timekeeping RTC will work. OLPC ticket #12072
  • 3248 OLPC ARM - Camera device node - The interrupts property needed to change because MMP3 shares the camera IRQ.
  • 3247 OLPC ARM - Ensure that the main SDHC clock divisor is set properly when changing the SDH1 clock register.
  • 3245 OLPC ARM - removed spurious null from banner.
  • 3241 OLPC ARM - Added probe-image-sensor to the startup sequence. This should have been part of an earlier commit but it slipped through the cracks.
  • 3238 OLPC ARM - Audio driver - use the new "my-clocks-on/off" facility to move the clock enabling code out of this file into the PMUA driver.
  • 3237 OLPC ARM - Camera driver - use the new "my-clocks-on/off" facility to move the clock enabling code out of this file into the PMUA driver.
  • 3236 OLPC ARM - implemented a generic mechanism for enabling and disabling device clocks based on the "clocks" property. Important new words are "my-clock-on" and "my-clock-off", which can be called from a device instance in a node that has a "clocks" property.
  • 3235 OLPC ARM - Set reg and compatible properties in the /image-sensor node dynamically, by probing for the specific chip that is present. This requires the assistance of the camera driver, because the image sensor won't respond to its I2C bus unless it has a clock from the CCIC camera unit.
  • 3234 OLPC ARM - Moved the board-specific code to create I2C device nodes into OLPC-specific files.
  • 3233 OLPC ARM - MMP camera driver - Some tweaking of device tree properties for the benefit of the Linux driver.
  • 3232 OLPC ARM - MMP audio driver - Some tweaking of device tree properties for the benefit of the Linux driver.
  • 3230 OLPC XO-1.75 XO-4 - ignore unimplemented write protect for internal eMMC
  • 3229 SETi camera driver - invert the PCLK polarity so the data is sampled on the correct edge
  • 3219 OLPC ARM - Changed the representation of the audio device in the device tree, for compatibility with Linux's alsa soc framework.
  • 3218 OLPC ARM - Fixed incorrect audio SRAM sizes.
  • 3217 ARM - Increased user-size to 16 KiB, as the user area was filling up on OLPC.
  • 3215 OLPC ARM - Decreased heap size from 1 MiB to 768 KiB, thus increasing the dictionary growth size. The dictionary was filling up on XO-4.
  • 3214 OLPC ARM - /apbc node had incorrect enable values.
  • 3213 ARM - Added linux,usable-memory property to /memory to work around the fact that Linux does not honor the "available" property.
  • 3211 OLPC XO-1.75 - update EC firmware to 1.0.0, per ticket #11738
  • 3209 OLPC ARM - Corrected RTC node address in startup code.
  • 3207 OLPC ARM - sorted out confusion about which of the two RTC nodes (internal vs. external) gets which device tree properties.
  • 3206 SDHCI - handle host controllers that spuriously set the transfer interrupt bit during cmd13.
  • 3205 OLPC - fs-update, use zdata file size not spec file size for sanity-check, ticket #12055
  • 3204 OLPC - fs-update, fix sanity-check for signed install, ticket #12055
  • 3203 OLPC XO-1.75 XO-4 - first audio open left 4 on stack, found at ok prompt, regression introduced r3117.
  • 3202 OLPC - fs-update, sanity-check file size if the zdata file contains a size: header line, abort if invalid, ignore if missing, ticket #12055
  • 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.
  • 3199 OLPC ARM - Fixed misleading comment in driver for internal RTC.
  • 3198 OLPC ARM - Added device node for OLS LED for Linux driver binding.
  • 3197 OLPC - Change all uses of I2C addresses for bit-banged SMBUS (I2C) to use unshifted address form.
  • 3195 OLPC ARM - moved the DCON driver out of the screen node into a new node underneath an I2C bus node, for ease of Linux driver binding.
  • 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.
  • 3191 OLPC ARM - Changed the unit numbers for some TWSI nodes so they don't conflict with auto-assigned unit numbers of i2c gpio nodes.
  • 3190 OLPC ARM - Added #address-cells, #size-cells, encode-unit, and decode-unit methods to i2c-gpio device nodes so they can have children with reg properties.
  • 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.
  • 3187 OLPC ARM - Added I2C GPIO device nodes.
  • 3186 OLPC ARM - Finished adding USB properties.
  • 3185 OLPC ARM - Added USB properties.
  • 3183 OLPC ARM - Change all uses of I2C addresses for TWSI-connected devices to use the unshifted address form.
  • 3181 OLPC ARM - Tweaks to the last EDI checkin so that EDI operations are always bracketed exactly the same way, with use-edi-spi ... use-ssp-spi
  • 3180 OLPC ARM - Refactor EDI start procedure
  • 3179 OLPC ARM - Added properties to display and DCON device nodes for the benefit of the Linux pxa168fb.c driver.
  • 3178 OLPC ARM - Deleted dead code from bbedi.fth
  • 3177 leds: add device-tree declaration for storage led
  • 3176 OLPC ARM - Removed typoed extraneous d# before symbolic names for switch gpios, added gpio properties to 1.75 switches node.
  • 3175 switches: use symbolic names for gpio pins
  • 3174 twsi: pluralize the neonode touchscreen gpio properties
  • 3173 switches: declare switch gpio pins for DT
  • 3172 OLPC - Added GPIO properties to /ec-spi node.
  • 3171 OLPC - Renamed gpio-prop to gpio-property and changed the argument order for conformance with Forth conventions.
  • 3170 OLPC - Added ec-spi-int-gpio# to gpiopins.fth, renamed touch-scr-gpio# to touch-int-gpio# for specificity.
  • 3168 gpio.fth: add gpio-prop word, for declaring gpio pins to device tree
  • 3167 bsl: add TODO list
  • 3166 OLPC 1.75 - Fix EC programming breakage
  • 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.
  • 3162 OLPC ARM - Use devaliases instead of linux,unit# properties to pin UARTs to specific ttyS numbers.
  • 3161 OLPC ARM - Added "realtek,rt5631" to compatible list for audio codec node.
  • 3160 OLPC ARM - Handle MMP3 PMUA clock reset/control register differences.
  • 3159 OLPC ARM - Handle MMP3 IRQ differences.
  • 3158 OLPC ARM - #gpio-cells should be 2, not 3, for MMP2/3 /gpio node.
  • 3149 OLPC XO-1.5 XO-1.75 - libertas, change baseband register interpretation to match new data supplied
  • 3143 OLPC - Load the crypto code in stand-init, because demand-loading it during WLAN startup can mess up resolution of later path components.
  • 3141 ARM - TWSI, add twsi-read for reading bytes from a device into a buffer
  • 3140 OLPC ARM - Checked in swhash.fth
  • 3139 OLPC XO-1.5 XO-1.75 - libertas, add baseband register fetch to show currently used antenna
  • 3137 OLPC ARM - Use software for SHA1 and MD5 hashes instead of the MMP2 hash accelerator, which I haven't gotten to work on MMP3.
  • 3136 OLPC ARM - Added Realtek audio codec device node.
  • 3134 OLPC - oatstime, fix a typo, add name based virtual host support
  • 3133 OLPC - fsupdate, trivial typo
  • 3132 ARM - TWSI, twsi-write takes an address and length, twsi-out takes bytes on stack, but both achieve the same
  • 3131 ARM - MFPR, additional entries for MMP3 GPIOs
  • 3130 OLPC ARM - factored UART and SDHCI stuff out of platform versions of fw.bth into separate files, added device node for internal SD on CL4.
  • 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.
  • 3125 OLPC XO-1.75 - Fix another screwup in recent checkin that broke XO-1.75 startup.
  • 3122 OLPC ARM - Fix screwup in recent checking that broke XO-1.75 startup.
  • 3118 OLPC ARM - move hardcoded MIC GPIO pin# into gpiopins.fth
  • 3115 OLPC ARM - New convenience functions for setting bit fields in I/O registers.
  • 3108 OLPC ARM - MMP2/3 SDHCI driver - Support slot 5's address.
  • 3107 Marvell TIM compiler - fixed misleading name.
  • 3106 Marvell TIM compiler - accept either 4 ASCII or 3 ASCII plus decimal for ID values.
  • 3104 OLPC ARM - revert the change to the SSP SSP_SSPSP register, as it was ineffective. Leave the cosmetic change to the way the other register offsets were specified, for clarity.
  • 3103 OLPC ARM - SSP SPI driver - sample data from EC on falling edge.
  • 3100 edi-open: activate EDI with a dummy read
  • 3099 OLPC XO-1.5 XO-1.75 - handle exceptions in open-nand during fs-update, ticket #12025
  • 3094 bbedi: clock faster on cl4
  • 3093 config ec-flags-offset on a per laptop basis
  • 3092 fixes for kb9010 edi programming
  • 3090 OLPC ARM - Marvell TIM compiler enhancements for version 4 of the TIM header.
  • 3088 OLPC MMP GPIO driver - omit pxa-gpio entry from compatible property.
  • 3087 OLPC ARM - this goes with svn 3084 - moving the UART assignment out to version-specific fw.bth
  • 3086 OLPC SPIFLASH driver - handle 2 MB parts.
  • 3085 OLPC EDI driver - handle differences between KB3731 and the new KB9010
  • 3083 OLPC ARM - the last commit makes cpu/arm/mmp3/initmmu.fth unnecessary, so delete it.
  • 3082 OLPC ARM - coalesced initmmu.fth into one file, with parameterized differences between mmp2 and mmp3.
  • 3072 In ramdisk driver, ensure that the number base is hex when encoding the base address.
  • 3071 OLPC ARM - Ensure that the WTM clock is on when initializing the random number generator.
  • 3070 OLPC accelerometer demo - added "level" command to implement a clinometer precise to 0.1 degrees up to 45 degrees.
  • 3069 Q4D21


  • lots


  • to be checked


  • none

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  q4d25 ...   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  q4d25 ...   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


 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.


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:\q4d25.rom
  • if the downloaded file is on an external SD card:
 flash sd:\boot\q4d25.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/q4d25/q4d25.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\q4d25.rom
  • if the file is on the internal SD card of an XO-1.5 or XO-1.75:
flash int:\boot\q4d25.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\q4d25\q4d25.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