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 🙂


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


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


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.

Nokia N800 emulation

22 thoughts on “Nokia N800 emulation

  • 11th April 2008 at 18:55

    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!

  • 11th April 2008 at 20:02

    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)?

  • 11th April 2008 at 22:31

    @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.

  • 12th April 2008 at 16:54


    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).

  • 14th April 2008 at 12:14

    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.

  • 14th April 2008 at 12:47

    @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.

  • 14th April 2008 at 17:26

    @Marcin: thanks for your help, it works well 🙂

  • 15th April 2008 at 13:12

    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.

  • 15th April 2008 at 13:18

    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.


  • 15th April 2008 at 13:58

    @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.

  • 15th April 2008 at 13:59

    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

  • 16th April 2008 at 10:50

    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”


  • 17th April 2008 at 13:24

    @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 ;(

  • 18th April 2008 at 01:15

    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)

  • 18th April 2008 at 01:43

    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.

  • Pingback:Nokia N800 emulation | The Tablet Blog

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

  • 5th January 2010 at 18:42

    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.


  • 23rd January 2010 at 11:39


    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.

    • 25th January 2010 at 21:31

      I do not track qemu development anymore so have no idea is there someone who work on adding n900 emulation support.

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

Comments are closed.