iLiad Developer 


Some resources from a volunteer freelance open-source iLiad developer

Hello! I'm a happy owner of an iLiad (from iRex), one of the first ebook readers with an electronic ink (e-Ink) display. It's a very flexible, powerful tool, with many capabilities beyond reading books.

The iLiad runs on Linux, so the operating system and several of its core programs are open source. With the interest of making a good thing better, I spend some of my spare time working on new programs and improvements to the iLiad's software. I created this page as a publicly available repository for these projects.

ButtonReader - v1.0

Here's a simple little command-line program I wrote to read button presses directly from the iLiad's hardware drivers, bypassing the ContentLister. 

ButtonReader-1.0.tar.gz  - Contains the source code, a precompiled binary, and a README. Distributed under the GNU GPL v3.

Fullscreen patch for iPDF - for official release - v1.0a1

A few months ago, iRex asked the developer community to consider developing an "official" fullscreen patch for inclusion into the mainstream pdf viewer.  This patch would be merged into the trunk code and become part of the official distribution.  As the developer of the original fullscreen patch I figure I should give it a shot, so here is my first version.  This is the first alpha version of 1.0.  It is not quite finished in the following respects:

  • I intend to make several cosmetic fixes to the code, which will not affect the functionality.
  • There is no toolbar icon yet.  You enter fullscreen mode with a long press of the up arrow.
  • I have some questions about how zooming should be handled when switching between portrait and landscape mode.

Anyway, here are the relevant files:

iPDF_Fullscreen_1.0alpha1-installer.zip  - Installer/Uninstaller for the binary.  Unzip and copy this folder to your iLiad, then select it to run it.

fullscreen-1.0a1.zip  - A zipfile containing all of the following files:

  • ipdf-1.0a1 - binary executable, a drop-in replacement for the official iRex ipdf.  Compiled for firmware v2.11.
  • fullscreen-1.0a1-svn25.patch - This patch can be applied to official source code svn 25 to add the fullscreen functionality.
  • fullscreen-1.0a1-svn25.tar.bz2 - A tarball containing the svn 25 source code with the fullscreen patch applied.

Enhanced iPDF Viewer - version 20070612

I combined the features from rincewind's powersave and quick erase patches, and my fullscreen patch, to make a single enhanced version of ipdf.  This version also includes several bugfixes, and I modified rincewind's patches so they apply to both landscape and portrait mode.

Rincewind!  If you read this, send me a link to your webpage or something so I can give you proper credit!

Features :

  • Power Saving / CPU Frequency Scaling - (rincewind) - The iLiad's processor speed is changed to conserve power.  It runs at 100 MHz when idle, 200 MHz when scribbling, and 400 MHz for page turning.
  • Fullscreen Mode - (jharker) - Fullscreen mode is now implemented.  New documents open by default in fullscreen mode.  The tool panels are hidden and the entire screen is used for display.
  • Quick Erase - (rincewind) - To erase scribbles, simply scribble over things you want to erase, and continue to hold the pen down for a second after you stop.  When you lift the pen, your scribble will be erased along with any other scribbles you crossed.
  • Remembers Pen Settings - (rincewind) - Current pen settings are saved with the file and loaded when it's re-opened.
  • Remembers Fullscreen Settings - (jharker) - Current fullscreen/toolbar settings are saved with the file and loaded when it's re-opened.
  • Default Select Scribble - (rincewind) - When a file is first opened, scribble is selected automatically by default.
  • Button Functions - button press duration : function : description ... (author)
    • Up Arrow - short : Toggle Erase : Toggles erase on/off.  Somewhat obsolete with the new Quick Erase feature. (rincewind)
    • Up Arrow - long : Toggle Fullscreen : Toggle fullscreen mode on and off.  Currently fullscreen mode does not automatically change the zoom setting, it merely reveals more of the page. (jharker)
    • Dot - short : Show/Hide Scribbles : Toggle whether scribbles are visible.  Very useful for temporarily hiding scribbles you don't want to see. (rincewind)
    • Dot - long : Show/Hide Toolbar : In fullscreen mode, this toggles whether the toolbar is visible.  Useful for bringing up the toolbar to use zoom/pan/rotate/check your page. (jharker)
    • Down Arrow - long : Manual Refresh : Manually refresh the screen, good for removing ghosting and other artifacts. (rincewind)

Executable and Source Code :

Notes : This modification was originally based on changes from three different patches: rincewind's ipdf2.9.1-rincewind.patch and rincewind-erase_mode.patch, and my ipdf-0.29-Jfullscreen-0.1.1.patch.  It has been modified somewhat since then, so you won't be able to get the same functionality simply by applying those patches.

