Skip to content
gweslabPublic

About

Universal Windows CE Emulator - CE Runtime Foundation

Topics

Resources

Contributing

Stars

115 stars

Watchers

7 watching

Forks

Latest commit

Β 

History

1,388 Commits

Folders and files

NameName
Last commit message
Last commit date
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

Warning

This document covers development and contribution aspects. Visit cerf.cx for user-oriented documentation. This repository includes emulator frontends, website and other tools.

Root repository - UIs and build tools
libCerfEngine - JIT repository; libCerfCore - Emulator repository; cerf.cx - read more information about the project

Discord Patreon

Warning

Beta stage. It is a hobby project, developed in spare time and can't be a called production-grade/exceptionally stable project. Expect bugs, crashes, and breaking changes. CERF stays beta permanently

Warning

Project is under CE Runtime Foundation License since 8.0.4. All the prior code is permanently under MIT. For 8.0.4+ code:

  • If you are using code heavily - write "Based on CE Runtime Foundation - https://cerf.cx" in its UI
  • Non-commercial use only. The goal of the project is historical preservation rather than earning money. If you want to use the project to do business - contact cerf.commercial@yaroslavkibysh.com for enterprise license.
  • Barter and common goals are welcome. If you want to use CERF in commercial for the sake of historical showcase; you contribute to the project or want any other exceptions - I'm open to discussions anytime.
  • The license is experimental, and we might drop it later if circumstances prove it

Downloads

Visit the website to learn how to download a stable or an unstable build.

8.1 build

Please read these if you are planning on contributing.

Building

CERF builds on Windows, Linux and macOS with the same build.py script.

Windows

Install modern Visual Studio with the C++ desktop development workload.

Note

The first build on a new machine takes more than one hour. vcpkg compiles the dependencies from source, and build.py builds Qt into third_party/qt/. This occurs one time on each machine. Later builds use the cached trees and are complete in a few minutes. Do not stop the first build.

Linux

Install the build packages. These are the Ubuntu 26.04 names:

sudo apt install git cmake ninja-build g++ pkg-config ccache wine clang patchelf curl zip unzip tar make perl bison flex libgl-dev libasound2-dev libxcb1-dev libxcb-randr0-dev libwayland-dev

Clone vcpkg and run bootstrap-vcpkg.sh in the clone. Set VCPKG_ROOT to the clone. The build downloads Qt into third_party/qt/ and ships it with CERF.

macOS

Install the Xcode Command Line Tools (xcode-select --install) and Homebrew. Then install the build packages:

brew install cmake ninja pkgconf ccache qtbase qtsvg qtdeclarative libslirp libzip nlohmann-json

All hosts

Caution

Development environment might need additional configuration on your machine that this guide doesn't explain. If you find a bug there, or find a more universal approach - feel free to submit a pull request.

Configure the clone (one time on each machine), then build the entire project with a helper script. On Windows:

python tools/dev_setup.py
python build.py

On Linux and macOS:

python3 tools/dev_setup.py
python3 build.py

tools/dev_setup.py --check is a dry run. The setup will

  • point git at tracked hooks
  • report missing prerequisite

The build script will:

  • wait for a parallel build (Claude Code-special feature for parallel agents work)
  • install a pinned Rust toolchain into third_party/rust and build the resvg SVG renderer
  • build the emulator itself (and will pick appropriate SDK/toolchain from your installations)
  • build all the bundled Windows CE apps (at ce_apps/)

Android

python build.py --android builds build/<Config>/android-arm64/cerf.apk on a Windows or x86-64 Linux host.

python build.py --android=amd64 builds build/<Config>/android-amd64/cerf.apk for an x86_64 Android emulator. Install these first:

  • the Android SDK with platforms;android-36, build-tools;36.0.0 and ndk;29.0.14206865, and set ANDROID_SDK_ROOT to it
  • a JDK 17 or newer, and set JAVA_HOME to it
  • on Linux, a vcpkg checkout with bootstrap-vcpkg.sh run in it, and set VCPKG_ROOT to it

