Freda Logo

Freda: the free ebook reader

Freda is a free program for reading electronic books (ebooks) on Windows Mobile devices.


Installation Instructions:

Download the Mobile Install (CAB) file from here, and place it in any folder on the Windows Mobile device. Execute the CAB file (normally achieved by tapping on the file in an Explorer window), and it will install the program and all components in their default locations. You can now delete the CAB file from your device if you wish.

Un-installation Instructions:

Use your phone's Settings->Remove Programs screen to remove Freda. You will find it under the name "Turnipsoft Freda".

This will remove the Freda program file from your phone. It will also remove any temporary files from the default location (in the program folder). It will not remove Freda's settings, bookshelf and library from your phone. You can do that manually, by deleting the folder \Program Files\Freda and all its contents and subfolders. If you told Freda to store its temporary files in some other folder, you will need to manually remove that folder also.

Freda Functions

The Freda shortcuts screen offers access to the actions listed below. To see details of each available action, click on the link. Alternatively, click here for instructions on how to begin using Freda. Note: at certain times, some functions will be unavailable ('greyed out') or absent. For example, 'Contents' and 'Find' will be available only if a book is loaded.









Go Back

Look up



Lock Backlight




Forget Book


Starting using Freda

When started, Freda will display an initial 'splash' screen. To start using Freda, tap anywhere on the screen to open the Freda shortcuts screen. You can also open this screen using the 'enter' or 'action' key. If a short-tap does not bring up the shortcuts screen, use a long tap-and-hold (the effect of screen-tap actions is customisable using the Settings screen).


Opening a book

From the shortcuts screenu, select the 'Latest', 'Bookshelf' or 'Library' option.

If you have previously had a book open, the Latest action will resume reading that book at the place you left off.

The Bookshelf consists of the last twenty books you have opened. When you first run Freda, the Bookshelf will be empty, but once you have been reading some books, it provides a convenient way to return to a book you were reading earlier.


To resume reading a book from the bookshelf, tap on it and then tap the 'Open Book' soft-key button at the bottom left of the screen

The first time that you run Freda, there will be no books in the bookshelf; to open a book (and so add it to your bookshelf), use the Library function.

The Library is the collection of all books currently in your library database. The Library action allows you to view all the books in your library, and to manage the contents of the library database.


When you first run Freda, the Library will contain only the GPL License Agreement and the Freda manual (this document). To add further books to the Library, select 'Actions...>Add Books'. The available options are:

Add Folder which will let you select a folder containing books, and add all those books to your library. Files of type EPUB, HTML and TXT will be added. The check-box 'Add subfolders' will, if selected, cause Freda to (recursively) go through not only this folder but all subfolders, adding to the library all the books it finds. There is also a check box 'Use folder name for author name'; if this is selected, then for each book added, Freda will set its author name to the name of the folder containing the book (otherwise, the author will be set to '(unknown)').

Add OPDS Catalog which will let you search an OPDS book catalog, and add books from that catalog. By default, the program will start off in the FeedBooks on-line catalog, but you can specify an alternative starting location using the Default OPDS Catalog Setting. Blue and grey text in the catalog screen represents links that will take you to other catalog pages; black text represents books which you can add to your library. Use the 'Add...' softkey: tap 'Add all books' to add all books on the current catalog page, or select one book only, and then use one of the other options on to open or add that book only. The OPDS standard is still work in progress, so Freda may not be compatible with every OPDS catalog out there; if you find one that does not work, please submit a bug report. At the time of writing, Freda is compatible with the OPDS formats used by FeedBooks and Calibre (v 0.7x).

