uARM Multi-Device Emulator

uARM is a multi-device Palm (and Pocket PC!) emulator for SDL platforms. Rather than simply emulate a Palm OS environment to boot apps, uARM emulates real hardware to boot complete ROMs.

Per the creator's GitHub page, it features:

  • Cycle-inaccurate emulation
  • Vaguely correct emulation of SoC IP blocks
  • Miserable-at-best performance on top-of-the-line modern hardware
  • Questionable-at-best accuracy
  • Somewhat comprehensible code
  • Hacky-at-best quality
  • Contains a kind-of-cool virtual SD card emulator

uARM is licensed under GPLv3 and open for contributions!

Source code, Linux binaries, and compatible ROMs can be found in the Downloads section below. However, it is recommended to build from GitHub for best results with the latest code.


To run uARM, a few command line options exist:

  • -r Provide a NOR boot ROM. This is the OS image. Required, unless you supply the -x parameter
  • -x Tells the emulator that no NOR ROM exists (S3C24xx can boot directly from NAND, for example)
  • -n Provide a file for the initial state of the NAND flash. Required for devices that have NAND. You file needs to be of the proper size!
  • -s Provide an sdcard image. This is mutable (emulator can write to it). Cards under 2GB will appear as SD, larger as SDHC
  • -g Expect GDB to connect to a given port for debugging. Halt until it connects. The built-in GBD stub is quite good, supporting watchpoints, breakpoints, etc


./uARM -r PalmOsCobaltT3.img                          # Boot PalmOs Cobalt on the T|T3
./uARM -x -n Z22.NAND.bin                             # Boot Z22 from NAND
./uARM -n TX.NOR.bin -n TX.NAND.bin                   # Boot T|X
./uARM -n TE2.NOR.bin -n TE2.NAND.bin -s sdcard.img   # Boot T|E with an sd card


2020.10.02 uARM.source.2020.10.02.zip284K
2020.10.02 uARM.linux.binaries.2020.10.02.zip4.8M
all uARM.palm.images.zip126M

Also Available At