The build downloads Qt 6.12 for Android and for the host into third_party/qt/.

To sign the package, set QT_ANDROID_KEYSTORE_PATH, QT_ANDROID_KEYSTORE_ALIAS, QT_ANDROID_KEYSTORE_STORE_PASS and QT_ANDROID_KEYSTORE_KEY_PASS.

Building the CE-side binaries (optional)

ce_apps/ holds various Windows CE applications CERF is bundled with including the Guest Additions driver.

You don't need those if you are not working with Guest Additions. You may copy Guest Additions binaries from an artifact or skip them entirely. On x86-64 Linux the build runs these tools through Wine.

macOS and ARM64 Linux cannot run these tools. Give build.py the ce_apps directory of a Windows or x86-64 Linux build, for example from a CI artifact. The build then copies the binaries from that directory:

python3 build.py --ce-apps-from=<the ce_apps directory>

To build ce_apps/, install eMbedded Visual C++ 4.0 (a free Microsoft download from the Microsoft archive). CERF includes a script that will unpack the installation (you dont want and probably can't install ancient tools) and will place the build tools / SDK into appropriate directories. See docs/ce_apps_setup.md.

python tools/dev_setup.py --check reports whether the CE toolchain is present.

Website

This repository includes cerf.cx source code at docs/website.

python tools/build_site.py --serve runs the website on your machine with live reload.

AI Usage / Vibecode Notice

AI-assisted contributions are welcome. That's a nice thing to have in 2026 - you have access to tons of resources right in your pocket. Let me show generic use cases on this project:

  • study emulators, study JIT, study assembly on various archs, study every piece that affects your code that you don't understand how it works yet
  • learn and use AI to reverse engineer; use AI to reach for more correct architecture calls when you stall
  • use AI to find projects/resources with compatible license to learn/borrow something complex
  • use it to find manuals and papers for devices you target, SoCs/peripherals you target and to extract quotes from them
  • use it to work with and explain complex data structures and non trivial algorithms
  • use it to review your code and to criticize it
  • the AI is an instrument to convert plain thoughts into a code - that's a replacement for typing code in order to get the same code you wanted but faster

The vibe code is banned. Please read Contribution Guidelines. Do not turn this into an AI slop. We put an effort here and we maintain a quality level.

Vibecoding non complex modules is fine but you will most likely violate the Contribution Guidelines by producing shitcode.

Claude Development Environment

The environment includes several controversial things you need to know before using it.

  • Full project documentation is injected into a system prompt - this eats tokens
  • The environment kills global clangd.exe and own claude.exe instances if they leak memory
  • Thinking is set to high; bypass permissions mode is set
  • Several own/3rd-party skills included
  • Powerful hooks triggering when agent might do something bad to the codebase
  • IDA MCP is ready to be installed at tools\ida_server.py and tools\ida_claude.py
  • FS Read MCP is a workaround for Read() tool, useful for /tracking restore and massive text files (tools\fs_read_mcp.py)

The environment gives you the /implement-device skill. Run the skill and agent will start the new board bring-up on its own. You need experience - the skill won't do all the work instead of you. (it actually will do, and that's the problem)

Run the environment:

python run_claude.py

Supported Devices

