Changes to Emulating a Nokia N800 with QEMU between r18 and r19

'''Safe Testing Platform for the Nokia N800'''

The OpenHanded Project [http://www.o-hand.com/] [] has created patches against [QEMU] to emulate a [Nokia N800] on your desktop PC.  Their instructions are geared towards using their platform ("Poky") on the emulated system, but with some work it should be possible to use the [Nokia N800] software on the emulated system.  Here's how to do it:
   1. Create a scratch area to work in
   11. `$ mkdir ~/tmp/qemu-n800`
   1. Download the QEMU CVS tree from 2008-03-07 into the scratch area
   11. `$ cd ~/tmp/qemu-n800/`
   11. `$ cvs -z3 -d:pserver:anonymous@cvs.savannah.nongnu.org:/sources/qemu checkout -D 2008-03-07 qemu`
   11. `$ mv qemu/ qemu-20080307`
   1. Download the OpenHanded Project's patches against QEMU CVS 2008-03-07
   11. `$ cd ~/tmp/qemu-n800/`
   11. `$ svn checkout 'http://svn.o-hand.com/repos/poky/trunk/meta/packages/qemu/qemu-0.9.1+cvs20080307/' qemu-20080307-patches-poky`
   1. Apply the patches to the QEMU source tree
   11. `$ cd ~/tmp/qemu-n800/qemu-20080307-patches-poky/`
   11. `$ cat series | while read patchfile patchstrip; do ( cd ../qemu-20080307/ && patch ${patchstrip} ) < "${patchfile}"; done`
   1. Compile QEMU
   11. `$ cd ~/tmp/qemu-n800/qemu-20080307/`
   11. `$ ./configure --prefix=${HOME}/tmp/qemu-n800/instroot --disable-linux-user --enable-system --disable-darwin-user --disable-kqemu`
   11. `$ make`
   11. `$ make install`
   1. Download the Nokia N800 Maemo Firmware
   11. Go to http://maemo.org/community/wiki/HOWTO_FlashLatestNokiaImageWithLinux/
   11. Download the OS for the Nokia N800 by clicking on the appropriate link, probably something like "IT OS Software Edition 2008 (version 2.2007.51-3)"
   111. Note that you may need a Nokia N800 serial number for this -- if you don't have a Nokia N800, now might be a good time to get one.
   11. Save the file to `~/tmp/qemu-n800/`
   11. I will assume that the file is called "`RX-34_2008SE_2.2007.51-3_PR_COMBINED_MR0_ARM.bin`"
   1. Download the Nokia Nseries Firmware Flashing Tool version 3
   11. Download the appropriate version for your operating system from: http://tablets-dev.nokia.com/d3.php
   11. Save the file to `~/tmp/qemu-n800/`
   11. I will assume that the file is called "`flasher-3.0-static`"
   1. Make the Firmware Flashing Tool executable
   11. `$ chmod +x ~/tmp/qemu-n800/flasher-3.0-static`
   1. Unpack the Nokia N800 OS2008 Firmware
   11. `$ cd ~/tmp/qemu-n800/`
   11. `$ mkdir os2008`
   11. `$ cd os2008/`
   11. `$ ../flasher-3.0-static -u -F ../RX-34_2008SE_2.2007.51-3_PR_COMBINED_MR0_ARM.bin`
   1. Download the OpenHanded Project's Flash Filesystem Tool
   11. `$ cd ~/tmp/qemu-n800/`
   11. `$ svn cat http://svn.o-hand.com/repos/poky/trunk/scripts/poky-nokia800-flashutil > poky-nokia800-flashutil`
   11. `$ chmod +x poky-nokia800-flashutil`
   1. Extract the "config" partition from your Nokia N800
   11. `$ cd ~/tmp/qemu-n800/`
   11. `$ ssh root@nokia-n800 cat /dev/mtd1ro > config.mtd`
   1. Use the OpenHanded Project's Flash Filesystem Tool to create a filesytem for the emulated system (these directions adapted from Marcin Juszkiewicz's instructions [http://blog.haerwu.biz/2008/04/11/nokia-n800-emulation/])
   11. `$ cd ~/tmp/qemu-n800/`
   11. `$ ./poky-nokia800-flashutil os2008/initfs.jffs2 qemu-n800.img initfs`
   11. `$ ./poky-nokia800-flashutil config.mtd qemu-n800.img config`
   11. `$ ./poky-nokia800-flashutil os2008/rootfs.jffs2 qemu-n800.img rootfs`
   1. Start QEMU with the appropriate options
   11. `$ cd ~/tmp/qemu-n800/`
   11. `$ ./instroot/bin/qemu-system-arm -kernel os2008/zImage -M n800 -mtdblock qemu-n800.img -m 130 -append "root=/dev/mtdblock4 rootfstype=jffs2"`
   1. Victory !
----
'''Where Can I Learn More About the OpenHanded Project ?'''

The OpenHanded Project's Subversion repository is at:
   * ViewCVS: http://svn.o-hand.com/view/poky/trunk/
   * Subversion: http://svn.o-hand.com/repos/poky/trunk/
----
'''What about Windows Users ?'''

QEMU compiles under [MinGW32]
----
'''No, Really, What about Windows Users ?'''

Here is a patched QEMU with Nokia N800 support for Win32 [http://www.rkeene.org/projects/info/resources/projects/nokian800/qemu/qemu-20080307-win32-nokian800.zip].  It might even work, I really have no way to try it.  Here's how I compiled it (cross-compiled under Linux), though:
Here is a patched QEMU with Nokia N800 support for Win32 [http://www.rkeene.org/projects/info/resources/projects/nokian800/qemu/qemu-20080307-win32-nokian800.zip]. Here's how I compiled it (cross-compiled under Linux using [MinGW32]):
   1. `$ CFLAGS='-I/home/rkeene/root/windows-i386/include' LDFLAGS='-L/home/rkeene/root/windows-i386/lib' ./configure --prefix=${HOME}/tmp/qemu-n800/qemu-20080307-win32-nokian800 --disable-linux-user --enable-system --disable-darwin-user --disable-kqemu --disable-vnc-tls --cpu=i386 --enable-mingw32 --cross-prefix=i586-mingw32msvc-`
   1. `$ make`
   1. `$ make install`
You will still need to figure out to extract the Nokia N800 firmware, and create the MTD block device contents.  Good luck!

[http://www.rkeene.org/projects/info/resources/projects/nokian800/qemu/qemu-win32-qemu-nokian800-2-small.png]

Legend

     Only in r18
     Only in r19
     -->      Modified slightly between r18 and r19