Building Android for the Asus Eee PC 701

NOTE as of 2009-02-19:

These instructions are now probably out of date. Thanks everyone for the discussion and the links. If you’re really interested in this, you should probably check out the android-porting google group / mailing list.


BIG RED FLASHY WARNING

  • THIS WILL wipe whatever you have installed on your Eee PC
  • THIS IS at a rather experimental stage, so don’t expect everything to function appropriately

Now that you’ve read the warnings, I’ll point out that I’ve posted an installation image below. If you want to roll your own, continue from here.

Instructions

  1. READ THE WARNINGS – I won’t be held responsible if you nuke your Eee PC
  2. Get the source by following these instructions.
  3. Create a local_manifest.xml file in your .repo directory with the following contents:

    <?xml version="1.0" encoding="UTF-8"?>
    <manifest>
    <project name="platform/vendor/asus/eee_701" \ path="vendor/asus/eee_701"/>
    </manifest>
  4. Sync – do another repo sync to pull the eee_701 stuff
  5. Build – type

    TARGET_ARCH=x86 TARGET_PRODUCT=eee_701 DISABLE_DEXPREOPT=true make -j8 installer_img
  6. Wait … It’ll take a while, particularly webkit
  7. Make installer USB stick

    dd if=out/target/product/eee_701/installer.img of=/dev/<usbstick of your choice>
  8. BIOS Settings – Go into the BIOS settings (press F2 on boot) and set the boot device order so that the hard drive comes first. Also under IDE configuration set the internal flash drive to load before any USB drives. ADDED 2008-12-21 – You must also turn off the SD card reader for the installation procedure.
  9. Boot – Plug the usb stick into your Eee PC and boot from it. When the BIOS screen comes up, press the ‘Esc’ key to get the boot menu. Select the USB drive. You should be presented with a rudimentary installer menu. Quickly press an arrow and select option 0 (sysloader), then press Enter.
  10. Let the install run – When it’s done type “reboot” and hit enter. Once it reboots, wait a few seconds and then the android boot screen will appear. Tada!

Note that wifi and many other things don’t work right now, so I’m trying to figure them out. I’ll post the installation image shortly, and more details here as I find them.

These instructions are mostly based on information found here.

Here’s a screenshot from the awful camera on my android phone:

Android Cupcake on the Eee PC

Android Cupcake on the Eee PC

UPDATE: 2008-12-20 19:12Z

Image for your consumption is here (mirror) (torrent). (Please use the torrent if you can). This is governed by the Apache 2.0 and GNU GPL Licenses. The sources are currently available from Google.

UPDATE: 2009-01-03 22:51Z

For the pedants, and my conscience. (On a related note, hello Slashdot and Gizmodo visitors.)
The software included in this product contains copyrighted software that is licensed under the GPL. A copy of that license is available here (2008-01-04 – Link typo fixed, sorry). You may obtain the complete Corresponding Source code from me for a period of three years after the binary was posted, which will be no earlier than 2011-12-20, by sending a money order or check for $5 to:

Brock M. Tice
PO BOX 17416
Saint Paul, MN 55117

Please write “source for Android EeePC build ” in the memo line of your payment.

This offer is valid to anyone in receipt of this information.

