Skip to main content
Massively Parallel Procrastination

Savory

UPDATED 5 April 2009 - 11:16 EDT: Pointers changed to Savory installer and uninstaller 0.06 which provide minor run-time reliability and book-detection fixes. If you are running 0.05, you should uninstall the old version and install 0.06.

UPDATED 6 April 2009 - 9:41 EDT: I put together beta-quality support for picture-perfect PDF production. You can try it out if you promise to report back

UPDATED 6 April 2009 - 22:44 EDT:Screenshots of savory's improved PDF converter.


Over the past few weeks, I've spent much of my spare time with my new Kindle2...When I bought it, I was excited to have a gorgeous, solidly built ebook reader backed by Amazon's catalog. I figured I'd end up reading a bit more than I already did and spending a bit more money on books than I already did. Both turned out to be true. What I didn't count on was finding a new hobby.

Hi, I'm Jesse and I have a software problem.

When I get a new bit of hardware, I often end up writing software for it. In 2001, when I got one of Canon's first Digital SLRs, I found myself writing code to extract usable images from the "RAW" image files the camera produced. This fall, I picked up a new T-Mobile G1 to replace an iPhone...and found the email client lacking. The Android platform that the G1 runs on is free and open. So I dusted off some long-unused Java experience and created K9, an enhanced version of Android's email client.

I really didn't think this would happen with the Kindle. I was wrong.

What is Savory?

Savory is a native ebook conversion package for the Kindle 2.
It lets you download and read PDFs and ePubs on the Kindle without
a manual conversion step.

So, you hacked the Kindle?

No. There have actually been a number of other user-generated
Kindle updates. igorsk
created the toolset which generates Kindle and Kindle2 updates.
Other members of the Kindle community have created Kindle2 updates
which change the Kindle's fonts to support books in non-western
language, let you set your own screensavers and a bunch more. These
packages already contain everything a technically savvy user would
need to install software on the Kindle. What I did was to port an
ebook-conversion package to run reasonably efficiently on a 500mhz
ARM with 128 megabytes of system memory and to write a small program
which watches for new ebooks in a few chosen formats and run those
through the conversion tool.

Does Savory let me decrypt books Amazon has protected with DRM?

No

So this is like KindlePid?

Nope. Not at all. KindlePid is a tool for reverse-engineering
your Kindle's "Mobipocket Pid." KindlePid lets you buy DRM-protected
ebooks from providers other than Amazon. Savory converts PDFs and
ePubs that you download to your Kindle over WhisperNet or 3G into
unprotected .mobi documents. There are web-based and desktop tools
which can do everything Savory can do. Savory just brings these
features directly to your Kindle 2.

Does Savory let me read DRMed ebooks?

No. Savory does not include support for ebooks protected by
DRM.
DRM is an incredibly "hot" topic in the ebook world right
now. There are varying opinions on its efficacy. My opinions on the
matter aren't relevant, except to say that I am not touching the
topic with a 10 foot pole. It will not convert DRM-protected ebooks
into a format the Kindle will read. It will not add or remove DRM
from any ebook.

Does Savory let me do anything Amazon didn't already let me do for free?

No. It just makes some things that are a little cumbersome out
of the box simple and transparent. It's already possible to use
desktop and web based services to transcode ePub and PDF documents
into the Kindle-compatible Mobipocket format. Amazon also provides
both free and for-pay email-based conversion services you can
use.

Does Savory work with the Kindle 1?

No.

Why did you create Savory?

I'm in love with my Kindle. I've been reading ebooks on screens
of various sorts for many years, but the Kindle2 is the first device
that I actually enjoy reading as much as I enjoy reading
paper books. I've tried other ebook readers, but for a variety of
reasons, they just don't work for me. My goal is to make it easier
for readers to read more free content on the Kindle.

I got the idea after reading Tim O'Reilly's editorial
in Forbes
about why the Kindle platform will be more successful
if it's more open. My first experiments were actually in server-based
transcoders to convert PDFs and epubs to Kindle-compatible Mobipocket
books, but I quickly realized that running the converter locally
on the Kindle would result in a much better user experience and
make the Kindle more useful. And yeah, it seemed like an interesting
project.

