XO Replacing SPI flash
This page describes how to fix a XO laptop locked up or bricked due to a bad SPI Flash ROM.
Problem Description
A small number of laptops suffer when their initial boot ROM (the SPI Flash ROM) forgets a bit or two. These errors are manifested with a variety of symptoms:
- The Laptop is completely dead, due to
- EC Failure - the Embedded controller is not functioning properly
- Failure early in the OFW boot process, resulting in "+", "FortM", "FortDEAD", or more verbose messages printed on the serial port.
- A blank white screen is displayed
- A screen with an XO and a single dot is shown
All of these symptoms (except "FortDEAD" on the serial port) also have other causes.
Some laptops with this problem have bit errors which prevent the laptop from booting, but which do not prevent interrupting the boot process and upgrading the firmware using the serial port (This requires a developer key).
Another situation requiring this fix is if a laptop somehow loses all power (both battery and DC in) during the Firmware reprogramming operation.
Repair Process
Fixing the problem has three phases:
- Obtaining an SPI Flash ROM with the appropriate firmware programmed onto it
- Replacing the chip on the motherboard with the new one.
- Restoring the serial number and UUID of the laptop
What You Will Need
- Either a soldering iron and solder wick, or (ideally) a hot air rework station with an SOIC-8 tip.
- The new SPI Flash ROM (see below)
- the UUID of the laptop (if it is secure)
SPI Flash ROM
You will need a new SPI Flash ROM. The ones qualified for the XO are:
- Winbond W25X80VSSIG
- Spansion S25FL008A
These should be in a 0.208 in. (5.2mm) body width SOIC package.
Firmware
The Firmware must be programmed onto the chip before it is placed on the motherboard. This firmware is a binary file containing the following:
- Embedded controller firmware
- Open Firmware
- Manufacturing Data - This is optional, although Sugar will not boot unless certain tags are present. Open Firmware will boot without it, allowing this data to be restored from a USB key.
This may be programmed onto the chip using any of a large number of device programmers, or it may be requested as a service from some parts vendors.
Replacing the chip
See the disassembly guide for instructions on how to expose/remove the motherboard. The SPI Flash ROM is identified as the EC Flash in the annotated motherboard image.
Using a soldering iron or a hot air rework station, gently remove the SPI Flash ROM (U37) from the motherboard. Replace it with a pre-programmed SPI Flash ROM.
Caution: If a hot air rework station is used and the motherboard is not removed, proper baffling must be used to ensure that plastic components of the laptop are not melted.
Use of Lead in Solder
The XO laptop is built complying with the Reduction of Harmful Substances directives. Thus it uses a tin-based solder with a higher melting point.
A repair center must make the decision if they are to remain compliant with this directive. If you decide to ignore it, contaminating the solder holding down the SPI Flash with a lead-based solder will facilitate removal by lowering the melting point.
Restoring the Manufacturing Data
The Manufacturing Data contains critical information about the laptop, such as the serial number, the user ID, the type of keyboard, and the local language.
A copy of the manufacturing data may be obtained from a functioning laptop of the same SKU (indicated in the battery compartment) using its developer key. Boot the laptop, and enter Open Firmware (OFW) by pressing the key in the upper left hand corner of the keyboard in the first few seconds. With a USB storage device present, type the following:
save-mfg-data
It will save the manufacturing data on the USB storage device (using the serial number for a filename). If the storage device is now inserted into another laptop (such as one whose SPI Flash has recently been replaced), that manufacturing data may be restored using:
restore-mfg-data <filename>
The serial number of the laptop (which may be obtained from the battery compartment) may be set using the following OFW command:
change-tag SN new serial number
The UUID is a randomly generated number which in combination with the serial number is used to verify the identity of a laptop. If the laptop being repaired is going to have security enabled, the correct UUID for that laptop must be obtained from the lease signing database, otherwise activation and developer keys will not function. If a laptop will be left with security disabled, any UUID may be used:
change-tag U# DADD886B-C2F7-4B9C-89CB-43B9A81A388C
Reenabling Security
If the laptop should have security enabled, that too is done using OFW:
enable-security
Large Volume Repair
If a large number of machines of the same SKU are being repaired (such as a large scale country deployment), it is worthwhile to generate a ROM image which contains both firmwares and the manufacturing data already present. You can copy the complete contents of an XO's SPI FLASH image (firmware and manufacturing data) to a file. Boot a laptop (with a developer key) until Open Firmware (the "ok" prompt). With a USB key inserted, type:
read-flash u:\rom.img
You can then use that rom.img file to program SPI FLASH chips with a standalone programmer.
After repairing a machine with one of those SPI FLASH chips, the commands needed are simply:
change-tag SN laptop serial number change-tag U# laptop UUID enable-security