107 thoughts on “Building Android for the Asus Eee PC 701

  1. Titimoby

    I’m currently uploading your img file and in the same time, I finish the setup of a mac OS compilation environment.

    I’ll post the result here.

    Thanks for your efforts.

  2. Titimoby

    I had no success in booting the img provided.
    After trying another time from my ubuntu machine, I gave up with the img file.

    It seems to be corrupted.

    In the meantime, I just need a last step to compile by myself.

  3. Brock Tice Post author

    Titimoby: I’ve double-checked that the file on the server and the file I used for installation are the same. The md5sum is 48953dc4371284b7d4e0ed4a6f7ffa21.

    Is it not booting at all, or not installing? Do you see any error messages?

  4. Titimoby

    Thanks for the md5sum.
    I just checked my file is ok.

    When I dd to my usb stick, the files and folders have names with special characters.

    The thing doesn’t boot at all, but the strange file names made me think i messed the dd operation.

  5. Titimoby

    I have 3 remarks:

    – maybe a BS parameter is needed for the dd command.
    – I tried to compile with my mac but there is something harcoded that force the use of linux toolchain (i686-unknown-linux-gnu-4.2.1/bin/i686-unknown-linux-gnu-gcc in the prebuilt folder)

    – the local_manifest.xml contains an error with the backslash caracter to remove and the must not be copied 😉

  6. sg

    Did anybody try this on virtualbox or vmware player running on XP? Is it possible to run this build in virtual environment?

  7. Jim Thompson

    No ‘bs=’ parameter (dd assumes 512 if not specified). I suggest that perhaps your USB thumb drive is too small. (?)

    sg: I think you need:
    CONFIG_FB_VESA=y
    CONFIG_HAVE_IDE=y

    in vendor/asus/eee_701/kernel.config

    Brock, did you get WiFi working yet? Can you build a kernel from scratch yet?

  8. Mike Miner

    How would suggest this to be installed on somthing such as VMware? Mount in Deamon tools then install?

  9. Brock Tice Post author

    Mike Miner, you’d have to make sure that the partition layout matches that of the Eee PC. You should then be able to specify the boot image as the second hard drive. I haven’t tried this, but I may give it a shot in VirtualBox soon, since reinstalling over and over on the Eee gets kind of annoying when trying things out.

  10. Brock Tice Post author

    Jim Thompson, I haven’t got wifi or a kernel from scratch working yet. I need to spend a little time tweaking the kernel config, and I’ve been away from my Eee PC and my main building workstation on holiday break.

  11. Mike Miner

    I’ve tried booting it as a floppy image in VMware, it complains about the partition table being corrupt. Ill get back to you if I get it working.

  12. Felipe Cepriano

    I could boot the image on VMWare after converting it using qemu-img and using it as a SCSI harddrive.
    But it hangs after some time, “Waiting for the device: /dev/block/sdb2”.

    My VMWare config has 2 SCSI HDs, a 8GB empty image as SCSI 0:0 and the Android image as SCSI 0:1.
    Using a IDE HD (for the 8GB disk, VMWare don’t give any option for the Android image) doesn’t change anything….
    In “/dev/block” only sda is listed.

  13. sg

    Hi Brock, could you pls post the instructions for virtualbox if u were able to run this build on it?
    I found few instructions here:

    http://groups.google.com/group/android-porting/browse_thread/thread/66862bdb52dac936/93297601e93dd09c?q=andrd.dvlpr&lnk=nl&amp;

    I was able to install it in Virtualbox but it doesn’t boot all the way. It boots up to a certain point and i see a blank screen after that..
    I enabled VESA and IDE in kernel config file. Not sure if anything else is missing.

  14. SAGITARIUS A

    Wow many thanks for your great work!!!

    Hope really, that you include Wifi,Touchpad,SD Card,and that i can install apk’s.
    Then my Dreams come true.

    It was my first real android experience,far away from slow sdk emu,thx again!

  15. Brock Tice Post author

    I got the image to boot on VirtualBox, but it hangs when trying to write system.img to /dev/block/sda6 for some reason.

    I had to edit the GRUB configuration to point to (hd1,0) instead of (hd0,0). I see this was also mentioned in the discussion linked by sg.

    I thought it might be a bug with the sparse disk image I had used, but using a pre-allocated disk image in VirtualBox didn’t help.

    By the way, converting the installer image for VirtualBox is easy:


    VBoxManage convertdd eeeDroid_2008-12-20_1843Z.img eeeDroid_2008-12-20_1843Z.vdi

  16. Thom

    When I try this:

    I get an error
    Traceback (most recent call last):
    File “/Volumes/android/mydroid/.repo/repo/main.py”, line 202, in
    _Main(sys.argv[1:])
    File “/Volumes/android/mydroid/.repo/repo/main.py”, line 186, in _Main
    repo._Run(argv)
    File “/Volumes/android/mydroid/.repo/repo/main.py”, line 96, in _Run
    cmd.Execute(copts, cargs)
    File “/Users/tmorrow/mydroid/.repo/repo/subcmds/sync.py”, line 78, in Execute
    File “/Volumes/android/mydroid/.repo/repo/command.py”, line 60, in GetProjects
    all = self.manifest.projects
    File “/Volumes/android/mydroid/.repo/repo/manifest.py”, line 78, in projects
    self._Load()
    File “/Volumes/android/mydroid/.repo/repo/manifest.py”, line 117, in _Load
    self._ParseManifest(False)
    File “/Volumes/android/mydroid/.repo/repo/manifest.py”, line 128, in _ParseManifest
    root = xml.dom.minidom.parse(self.manifestFile)
    File “/System/Library/Frameworks/Python.framework/Versions/2.5/lib/python2.5/xml/dom/minidom.py”, line 1913, in parse
    return expatbuilder.parse(file)
    File “/System/Library/Frameworks/Python.framework/Versions/2.5/lib/python2.5/xml/dom/expatbuilder.py”, line 924, in parse
    result = builder.parseFile(fp)
    File “/System/Library/Frameworks/Python.framework/Versions/2.5/lib/python2.5/xml/dom/expatbuilder.py”, line 207, in parseFile
    parser.Parse(buffer, 0)
    xml.parsers.expat.ExpatError: not well-formed (invalid token): line 5, column 1

    But if I remove the from the xml it works

    Then when I build with

    TARGET_ARCH=x86 TARGET_PRODUCT=eee_701 DISABLE_DEXPREOPT=true make -j8 installer_img

    I get

    build/core/product_config.mk:207: WARNING: adding test OTA key
    ============================================
    TARGET_PRODUCT=eee_701
    TARGET_BUILD_VARIANT=eng
    TARGET_SIMULATOR=
    TARGET_BUILD_TYPE=release
    TARGET_ARCH=x86
    HOST_ARCH=x86
    HOST_OS=darwin
    HOST_BUILD_TYPE=release
    BUILD_ID=
    ============================================
    build/core/main.mk:178: implicitly installing apns-conf_sdk.xml
    target thumb C: init <= system/core/init/builtins.c
    prebuilt/darwin-x86/toolchain/i686-unknown-linux-gnu-4.2.1/bin/i686-unknown-linux-gnu-gcc -m32 -o out/target/product/eee_701/obj/lib/crtbegin_static.o -c bionic/libc/arch-x86/bionic/crtbegin_static.S
    target thumb C: init <= system/core/init/init.c
    /bin/bash: prebuilt/darwin-x86/toolchain/i686-unknown-linux-gnu-4.2.1/bin/i686-unknown-linux-gnu-gcc: No such file or directory
    make: *** [out/target/product/eee_701/obj/lib/crtbegin_static.o] Error 127
    make: *** Waiting for unfinished jobs….
    target thumb C: init <= system/core/init/devices.c
    /bin/bash: prebuilt/darwin-x86/toolchain/i686-unknown-linux-gnu-4.2.1/bin/i686-unknown-linux-gnu-gcc: No such file or directory
    make: *** [out/target/product/eee_701/obj/EXECUTABLES/init_intermediates/builtins.o] Error 127
    /bin/bash: prebuilt/darwin-x86/toolchain/i686-unknown-linux-gnu-4.2.1/bin/i686-unknown-linux-gnu-gcc: No such file or directory
    make: *** [out/target/product/eee_701/obj/EXECUTABLES/init_intermediates/init.o] Error 127
    /bin/bash: prebuilt/darwin-x86/toolchain/i686-unknown-linux-gnu-4.2.1/bin/i686-unknown-linux-gnu-gcc: No such file or directory
    make: *** [out/target/product/eee_701/obj/EXECUTABLES/init_intermediates/devices.o] Error 127

    I don’t know what I have done wrong….

  17. TitiMoby

    I have this error :
    Error 127
    /bin/bash: prebuilt/darwin-x86/toolchain/i686-unknown-linux-gnu-4.2.1/bin/i686-unknown-linux-gnu-gcc: No such file or directory

    shows… that you are building from a Mac like me 😉
    I searched on android dev forum but no answer on that kind of topic.

    the first error came from the xml file.

  18. Oren

    You know, redistributing a binary without providing the source *yourself*, is a violation of the GPL. Of course, no one is going to call you on that technicality but I just thought I”d mention it.

  19. Thom

    Darn the luck. I am using a mac. Also I tried downloading the img file but when I try to mount it on my mac it fails thus I don’t know how to put it on a flash drive.

  20. Brock Tice Post author

    Oren,
    The main (only?) GPLed component is the kernel, and I actually used the prebuilt one in the Git repository.

    I looked briefly into how to get the source for that version of the kernel from the Android repository so that I could compile the madwifi drivers, but didn’t find them. I do intend to post the source once I figure that out. I know very little about Git, so I’ll have to learn a bit more first.

    Clearly someone has called me on it — you. I was aware of the problem, but considering that I made no modifications, I didn’t think anyone would be pedantic enough to care. But then, I didn’t expect Slashdot-level exposure either.

  21. Brock Tice Post author

    Thom, don’t mount it. Just use dd on the command line. You’ll have to figure out which device is the flash drive using disk utility, and then probably use sudo to run dd.

  22. Thom

    Brock please delete my post 26 the dd command is backwards and this is the correct one.

    For those mac users. I got my usb flash drive to write.

    In terminal:
    Type: mount
    Mine was /dev/disk1s1
    Type: diskutil unmount

    my img file was on my desktop so this is what I typed to make it
    sudo dd if=~/Desktop/eeeDroid_2008-12-20_1843Z2.img of=/dev/disk1s1

    Yours will be where it is located and what you saved the file as. So yours will not be an exact duplicate most likely

    Now comes the other problem. I don’t have an eeepc. I have the acer aspire one. I hoped they had real similar hardware and would work. I put in my flash drive and started the machine. All I got was a flashing cursor on the top left. Nothing more. The aspire one doesn’t have an option to disable the card reader. Any thoughts or was it a pipe dream to think it was going to work?

    Thanks
    Thom

  23. Brock Tice Post author

    Thom, I’m sure you mean if=(…)/eeeDroid_…img of=/dev/disk1s1.

    I’m not sure what is different with the aspire one. As Dima (the google developer in the linked discussion) mentioned, the installer is quite fragile. That’s probably the first thing the enthusiast community will want to improve. I have some other higher-priority stuff going on, but eventually I’d like to take a look at modifying the installation script.

  24. Thom

    Well just tried it again with a fresh download image and it does the same thing. Just a flashing cursor. Oh well. It was worth a try…

    Thanks
    Thoom

  25. s g

    Hi Brock,
    I was able to install the image in virtualbox (i got past the/dev/block/sda6 problem by following the link i posted earlier). It boots up to a certain point after installation and shows a blank screen. I see the same problem with the image i built(i did enable VESA and IDE in kernel config).
    Can anybody help?
    Thanks

  26. Titimoby

    Thanks to Thom, I manages to get.. the blinking cursor 🙂

    No worries, I’m still trying to figure it out 😉

  27. Richard

    @Thom
    That’s DD for you.

    When DD is running, there is no feedback, just a flashing cursor, when it is done, you should get the prompt back, I learnt this back when I hacked a friend’s apple TV to give it a 1TB drive

  28. Pingback: Compiling Google Android for x86 with VMWARE & Ubuntu Linux on Windows « Napalmpiri

  29. Martin

    hello all, I’ve downloaded the provided img dd’d it to a usb flash device factory formatted from an ubuntu machine and went I reboot I just get a grub message appear in the top right hand corner of the screen with a flashing _ (underscore) and it doesn’t go anywhere from there. Has anyone else experience the same thing? If so, what am I doing wrong, I’ve tried several times to dd it to the usb stick as well as a SD card but too no avail, should you dd if the volume is mounted or unmount I tried both ways and nothing, any help would be greatly appreicated, thanks, Martin.

  30. Martin

    Okay, I finally managed to do it, I had download the file again as it seemed not to download correctly, I have managed to load it up on my MSI Wind, if someone can give me some advice on have to tweak the kernel for different hardware – specifically wifi, I have a wifi card in there from an original intel mac mini the core core duo not the core2duo. Any hints or advice would be greatly appreciated, thanks.

  31. Thom

    Richard. The flashing cursor is on the boot of the machine with the flash drive in the mini not during the dd command.

    Thanks
    Thom

  32. Tim

    Can the USB ports in the Eee be used in peripheral mode somehow? I would really like to connect adb and ddms to Android on the Eee, as if it was a phone device. (Ethernet and/or WiFi would also be nice. Has anybody had any luck activating these?)
    Tim

  33. Brix

    “(Ethernet and/or WiFi would also be nice. Has anybody had any luck activating these?)”

    I’m very curious about this as well. I’d like to be able to install on the eee, but I’m hesitant to do so without wifi support, seeing as that was the reason for getting it in the first place.

  34. Andrew

    Martin, i think i have the same problem as Thom, and it is just the blinking underscore, nothing else
    (it appears on the top line for maybe 1/10 second, then bumps to second line)

  35. Andrew

    i’m on a galaxy black 2G Surf, that has Win FLP on it…if it matters…

  36. Pingback: CatWithNoName » Blog Archive » I want a spare Eee now, and a helicopter.

  37. Martin

    Andrew, make sure when you dd the image to a usb drive that you dd to the actual drive and not a partition of that drive. for example say you have a usb drive under linux in /dev/sdb1 – the 1 in that indicates at partion of that drive so dd it to just /dev/sdb without a number after it and it should sort your problem out. Thanks, Martin.

  38. Andrew

    Well, I’m on a mac, so would it be /dev/disk1 instead of /dev/disk1s1?

  39. Martin

    Andrew, I guess it works the same like that on a mac, I have and do use a mac but not for anything remotely unix related so can say for definate, give it a try, it can’t hurt just make sure you’ve got the correct drive, type df from a terminal and make sure, you don’t want to wipe out your hard drive or something else! Martin.

  40. Matthias

    Richard Stallman used to request $100 for copies of the source for emacs. You may want to follow in his footsteps for those who are overly pedantic.

  41. Chris

    Thanks for the IMG, it worked perfectly. I’ve installed it on my eee 701. I noticed there’s no mouse support and everything is done through the keyboard. Any idea on how to get to a terminal?

  42. Chris

    Answered my own question, ctrl + alt + F1 just like any sane linux distro.

    Home = Home
    Esc = back

    No idea what the search key is.

  43. Brock Tice Post author

    Chris: Yep, and the windows menu button = menu. Also, the brightness keys seem to work, but none of the rest do.

  44. Brock Tice Post author

    So, I finally got a kernel (2.6.27) to build from scratch, but SurfaceFlinger segfaults continually, so the interface won’t load. *sigh*

Comments are closed.