Add Single File which lets you specify the name of a single book file and add it to the library. You must give a full path name to a file on your phone (i.e. a path name beginning "\").

Add Single URL which lets you specify the URL of a single book and add it to the library. You should give a full URL to the book file.

The library stores information about each book's: title, author, series, source and language, plus the contents of any other metadata associated with the book. When a book is first addded to the library, this information is unknown (exception: if the book is taken from an OPDS catalog, some of these fields will be populated from the catalog entry). The first time that you open and read an EPUB book, this information will be read from the book's EPUB file, and added to the library.

To filter the list so that it shows only those books meeting some criterion, select the criterion from the drop-down at the top left, and type the search value into the nox at top right. In this example, I have filtered the list to show all books whose authors contain "br".


Tap to select the book you wish to open, and then tap on the 'Actions...' soft-key button at the bottom left of the screen, and select the 'Open' action. Once you have selected a book, Freda will load and paginate it; during this process the program will show a blue screen with a small flickering square at the bottom right. When the book is ready, Freda will display the first page (or in the case of a book that you have previously been reading, the last page you read).

Reading a book

To move to the next page of the book, you can do any of:

  1. press the right or down buttons on your device's key-pad/D-pad (if present)
  2. flick the screen with your finger-tip, as if flicking the page upwards, towards the top of the screen
  3. flick the screen with your finger-tip, as if turning the page to the left
  4. tap near the bottom or the right of the screen
Note: depending on how Freda's controls have been set up, some of these options may not work. See Settings.

To move to the previous page of the book:

  1. press the left or up buttons on your device's key-pad/D-pad (if present)
  2. flick the screen with your finger-tip, as if flicking the page downwards, towards the bottom of the screen
  3. flick the screen with your finger-tip, as if turning the page to the right
  4. tap near the top or the left of the screen
Note: depending on how Freda's controls have been set up, some of these options may not work. See Settings.

When moving to another page, Freda displays a 'scrolling' animation. If this is not desired, you can switch it off using the Settings screen.

While reading, you may encounter a page that Freda has not yet loaded or paginated. In this case, you will see a blue screen while Freda prepares the page for you.

Chapters and the loading of books

EPUB books are broken into chapters, and Freda takes advantage of this when loading books, by quickly loading whichever chapter you need to see, and putting it on-screen just as soon as it is ready. The program will carry on with loading all the other chapters as a 'background' task. If you have enabled the on-screen display of page numbers (see Settings), you can see this because, until the book is fully loaded, the page exact number will be unavailable and your position in the book will be shown as an approximate % estimate instead.

In the case of very large books, Freda may be unable to hold all chapters in memory at the same time. In this case, Freda will stop loading chapters, and will load/unload chapters on demand, so that you can always read the current chapter, but some earlier or later chapters will not be held in memory. In this case, the page number will be unavailable, and some features (such as 'Find') will be subject to limitations. You will be able to tell if Freda is working in this way becase the 'actvity' square at bottom right will be displayed as a solid red square.

Although TXT book files are not broken into separate chapters, Freda internally treats them as if they were, to give better flexibility around loading and paginating them. Broadly speaking, Freda splits the TXT file into chunks of 1,000 lines, and treats each chunk as a separate chapter.

Closing Freda

The Close action will unload the book from memory, but leave Freda running, and ready to read another book.

Forget Book closes the book, and in addition removes that book from your bookshelf (i.e. the list of recently used books).

When you have finished using Freda, you can use the Exit item on the shortcuts screen. This will stop the program. You can also leave Freda by pressing the [x] control at the top right of the shortcuts screen. This performs the regular Windows Mobile 'Close Application' action.

Working with Books


When there is a book loaded in Freda, the shortcuts screen will show a slider and forward/backward controls, which can be used for moving around the book. Move the slider to the desired location, and tap the 'Apply' soft-key.


More useful is the Contents control, which lets you select one of the locations defined in the ePub book's table of contents. If the table of contents is missing or malformed (a distressingly common occurrence) this option will be absent, or just won't do anything.

Go Back returns to the place you were before your last navigation operation.


The Freda shortcuts screen includes a Find action, to allow you to search for occurrences of a word in the book. If the option is 'greyed out' it means that the book is not yet fully loaded.

If you accessed the shortcuts screen by tapping on a word, the Find action will search for the next occurrence of that word.

If you tapped on a blank area of screen to bring up the menu, the Find action will present a screen for you to enter the text you wish to search for, and an option to set the search direction (forward or backward).

If Freda finds the search text, it will switch to the page containing it, highlighting the first word containing the search text (to search again, tap on that word and pick the 'find' option). If Freda reaches the end of the book without finding the search text, it will display a message box to this effect; tap on the message box's 'OK' button to clear the message off the screen. Note: you can continue reading while Freda is performing the search. To let you know that it is doing the search in the background, Freda will show its flickering 'activity' square at the bottom right of the screen.

Look Up

To look up a word in the dictionary, tap on the word and select the Look Up action. If this option is unavailable, it may be that the dictionary software is not installed. Freda works with the SlovoEd dictionary package, which can be downloaded from here. You can specify an alternative dictionary program using the Settings screen.


Words within ePub and HTML books may be links ('hrefs') to another point within the book. Such words are, by default, displayed in blue. Tapping on a link word will 'go to' the link target. To return from following a link, use the 'Go > Go Back' menu option.

If a link points to an internet resource (e.g. an HTML file or an EPUB book), Freda will attempt to download and open it. This may produce ugly results if the resource is not a proper book file.


To create a new bookmark, tap on a word to bring up the shortcuts screen, then select the Bookmark action. The word will now be bookmarked (shown on the screen by underlining). To amend a bookmark (delete the bookmark or add annotation text), tap on the underlined word. A data-entry screen is then displayed, for you to enter any annotation text that you wish.


The 'fetch book text' button will populate the 'notes' text with the text of the paragraph containing the bookmark.

To see the list of all bookmarks and annotations in the currently open book, select the Bookmarks action from the shortcuts screen. A list of bookmarks will be shown:


You can select a bookmark from the list by tapping on it, or by entering a search string into the text box and tapping the 'Find' button. To edit the selected bookmark, tap 'Actions...>Edit'; to delete it, tap 'Actions...>Delete'.


Lock/Unlock Backlight allows you to force the backlight to remain on, ignoring any device setting that normally turns the backlight off after a certain period of time. Take care: using this option can run your battery down quickly. Note also, that with the backlight locked 'on', you will be unable to switch the device off. If you want to switch the device off, you must quit from Freda or else return to the Freda 'Shortcuts' screen and tap the Backlight action again, to unlock it.


The Rotate action tells Freda to display pages rotated (for example, in landscape mode rather than portrait). Each time you tap this item, the screen will be rotated one 'stop' clockwise. Normally a 'stop' means a rotation of 90 degrees, but if you want to tell Freda never to use some screen orientations, you can tell the program which 'stop's to skip by using the Settings screen.


The Font+ and Font- actions offer a quick way to increase or decrease the font size. A slower (but more flexible) way is available on the Settings screen.


The Autoscroll On action begins auto-scrolling, and the Autoscroll Off action stops it again. While Freda is in autoscroll mode, a highlight cursor will move through the text, and the page will scroll automatically, to keep the highlighted text in the top line of the screen. In addition, the highlighted word will be displayed centred in large text in an 'RSVP' window at the bottom of the screen.


To pause scrolling tap the screen anywhere; to resume it, tap in the RSVP window at the bottom of the screen (a tap elsewhere on the screen will leave autoscroll mode).

The [+] and [-] buttons speed up and slow down the RSVP speed (you can also adjust this on the Settings screen). A small triangle in the RSVP window gives an indication of the speed setting.

Application Settings:

The Settings shortcut allows you to customise various program settings, controlling appearance and behaviour of the program. To modify a setting on this screen, tap on the rectangular area containing the setting text; this will display a dialog box that you can use to specify a new setting value. Back at the settings screen, you should then select Actions...>Use These Settings, which will return to the book display screen, with the new setting(s) now applied.


If the change means that the page contents need recalculating, you will see a blue screen while Freda prepares the page for you to view.

The Settings screen also provides an 'Actions...>Use Preset...>' menu option which you can use to load and apply 'presets' (a preset is a named set of new settings). The 'Actions...>' menu item provides two further options that allow you to, respectively, load and save presets.

The Load Preset action presents a list of available presets, and also a special 'restore factory settings' value.


Select a preset, and tap 'OK' to return to the Settings screen. You can see which settings have been modified (as they will be shown in bold) and if you wish to retain these settings, select Actions...>Use These Settings.

The Save Preset action presents a list of available presets, and also a special 'settings specific to the current book' value, for settings that you want to automatically load whenever you are reading the same book as you are now. The screen also allows you to type a new preset name, if you wish to save settings to a new name, rather than one of the existing ones.


You also need to specify what particular settings should be included in the preset that you are saving. As a rule, you don't want to include every setting in a preset: I have some presets that relate mainly to layout, where I want different layout setups for different kinds of book (one for TXTs, another for Feedbooks books, another for Calibre-converted PDFs, another for Calibre-converted HTML, ...) but I also have different settings for colour/style (one for night-time, another for reading on the train, another for sunlight) and different control setups (one for standing in a train, another for lying in bed). If you put all your settings into every preset, you will keep modifying settings that you didn't want to change.

Text Appearance

These settings are used to modify the appearance of text on the screen. Depending upon the state of other configuration settings, you will find these setting either listed in the main settings screen, or accessible by tapping a custom control labelled 'Text Appearance'.

Font The name of the font that Freda will use for book text.

Font size The font size that Freda will use for regular text (large text will be displayed 3 points larger).

Ink (Foreground) Foreground colour for text.

Paper (Background) Background colour for text.

Link ink Foreground colour for link (href) text.

Texture Patterned texture for page background.

Application Behaviour

Auto-open If this option is set, Freda will, on start-up, re-open the most recently read book.

Animations If set, animated scrolling effects will be displayed.

Flick gesture Controls the effect of flick/swipe gestures, allowing you to choose whether a left-right flick or an up-down flick will change page.

Tap screen Controls the effect of a tap gesture (in the main page area). For each gesture, available behaviours will be some or all of:

  1. Change page: move to the next or previous page of the book.
  2. Display shortcuts: display Freda's shortcuts screen.
  3. Ignore: do nothing.

Tap edge Controls the effect of a tap gesture (at the edge of the page area).

Page Edge For the 'Tap Edge' gesture setting, what % of page is considered to be 'edge'.

Permissible orientations The list of screen orientations that the 'Rotate' button will cycle through.

Lock orientation If set, Freda will resist other applications' attempts to change screen orientation. This will produce peculiar results if Freda is running at the same time as another application that also thinks it has the right to mess with the screen orientation.

Autoscroll Speed In RSVP (autoscroll) mode, how rapidly are words presented, in words per minute.

Bookshelf size The number of books in the bookshelf. Once you have opened more than this number of books, the oldest one will be removed from the shelf.

Unzip EPUB archives If set, then the program will, when opening an EPUB, extract and store all the files from the archive. If not set, the program will leave the files in the archive without extracting them (which is more economical on filesystem usage, but may be slower).

Prompt before network access If this option is set, the program will ask your permission before starting any operation that may download data from the network.

Non-touchscreen UI If this option is set, Freda will display control screens that are supposed to be easier to use on devices that lack a touchscreen.

Locations of Folders, Files and Other Resources

Temporary folder The name of the folder where Freda will keep temporary files. It's a bad idea to keep anything else in this folder, because Freda might decide to delete it.

Default OPDS catalog The name of the OPDS catalog that the 'add catalog to library' function will start with, by default.

Dictionary Program The program that should be executed to look a word in the external dictionary. If a parameter is needed, specify it using '|' - for example '\program files\dictionary.exe|lookup='{0}', where the {0} specifies how the word will be passed to the lookup program.

Customising Format and Content

Encoding The character encoding used for reading the book file. Try changing this value if some characters (notably quote marks) are wrongly displayed in a book.

Override encoding If true, the 'Encoding' setting will always be used, regardless of what is specified in the book file. If false, the Encoding setting will be used only when the book file specifies no encoding.

Max rulesets in stylesheet Some books contain a large number of spurious style definitions. To improve performance, you can tell Freda to ignore these - a zero value indicates that all definitions will be loaded; any other value specified how many to load, before ignoring all the rest

Characters are words If set, Freda will assume that every character (grapheme) in the text is a separate word. If not set, Freda will make its own judgement based upon the book's language. This setting is useful for reading Chinese books.

Force line direction If the value is 'automatic', Freda will decide line direction (left-to-right or right-to-left) based on the tags in the book file. LTR and RTL force Freda to lay lines out left-to-right (as normal for English) or right-to-left (as normal for Hebrew and Arabic).

Force word direction If the value is 'automatic', Freda will decide which order to write characters in (left-to-right or right-to-left) based on the character-set used. LTR and RTL force Freda to write words left-to-right (as normal for English) or right-to-left (as normal for Hebrew and Arabic).

Line spacing The spacing between lines. 1 gives the usual appearance.

Show Page Number If set, the page number will be shown at the foot of the page.

Show Page Number as Ch + Pg If set, the page number will be given as a chapter number, then a page-number-within-chapter. Otherwise, the page number within the book will be shown.

Show clock and battery If this option is set, the program will show a digital clock and a battery level indicator on the page.

Border The amount of border (in pixels) area that will be left blank around the edge of the page.

Force alignment If to any value but 'none', this setting will force the all text to be aligned as indicated, regardless of the formatting instructions provided by the book itself.

Force indent If set, the first line of each paragraph will be indented, regardless of the formatting instructions provided by the book itself.

Line break after para If set, a line break will be added after every after paragraph.

Remove blank lines If set, Freda will suppress consecutive blank lines in the book (any number of blank lines will be shown as a single blank line). If you've set this option and are still seeing big vertical gaps, try reducing the 'Max Margin' setting, as the gap may be a margin rather than a blank line.

Max Margin Sets a scaling factor that will make margin sizes smaller or larger. Note, it won't create a margin for you, if the book itself doesn't specify a margin in its style sheet(s).

Smart para breaks in TXT files If not set, Freda will assume that every line in a TXT file is meant to be a separate paragraph; if set, Freda will concatenate lines that (based on the absence of '.' and suchlike punctuation marks) seem to belong in a single sentence

Troubleshooting and Advanced Topics

Cover Images

In the Bookshelf view, Freda shows a cover image thumbnail for each book. For EPUB books, this is extracted from the EPUB archive in accordance with the IDPF/OPS standard (the cover image file is the target of the href attribute of an item within the manifest whose id is equal to the cover-id specified as the value of the content attribute of the meta element (within the meta-data section) whose name is "cover"). If this algorithm doesn't find a cover image, Freda will make a guess, and probably not use the image you wanted.

In this case, you should download Calibre and use it to set the correct cover image for your EPUB file.

For TXT and HTML books, Freda will look for a .jpg file in the same folder as your book, with the same name as the book, and use this for the cover image (for instance, if the book is called "Turnips.txt", Freda will look for a cover image file called "Turnips.jpg").

Style-sheets and images for HTML books

Freda can read HTML files which include images and use CSS style-sheets. For Freda to pick these images and style-sheets up, they need to be in the same folder as the HTML file concerned.

Command Line Arguments

If a command line argument is specified, Freda will assume it is the name of a book file and will open it on starting. For best results, you should specify the full path name (starting at root) for the book file. This behaviour can be useful if you want to create a short-cut that opens a particular book, or if you want to launch Freda programmatically from another application.

Book names can be specified as file names (beginning "\") or as URIs (beginning "http://" or "file:///").

Viewing images in books

To open an image using your phone's default image-viewer application, tap on the image. The image will open in that application, allowing you to pan/zoom/edit/save the image, as you wish. When you close the image-viewer, Freda will resume.


If you want to 'export' the text of a single annotation, you can do this by tapping on the bookmarked word, to edit the bookmark details, then 'Save' to leave the bookmark dialog. At this point, Freda will put the annotation text into the Windows 'clipboard'. So if you now switch to another application, the annotation text will be available to paste.

Custom Backgrounds

Freda comes with a set of texture files that you can select (on the Settings screen) for use as background to the text. You can customise this list by adding new texture bitmaps to the folder 'textures2' under the Freda program folder. The file must be a bitmap (i.e. file extension BMP).

Backing Up Freda's State

If you need to make a copy of Freda's state (for example, to transfer settings to another device or for restoration after a hard-reset), you can do this by copying the contents of the folder 'settings2' under the Freda program folder. Freda's presets (including any that you create) are stored in the 'presets2' folder under the Freda program folder, so if you want to preserve your presets, you must copy this folder too.

Margin and Layout Problems

Freda tries to interpret the margin and indent directives in a book in a reasonable way, but for some books you may have issues such as:

To resolve these problems for a particular book, use the Settings screen to change the 'Max Margin' value. By default, this is 30%; you should experiment with lower (or zero) values, and see which value gives the best appearance.

Funny Characters appearing in the text (TXT books)

A TXT file contains a stream of bytes. Any program that wants to turn those bytes into text has to make some assumption about how the author of those bytes expected them to be converted into text - because the file just contains the bytes, in doesn't include any hints about what the bytes actually mean. In technical terms, the program (e.g. Freda) needs to decide what Encoding the author used, when converting their text into bytes. To learn all about encodings, look the subject up on Wikipedia ('Unicode' is a reasonable place to start).

If you don't want to make a lifetime's study of the subject, all you really need to know is: If your TXT book appears to include streams of weird characters, particularly in places where you expected to see quote-marks, dashes or accented characters, it's happening because Freda guessed what encoding was used by the file's author, and Freda guessed wrong. You can tell Freda what encoding it should be using for a particular book by using the Settings screen.

Funny Characters appearing in the text (EPUB and HTML books)

Unlike TXT files, EPUB and HTML files contain information to say how the file's bytes are intended to encode characters.

If your EPUB or HTML document is displayed with streams of weird characters, particularly in places where you expected to see quote-marks, dashes or accented characters, it's happening because Freda was unable to understand the encoding information suppplied by the file. That could happen, for example, because the file was badly formatted (a lot of Gutenberg EPUBs have scrambled, unintelligible encoding info), or because the encoding is an unusual one. You can tell Freda what encoding it should be using for a particular book by using the Settings screen. Changing from 'Encoding per book file' to 'Device default' is quite likely to give a good result. Note that you may need to change the setting 'Override Encoding' to true, to tell Freda that it must use your selected encoding, regardless of the encoding specified in the book itself.


Windows Mobile devices generally have a very limited set of fonts installed - but it is simple to add new fonts if desired. Generally, the best way to obtain additional fonts is to copy them from your desktop PC. Look in the folder C:\Windows\Fonts\ on the desktop PC to identify the font you would like to copy, and (using ActiveSync) copy that font into the folder \Windows\Fonts on your phone.

Note: deleting fonts from the phone can be more complicated, as you may get a 'file locked' message when you try to delete the font file. In this case, just move the font file to another folder on the phone, and then soft-reset the phone. After the reset, you will be able to delete the file.

DRM-Protected Books

Books that you have bought and downloaded from such sites as Barnes and Noble and WHSmith may well be DRM-protected (encrypted). This is very likely to be the case if you have downloaded them using Adobe Digital Editions; such books are typically protected using the ADEPT copy-protection mechanism. Freda cannot read DRM-protected books (see DRM Protection). If you try to read a DRM-protected book using Freda, you will generally see just blank pages. A careful search of the internet (or, to be honest, even a rather perfunctory one) will tell you how to remove ADEPT DRM-protection from EPUB books - but do note that the procedure may be illegal where you live. I cannot recommend that you use it.

Error Messages

If Freda gives an error message when trying to open a book, you should check:

  1. Is the free memory zero, or nearly so?
  2. Is the storage card full?
  3. Have you removed a storage card that Freda is expecting to use for books or temporary files?
  4. Is the book file name valid?
You may learn something by looking at the last few lines in the 'logfile.txt' file (which will be in the Freda program folder).

Known Limitations (a.k.a. Development 'to do' list)


For performance reasons, and in recognition of the fact that Windows Mobile screens are small, Freda does not implement rich formatting features. Text alignment (left/right/centred/justified) is supported, as are the text styles regular, bold, italic and large. There is also limited support for indenting, line/page-breaks, and left, right, top and bottom margins around elements. More exotic formatting options (drop caps, flow round images, boxes, custom colours and embedded fonts ...) are not supported.

CSS Style Sheets

Freda's handling of CSS style sheets is limited in two ways:

1) In-line styles are only partially interpreted.

2) Selectors cannot be concatenated (so Freda will not understand the syntax " {...}", intended to apply the properties {...} to any elements which have a ancestor). Concatenated selectors will be ignored. Freda does understand compound selectors like or p#bar.

