Nepal: Technical Details
This is a meta-page that compiles various technical work going on to support Nepal's OLPC deployments. Expect a certain amount of flux. For the most up-to-date info, check the OLE Nepal blog or e-mail Bryan Berry at bryan at olenepal dot org.
Initial Receipt and Inventory
- At airport, count # of XO's if individually packed
- Upon arrival at office, recount XO's and note any discrepancies. Beware of transport loss. It happens
- Inventory the XO's in a spreadsheet. The spreadsheet should record the XO's serial #, whether it shows any physical damage, or won't boot. Here is a inventory template spreadsheet you can use File:XO-Inventory-Schools-template.xls
- If there is physical damage, put a piece of masking tape on the green top lip of the screen and write "physical damage" w/ a red marker.
- In case of damage or not booting, put in the damaged stack, but make sure to mark it with masking tape and red marker.
- Attach a label to the XO that has the Inventory Label as the identifier
- Write the Serial Number on the bottom of the laptop using a black permanent marker
- Type the Serial Number in the speadsheet next to the Inventory Number
- Insert USB key, containing runos.zip and actos.zip, see Procedure for Collecting UUID's and Serial Numbers on the Activation_Key page
- You should see a message like "SHFxxxxxxxx nnnnnnnnnnnnnnn; Laptop data recorded successfully"
- The XO will then reboot, remove the USB key and turn it on again
- Send file to OLPC containing the information needed to get developer keys for each XO to email@example.com
- Once you have done this procedure for half of your XO's backup the laptops.dat and inventory spreadsheet (yes, I am paranoid)
How to check you have Serial Numbers and UUID's for each laptop
uniq laptops.dat > laptops-tmp.dat wc -l laptops-tmp.dat
This should match the exact number of XO's that you have.
Notes: It is very hard to attach any kind of sticker to the XO because of its nobby exterior. We placed the inventory label on the smooth green plastic above the screen. You need to keep track of the XO's using inventory numbers while they are in your possession. It is very easy to lose track of them when you have several hundred in your possession. You should also limit access to the area where you store the XO's. It is all too easy for people to walk off w/ a new XO of their own.
Managing Storage of the XO's
Sign out individual XO's to important project contributors. Any other XO's should be signed out on a sign out sheet if someone wants to take them out of the storage room. I recommend using a clipboard as a sign-out sheet.
I recommend storing the XO's on shelves in stacks of 5. The stacks of 5 should be in some kind of numerical order so that you can quickly count the total # of XO's and determine if a particular XO is missing.
Contents of your USB key
- os699.img and os699.crc, or whichever image you prefer
- /security/develop.sig -- developer keys for the XO's
- /bundles/ containing library and activity bundles for our customized build
- The Customization_key unpacked into the root directory
- Write the Serial # for the XO on Testing Plan
- Place develop.sig specific to the XO you will test onto the USB key
- Hit the "X" Escape key in the upper left-hand corner of the keyboard
- At the OK prompt, type disable-security
- The XO will reboot. Type disable-security again
- Type test-all at the OK prompt
- Note down any error messages you see during this process, basically any individual test that does not produce an OK result
- You need to put pressure on the touchpad during the touchpad test, then hit the space bar
- Don't hit the keys during the keyboard test, for some reason that causes a problem.
- If you do get an error message, write Firmware -- Component xxx failed w/ a red marker on the XO's box
- after test-all completes, it is time to change the locale to Nepali from within the firmware (note: the XO's we received in Nepal had US as the locale)
- At the OK prompt, type change-tag LO ne_NP.UTF-8 -- Note LO not LA
- Turn off the XO and remove USB
- If no problems, mark the XO's label w/ a blue checkmark, if there is a problem check the label w/ a red marker.
Testing and QA
Updating the Firmware on Your XO and changing Manufacturing data
- Put latest firmware software and the .asc file on a usb key
- If you haven't already disabled firware security on your XO, do so now "OK disable-security" from the Forth prompt
- Insert USB key
- Boot up, click Escape key
- at Forth prompt, type "flash u:\q2d14.rom" Should happen quickly and painlessly
- To check the manufacturing data, type "OK .mfg-data" don't forget the leading period!
- To change a manufacturing data tag, "OK change-tag TAG new_value"
Customizing Your own Build
There are several possible ways to customize your own build for the XO. This is what worked for me.
How to customize the image by installing a stock OLPC os703.img, Make your changes, and then Cleaning up the machine specific settings.
- Install os image 703 from Forth prompt copy-nand u:\os703.img --> you must have os703.img and os703.crc on your USB key
- Power off
- Insert USB key that has Customization Key v2 installed on it
- Hold down X game key then turn on the XO
- Release the game key when prompted to do so
- The Activity pack should install itself and then power off
- Boot up and make your changes, such as installing rpms
- When done, delete the user-specific changes you have made
- rm -r /home/olpc.sugar/default
- rm /var/lib/dbus/machine-id
- rm -r /security/state/etc/*
- Delete the first line of the hosts file /etc/hosts
- Go to the Forth prompt and type save-nand u:\os703-b1.img, this will also generate a u:\os703-b1.crc file. NOTE: there is a limit to the length of image file name, something like 6-7 characters + .img
- Clone other XO's using these two files. You should generate a md5 file check as FAT32 USB sticks pick up errors easily.
Nepal Activity Pack
Activities Added using the Customization key
- Write v55
- Browse - v86
- Read v45
- Record v54
- E-Paath Activity latest version
- GCompris big bundle
- SocialCalc v1
- Paint v19
- Etoys v80
- Scratch v1
- SimCity v4
- TamTamMini v46
- TamTamJam v48
- TamTamEdit v47
- Speak v5
- Slider Puzzle v5
- Jigsaw Puzzle v3
- Cartoon Builder 1.7
- Story builder v12
- Joke Machine v8
- Block Party v7
- Maze v5
- Memorize v26
- Starchart v3
- Moon v3
- Terminal v9
- Watch and Listen v10
After Installing all these activities, we have 456 MB of SSD remaining.
Additional Rpms Installed
- RPM's to display man pages, man-1.6e-3.fc7.i386.rpm, diffutils-2.8.1-16.fc7.i386.rpm, groff-22.214.171.124-7.fc7.i386.rpm
- flash 9 plugin
The order is set in Nepal's custom Activity defaults file. to use it you will need to change the file to /home/olpc/Activities/.defaults
- Firmware changes ** Not supported by OLPC **
- Updated firmware to Q2D14
- Disabled security -- disable-security
- Changed locale (LO) in the firmware to ne_NP.UTF-8
- changed DEFAULT_JABBER_SERVER in /usr/lib/python2.5/site-packages/sugar/profile.py to bashuki.xs.olenepal.org or bishwamitra.xs.olenepal.org (specific to OLE Nepal)
- installed Flash rpm, rpm -ivh flash. . .plugin.rpm
- Installed latest Language pack for Nepali
- Added update-script that check for updates to the EPaati activity - written by Sulochan
- Added non-FOSS codecs (not actually done)
- Adding Man pages
- Install groff-1.18.***.i386, man-1.6f-***.i386, diffutils
- copy /etc/man.config from linux machine to xo under same location
- Copy Man folder /usr/share/man into into xo
- Setting up Gnuchess
- rm /usr/games/gnuchess -- for some reason there appears to be a symbolic link here by default that causes problems
- cp /usr/bin/gnuchess /usr/games/ note: for whatever reason, ln -s /usr/bin/gnuchess /usr/games doesn't work
Ram Krishna Singh is the lead power technician for the pilot. Ram designed the XO Rack and had to install additional power cabling at both of the pilot schools. See the wiki pages for Bashuki and Bishwamitra for power details specific to each school.
Stable electricity is a significant problem everywhere in Nepal. Currently the school only receives 16 hours of electricity per day. This should decrease to 15 or 14 hours per day by April. Hydropower generates most of the electricity for Nepal's energy grid and the amount generated decreases steadily during the dry season, October - May.
There are only 5 amps of power coming into the school. Josh says that we need at least 7.5 amps to charge 110 laptops. Ram estimates we need 10 - 15 amps because of power loss and distribution inefficiencies.
Power is also of low quality, with frequent brownouts and power spikes. The power strips available in Nepal are of very low quality, there is high chance that children will shock themselves while removing their plug from the power strips. It is not uncommon to see a spark when you insert a plug into the particular power strip available in Nepal.
We will install a “charging rack” at the back of each classroom. The children will unplug the XO’s and use them at their desks untethered by power cables. There will be a space and charger for each child’s XO in the rack. We do not plan to run power cables to the desks. The chance that kids will trip over power cables is just too high.
We would love to use the Xoctoplug for power distribution should it become available. It is much more elegant and safe manner of distributing power than regular power strips. We would place the Xoctoplug in the middle of 4 desks and the kids would plug into the Xoctoplug. Since the Xoctoplug distributes DC current it is much more efficient and safer than an AC power strip. Additionally we could daisy-chain two Xoctoplugs together so that we would only have live power cable per 8 kids, as opposed to one live power cable for every 3 kids which we would need for power strips.
We installed power inverters in the school to maintain power during power outages. We keep the inverters (Power backups) in the same location as the School Server
Sulochan Acharya and Bryan Berry are in charge of the School Server, XO maintenance, and E-Library.
The school server will use OLPC's school server distribution with some modifications. The School Servers will not connect directly to the Internet but through a server located at the Department of education. This server will host the Dansguardian content filter and Squid proxy. The School Server will only host the Jabber Server, DNS, DHCP, and a few other services. We are using off-the-shelf hardware for the school server.
We will show the teachers how to perform basic maintenance and give periodic short courses to the students on laptop maintenance. Rather create a fully structured maintenance plan, we want to see who at the school shows the most affinity for laptop maintenance, students or teachers. We don't want to arbitrarily select local people to do the maintenance until we get a sense of who has an interest and talent for it. In short, we are putting People before Process.
See Nepal: Support Training for details