For more information about these patches, their development, and possible bugs, see these topics at the iRex forums: Powersaving/Features PatchQuick Erase Patch, and Fullscreen Patch.

Authors : The source code in this patch was written by rincewind and jharker, and is copyright 2007.

GPL : This program, its source code etc. is distributed under the terms of the GNU General Public License.

Changelog : I decided to base the version number on date rather than the more conventional method, so that new versions would be perfectly obvious, and to allow ease of reference.

  • 2007-06-12 - Recompiled for svn23, so this version works with iLiad firmware 2.10.  Also changed the powersaving implementation.  Now it will properly speed up for all rendering work (including orientation changing, page/continuous mode, etc.), have medium speed for scribbling, and be properly slow in all other cases.  Rincewind's latest changes will be applied in the next update.
  • 2007-05-23 - Unified the three original patches into one. Changed fullscreen to work properly with power-saving.  Modified rincewind's patches so that the features were applied in the same way to both landscape and portrait mode.  Also changed the keypress for manual refresh, from long up  arrow to long down arrow.  Fixed a bug so that fullscreen mode information is saved properly.

Fullscreen Mode for ipdf - version 0.1.1 (May 23, 2007)

I worked up a basic modification to ipdf to allow a fullscreen mode. Currently my version is based on iRex's ipdf v0.29, which was originally based on xpdf. The current version is named to denote its author, function, and origin: ipdf-0.29-Jfullscreen-0.1.1.

Features :

There are two new features:

  • Long press of the up-arrow - Toggle fullscreen mode.
  • Long press of the dot button - Toggle the toolbar visible/hidden, when in fullscreen mode.

Executable and Source Code :

Notes : In fullscreen mode, the zoom level will be exactly the same as in regular mode; the only difference is that more of the screen is used to show the document. When the toolbar is toggled, it temporarily hides part of the document. In the future I hope to implement some kind of auto-zoom when fullscreen is toggled.

By default, a pdf is opened in fullscreen mode. If you change it, the current mode will be saved when the document is closed and should be restored when it's reopened.

This program is fully functional. There is one small known bug related to save/restore of the current mode. A file in fullscreen mode with the toolbar visible, when closed and reopened, will not be in fullscreen mode any more. This bug will be fixed eventually.

Author : The changes included in this patch are copyright 2007 by me, jharker.

GPL : This program, its source code etc. is distributed under the terms of the GNU General Public License.

Changelog :

  • v0.1.1 - Due to a rather stupid bug, the fullscreen state was not saving properly. I fixed it.
  • v0.1 - Original version.

Startup Script Testing

starts.tar.gz - An alternate startup script implementation, to allow safely testing dangerous scripts.

Stylus/Touchscreen Calibration

Here are some files that provide a calibration utility for use with the tslib driver with the iLiad's touchscreen. WARNING: I take no responsibility if you brick your iLiad with these. If you don't know how to test these without bricking your iLiad, don't use them!

ts_calibrate - This is the binary executable for the ts_calibrate utility. If you have the tslib libraries installed, and the correct environment variables and configuration files set, this should "just work". You should be able to run it from a script.

tslib-1.0i-calibrate.tar.gz - This source code can be compiled to produce the tslib libraries and the testing/calibration programs, including the one above. Note that you MUST 'make install' to get the binary; 'make' only makes a linking script called 'ts_calibrate'.

calibrate.patch - Patch which can be applied to the tslib-1.0i source (from jayk) to produce the source tree above.

calibrate.tar.gz - All three of the above files, in one archive.

Useful Links

http://www.irextechnologies.com/ - Homepage for iRex, makers of the iLiad!

http://forum.irexnet.com/index.php - The official iRex forum for iLiad users, enthusiasts, and developers.

http://www.mobileread.com - An information and discussion site for a wide variety of e-book readers.

http://www.mobileread.com/forums/forumdisplay.php?f=99 - The iLiad discussion forum at MobileRead.

About Me

My name is John C. Harker, and I'm a graduate student in Materials Science at the University of Rochester in Rochester, NY, USA.  I use Ubuntu Linux 7.04 and am moderately experienced with programming in C and Perl. Most of my recent programming experience is related to writing moderately complex computer simulations using C and PDL, the Perl Data Language. I have limited experience with C++, Visual Basic, and shell scripting. I've also written an X-ray crystallography utility in Mathematica.

My username on iLiad-related forums is jharker.