Nokia N800 emulation

Few days ago Nokia N800 tablet emulation was released into public. Richard integrated it into Poky so now we have QEMU which can be used not only to test ARM images on ARM Versatile or Sharp Zaurus but also to run on Nokia N800 tablet. Of course it is not limited to Poky images — Maemo boots very nicely on it :)

Poky

Booting Poky is easy: runqemu nokia800 after building of “poky-image-sato” for “nokia800″ machine. After few minutes (needed to create NAND Flash image and boot into JFFS2 rootfs) Poky desktop appears:

Poky on emulated N800 - first screen Poky on emulated N800 Poky on emulated N800 - Dates application

Maemo

Booting Maemo takes few steps more now (will be improved).

  1. Edit “scripts/poky-qemu-internal” script and in line 154 change KERNELCMDLINE to boot from “/dev/mtdblock3″ instead of “/dev/mtdblock4″ as Poky do not use Maemo’s “initfs”.
  2. Get copy of “config” flash partition from N8x0 — simple “cat /dev/mtd1ro > config.mtd” is enough. Bad news: it does not work :( And the one which works for me is not distributable as it does not came from device but was pre-generated somehow.
  3. Transfer it to the desktop.
  4. Grab OS2008 firmware image from Maemo website.
  5. Unpack firmware image to get kernel and images of “initfs” and “rootfs”.
  6. Use poky-nokia800-flashutil to generate NAND Flash image:
poky-nokia800-flashutil initfs.jffs2 maemo-image.qemuflash initfs
poky-nokia800-flashutil config.mtd   maemo-image.qemuflash config
poky-nokia800-flashutil rootfs.jffs2 maemo-image.qemuflash rootfs

Then “touch maemo-image” and run one command: poky-qemu zImage maemo-image to boot it.

Maemo OS2008 on emulated N800 - first screen Maemo OS2008 on emulated N800 - desktopMaemo OS2008 on emulated N800

Status

Basic emulation works. There is no networking yet, DSP code is not emulated and few other limitations. But it is work in progress so expect improvements.

How to get it

Patch alone can be fetched from Poky repository.

Linux binaries of QEMU with N800 support can be built with Poky by bitbake qemu-sdk command. They will be also part of Poky Linux SDK.

UPDATE: poky-nokia800-flashutil instructions are fixed (thx to Yasser)

UPDATE: there is second part of that story.

22 thoughts on “Nokia N800 emulation

  1. frethop

    I’m sorry, but I’m a bit confused. What is the host and what is the guest? What’s Poky and what platform does it run on? Windows? Linux?

    You must be addressing an audience I’m not part of. So a little context would help. THis looks very interesting!

  2. Marius Gedminas

    This is insanely cool, if it means what I think it means.

    Could we have a link to the version of qemu that is able to emulate a N800? Is there a way to transfer files into the VM without creating a jffs image (if not network, maybe there’s SD card emulation)?

  3. Marcin Juszkiewicz

    @frethop: Poky is embedded Linux distribution created by OpenedHand company. Nokia tablets are one of supported devices (other are Sharp Zaurus palmtops, Openmoko phones, misc developer boards etc).

    Those screenshots were made on x86-64 machine running Debian GNU/Linux. Guest systems were also Linux: Poky Linux or Maemo OS2008.

    @Marius: Currently there is no way to transfer files other then locally mounting jffs2 image. SD card emulation was not working for me — I will contact author of N800 emulation to get more details.

  4. Zic

    Hi,

    Can you explait how do you use this with debian.o-hand.com repository (quemu+poky-scripts) ; or link me a wiki. Thanks a lot.

    (No, to use Nokia N800 emulation with Poky, Google is not my best friend).

  5. Yasser Nour EL-Din

    First of all, thanks for this great post.

    I’m trying now to get it work, i get a nightly build Poky linux SDK, and the OS2008 firmware but i can’t find the “poky-nokia800-flashutil” command in the SDK?

    Can you please, point me where it’s?

    Thanks for you help.

  6. Marcin Juszkiewicz

    @Zic: debian.o-hand.com repository does not contain this QEMU yet. You need to grab Poky SDK (as listed in post) if you want to play with it. And this is hard to google for it as this is very fresh stuff.

    @Yasser: poky-nokia800-flashutil is in Poky repository in scripts/ directory.

  7. Yasser Nour EL-Din

    Hi again,

    I made the steps above as the sequence you said in your post, and Nokia splash screen appears and progress bar moves to the end but nothing else happend after that.

    So, Do you had this problem before?

    I don’t know if the problem is in config.mtd but i get it from my N800 as you said.

    Another thing, usage of “poky-nokia800-flashutil” is “poky-nokia800-flashutil []” Not “poky-nokia800-flashutil []” Correct me if i’m wrong.

    Last thing how do i monitor the booting of N800, see console?

    Thanks for your help.

  8. Yasser Nour EL-Din

    Sorry the second question of usage of poky-nokia800-flashutil doesn’t appear in my comment this the part missing.

    Another thing, usage of “poky-nokia800-flashutil” is: poky-nokia800-flashutil “image” “destimage” “partition” Not poky-nokia800-flashutil “destimage” “image” “partition”

    Correct me if i’m wrong.

    Thanks

  9. Marcin Juszkiewicz

    @Yasser: to boot Maemo other “flash partition” (/dev/mtdblock3) needs to be used — I forgot to add this into post. This is due to fact that Maemo use “initfs” + “rootfs” combo when Poky use only “rootfs”. So to get it booting you need to use qemu by hand or adapt Poky scripts.

    And you have right about poky-nokia800-flashutil. I fixed post.

  10. Yasser Nour EL-Din

    Hi, I doubt in something about the config file, I have OS2007 on my N800 and i get the config file from it, does this make the problem of stop after nokia splash screen.

    If yes, can you please send me a config file that can i use?

    Thanks for your help

  11. Yasser Nour EL-Din

    I used /dev/mtdblock3 instead of /dev/mtdblock4 but it give me the next error then close: … tahvo_write: LCD backlight now at 59 / 127 n800_mmc_cs_cb: MMC slot 2 active onenand_write: unknown OneNAND boot command 0 onenand_write: unknown OneNAND boot command 0 onenand_write: unknown OneNAND boot command 0 onenand_write: unknown OneNAND boot command 0 onenand_write: unknown OneNAND boot command 0 ….

    Is there any problem in the maemo-image.qemuflash partition starting numbers located in poky-nokia800-flashutil i have these numbers of partition starting page:

    config partition=/dev/mtd1 page=64

    initfs partition=/dev/mtd3 page=1280

    rootfs partition=/dev/mtd4 page=2304

    Also i use to run qemu by hand this: qemu-system-arm -kernel zImage -M n800 -mtdblock maemo-image.qemuflash -serial vc -m 130 -serial vc -serial vc -serial vc –append “root=/dev/mtdblock3 rootfstype=jffs2″

    Thanks

  12. Marcin Juszkiewicz

    @Yasser: It looks like “config” from device is not enough. I got one with patch and it works. But I am not allowed to distribute it. Checked with the one from my n810 and it fails in same way as your ;(

  13. Andrzej Zaborowski

    The “config” partition image that you got comes from Richard’s N800 and I believe it was obtained with cat /dev/mtdblock1 > mtd.image (or at least this should work!).

    About redistributability, I think it should be legal since it only contains some settings of little importance. (IANAL either way)

  14. Andrzej Zaborowski

    One thing to note is that this config has the R&D mode enabled, and Maemo dies (just like in Yasser’s case) if you’re in normal mode because of some proprietary battery protocol used by the initfs which I got no documentation about. You can enable the R&D mode using the bootloader commands. Running the bootloader (NOLO) in qemu is slightly more complicated but I’ll be making changes in upstream qemu to make it easier.

  15. Pingback: Nokia N800 emulation | The Tablet Blog

  16. Pingback: » Nokia N8×0 emulation part II » Hrw website

  17. tom

    Hallo Marcin,

    i have the same problem. I can not intall the pokylinux or other linux on my pda. The pda has a 32 mb flashrom inside. i used some tools nothing works here. I did not found a rom flash tool that works.

    Can you help me.

    tom

  18. danny

    hi,

    interesting stuff. i really liked elements of n800 os2008. is there development being done to have it run on n900. is that taboo to suggest. i think it would be great.

  19. Pingback: cji->setMode(GEEK); » QEMU

Comments are closed.

  1. Nokia N800 emulation | The Tablet Blog says:

    [...] http://blog.haerwu.biz Tags: N800, Poky, эмуляторPosted under Новости [...]

  2. [...] layout for N810 hardware keyboardPolish locale for OS2008New WordPress widget: Recent CommentsNokia N800 emulationNo, I am not moving to LondonNew WordPress widget: MetaMy palmtops storyThe curse of Maemo — closed [...]

  3. [...] Instructions on emulating an N810 / N800 on QEMU can be found here and here. [...]