HTML Books

HTML books are considered to consist of only a single file. If you have a set of HTML files that constitute separate volumes of a single work, Freda will be able to open them individually, but it will not understand references/links between them. If linkages between HTML files are important for you, you should build an EPUB file out of your collection of HTML files.

.Net Compact Framework

In the ideal world, Freda's installer would figure out whether your device needed an updated version of the .Net Compact Framework, and if so it would install that updated version for you. Actually in the ideal world, the WindowsCE App Installer would take care of it all, and we poor application developers wouldn't have to worry about it. Anyhow, we are not in the ideal world, and a busy day of Googling has led me to conclude that there is no sure and easy way to accomplish it. I could build an installer that mostly did the right thing, but it could sometimes create really horrible snarl-ups, particularly on the more elderly WM5 devices and those with the less fashionable processor architectures. When I learned that, on some OEM builds, the .NetCF install may require a device reboot, I realised that this whole subject is not one that I wanted to wrestle with.

DRM-Protected EPUBS

Freda cannot read DRM-protected ePub books. The ADEPT DRM-protection mechanism that Adobe Digital Editions uses for securing DRM-protected content is incompatible with Open Source practice, because if you have access to the source code of an ADEPT-compatible book-reader, you can easily see how the ADEPT user key is stored on the user device, and write a modified version of the program that unlocks the book and saves the decrypted book data to file (rather than unlocking it and displaying it on screen). At some stage I may use my source code in a closed-source project to develop a reader program that will read DRM-protected books – but that is another story.

