Here is my step-by-step of putting Android on my iPhone, typed in as I did it..
I don’t recommend anyone do anything to their iPhone that would void the warranty or be against their terms of service/contract, I just did this because I am a developer and insanely curious to see it working, and because my iPhone is untethered, jailbroken, unlocked, and there is NO sim card in it, it is basically a glorified iPod Touch LOL … My device is a iPhone 3G running 3.1.2 (I had updated to 4.0, then 4.0.1, but it had issues with some apps and crashing so I restored back to 3.1.2) moving on …
Secondly, it should be a misnomer but this requires a bit of basic technical knowledge about the iPhone and it’s inner workings, so if you follow this install blog as some sort of guide, then do so at your own risk… Cheers 😉
Ok, back to the install!
- Jailbreak the phone (this means, you have updated the firmware to enable Cydia (an iPhone app with opensource app directory/sources that are written in a sort of debian Linux)
(I am not sure but I think you can do this with a locked phone, mine is “universal carrier” unlocked using the standard ultrasn0w patch from iPhone Dev Team, do it if you need it)
- Install OpenSSH from Cydia (well, I already had OpenSSH running on my iPhone so there..)
Set the iPhone autolock to “Never” by going into the iPhone’s Settings app, under “General” you will find “Autolock” — which you can set to lock the phone’s keypad/screen after so many minutes (1 to 5, or the last setting, NEVER, which is what we want). The reason WHY is because when the phone goes into a locked state it kills your WiFi and/or SSH session, which wouldn’t be good in the middle of a firmware or some package update eh?
Connect your iPhone to the same WiFi network as your Mac, and get your iPhone’s IP address by going into Settings, WiFi, (pick the > arrow on the network for more info about that WiFi network), then under the DHCP tab you will see your IP address.
Got that already? great… here we go..
Download the ZIP file (iPhoDroid_R12_Runtime.zip was current of this posting, though they do update this often) from http://iphodroid.com/ – it’s 1.5 Mb unpacked and seems to be a boot loader that hooks itself into your iPhone (over USB) once the phone is in restore mode. I’m not sure what this is for, I guess it’s a fail safe? <shrug>
Step 1 and a half: Next you want to download the iPhoDroid app, so scroll to the bottom of the page and get the newest version available from iphodroid.googlecode.com (same site, actually, has a link to it) this is iPhoDroid_0.6beta_R12d_(for3G).zip for me, which unpacks to a 179 Mb app, this is really the main installer app, though it wasn’t obvious since there really wasn’t any docs for this at all so I did it by the seat of my pants! weee!!
Step 2: Unpack the ZIP files (from Downloads or wherever they ended up)
The install is done over both SSH and USB, so you will connect your iPhone to your Mac over the USB cable. But don’t do that yet LOL ..
What IS that runtime app for? (ok to skip this, most likely..)
Got her hooked up? great, well you may not need to do this but now I did launch the runtime application, which went and pops open a window and says “Put iPhone in Recovery Mode (when ready hit GO)”
If you never put your phone into recovery mode, or can’t remember how, it’s pretty easy. This is different from DFU mode — first, power off the phone by holding the sleep/wake button (the one on the top of the iPhone) for about five seconds. You will see the slider asking you to shut off the phone. (I tried to take a screenshot of this, but it wouldn’t do it LOL)
So power off and unplug it. Now click the sleep/wake button just a tap, then hold the HOME button down while you plug your device back into the USB port. Keep holding it till you see one of the following:
Look! It’s SteveD! a cartoon of a Steve Jobs looking guy with a caption in Cyrillic which says “Hello” or maybe “Perved!” but anyway… that’s my pic of choice .. most people may see the recovery mode pic: On some phones, you will see that USB docking cable with a arrow pointing to iTunes. If you have a older phone, I am told you see a yellowish warning triangle telling you to launch iTunes..
Once either of those comes up, you can let go of the home button, your phone is in recovery mode. If you have a black screen, well you may be in DFU mode or powered off still 😛
once in the right mode, hit that GO button in the iPhoDroid runtime app..
The screen flickered then went to a iPhoDroid screen right on the iPhone, neato! This I gather is the iPhoDroid boot loader, running on the phone..iPhoDroid then exited from the Mac. I guess it’s done eh?
Well no, not really..
Here we have this boot loader screen: hey I don’t have a screenshot of what that looks like, so will have to describe it to you. It’s a nice green google droid hovering over a grassy field and you have some options on the bottom in the form of 3 icons.. iPhone, console, or Froyo ..
Well I see iPhone is selected in the iPhoDroid menu, if you click the home button that selects it, and your iPhone boots normally into iPhone OS. If you then turn off the iPhone and power it back on, it will again boot up normally. The bootloader is just a sort of app loaded into RAM over the USB cable and doesn’t stay put until you do more..
The volume up and down command becomes your selector for what to click on, the next option is “Console” (the same Terminal window you are used to on the iPhone) and the 3rd option is “Froyo” .. I am not sure what it does but looks like it opens FTL, looks at partitions, and tries to load the Kernel … hmm … I guess I didn’t install that yet (LOL!) then it blabs about some USB state changes and throws up a ASCII art IPHODROID 0.6 (PHO? Dang, now I am hungry for noodles with tripe and tendon and raw meat in it… mmmm!!) anyway from that point it looks like it just kinda sits there doing nothing… Let me reboot the thing and see if it does anything with the Console mode…
eh, buttons aren’t doing anything, of course, iPhone OS isn’t loaded yet and it is button-lame now…except for forcing it to power off by holding both HOME and sleep/wake till it does.. (which I proceed to do..)
So what was that all about? I guess that was if you want to sort of try out the Android but not really install it.. though.. the other app does that .. I am confused as to it’s purpose, except maybe it is just a wedge of a bootloader for those that installed Android but not the bootloader? OK, I will just stop rambling.. Let’s actually install this thing now.
iPhoDroid APP running on Mac OSX and the whole ball of Android wax..
Let me try loading that other App (iPhoDroid.app) and see what it does next …
First off, your iPhone should be powered up running iPhone OS and connected to WiFi, auto-lock set to NEVER, got your iPhone IP ready, we are about to login to it using OpenSSH so hope you have your iPhone root password handy (if you’ve changed it from the default), as well your Mac OSX admin password at the ready. Got em? Good , here we go.. Load that iPhoDroid app. It asks to install or uninstall. (I pick Install and click OK.)
It asks next for the computer password. I guess that’s for installing some stuff so I enter my password and click OK.
Great, now it asks me for that iPhone’s IP address. So I enter that and click Next.
It checks and connects then asks for your shell password (I entered it) done .. and you must be patient now and wait for it, while it is connecting and doing some stuff over SSH now .. sooner or later you will see terminal windows open on your Mac…
Then it does a bunch of stuff over the shell in different colored text using the standard bash windows LOL, there it goes over SSH … wee! that is cool.. somehow we went from Recovery mode to scroll mode, must have done it while I wasn’t looking hehe..
Step 1 (yellow text),does some stuff I didn’t see it went so fast LOL, then it went to delete some images that weren’t there on the device.. these may have been the boot loader images from the default (which I never loaded before anyway, so no wonder..)
Step 2 (aqua), some packages like vim are installed..
step 3 (firmware, green, does some installing of zephyr drivers)..
step 4, aqua over aqua, copies zKernel over .. 15 sec
step 5, copies android image over to iPhone .. 10 sec
Step 6, copies Cache.img to iPhone .. 60 sec
step 7, copies CoreSystem to iPhone .. 2 min
step 8, copying UserData to iPhone.. 90 sec
Each step had a sort of pause afterwords I guess it was doing some cleanup or intentionally waiting for things to finish.
It eventually does (be patient!) and prompts me to put the phone into Recovery mode… So I do..
iTunes always likes to load when I do this, check with the iPhone Update Server to identify what the device is (I let it..) then it comes back and tells me the phone is in Recovery mode (well, duh yes it is!) .. after this I quit iTunes so it stays out of the proverbial way 😉
Now I click the ” Load Install ” button on the iPhoDroid app window..
The phone screen pops open with a logo that says “iPhone” or “Install” with a ram chip picture and “Froyo” with a Android … I select the install RAM chip then and hit HOME button.
Boom! on the iPhone it shows me a blue screen with white text and IPHODROID ascii art again … lol for a sec there I thought my iPhone had a BSOD … but no, this time it looks like it is flashing something called ibot 450416 bytes) …
Now it installs ibox, dtre, logo, recm, nsrv, and all kinda other stuffs.. then it brings me back to that same iPhoDroid boot screen again. I select the “Froyo” android this time…
cool Linux penguin holding a quake sort of rocket launcher, it boots up per se…
looks to wife, shows her the phone, she isn’t impressed, I see an ANDROID logo woot! coolness.. big smile..
Android loads and I am brought to the screen with time and date and what not, wow, Android running on the iPhone… shows screen to wifey again who now says “Ooh, Pretty” and I explore a bit of Android running perfectly fine on my iPhone 3G! (it didn’t crash through all of my random poking around, though, who knows maybe I just got lucky LOL)
Hmm, how to get to WiFi settings? LOL… I don’t see them but there are some blogs online how to get that aspect of it working.
Continues to fiddly around with it…
The rotate landscape/portrait works, the screen touch works, it has vibrate/haptic feedback, the sleep/wake button is kind of like the back button, and the volume is a up/down sorta thang and the home button is like a menu pop-up button (reminds me of Blackberry’s little app dock button).. so uh, great, Android running on me iPhone, neato… <shrug> no really, it’s cool that it’s working, the dev people must have spent months on this making it happen, and I am impressed it all went very smooth and quick ( and I just wonder how to turn WiFi on LOL .. since I don’t see it under Settings even though I have enabled WiFi elsewhere within Android .. well this is a beta .. so … waiting for more goodies to arrive eh? )
Just to make sure it is all good with iPhone OS still, I power off the phone.. hold home and sleep/wake till it powers off. Poof it’s off..
Now turn power back on.. wow look at that boot loader hehe, I select iPhone from the menu and it now loads iPhone OS again .. just as if I turned on the phone without said boot loader, and nice nice it goes well, and I am happy 🙂 multi-boot OS on the iPhone, woot! Geeky fun 🙂
Thanks iPhoDroid team, you did good 🙂
if I was less lazy I would have youtube’d and screenshot the whole thing so you could see it, ah, maybe will do that soon as I get my partner account approved (waiting waiting for that…)
In a nutshell, can you have Android OS with linux dualboot running on your iPhone 3G? Yes, yes you certainly can. iPhoDroid makes that possible for us Mac OSX users, and uh, I suppose there is similar if not a more manual process (see the google code blogs) for Linux or Win-PC users as well 🙂 kudos!