What document formats does Savory let me read?

Savory allows you to read .epub and .pdf files on your Kindle.
It does this by converting these documents to Mobipocket format
ebooks using Calibre.
You should note that the version of Calibre Savory uses only works
with text-based PDFs. If you have image-based or scanned PDFs,
conversion will fail. (Images in your PDFS are ok. There
just needs to be some text to extract.)
Updated: Screenshots of the new and improved PDF converter.

How does Savory work?

Plain-english version

Savory installs a small program which runs on your Kindle and
watches for new files in the 'Documents' directory with names ending
in '.epub' and '.pdf'. When the system notifies Savory that a
document has shown up, it wakes up and runs an open-source file
conversion program called Calibre. Savory also updates
your Kindle2's browser configuration file to tell it that the Kindle
can now handle .pdf and .epub documents.

Technical version

Savory changes the browser configuration file to allow download of pdf
and epub documents. It adds a new "init" script which tries to mount
savory-image.ext3 on boot. If that succeeds, it runs bin/savory_daemon
from within the image mentioned above. savory_daemon is a Python
script that watches the documents/ directory and invokes a converter based on Calibre when it sees something that looks right.

Is Savory supported by Amazon?

No. If you have a problem with Savory, DO NOT CONTACT AMAZON. This isn't software they wrote. They're not responsible for it. Please don't bother them about it.

If the nice folks at Amazon contact me (you can find my email
address at the bottom of this FAQ) and ask me to stop distributing
Savory, I will do so. My goal isn't to "hack" the Kindle, deprive
Amazon of revenue or place an increased support burden on Amazon's
Kindle team. I just want to make the Kindle2 an even more useful
reader than it already is.

Does Savory void my warranty?

I don't know. If you're not comfortable with the possibility, do not install Savory.

Does Savory come with any guarantee or warranty?

I guarantee that Savory will not give you the ability to fly or
to see through walls. Past that, no. Savory comes with no warranty
or guarantee OF ANY KIND. If it causes your Kindle to burst into
flames or gives your pets the ability to read, you are ENTIRELY ON
YOUR OWN. By downloading and installing Savory, you accept full
responsibility for anything it does.

Savory is distributed under the MIT license:

Permission is hereby granted, free of charge, to any person
obtaining a copy of this software and associated documentation files
(the "Software"), to deal in the Software without restriction,
including without limitation the rights to use, copy, modify, merge,
publish, distribute, sublicense, and/or sell copies of the Software,
and to permit persons to whom the Software is furnished to do so,
subject to the following conditions:

The above copyright notice and this permission notice shall be
included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR
ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF
CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

What do I do if Savory breaks my Kindle?

Head on over to the MobileRead Kindle forums and post your sob story. Hopefully, someone there can help figure out what went wrong and help you get back to a working state. Remember that Savory comes with absolutely no warranty and everybody on MobileRead who might help you out is a volunteer.

How do I install Savory?

Installing Savory or any other third-party update on your Kindle may destroy your Kindle. If that happens, you will have a $360 paper weight. DO NOT INSTALL SAVORY UNLESS YOU'RE WILLING TO END UP WITH A DEAD KINDLE.

You'll need to download three files:

savory-image.zip

This file contains Savory's file-conversion system and assorted tools.

Download and unzip this file. Then, mount your Kindle2 on your desktop with USB and drag savory-image.ext3 into the "system" folder on your Kindle2.

update_RemoveSavory-0.06.bin

This file is a Kindle update which will remove an installed copy of Savory from your Kindle. Please keep a copy of this file handy in case you ever need it.

update_Savory-0.06.bin

This file is a Kindle update.

You should copy this file to the root directory of your Kindle. After you do that, unmount the kindle and click the "Menu" button, select "Settings", click the "Menu" button and click "Update Your Kindle" This will apply the update.

If "Update Your Kindle" is greyed out, mount the Kindle on your desktop again and DELETE the update file. Then, unmount the Kindle. If you're not already on the Settings page, click "Menu" and select "Settings".
Make sure your Kindle is plugged into your computer with the USB cable.
Click "Menu" and select "Restart". The Kindle will boot up and immediately enter USB mode. Copy the update file to the Kindle again and follow the instructions above.