Bug Reports and Support Requests

Freda is a work in progress, and if you should happen to encounter any problems, I will be pleased to fix them.

Bug Reports are best emailed to me at Please include the words 'Freda bug' in the subject line and attach:

  1. Freda's log file, which you will find on your device in \Program Files\Freda\logfile.txt.
  2. The book you were opening or reading when the problem occurred.

Please give as much detail as you can about any message that Freda displayed when the problem happened.

Support Questions that the manual does not satisfactorily address can be emailed to me; I will answer them, and add to the manual as necessary.

Source Code

Is here.


Freda is released under the open source GPL 2 licence.

The program uses three third-party libraries, DotNetZipLib, OpenNetCF and the Majestic-12 HTMLParser. All are licensed on terms permitting their redistribution for commercial and non-commercial purposes. Freda also includes (in the source file CSSParser.cs) code adapted from Bonesoft's 'Simple CSS Parser' sample. This source code is also licensed on terms permitting its redistribution for commercial and non-commercial purposes.

Freda: the free ebook reader for Windows Mobile devices

Copyright © 2009-10 Turnipsoft

This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License Version 2 as published by the Free Software Foundation.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA

This program uses the DotNetZipLib library which is released under the Microsoft Public License.

Microsoft Public License (Ms-PL)

This license governs use of DotNetZipLib. If you use DotNetZipLib, you accept this license. If you do not accept the license, do not use DotNetZipLib.

