Sunday, May 16, 2010

WikiReader, Forth and Hacking

It's old news, but I find the WikiReader very cool. It is an "offline" pocket size wikipedia reader (searches a mini-SD card of a wikipedia dump). It came out last fall (2009) and it has already been subject to a teardown and random hacks. What finally got me interested is knowing that it runs a cross compiled (almost ANSI) Forth.

I've been doing a lot of low level and high level Forth recently and wanted a "lighweight" hackable device for some mall programming (my 11 yr old son plays Warhammer 4K at a local mall and can be engaged for up to 3 hrs -- ugh, 3 hrs of waiting in a mall). The problem with most of my devices is that they have lots of wires, bare boards and LEDs. I don't need the attention (blinking LED.. somebody call the police!).

So, I got me a WikiReader and I've already opened it up to hack in a connector for a serial port (pictures later).

The toolchain and source code is free (developed under Linux w/ open source tools), so I installed ubuntu (once again: goodbye windows) and was quickly cross compiling new Forth engines!

More later, but some quick mini-stats:

The device works off of 3 AAA batteries and draws 11-13mA (avg) while "idle" (waiting for a touch screen or serial event) and 80-90mA (avg) while searching, handling I/O and doing wikipedia stuff.

Not bad.



  1. Anonymous6:24 PM

    Looking forward to seeing the pictures of hacking into the serial port

  2. This might interest you or your readers. I’ve written a WikiReader Forth Simulator to make it possible to test Forth programs without having to swap the mini SD card in and out repeatedly. The current version can run most of the test programs exactly as they appear on the SD card very faithfully. This app uses a Forth interpreter provided by the open source embeddable Forth implementation FICL (, and it works by providing device specific words as callbacks to a simulated WikiReader. It implements enough now to be useful, including the framebuffer functions, GDI functions (including text rendering using the device’s font) and input functions, so I’m releasing it.

    Its available here:

  3. gnuarm12:37 PM

    Thanks to codewitch for the simulator. I'll have to give it a try. I'm not sure how to install it, but maybe it just runs stand alone. I'm not sure it doesn't require FICL to be installed first, I'll find out...

    About the wikiReader, a couple of questions. Can content be added to the reader when articles are added to Wikipedia? Is the serial port accessible from forth? I would love to use this as a front panel for controlling stuff.

  4. gnuarm1:13 PM

    BTW, if it uses two AAA cells, that would only be around 10 hours while actually running, right? Is it easy to connect a wall wart power supply?

    I'd like to find out more about the serial port. Is there no external connector at all?

    I'm interested in using this as a front panel for some stuff where it would be on for 8 or more hours at a stretch.

  5. The serial port is accessible from Forth: