Fix Clock

From OLPC
Revision as of 22:54, 1 July 2008 by Nlee (talk | contribs)
Jump to navigation Jump to search
  This page is monitored by the OLPC team.
  english | español HowTo [ID# 142553]  +/-  


This page is how to fix a secure XO laptop locked up due to a problem with the Real Time Clock.

Problem Description

Bad RTC battery holder (most aren't this obvious)
Good RTC battery holder

XO laptops with this problem show one of two symptoms:

  1. The power LED turns on, but the screen never turns on (not even the backlight). The microphone LED may flash briefly, but stays off. This symptom can only happen with OFW versions Q2D05 and Q2D06.
  2. The laptop screen lights up and shows "Invalid System Date" and then powers off. This symptom can happen with any OFW version, but Q2D05 and Q2D06 usually exhibit the first symptom instead.

The problem is caused by bad date information stored in the Real Time Clock (RTC) chip. There are three ways that the date could become bad:

  • The factory did not set the date. This is rare.
  • The user explicitly set the date to an incorrect value, either by mistake or as an attempt to defeat activation security. This is also rare.
  • The RTC chip lost all power. This should have been rare, because the RTC chip has a "coin cell" backup battery that powers the RTC chip when the AC and the main battery are not present. Unfortunately, some of the early production machines were manufactured with a defective holder for the coin cell battery. On those machines, the coin cell battery can become loose or even pop out entirely during normal shipping and handling.

"RTC chip lost power" is by far the most common cause of the problem.

Repair Process

Fixing the problem has three phases:

What You Will Need

See the disassembly guide. To secure the battery, you will need some glue as described later.

The requirements for the rest of the repair depend on which of the two symptoms the system displays.

  • If the screen does not turn on (symptom 1), you will a special hardware adapter - an OLPC serial adapter - and a second working computer (XO or otherwise).
  • If the screen does turn on (symptom 2), you will need a "developer key" for this machine, on a USB storage stick.

Fix the loose battery

To access the Real Time Clock battery, follow the instruction for removing the back cover.

First, you must re-seat the coin cell battery in its holder and secure it so it doesn't come out again. One way to secure it is to put a drop of glue where the battery contacts the holder, away from the metallic contact. The best glue that Mitch has found for this purpose is clear solvent-based household cement. Technically, it is "nitro cellulose" cement. It is also known as "model airplane glue", marketed under various trade names such as "Duco Cement", "Tarzan's Grip". Loctite "Stik'n Seal", etc. (Alleskleber, in Germany, maybe?) The solvent in this kind of cement is toxic and flammable, so keep it away from children! Stronger adhesives like epoxy or cyanoacrylate (super glue) would probably work too, but it might be difficult to remove the battery later without damaging the holder. Don't even think of "Gorilla Glue"; that's polyurethane, which foams as it cures. RTV silicone would be good, except that the common variety releases corrosive acetic acid as it cures - if it smells like vinegar, don't use it on electronics. Ordinary "white glue" (PVA, or polyvinyl acetate) will probably work, but it flows easily and goes down underneath the battery - that is probably okay if you are careful not to use too much. Hot melt glue doesn't work, because it doesn't stick very well to these materials.

Serial Procedure - for symptom 1 (screen does not turn on)

You will need to disassemble the laptop to access the motherboard.

Hook the laptop up to another one through the serial port

  1. Using an OLPC serial adapter, connect the laptop to your personal laptop. On the laptop's motherboard, the serial adapter should be connected to J1. J1 is a small white connector near the wireless module.
  2. Use a program like minicom (for Linux) or HyperTerminal (for Windows) to access the laptop serially
  3. The serial port settings should be 115200 baud, 8 data bits, no parity, and 1 stop bit

It is suggested practice to test communications with a known good laptop before debugging broken ones!

Getting to the prompt

All these commands are typed on the "other" laptop that is connected serially to the one with the bad clock

  • Power on the laptop under test. You should see "Page Fault" on the serial terminal, followed by an "ok" prompt. If you don't see "Page Fault", there are several possibilities:
    • If you don't see anything on the serial terminal, either
      • The serial terminal is not connected correctly, or
      • Something else is wrong with the machine - the machine is quite quite dead and it's not an instance of the symptom 1 RTC problem.
    • If you see a lot of startup messages, but the last one isn't "Page Fault" followed by "ok", then the machine is largely working, but the problem is not symptom 1 RTC problem. If the screen comes on, you should be following the "Developer Key Procedure" below, not this serial procedure.
  • To set the date, do the following commands at the ok prompt (hitting enter after each one):
 ok select /rtc
 ok decimal
 ok sec min hour day month year set-time
  • sec, min, hour, day, etc in the previous command should be numbers correlating to the current date. For example:
 ok 00 48 3 13 12 2007 set-time
  • Insert a USB key containing the latest firwmare version. You will need to download the .rom file and place it on the key.
  • To update the firmware, type the following command line at the ok prompt, substituting the correct .rom filename:
 ok probe-pci probe-usb  flash u:\q2d16.rom
  • The machine should reboot automatically afterwards. You can then remove the USB stick, and the system should work correctly. You can disconnect the serial adapter and reassemble the machine.

How to set up an XO as a serial terminal

Instead of using a non-XO computer to connect to the laptop being repaired, you may also use an XO.

  1. Install any build (650 or later)
  2. Boot the laptop, and connect to the internet.
  3. Go to the terminal and type: yum install minicom
  4. After it is done, set up minicom by typing: minicom -s
    1. Go to 'Serial port setup' and hit enter.
    2. Press 'a' and change it to /dev/ttyUSB0, and then hit enter twice.
    3. Go to 'Modem and dialing' and hit enter.
    4. Clear the contents of both 'Init string' and 'Reset string' (you get to those by hitting 'a' and 'b'
    5. Hit enter to get back to the 'configuration' menu.
    6. Go to 'Save setup as..' and hit enter.
    7. Name the setup as 'USB0' and hit enter.
    8. Go to 'Exit from Minicom' and hit enter.
  5. Now, to open minicom with the settings you want all you have to do is type: minicom USB0

Developer Key Procedure - for symptom 2 (screen turns on)

All these commands are typed on the OLPC keyboard of the laptop that has the bad clock

  • Get a "developer key" for this machine and put it on a USB storage stick
  • Also put the latest firwmare version on the USB storage stick. You will need to download the .rom file and place it on the key.
  • Insert the USB stick into the laptop
  • Power on the laptop
  • When the screen says "Type the Esc key to interrupt automatic startup", type the upper left key on the XO keyboard before the countdown expires. You should get an "ok" prompt. (If you don't see that message, something is wrong with the developer key.)
  • Type these commands to set the date (hitting enter after each one):
ok select /rtc
ok decimal
ok sec min hour day month year set-time
  • sec, min, hour, etc. should be numbers correlating to the current date
  • Type this command to update the firmware, substituting the correct .rom filename:
 ok flash u:\q2d16.rom
  • The machine should reboot automatically afterwards. You can then remove the USB stick, and the system should work correctly. You can reassemble the machine.

If collection fails

If the laptop boots, but immediately displays a system clock error and shuts down before the collector script runs:

  • Set up a serial terminal
  • Power on the XO
  • On the other computer/XO, immediately press "i" to interrupt the startup sequence
  • Reset the system time (hitting enter after each command):
ok select /rtc
ok decimal
ok sec min hour day month year set-time
  • Power off the XO and then collect the UUID as outlined above