1. Definitions

The terms "reproduce," "reproduction," "derivative works," and "distribution" have the same meaning here as under U.S. copyright law. A "contribution" is the original software, or any additions or changes to the software. A "contributor" is any person that distributes its contribution under this license. "Licensed patents" are a contributor's patent claims that read directly on its contribution.

2. Grant of Rights

(A) Copyright Grant- Subject to the terms of this license, including the license conditions and limitations in section 3, each contributor grants you a non-exclusive, worldwide, royalty-free copyright license to reproduce its contribution, prepare derivative works of its contribution, and distribute its contribution or any derivative works that you create.

(B) Patent Grant- Subject to the terms of this license, including the license conditions and limitations in section 3, each contributor grants you a non-exclusive, worldwide, royalty-free license under its licensed patents to make, have made, use, sell, offer for sale, import, and/or otherwise dispose of its contribution in the software or derivative works of the contribution in the software.

3. Conditions and Limitations

(A) No Trademark License- This license does not grant you rights to use any contributors' name, logo, or trademarks.

(B) If you bring a patent claim against any contributor over patents that you claim are infringed by the software, your patent license from such contributor to the software ends automatically.

(C) If you distribute any portion of the software, you must retain all copyright, patent, trademark, and attribution notices that are present in the software.

(D) If you distribute any portion of the software in source code form, you may do so only under this license by including a complete copy of this license with your distribution. If you distribute any portion of the software in compiled or object code form, you may only do so under a license that complies with this license.

