December 16, 2009
This article was contributed by Nathan Willis
Openmoko, the company that first gained attention for its Linux-based phone platform, launched a new pocket-sized open source product in time for this holiday season, the WikiReader. The WikiReader is an inexpensive ($99), low-power, 4-inch square touchscreen LCD display device pre-loaded with the text of three million Wikipedia pages on a microSD card. In the smartphone era, skeptics might dismiss the device as woefully underpowered, but to the open source community the more pertinent question is what else can it do?
Unboxed and unconnected
Physically, the WikiReader is distinctive; its square shape is easily hand-held, but stands out from mobile phones. It is white, which suggests the industrial design of e-Ink book readers, but the hardware interface is minimalist: power button on top, and three hardware buttons on the front, "Search," "History," and "Random." The screen is a monochrome LCD display with 240-by-208 pixel resolution and no backlight, but it is also a capacitive touchscreen, used for the on-screen keyboard when searching, selecting links, and scrolling through articles.
The device is very lightweight, slim, and at this size easily fits into a shirt pocket. It is available for purchase directly from the WikiReader web site, and from Amazon.com. The housing is not particularly tough, however, more akin to remote-control-quality plastics than the sturdier-walled materials on a cell phone or GPS unit, so the careful buyer might keep on the lookout for a padded PDA case of some sort to absorb abuse.
Inside, the device uses an Epson S1C33 32-bit RISC CPU, 64KB of Flash ROM, 32MB of RAM, and a user-accessible microSD storage card. From the factory, it ships with a 4GB card, although other sizes are supported. For the curious, a debug connector is also accessible from the battery hatch. Power is supplied by two AAA batteries, which Openmoko claims will last 12 months given an average of 15 minutes usage per day. There is no other connectivity; no WiFi, no USB.
The content is a subset of Wikipedia's English-language text (no "adult" content; other omissions are not described). Naturally, given the display characteristics and storage, the 4GB card contains only article text; estimates put the total size of Wikipedia at 72 terabytes.
In use, the WikiReader always starts up on the search screen. Typing in a word on the onscreen keyboard pops up a match-as-you-type list of matching articles; the user can click on any of the links as soon as the right article is found. The History button brings up a clickable, scrollable list of recently-viewed articles, and as expected, the Random button loads a random page, almost instantly.
4 gigabytes of content is nice, but Wikipedia is constantly changing and growing. To handle this situation, Openmoko offers two choices: downloaded updated microSD card images (for free), or buy a subscription service, through which the company will mail a new microSD card semi-annually, for $29 per year. On top of that, naturally, the user also gets to collect the old microSD cards for use elsewhere.
A pocketful of information
In spite of the hardware limitations — many of which only seem like limitations in comparison to always-connected, touchscreen mobile phones — the WikiReader is remarkably fast, and despite being only a portion of the total Wikipedia, the amount of content is overwhelming. In fact, for looking up answers or information in a pinch, it easily beats connecting to the Wikipedia site over a mobile data connection.
The only real weaknesses are in the interface itself. First, the search function only matches the beginning of an article title, not the middle, and not full-text search. This can be a usability impediment in two ways; first by requiring the user to know the exact title of the article, and second by forcing the user to type extremely long titles (such as any "List of ..." pages). The latter issue is made worse because the on-screen keyboard is tricky to use. It is a QWERTY layout, with each key less than 5mm wide and 6mm tall. Additional space is taken up by non-sensitive black borders around each key, shrinking the target area.
As several blog reviews of the device have noted, although the history function is convenient, it would be greatly improved by a way to bookmark particular pages, and perhaps forward-and-back navigation buttons. Others have noted that the LCD screen can be difficult to read under poor lighting conditions due to the lack of a backlight.
More substantial criticisms tend to revolve around the guts of the device specifications itself, comparing it to considerably more expensive devices like e-Ink book readers and phones. Indeed, there are ways to access Wikipedia content on these devices (even offline), but the comparison misses the point Openmoko is shooting for. The WikiReader is intended for use in the offline world; it is not an underpowered Wikipedia browser or ebook reader, it is a pocket-sized reference encyclopedia. One that can be updated, for free, and uses free content. On those merits, the WikiReader is indeed a success.
Nevertheless, given the device's pedigree in multiple corners of the free culture movement (Openmoko's dedication to open source software and hardware, and Wikipedia stance on content), there are other criticisms that deserve a closer look. Benjamin Mako Hill lamented the lack of editing features — correctly noting that Wikipedia's true openness stems not from the licensing of the content for reuse, but from the user contributions. The device could cache edits locally, he said, which could be uploaded from a PC when the microSD card was pulled for an update.
Hacking
Adding editability would require substantial software changes, of course. Fortunately, the source code is all available online in a Git repository. There is documentation for cross-compiling the entire system for the S1C33 architecture from a Linux system with GCC, descriptions for flashing the boot loader, and a description of the boot sequence itself.
At boot time, the device loads an executable from the microSD card (by
default, one named KERNEL.ELF, although it is not a proper operating system
kernel) that contains hardware and filesystem drivers that launches the
wiki reader application itself. Holding down the "History" button when
powering on causes the device to load CALC.ELF instead, a basic calculator
application. Holding down "Search" when booting loads FORTH.ELF, a Forth interpreter that can load the
calculator or a variety of test and diagnostic applications (all written in
Forth) instead.
Replacing KERNEL.ELF on the microSD card with another correctly-compiled application allows the user to customize the software without danger of bricking the device by re-flashing. It also allows Openmoko to roll out updates to the product without requiring customers to step through an upgrade process: just swap out the old card, and swap in the new.
The simplest enhancements, however, might only involve adding more
content such as Wiktionary or Wikitravel (after all, the name is
WikiReader, not WikipediaReader), or replacing the
content with alternate languages. The tool
suite contains Python and PHP utilities to convert MediaWiki XML dumps
into the compressed format stored on the card, including creating the
article index. Adding or replacing MediaWiki-formatted content should be
as simple as exporting the XML from the wiki and running the utilities.
Several users have already undertaken this task for French
and Spanish
Wikipedia content.
A more daring hack would be altering the wiki reader application itself to support additional content types. David Samblas, having noted that the sample Forth applications include basic graphics support, has undertaken [article in Spanish] adding portable bitmap format (PBM) images to the reader. His test images are of dubious quality for some image types — such as photographs — but others, such as line-drawing maps, might actually be useful on the device. He has not yet posted code to add this feature to the reader.
What else the WikiReader hardware can be hacked to do is an open
question. Browsing the Openmoko mailing list, it is clear that a lot of
early adopters are already pushing the device. Because the reader has a
built-in Forth interpreter (powering the wiki reading application and all
of the "hidden" test programs), writing new Forth applications is probably
where outside software development will begin. So far, though, there is
not yet a set of complete Forth development tools, only the toolchain at
Github that is used to build the factory software. In the short term,
there is still substantial room for expansion of the feature set just
within the confines of the default reader application. Where Openmoko
takes the product line from here is more fun to speculate about; perhaps if
WikiReader is a success, a higher-end version will follow.
For today, however, the product makes for a fun stocking stuffer for the
family hacker. Openmoko is positioning the device in
its advertising as a way to get content into the hands of the "75% of
the world [that] is offline" — including people in airplanes
or on beaches, and "most everywhere." The WikiReader certainly does that; several online reviews have praised its value in museums and tourist locations, where data plan charges would make a connected device prohibitively expensive to operate.
But Openmoko also praises the "important role" Wikipedia
plays in people's lives and its goal of providing a free encyclopedia to
everyone in their native language. Hopefully the WikiReader hacking
community can make that a reality as well. There are hackable high-end
ebook readers, including some with larger, nicer displays, WiFi and GSM
connectivity, and more content. But they are also reportedly much more
difficult to work with. WikiReader takes aim at a more modest target, and
hits it.
(
Log in to post comments)