[Nook Touch Android Development] aruangra:
I installed Calibre on my Nook Touch to fetch news and serve contents to reader programs in my Nook Touch. The method can be used with other Android devices. In short, Calibre is installed in Debian 6.0.0 chroot environment in Android 2.1. The steps are as follows:

1. Prepare a Debian 6.0.0 package for an ARM-based CPU using this command in a PC with Debian 6.0.0:

debootstrap --arch armel --foreign squeeze debian --verbose http://ftp.debian.org/debian

Instead of making the package by yourself, you can download my package from http://www.4shared.com/file/RRuFfjRf/debiantar.html

and uncompress it to the folder “debian”

2. Make an EXT2 partition on an SD card. The partition size should be larger than 1 GB. On a Windows PC, you can use MiniTool Partition Wizard Home Edition. Then use a Debian Live CD or Linux in a virtual machine to copy the folder (in Step 1) to the new partition.

3. Connect to the device

adb connect 192.168.XXX.XXX
adb shell

4. Mount partition of the SD card to a directory. In my case, I use /data/local/mnt as a mounting point. Note that my partition is at /dev/block/vold/179:21. You may need to find your partition by trial-and-error.

cd /data/local/
mkdir mnt
mount -t ext2 -o noatime /dev/block/vold/179:21 /data/local/mnt

5. Setup the chroot environment. Read References at the end of this post for details.

cd /data/local/mnt
chroot debian /bin/bash
export PATH=/usr/bin:/usr/sbin:/bin:$PATH
export TERM=linux
export HOME=/root
export USER=root
mount -t devpts devpts /dev/pts
mount -t proc proc /proc
mount -t sysfs sysfs /sys
/debootstrap/debootstrap --second-stage
echo 'nameserver 8.8.8.8' > /etc/resolv.conf
echo 'deb http://ftp.debian.org/debian squeeze main' > /etc/apt/sources.list
apt-get update

6. Install calibre 0.7.7 (larger than 400 MB). The program is installed to /usr/share/calibre/

apt-get install calibre
apt-get install python-routes

7. Set environment variables in .bashrc

7.1 Copy .bashrc to the local PC.

adb pull /data/local/mnt/debian/root/.bashrc

7.2 Add the following commands to .bashrc

export LANG=en_US.UTF-8
export TZ=Asia/Bangkok
export PATH=/usr/bin:/usr/sbin:/bin:$PATH
export TERM=linux
export HOME=/root
export USER=root

7.3 Send .bashrc to the device

adb push .bashrc /data/local/mnt/debian/root/

8. To use Calibre, enter the chroot environment:

chroot /data/local/mnt/debian /bin/bash

Try the following commands: (My epup files are in /usr/share/calibre/serve/)

ebook-convert /usr/share/calibre/recipes/cnn.recipe /usr/share/calibre/serve/cnn.epub
calibredb add --duplicates --with-library /var/www/ /usr/share/calibre/serve/cnn.epub
calibre-server --with-library /var/www/ --daemonize

9. There are several ways to access epub files to use in CoolReader, Aldiko, or other readers for Android

- calibre server

- lighttpd webserver

- mounting the directory in the chroot to the SD card

I prefer the third option because I don't need to run the server all the time.To mount the directory in chroot to a mounting point in the SD card, do this:

mount -o bind /data/local/mnt/debian/usr/share/calibre/serve/ /sdcard/eBooks/Calibre

In Coolreader/Aldiko, epub files can be accessed from /sdcard/eBooks/Calibre.

10. SUMMARY

10.1 When rebooting your device, you will need to input the following commands to mount the partition and directory, and setup chroot. You can use "Terminal Emulator" to do it on your Nook Touch.

mount -t ext2 -o noatime /dev/block/vold/179:21 /data/local/mnt
mount -o bind /data/local/mnt/debian/usr/share/calibre/serve/ /sdcard/eBooks/Calibre
chroot /data/local/mnt/debian /bin/bash -c "/bin/mount -t devpts devpts /dev/pts"
chroot /data/local/mnt/debian /bin/bash -c "/bin/mount -t proc proc /proc"
chroot /data/local/mnt/debian /bin/bash -c "/bin/mount -t sysfs sysfs /sys"

10.2 Every morning you can fetch news by running Terminal Emulator and enter the following command. When opening CoolReader, the morning news is there :)

su
chroot /data/local/mnt/debian /bin/bash
ebook-convert /usr/share/calibre/cnn.recipe /usr/share/calibre/serve/cnn.epub

If you have a cleaner solution for this step (10.2), please share :)

References

http://kristof.vanhertum.be/?p=132

http://www.nslu2-linux.org/wiki/DS101/Debian

http://evilzone.org/android/debian-on-android/

http://www.saurik.com/id/10

http://packages.python.org/APScheduler/

http://www.read.in.th/node/1164