(E) The software is licensed "as-is." You bear the risk of using it. The contributors give no express warranties, guarantees or conditions. You may have additional consumer rights under your local laws which this license cannot change. To the extent permitted under your local laws, the contributors exclude the implied warranties of merchantability, fitness for a particular purpose and non-infringement.

This program uses the Majestic-12 HTMLParser library, which is available under the BSD licence, as follows:

Copyright © Alex Chudnovsky, Majestic-12 Ltd (UK). 2005+ All rights reserved



Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:

* Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.

* Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.

* Neither the name of the Majestic-12 nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.


This program incorporates, in the source file CSSParser.cs, source code taken from BoneSoft's Simple CSS Parser sample, which is released under the Code Project Open Licence 1.02:

Code Project Open License 1.02

This License governs Your use of the Work. This License is intended to allow developers to use the Source Code and Executable Files provided as part of the Work in any application in any form.

The main points subject to the terms of the License are:

This License is entered between You, the individual or other entity reading or otherwise making use of the Work licensed pursuant to this License and the individual or other entity which offers the Work under the terms of this License ("Author").





  1. "Articles" means, collectively, all articles written by Author which describes how the Source Code and Executable Files for the Work may be used by a user.
  2. "Author" means the individual or entity that offers the Work under the terms of this License.
  3. "Derivative Work" means a work based upon the Work or upon the Work and other pre-existing works.
  4. "Executable Files" refer to the executables, binary files, configuration and any required data files included in the Work.
  5. "Publisher" means the provider of the website, magazine, CD-ROM, DVD or other medium from or by which the Work is obtained by You.
  6. "Source Code" refers to the collection of source code and configuration files used to create the Executable Files.
  7. "Standard Version" refers to such a Work if it has not been modified, or has been modified in accordance with the consent of the Author, such consent being in the full discretion of the Author.
  8. "Work" refers to the collection of files distributed by the Publisher, including the Source Code, Executable Files, binaries, data files, documentation, whitepapers and the Articles.
  9. "You" is you, an individual or entity wishing to use the Work and exercise your rights under this License.