SoC Family Board Features
ARM ARM720T
ARM720T
Microsoft Hardware Reference Platform PDA Microsoft Hardware Reference Platform odo Touch Panel Keyboard or keypad Emulator's Guest Additions Built-in/Pluggable Sound
Freescale i.MX31L
ARM1136
Toshiba Gigabeat S PDA Microsoft Zune 30 zune_30 Keyboard or keypad Emulator's Guest Additions Built-in/Pluggable Sound
Freescale i.MX51
Cortex-A8
Ford SYNC Gen 2 PDA Ford MyFord Touch ford_sync_2 Touch Panel Emulator's Guest Additions
Intel IOP13xx
XScale
Siemens SIMATIC MP 377 PDA Siemens SIMATIC MP 377 12" Key * siemens_mp377_12_key Touch Panel Emulator's Guest Additions Built-in/Pluggable Sound Built-in Network Adapter
PDA Siemens SIMATIC MP 377 12" Touch siemens_mp377 Touch Panel Emulator's Guest Additions Built-in/Pluggable Sound Built-in Network Adapter
PDA Siemens SIMATIC MP 377 15" Touch siemens_mp377_15_touch Touch Panel Emulator's Guest Additions Built-in/Pluggable Sound Built-in Network Adapter
PDA Siemens SIMATIC MP 377 19" Touch siemens_mp377_19_touch Touch Panel Emulator's Guest Additions Built-in/Pluggable Sound Built-in Network Adapter
Intel SA-1100
StrongARM
HP Jornada 820 PDA HP Jornada 820 jornada_820 Mouse Keyboard or keypad CPU Supend/Resume Emulator's Guest Additions Built-in/Pluggable Sound PC Card Socket Built-in Network Adapter Battery
Intel SA-1110
StrongARM
Compaq iPAQ H3000 PDA Compaq iPAQ H3100 Series ipaq_h31xx Touch Panel Keyboard or keypad CPU Supend/Resume Emulator's Guest Additions Built-in/Pluggable Sound Built-in/Pluggable Microphone PC Card Socket Built-in Network Adapter Battery
PDA Compaq iPAQ H3600 Series ipaq_h36xx Touch Panel Keyboard or keypad CPU Supend/Resume Emulator's Guest Additions Built-in/Pluggable Sound Built-in/Pluggable Microphone PC Card Socket Built-in Network Adapter Battery
PDA Compaq iPAQ H3660/H3670 ipaq_h3660_h3670 Touch Panel Keyboard or keypad CPU Supend/Resume Emulator's Guest Additions Built-in/Pluggable Sound Built-in/Pluggable Microphone PC Card Socket Built-in Network Adapter Battery
HP Jornada 700 series PDA HP Jornada 720 jornada_720 Touch Panel Keyboard or keypad CPU Supend/Resume Emulator's Guest Additions Built-in/Pluggable Sound PC Card Socket Built-in Network Adapter Battery
Pangolin PDA SmartBook G138 smartbook_g138 Touch Panel Keyboard or keypad CPU Supend/Resume Emulator's Guest Additions PC Card Socket Built-in Network Adapter
Siemens SIMpad PDA Siemens SIMpad SL4 simpad_sl4 Touch Panel Keyboard or keypad Emulator's Guest Additions Built-in/Pluggable Sound PC Card Socket Built-in Network Adapter Battery
Intel XScale PXA255
XScale
Askey PC3xx PDA PSC/Datalogic Falcon 4220 falcon_4220 Touch Panel CPU Supend/Resume Emulator's Guest Additions Built-in/Pluggable Sound PC Card Socket Built-in Network Adapter Battery
NEC MobilePro 900 Series PDA NEC MobilePro 900(c) nec_mobilepro_900 Touch Panel Keyboard or keypad CPU Supend/Resume Emulator's Guest Additions Built-in/Pluggable Sound PC Card Socket Built-in Network Adapter
Intel XScale PXA270
XScale
Symbol Hamptons PDA Symbol MK500 (A035QN02 panel) symbol_mk500_a035qn02 Touch Panel Emulator's Guest Additions Built-in/Pluggable Sound
PDA Symbol MK500 (T35QM7117 panel) symbol_mk500 Touch Panel Emulator's Guest Additions Built-in/Pluggable Sound
PDA Symbol MK590 * symbol_mk590 Touch Panel Emulator's Guest Additions Built-in/Pluggable Sound
Samsung S3C2410
ARM920T
Samsung SMDK2410 PDA Device Emulator 2003 (QVGA) devemu_gen1 Touch Panel Keyboard or keypad CPU Supend/Resume Emulator's Guest Additions Built-in/Pluggable Sound PC Card Socket Built-in Network Adapter Battery
PDA Device Emulator 2003 (VGA) devemu_gen1_vga Touch Panel Keyboard or keypad CPU Supend/Resume Emulator's Guest Additions Built-in/Pluggable Sound PC Card Socket Built-in Network Adapter Battery
PDA Device Emulator 2003 Smartphone (QCIF+) devemu_gen1_sp Touch Panel Keyboard or keypad CPU Supend/Resume Emulator's Guest Additions Built-in/Pluggable Sound PC Card Socket Built-in Network Adapter Battery
PDA Device Emulator 2003 Smartphone (QVGA) devemu_gen1_sp_qvga Touch Panel Keyboard or keypad CPU Supend/Resume Emulator's Guest Additions Built-in/Pluggable Sound PC Card Socket Built-in Network Adapter Battery
PDA Device Emulator 2003 WinCE (SVGA) devemu_gen1_wince_svga Touch Panel Keyboard or keypad CPU Supend/Resume Emulator's Guest Additions Built-in/Pluggable Sound PC Card Socket Built-in Network Adapter Battery
PDA Device Emulator 2008 (QVGA) devemu Touch Panel Keyboard or keypad CPU Supend/Resume Emulator's Guest Additions Built-in/Pluggable Sound PC Card Socket Built-in Network Adapter Battery
PDA Device Emulator 2008 (VGA) devemu_vga Touch Panel Keyboard or keypad CPU Supend/Resume Emulator's Guest Additions Built-in/Pluggable Sound PC Card Socket Built-in Network Adapter Battery
PDA Device Emulator 2008 (WQVGA) devemu_wqvga Touch Panel Keyboard or keypad CPU Supend/Resume Emulator's Guest Additions Built-in/Pluggable Sound PC Card Socket Built-in Network Adapter Battery
PDA Device Emulator 2008 (WVGA) devemu_wvga Touch Panel Keyboard or keypad CPU Supend/Resume Emulator's Guest Additions Built-in/Pluggable Sound PC Card Socket Built-in Network Adapter Battery
PDA Device Emulator 2008 Smartphone (QCIF+) devemu_sp Touch Panel Keyboard or keypad CPU Supend/Resume Emulator's Guest Additions Built-in/Pluggable Sound PC Card Socket Built-in Network Adapter Battery
PDA Device Emulator 2008 Smartphone (QVGA) devemu_sp_qvga Touch Panel Keyboard or keypad CPU Supend/Resume Emulator's Guest Additions Built-in/Pluggable Sound PC Card Socket Built-in Network Adapter Battery
PDA Device Emulator 2008 WinCE (SVGA) devemu_wince_svga Touch Panel Keyboard or keypad CPU Supend/Resume Emulator's Guest Additions Built-in/Pluggable Sound PC Card Socket Built-in Network Adapter Battery
Siemens SIMATIC TP 177B 4" PDA Siemens SIMATIC TP 177B 4" color PN/DP siemens_p177 Touch Panel Emulator's Guest Additions
TI OMAP 3530
Cortex-A8
TI OMAP35x EVM PDA TI OMAP35x EVM Gen1 omap_3530_evm Touch Panel Emulator's Guest Additions Built-in/Pluggable Sound
PDA TI OMAP35x EVM Gen2 * omap_3530_evm_gen2 Touch Panel Emulator's Guest Additions Built-in/Pluggable Sound
NEC VR4102
MIPS III
NEC MobilePro 700 PDA NEC MobilePro 700 nec_mobilepro_700 Touch Panel Keyboard or keypad CPU Supend/Resume Emulator's Guest Additions PC Card Socket Built-in Network Adapter Serial Port
NEC VR4111
MIPS III
Casio Tomcat PDA Casio Cassiopeia E-55 casio_cassiopeia_e55 Touch Panel Keyboard or keypad Emulator's Guest Additions Built-in/Pluggable Sound PC Card Socket Built-in Network Adapter Serial Port
Compaq Aero 1500 PDA Compaq Aero 1520 compaq_aero_1520 Touch Panel Keyboard or keypad CPU Supend/Resume Emulator's Guest Additions Built-in/Pluggable Sound Built-in/Pluggable Microphone PC Card Socket Battery Serial Port
PDA Compaq Aero 1530 * compaq_aero_1530 Touch Panel Keyboard or keypad CPU Supend/Resume Emulator's Guest Additions Built-in/Pluggable Sound Built-in/Pluggable Microphone PC Card Socket Battery Serial Port
NEC VR4121
MIPS III
Casio PocketPostPet PDA Casio Message-Cam casio_message_cam Touch Panel Keyboard or keypad Emulator's Guest Additions Built-in/Pluggable Sound Built-in/Pluggable Microphone
PDA Casio PocketPostPet casio_pocketpostpet Touch Panel Keyboard or keypad Emulator's Guest Additions Built-in/Pluggable Sound Built-in/Pluggable Microphone
PDA Casio Toricomail casio_toricomail Touch Panel Keyboard or keypad Emulator's Guest Additions Built-in/Pluggable Sound Built-in/Pluggable Microphone
IBM WorkPad z50 PDA IBM WorkPad z50 ibm_workpad_z50 Mouse Keyboard or keypad CPU Supend/Resume Emulator's Guest Additions Built-in/Pluggable Sound Built-in/Pluggable Microphone PC Card Socket Battery Serial Port Built-in Phone Line
PDA IBM WorkPad z50 (Canada) * ibm_workpad_z50_canada Mouse Keyboard or keypad CPU Supend/Resume Emulator's Guest Additions Built-in/Pluggable Sound Built-in/Pluggable Microphone PC Card Socket Battery Serial Port Built-in Phone Line
PDA IBM WorkPad z50 (Japan) * ibm_workpad_z50_japan Mouse Keyboard or keypad CPU Supend/Resume Emulator's Guest Additions Built-in/Pluggable Sound Built-in/Pluggable Microphone PC Card Socket Battery Serial Port Built-in Phone Line
NEC CRONOS3E PDA NEC MobilePro 780 * nec_mobilepro_780 Touch Panel Keyboard or keypad CPU Supend/Resume Emulator's Guest Additions Built-in/Pluggable Sound Built-in/Pluggable Microphone PC Card Socket Battery Serial Port Built-in Phone Line
PDA NEC MobilePro 790 nec_mobilepro_790 Touch Panel Keyboard or keypad CPU Supend/Resume Emulator's Guest Additions Built-in/Pluggable Sound Built-in/Pluggable Microphone PC Card Socket Battery Serial Port Built-in Phone Line
NEC VR4122
MIPS III
Casio JX670 PDA Casio Cassiopeia E-700 casio_cassiopeia_e700 Touch Panel Emulator's Guest Additions Built-in/Pluggable Sound
PDA Casio Cassiopeia EM-500 casio_cassiopeia_em500 Touch Panel Emulator's Guest Additions Built-in/Pluggable Sound
NEC VR5500
MIPS IV
NEC Solution Gear 2-Vr5500 PDA NEC Rockhopper SG2_VR5500 nec_rockhopper Mouse Keyboard or keypad Emulator's Guest Additions PC Card Socket Built-in Network Adapter
Philips PR31500
MIPS I
Philips Velo 1 PDA Philips Velo 1 philips_velo_1 Touch Panel Keyboard or keypad CPU Supend/Resume Built-in/Pluggable Sound PC Card Socket Built-in Network Adapter Battery Serial Port
Philips PR31700
MIPS I
Philips Nino PDA Philips Nino 300 philips_nino_300 Touch Panel Keyboard or keypad CPU Supend/Resume Emulator's Guest Additions Built-in/Pluggable Sound PC Card Socket Battery Serial Port
Sharp Mobilon HC PDA Sharp Mobilon HC-4100 sharp_mobilon_hc4100 Touch Panel Keyboard or keypad CPU Supend/Resume Emulator's Guest Additions Built-in/Pluggable Sound PC Card Socket Built-in Network Adapter Battery Serial Port
PDA Sharp Mobilon HC-4100 (8 MB) sharp_mobilon_hc4100_8mb Touch Panel Keyboard or keypad CPU Supend/Resume Emulator's Guest Additions Built-in/Pluggable Sound PC Card Socket Built-in Network Adapter Battery Serial Port
PDA Sharp Mobilon HC-4500 sharp_mobilon_hc4500 Touch Panel Keyboard or keypad CPU Supend/Resume Emulator's Guest Additions Built-in/Pluggable Sound PC Card Socket Built-in Network Adapter Battery Serial Port
PDA Sharp Mobilon HC-4500 (8 MB) sharp_mobilon_hc4500_8mb Touch Panel Keyboard or keypad CPU Supend/Resume Emulator's Guest Additions Built-in/Pluggable Sound PC Card Socket Built-in Network Adapter Battery Serial Port
PDA Sharp Mobilon HC-4600 sharp_mobilon_hc4600 Touch Panel Keyboard or keypad CPU Supend/Resume Emulator's Guest Additions Built-in/Pluggable Sound PC Card Socket Built-in Network Adapter Battery Serial Port

