Prerequisites:
- a jailbroken Kindle 3
- access to a shell on the Kindle (by running a terminal, or connecting via SSH)
- a Debian chroot on the Kindle
Cross compilation tools will also be needed. This is how to do it under Debian Squeeze:
Add the emdedian repository[1]:
1 2
| vi /etc/apt/sources.list apt-get install emdebian-archive-keyring
|
Install ARM cross compilation tools:
1 2 3 4
| apt-get update apt-get install build-essential apt-get install linux-libc-dev-armel-cross libc6-armel-cross libc6-dev-armel-cross binutils-arm-linux-gnueabi gcc-4.3-arm-linux-gnueabi g++-4.3-arm-linux-gnueabi gdb-arm-linux-gnueabi uboot-mkimage
|
Compile the sources:
Prepare the build directory that will contain the ARM binaries:
Download, configure and compile the alsa library[2]:
1 2 3 4 5 6 7
| wget ftp://ftp.alsa-project.org/pub/lib/alsa-lib-1.0.25.tar.bz2 tar xzf alsa-lib-1.0.25.tar.bz2 cd alsa-lib-1.0.25 CC=arm-linux-gnueabi-gcc ./configure --target=arm-linux --host=i686-linux --prefix=/ make make install DESTDIR=/usr/arm-linux-gnueabi/ make install DESTDIR=$(pwd)/../build
|
Download and configure pjsip:
1 2 3 4 5
| cd .. wget http://www.pjsip.org/release/1.12/pjproject-1.12.tar.bz2 tar xf pjproject-1.12.tar.bz2 cd pjproject-1.12 CC=arm-linux-gnueabi-gcc ./configure --target=arm-linux --host=i686-linux --prefix=/usr
|
Make sure that alsa was found:
You should see something like:
1 2 3
| ... ac_cv_header_alsa_version_h=yes ac_pa_use_alsa='1'
|
Compile pjsip:
1 2 3 4 5
| make dep make make install DESTDIR=$(pwd)/../build cp pjsip-apps/bin/pjs* ../build/usr/bin/ rename 's/-arm-.*//' ../build/usr/bin/pjs*
|
To save precious space, you can delete the include directories that shouldn’t be needed on the device:
1 2
| rm -r build/include rm -r build/usr/include
|
Copy the contents of the build directory into the root directory of the chroot running on the Kindle.
Create a configuration pjsua file with options that optimize for running on a slow device[3]:
1 2 3 4 5 6 7 8
| cat > pjsua-kindle.conf << EOF --capture-dev 1 --add-codec pcma --snd-auto-close -1 --clock-rate 8000 --quality 2 --ec-tail 0 EOF
|
pjsua should now be able to make VoIP calls:
1
| pjsua --config-file pjsua-kindle.conf
|
References:
[1] http://wiki.micromint.com/index.php/Debian_ARM_Cross-compile
[2] http://omappedia.org/wiki/ALSA_Setup#ALSA_library
[3] https://trac.pjsip.org/repos/wiki/audio-check-cpu