Fair Use/Fair Use Rights. Nothing in this License is intended to reduce, limit, or restrict any rights arising from fair use, fair dealing, first sale or other limitations on the exclusive rights of the copyright owner under copyright law or other applicable laws.

License Grant. Subject to the terms and conditions of this License, the Author hereby grants You a worldwide, royalty-free, non-exclusive, perpetual (for the duration of the applicable copyright) license to exercise the rights in the Work as stated below:

  1. You may use the standard version of the Source Code or Executable Files in Your own applications.
  2. You may apply bug fixes, portability fixes and other modifications obtained from the Public Domain or from the Author. A Work modified in such a way shall still be considered the standard version and will be subject to this License.
  3. You may otherwise modify Your copy of this Work (excluding the Articles) in any way to create a Derivative Work, provided that You insert a prominent notice in each changed file stating how, when and where You changed that file.
  4. You may distribute the standard version of the Executable Files and Source Code or Derivative Work in aggregate with other (possibly commercial) programs as part of a larger (possibly commercial) software distribution.
  5. The Articles discussing the Work published in any form by the author may not be distributed or republished without the Author's consent. The author retains copyright to any such Articles. You may use the Executable Files and Source Code pursuant to this License but you may not repost or republish or otherwise distribute or make available the Articles, without the prior written consent of the Author.

Any subroutines or modules supplied by You and linked into the Source Code or Executable Files this Work shall not be considered part of this Work and will not be subject to the terms of this License.

Patent License. Subject to the terms and conditions of this License, each Author hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable (except as stated in this section) patent license to make, have made, use, import, and otherwise transfer the Work.

Restrictions. The license granted in Section 3 above is expressly made subject to and limited by the following restrictions:

  1. You agree not to remove any of the original copyright, patent, trademark, and attribution notices and associated disclaimers that may appear in the Source Code or Executable Files.
  2. You agree not to advertise or in any way imply that this Work is a product of Your own.
  3. The name of the Author may not be used to endorse or promote products derived from the Work without the prior written consent of the Author.
  4. You agree not to sell, lease, or rent any part of the Work. This does not restrict you from including the Work or any part of the Work inside a larger software distribution that itself is being sold. The Work by itself, though, cannot be sold, leased or rented.
  5. You may distribute the Executable Files and Source Code only under the terms of this License, and You must include a copy of, or the Uniform Resource Identifier for, this License with every copy of the Executable Files or Source Code You distribute and ensure that anyone receiving such Executable Files and Source Code agrees that the terms of this License apply to such Executable Files and/or Source Code. You may not offer or impose any terms on the Work that alter or restrict the terms of this License or the recipients' exercise of the rights granted hereunder. You may not sublicense the Work. You must keep intact all notices that refer to this License and to the disclaimer of warranties. You may not distribute the Executable Files or Source Code with any technological measures that control access or use of the Work in a manner inconsistent with the terms of this License.
  6. You agree not to use the Work for illegal, immoral or improper purposes, or on pages containing illegal, immoral or improper material. The Work is subject to applicable export laws. You agree to comply with all such laws and regulations that may apply to the Work after Your receipt of the Work.


Indemnity. You agree to defend, indemnify and hold harmless the Author and the Publisher from and against any claims, suits, losses, damages, liabilities, costs, and expenses (including reasonable legal or attorneys’ fees) resulting from or relating to any use of the Work by You.



  1. This License and the rights granted hereunder will terminate automatically upon any breach by You of any term of this License. Individuals or entities who have received Derivative Works from You under this License, however, will not have their licenses terminated provided such individuals or entities remain in full compliance with those licenses. Sections 1, 2, 6, 7, 8, 9, 10 and 11 will survive any termination of this License.
  2. If You bring a copyright, trademark, patent or any other infringement claim against any contributor over infringements You claim are made by the Work, your License from such contributor to the Work ends automatically.
  3. Subject to the above terms and conditions, this License is perpetual (for the duration of the applicable copyright in the Work). Notwithstanding the above, the Author reserves the right to release the Work under different license terms or to stop distributing the Work at any time; provided, however that any such election will not serve to withdraw this License (or any other license that has been, or is required to be, granted under the terms of this License), and this License will continue in full force and effect unless terminated as stated above.

