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 - first screen
Poky on emulated N800
Poky on emulated N800
Poky on emulated N800 - Dates application
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 - first screen
Maemo OS2008 on emulated N800 - desktop
Maemo OS2008 on emulated N800 - desktop
Maemo OS2008 on emulated N800
Maemo 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.

maemo nokia poky qemu