* Supported, but CERF does not model this board's differences.

Changelog

Version Release Date Changes
v8.1 TBA

πŸ“± Devices
πŸ†• NEC MobilePro 790 support
πŸ†• IBM WorkPad z50 support
πŸ†• Compaq Aero 1500 family support
πŸ†• Sharp Mobilon HC4xxx: HC4500/HC4600 support; suspend support

πŸ’Ώ Emulator
πŸ†• Save states improved: Emulator attempts to restore RAM with user objects instead of giving up
πŸ†• Low battery deadlock helper for a shutdown dialog
βœ… Various styling/usability fixes on all platforms

πŸ—‚οΈ Devices Manager
πŸ†• Board parts editor in Board Settings dialog

✨ Guest Additions
πŸ†• Indexed palettes rework and configuration

v8.0 31 Oct 2026

πŸ“± Devices
πŸ†• DevEmu 2003: Added board type, keyboard layout and screen configuration support
πŸ†• iPAQ 1st gen: keypad support
πŸ†• iPAQ 1st gen: battery support
πŸ†• iPAQ 1st gen: alarm/charge LED
βœ… Fixed WM2003SE touch crash regression

πŸ’Ώ Emulator
πŸ†• Support for Linux (x86-64 and ARM64)
πŸ†• Support for macOS (ARM64)
πŸ†• Support for Android (ARM64)
πŸ†• Startup screen scale configuration and dynamic mode for retina screen
πŸ†• Device HUDs - simplified hardware buttons in a canvas
πŸ†• Rotation of any device screen
βœ… Serial connection regression on some MIPS boards

πŸš€ Launcher
❌ Replaced with Devices Manager

✨ Guest Additions
πŸ†• Screen rotation support
βœ… Moved "untrusted apps hack" for WM into optional switch since it broke WM6
βœ… Fixed miniport driver causing hangs at soft resets

πŸš‘ Patches
βœ… Patch 1: Added DevEmu 2003 screen configuration support
βœ… Patch 2: Fixed emulator startup race crash
βœ… Patch 3: Linux build now bundles many libraries instead of using system ones
βœ… Patch 4: Live theme change bug fixed; Linux ARM64 support
βœ… Patch 5: Crash fixes on non-Windows systems; styling fixes

Previous versions - see the full changelog.

CERF was known earlier as WCECL (2019)

CE Runtime Foundation License | Third-Party Notices
Copyright Β© 2019-2026 Yaroslav Kibysh

About

Universal Windows CE Emulator - CE Runtime Foundation

Topics

Resources

Contributing

Stars

115 stars

Watchers

7 watching

Forks

Releases

Sponsor this project

Packages

Contributors

Languages