Publisher. The parties hereby confirm that the Publisher shall not, under any circumstances, be responsible for and shall not have any liability in respect of the subject matter of this License. The Publisher makes no warranty whatsoever in connection with the Work and shall not be liable to You or any party on any legal theory for any damages whatsoever, including without limitation any general, special, incidental or consequential damages arising in connection to this license. The Publisher reserves the right to cease making the Work available to You at any time without notice


  1. This License shall be governed by the laws of the location of the head office of the Author or if the Author is an individual, the laws of location of the principal place of residence of the Author.
  2. If any provision of this License is invalid or unenforceable under applicable law, it shall not affect the validity or enforceability of the remainder of the terms of this License, and without further action by the parties to this License, such provision shall be reformed to the minimum extent necessary to make such provision valid and enforceable.
  3. No term or provision of this License shall be deemed waived and no breach consented to unless such waiver or consent shall be in writing and signed by the party to be charged with such waiver or consent.
  4. This License constitutes the entire agreement between the parties with respect to the Work licensed herein. There are no understandings, agreements or representations with respect to the Work not specified herein. The Author shall not be bound by any additional provisions that may appear in any communication from You. This License may not be modified without the mutual written agreement of the Author and You.

This program uses the OpenNetCF library, which is licensed under the OpenNETCF Shared Source License.

OpenNETCF Shared Source License


This license governs use of the accompanying software ("Software"), and your use of the Software constitutes acceptance of this license.

Subject to the restrictions below, you may use the Software for any commercial or noncommercial purpose, including distributing derivative works.


A. "OpenNETCF" refers to OpenNETCF Consulting, LLC, a limited liability corporation organized and operating under the laws of the state of Maryland.

B. "SDF" refers to the OpenNETCF Smart Device Framework, which is an OpenNETCF software product

C. "SOFTWARE" refers to the source code, compiled binaries, installation files documentation and any other materials provided by OpenNETCF.


You agree that:

A. You are NOT allowed to combine or distribute the SOFTWARE with other software that is licensed under terms that seek to require that the SOFTWARE (or any intellectual property in it) be provided in source code form, licensed to others to allow the creation or distribution of derivative works, or distributed without charge.

B. You may NOT distribute the SOFTWARE in source code form to any other person, company, government, group or entity.

C. You may NOT decompile, disassemble, reverse engineer or otherwise attempt to extract, generate or retrieve source code from any compiled binary provided in the SOFTWARE.

D. You will (a) NOT use OpenNETCF's name, logo, or trademarks in association with distribution of the SOFTWARE or derivative works unless otherwise permitted in writing; and (b) you WILL indemnify, hold harmless, and defend OpenNETCF from and against any claims or lawsuits, including attorneys fees, that arise or result from the use or distribution of your modifications to the SOFTWARE and any additional software you distribute along with the SOFTWARE.

E. The SOFTWARE comes "as is", with no warranties. None whatsoever. This means no express, implied or statutory warranty, including without limitation, warranties of merchantability or fitness for a particular purpose or any warranty of title or non-infringement.

F. Neither OpenNETCF nor its suppliers will be liable for any of those types of damages known as indirect, special, consequential, or incidental related to the SOFTWARE or this license, to the maximum extent the law permits, no matter what legal theory its based on. Also, you must pass this limitation of liability on whenever you distribute the SOFTWARE or derivative works.

G. If you sue anyone over patents that you think may apply to the SOFTWARE for a person's use of the SOFTWARE, your license to the SOFTWARE ends automatically.

H. The patent rights, if any, granted in this license only apply to the SOFTWARE, not to any derivative works you make.

I. The SOFTWARE is subject to U.S. export jurisdiction at the time it is licensed to you, and it may be subject to additional export or import laws in other places. You agree to comply with all such laws and regulations that may apply to the SOFTWARE after delivery of the SOFTWARE to you.

J. If you are an agency of the U.S. Government, (i) the SOFTWARE is provided pursuant to a solicitation issued on or after December 1, 1995, is provided with the commercial license rights set forth in this license, and (ii) the SOFTWARE is provided pursuant to a solicitation issued prior to December 1, 1995, is provided with Restricted Rights as set forth in FAR, 48 C.F.R. 52.227-14 (June 1987) or DFAR, 48 C.F.R. 252.227-7013 (Oct 1988), as applicable.

K. Your rights under this license end automatically if you breach it in any way.

L. This license contains the only rights associated with the SOFTWARE and OpenNETCF reserves all rights not expressly granted to you in this license.

Copyright © 2006 OpenNETCF Consulting, LLC. All rights reserved.