I've found that the Kindle is much happier recognizing update files if you
reboot the Kindle while it's connected to your computer with USB and copy the update to the Kindle before the Kindle's UI comes up at all

If you copy the file to your kindle and reboot
without applying the update, it will end up in a reboot loop - I haven't
figured out why yet. If that happens, hold down the "Home" button while
booting to get into recovery mode. From there, you can mount the Kindle
on your desktop with USB, delete the .bin file and try again.

How do I turn Savory off temporarily?

Mount your Kindle on your computer with USB. Rename the
savory-image.ext3 file in the Kindle's "System" folder. Then, unmount
your Kindle, click "Menu", select "Settings", click "Menu" and click
"Restart your Kindle." When you later want to re-enable Savory,
repeat the process, naming the file back to "savory-image.ext3"

How do I remove Savory completely?

If you've decided that Savory isn't for you or you need to remove
Savory to perform an Amazon-provided system update, it's a two step process.
First, you'll need to follow the instructions above about how to temporarily turn off Savory. Then, download and run the "update_RemoveSavory-0.06.bin" system update and
apply it just like you applied the original system update.

Amazon's system updates very carefully check each and every file
they're about to update to make sure that they are exactly as Amazon
left them. This ensures that a system update doesn't unexpectedly
corrupt an "important" file.
Savory updates the Kindle's browser
configuration to allow download of pdf and epub files, adds an "init
script" to start up the savory daemon which watches for new files
to convert and modifies the Kindle's "version.txt" file. This way,
anyone doing support for your Kindle will know it's not running a
stock system image and NOT ELIGIBLE FOR SUPPORT FROM AMAZON.

Savory copies each file it modifies before making changes. All files Savory modifies are saved with the file suffix "-beforesavory". When you uninstall Savory, it restores the pristine versions of these files.

What does Savory do to my battery life?

It makes it shorter. So far, it doesn't feel like it makes it much shorter. Comparisons and benchmarks would be appreciated

What does Savory do with the "originals" of ebooks it converts?

You'll find the originals of any book Savory converts (or fails to convert) in the savory-archive folder on your Kindle when you browse it from your computer.

Where can I get the source code to Savory?

Savory is hosted on Google Code: code.google.com/p/savory

What software does Savory use?

Savory wouldn't have been possible without kindle-update-maker, created by Igor Skochinsky.

Savory is about 200 lines of Bourne Shell and Python, built to drive a modified copy of Kovid Goyal's open-source Calibre ebook conversion and management suite.

The disk image containing the Savory daemon and the modified version of Calibre contains a number of dependencies, listed below. You can download all of these source tarballs from code.google.com/p/savory.

The patches to Calibre are available in the same source repository as the rest of Savory. All other packages are unmodified.

