Building for iPhone

This page will tell you how to get Boodler running on the iPhone. If you have any questions or want anything cleared up, feel free to contact me at aargri@gmail.com. This is an extremely unofficial and unsupported platform for Boodler, though. If you mess up your iPhone while doing this, it's not my fault.

Option 1: Install Boodler through Cydia

If you have a jailbroken iPhone with Cydia installed, you can just install Boodler from Cydia and avoid the mess of compiling it on your iPhone. This is certainly the easiest option.

First, open up Cydia and touch 'Manage' down at the bottom. Then, click on 'Sources', then 'Edit', then 'Add'. In the box that pops up, type "http://gamma-level.com/forever/cydia-boodler/". Then hit 'Add Source'.

Note to zarf: I appreciate that you may want to keep this sort of stuff on boodler.org, as you did with the patch file. This repository is a directory of files, which can be found in a tarball here. I'm perfectly fine with hosting it, however, and I'll keep it up-to-date with Boodler releases as they appear.

Now, hit 'Done', and Cydia will start to update it's package information. Ignore any errors, I got quite a few but it didn't seem to matter. Then, click on the newly-added 'Boodler Cydia Repository', then the Boodler package, and you can install from there. You can also find Boodler in the 'Multimedia' section.

You will still need some type of terminal to use Boodler, as there is no UI for it. I suggest MobileTerminal, or an ssh server, such as OpenSSH, both of which you can install from Cydia.

Option 2: Install Boodler from source

I would only recommend compiling from source if you really know what your doing. Installing through Cydia is easier, and it'll save you about 150MB of space that's taken up by the compiler and such.

It looks long, but it's actually only verbose. If you have any experience with technology (i.e. you have compiled boodler before) this shouldn't be too hard. Otherwise, it should be easy enough to follow.

Prerequisites

These are some obvious and some not-so-obvious requirements:

A jailbroken iPhone

There are many guides available for jailbreaking your iPhone, just do a Google search. Unfortunately, boodler is not likely to come to the official App Store any time soon, because python, which boodler needs, would be a mad beast to port without full access to the phone's filesystem.

Cydia

Cydia is probably already on your phone if it's jailbroken, and if it's not, then Installer probably is. You can install Cydia from Installer.

For those interested, Cydia is a port of debian's package management system to the iPhone, among other things. It is immensely useful here.

Shell Access

This can be done through SSH (preferred), or MobileTerminal (simpler).

You can install MobileTerminal through Cydia. Just launch it after it's done installing, and you have a shell open on your phone! You will need to be root to compile and install boodler, so type in su and your password ('alpine' if you don't know).

If you want to use SSH (which is easier to work with, but harder to set up) install the OpenSSH package in Cydia. It may already be installed. Then, restart your phone. Open up a terminal window in your *nix flavor of choice, and type 'ssh -l root iphone.ip' (replacing 'iphone.ip' with your iphone's IP address). Type in the password (again, if you don't know your password, it's 'alpine'). You should now have a shell open on your phone.

Getting Ready to Install

I highly recommend plugging your phone in and disabling auto-lock in the settings. Some of this can take a while, and auto-lock cancels them. Or, you can just touch the screen occasionally. Just don't let it lock.

OK. Lets go.

Type this in the shell (make sure cydia is closed):

apt-get install gzip iphone-gcc ldid make nano python setuptools tar wget com.bigboss.20toolchain patch

(as of iPhone OS 3.0 [or maybe earlier], this command exits with apt complaining about not being able to install libgcc, which is no longer necessary. Go here to get a dummy package that fools apt into thinking libgcc was installed)

It may ask some questions. Answer in a way that lets the install continue (generally Y / yes).

This can take a while as it downloads and installs the stuff you need to continue.

Type this to fetch the boodler source, unpack it, and change into it's directory:

wget http://boodler.org/dl/Boodler-2.0.2.tar.gz
tar -xzvf ./Boodler-2.0.2.tar.gz
cd Boodler-2.0.2

Patching Boodler

This part is only slightly necessary. It patches setup.py to search for headers somewhere else, and also lets boodler continue after you lock the phone. It's pretty handy, actually.

If you want to do without, edit setup.py so the osxaq line searches for CoreAudio/CoreAudio.h and AudioToolbox/AudioQueue.h instead, and change setup.cfg so the macosx driver is not compiled.

Easier way is the patch. So, this command will download the patch and apply it:

wget http://boodler.org/dl/etc/Boodler-2.0.2-iPhone.patch
patch -p1 < Boodler-2.0.2-iPhone.patch

That is a bit easier than hand-editing files, no?

Building and Installing Boodler

Finally, we're here. This is the home stretch. Run these now to build boodler and sign the driver:

python setup.py build
ldid -S build/lib.darwin-10.5-arm-2.5/boodle/cboodle_osxaq.dylib

Now we need to install boodler. If you're on SSH, we're good. If you're on MobileTerminal, type 'su' and type in that password from earlier.

To install boodler, type:

python setup.py install

(if you're on MobileTerminal, type 'exit' afterwards. If you're on SSH, type 'cd ../mobile && su mobile' afterwards)

Boodler is now installed!

Test Boodler

This is listed elsewhere, but still, it's great to listen to your handiwork.

boodler.py --testsound

If nothing plays, check your volume levels. If it still doesn't work, email me and I'll try to help.

Boodler can now be used like on a desktop system, with one change. If you used ssh, you must always su mobile after logging in, as boodler-mgr.py doesn't like installing packages as root on the iPhone.

Have fun!

Building for iPhone - last changed 2009-08-27 12:48 by Aaron Griffith (agrif)