Nook v1.0 on Android Emulator

I decided to check out the Nook earlier today; naturally it's not available in Ireland so I downloaded the firmware update from Barnes and Noble and set to work on getting it to run on something.

I didn't expect to get very far, but after a little hacking it was actually working.

To get it to run I had to:

• grab the firmware update using the tools at http://code.nookdevs.com/
• unpack the system folder out of the firmware update using said tools and gunzip
• replace lib/libaudioflinger.so with that from a clean Cupcake build of Android (took it from the emulator)
• disassemble the classes.dex file inside framework/services.jar using baksmali
• modify 'ServerThread.smali' to remove the line " if-lt v0, v1, :cond_483 " (it looped on waiting for eInk display)
• recompile the dex file using smali and re-insert it into the jar
• create a system.img from the system folder using mkyaffs2image
• replace the system.img of my Cupcake emulator build with the Nook one just created
• boot the emulator with a resolution of 480x944 (the highest I could get it; it's about 120px too thin for the eInk display)

This is by no means a guide, but it should hopefully point more capable Android hackers in the right direction if they want to get this booting. I'm pretty sure that's all that was required.

Networking is working fine; and the arrow keys on the keyboard control the page turning

Here are some screenshots!

UPDATE:

A video for you non-believers ;-)

Nook on Android Emulator from Steven Troughton-Smith on Vimeo.

18 comments:

  1. wow, I'm installing android sdk because of this.
    Thanks man!!

    ReplyDelete
  2. Cool! I am not an android developer, so if you can give a detail guideline how to build the emulator will be great appreciated.

    ReplyDelete
  3. nice job!. I'm getting a CRC error while unzipping the downloaded file. any idea?
    Is it possible to share the valid 1.0 dat file somewhere?

    Thanks.

    ReplyDelete
  4. never mind. Got it working. Thanks for the dex file fix. I would have spent hours on that.

    ReplyDelete
  5. I've gotten to the point where I'm ready to make the system image, but I can't find a working copy of mkyaffs2image anywhere - any pointers? I'm running Leopard.

    ReplyDelete
  6. Some slightly more detailed instructions would be appreciated, I attempted this last night and the emulator just hangs up on the text "A N D R O I D_" screen and doesnt go anywhere

    the kernel output from the emulator says that one of the processes is failing and it is giving up

    I am waiting to get one and Im reformatting a bunch of PDF's to ePUB with calibre and it would be nice to be able to look at them in the emulator for testing

    ReplyDelete
  7. use this link for mkyaffs2image - http://downloads.sourceforge.net/virtualmips/yaffs2.tar.bz2

    ReplyDelete
  8. Using baksmali-1.1, I can't find this line:

    "if-lt v0, v1, :cond_483"

    is it possible it is now:

    if-lt v0, v1, :cond_31d

    ReplyDelete
  9. it was "if -lt v0,v1, :cond_483" in the 1.0 version. Might be different in a later version. But I don't know if the later version packages are just an upgrade or has all the files.

    ReplyDelete
  10. I meant the 1.0 version of the nook software.

    ReplyDelete
  11. I second the call for a download of the patched nook image. I'm not able to do the mkyaffs2image step because I can't get mkyaffs2image to build. I'm getting the following errors:

    ../yaffs_guts.h:823: error: expected declaration specifies or '...' before 'loff_t'
    ...

    ReplyDelete
  12. Yeah ive tried multiple times and cant get it to work - it is just frozen at the android_ screen

    could you just upload the patched image?
    it would be much appreciated

    ReplyDelete
  13. Same issue, the final image is frozen at the Android loading screen :(

    ReplyDelete
  14. There is a more up to date guide at http://nookdevs.com/title=Emulator based on this one.

    ReplyDelete
  15. Hari, thanks for the Sourceforge mkyaffs2image link. Previously I tried a Google Android download & from another link, but both gave me about 400 ! errors trying to compile in Xcode (SL 10.6.2)

    Professr etc., hope this helps you,

    https://forum.openwrt.org/viewtopic.php?id=12015

    & thanks to "jeffster"

    #if defined(__APPLE__) || defined (__FreeBSD__)
    typedef long long loff_t;
    #endif

    added to devextras.h

    it compiled with no issues ;-)

    BTW, all of this from my perspective is to use it to fix a media player, not Android, but hope this helps fellow mac users getting the

    "../yaffs_guts.h:831: error: expected declaration specifiers or '...' before 'loft'"

    john

    ReplyDelete
  16. Hi Guys,
    Can anyone explain - how to use Nook to browse internet to check hotmail, gmail and other sites. I have a new Nook with me. Do not know how to get a browser on this. I am not engineer (you can think me as dumb here!!). Is there any application I can download and install? Or Do I have to open the Nook to overwrite/ add the app??
    Regards, Linda

    ReplyDelete
  17. I get the "A N D R O I D_" screen as well.
    Anybody figured that out ?

    Thanks.

    ReplyDelete