http://bazaar.launchpad.net/%7Ekovid/calibre/trunk Revision 2689
http://unladen-swallow.googlecode.com/svn/branches/release-2009Q1-maint Revision: 370
ftp://ftp.qtsoftware.com/qt/source/qt-embedded-linux-opensource-src-4.4.3.tar.gz
http://www.rarlab.com/rar/unrarsrc-3.7.5.tar.gz
http://www.riverbankcomputing.co.uk/static/Downloads/sip4/sip-4.7.9.tar.gz
http://sourceforge.net/project/downloading.php?group_id=68617&use_mirror=voxel&filename=rtf2xml-1.33.tar.gz&a=75791959
ftp://ftp.gnu.org/pub/gnu/readline/readline-6.0.tar.gz
http://ftp.gnu.org/pub/gnu/ncurses/ncurses-5.7.tar.gz
http://xmlsoft.org/sources/libxslt-1.1.24.tar.gz
http://xmlsoft.org/sources/libxml2-2.7.3.tar.gz
ftp://ftp.gnu.org/pub/gnu/gdbm/gdbm-1.8.3.tar.gz
http://savannah.inetbridge.net/freetype/freetype-2.3.9.tar.gz
http://effbot.org/media/downloads/elementtree-1.2.7-20070827-preview.zip
http://www.openssl.org/source/openssl-0.9.8j.tar.gz
http://git.dbzteam.org/?p=pyinotify.git;a=snapshot;h=HEAD;sf=tgz as of 2009-03-30 - pyinotify-0.8.1-py2.6.egg-info
http://sourceforge.net/project/downloading.php?group_id=45839&use_mirror=voxel&filename=pdftohtml-0.39.tar.gz&a=40219524
http://effbot.org/downloads/Imaging-1.1.6.tar.gz
ftp://ftp.imagemagick.org/pub/ImageMagick/ImageMagick-6.5.0-9.tar.gz
http://www.crummy.com/software/BeautifulSoup/download/3.x/BeautifulSoup-3.1.0.tar.gz
http://wwwsearch.sourceforge.net/ClientForm/src/ClientForm-0.2.10.tar.gz
http://labix.org/download/python-dateutil/python-dateutil-1.4.1.tar.gz
http://wwwsearch.sourceforge.net/mechanize/src/mechanize-0.1.11.tar.gz
http://sourceforge.net/project/downloading.php?group_id=68617&use_mirror=voxel&filename=rtf2xml-1.33.tar.gz&a=50591281
http://pypi.python.org/packages/source/s/setuptools/setuptools-0.6c9.tar.gz#md5=3864c01d9c719c8924c455714492295e
http://pypi.python.org/packages/source/l/lxml/lxml-2.2.tar.gz#md5=b3f12344291aa0d393915e7d8358b480
http://www.imagemagick.org/download/python/PythonMagick-0.9.tar.gz
http://www.riverbankcomputing.co.uk/static/Downloads/PyQt4/PyQt-x11-gpl-4.4.4.tar.gz

How much code is Savory?

The unique parts of Savory are about 85 lines of shell script and 135 lines of Python.

Why's the Savory disk image nearly 90 megabytes uncompressed?

Savory uses Calibre, a free and open ebook conversion suite. In turn, Calibre uses Python, Qt and some other libraries. While I've slimmed down the requirements by hand, we have a long way to go before Savory fits in 5 or 10 megabytes.

What license is Savory under?

The original code in Savory is available under the terms of the MIT License. The various components bundled with Savory are all free or open software, but they're not all released under the same license.

I want to be able to use my Kindle to read books in some other format. How do I make that happen?

Savory supports a subset of the conversions provided by Calibre. If you contribute
to Calibre, Savory should be able to take advantage of those
improvements.

Can I run other software on my Kindle?

I don't know. Can you?

Can you help me run other software on my Kindle?

No.

The Kindle has a 3G modem in it. Can I use that to get free internet access for my laptop?

Don't even think about it. The Kindle's 3G internet access is currently provided gratis to all Kindle users for the purpose of browsing the web and downloading ebooks. Amazon could choose to start charging for this "experimental" feature at any time. On top of that, Amazon knows where you live, has your credit card number and, thanks to the Kindle's GPS, knows where you are right now.

Where can I get support for Savory?

The MobileRead forums are probably the right place to start.

So, why is it called Savory?

When I first got a my Kindle2, I experimented with a web-based transcoding proxy which lets you download ePub and PDF files to the Kindle using a tool running on a server. I called the project an "unsavory ePub hack." This new tool is a good deal more elegant and easier to use. It's no longer unsavory. That must mean it's Savory

Savory is awesome! Now I want a Kindle!

Great! That's the kind of thing I like to hear. Savory is (and will always be) 100% free. BUT!
Shameless plug warning
If you buy a kindle (or anything else) from Amazon, I'll earn a referral fee which goes to feed my ebook habit. Buying a Kindle 2 from Amazon through this site helps us tell Amazon that we want the Kindle to support open formats. If more than a few of you buy a Kindle through this blog, I'll post a running tally.

Who created Savory?

I'm Jesse Vincent. You can reach me at jesse - at - fsck.com. Please don't contact me directly for help with Savory, even if it sets your dog on fire or you're sure that I'll make an exception for you.

If you need help with Savory, I refer you to the forums at mobileread.com. (See above)