cerf.cx - read more about the project
A universal Windows CE emulator: a virtual hardware platform that boots real CE and Windows Mobile ROMs on modern Windows.
Download the WIP build (6.7) from artifacts to use all the latest features, or go to the latest release.
Run launcher.exe: pick a device, and it downloads the ROM bundle and boots it. Running cerf.exe --device=... directly, its command line and its logs are covered in the articles.
A ROM boots only if that exact board is implemented in CERF - a matching SoC is not enough. Dropping in your own dump of an already-supported board is covered in the articles.
Bringing up a board CERF does not support is emulator development: the board's memory map, every peripheral its drivers touch, the SoC quirks - all of it implemented in C++, grounded in datasheets, BSP sources and RE, at the quality bar CERF already ships. It is not a config tweak, and not something to hand to an AI and expect magic.
Important
CERF does not accept ROM submissions / board implementation requests. The devices worth doing are done, and so are several that cost months of work and that essentially nobody needs. Bringing up one more board to arrive at one more Windows CE desktop is a very large amount of work for an outcome that already exists. Further submissions will be declined, unless they are genuinely interesting or in demand and I want to do the work.
Requires Visual Studio 2026 with the C++ desktop development workload.
Note
First build on a fresh machine takes 1+ hour. vcpkg compiles dependencies from source before CERF starts linking. This happens once per machine - subsequent builds reuse the cached vcpkg_installed/ tree and finish in a few minutes. Do not interrupt the first build.
Set up the clone (once per machine):
setup.cmd
This initialises submodules, points git at the repo's tracked hooks
(core.hooksPath = .githooks - git does not clone hook config, so hooks are
inert in a fresh clone until this runs), and reports any missing prerequisite
(Python launcher, vcpkg MSBuild integration). Re-run it any time; it is
idempotent. setup.cmd -Check reports status without changing anything.
Build via the helper script:
powershell -ExecutionPolicy Bypass -File build.ps1
Or invoke msbuild directly:
msbuild cerf.sln /p:Configuration=Release /p:Platform=Win32
ce_apps/ holds the Windows CE binaries CERF ships, including the Guest Additions display
driver. Building them needs a CE toolchain and SDK, which are not required for
cerf.exe itself - if you are working on the emulator core, boards, SoCs, the JIT or the
host UI, ignore this and use the prebuilt binaries.
To build them, install eMbedded Visual C++ 4.0 (a free, officially archived Microsoft download) and run one script. Full instructions: docs/ce_apps_setup.md.
setup.cmd -Check reports whether the CE toolchain is present.
The website is built from docs/website/ - python tools/build_site.py --serve runs it locally with live reload.
| Version | Release Date | Changes |
|---|---|---|
| v6.7 | TBA |
π± Devices πΏ Emulator π Launcher πΎ CE Apps β¨ Guest Additions |
| v6.6 | 18 Jul 2026 |
π± Devices πΏ Emulator π Launcher |
| v6.5 | 17 Jul 2026 |
π± Devices πΏ Emulator π Launcher πΎ CE Apps β¨ Guest Additions |
| v6.4 | 15 Jul 2026 |
π± Devices |
| v6.3 | 15 Jul 2026 |
π± Devices πΏ Emulator π Launcher β¨ Guest Additions |
| v6.2 | 12 Jul 2026 |
πΏ Emulator π Launcher |
| Previous versions - see the full changelog. | ||
See launcher's boards details database for per-board issues.
Caution
DO NOT USE CERF CODEBASE AS REFERENCE FOR SoCs, BOARDS, PERIPHERALS - AI WRITTEN CODE CAN'T BE TRUSTED!
Built with Claude via Claude Code. Not production-grade.
CERF ships a Claude Code-based development environment for working on the emulator - including bringing up brand-new boards from their ROMs. Launch it from the repo root with:
run_claude.cmd
It runs Claude Code with a custom system prompt that injects the entire project documentation (CLAUDE.md plus every agent_docs/ reference page) into every agent, so each session starts fully briefed on the project's rules, architecture, and subsystems - no "please read the docs first" needed.
The environment provides the /start-board-implementation skill: drop your ROM into bundled/devices/ (or just point the agent at it) and run the skill. The agent identifies the board and SoC straight from the ROM, checks what CERF already supports, estimates the effort, and - on your go-ahead - starts the bring-up with a cross-session tracking document. So you can literally drop in your ROM and start the procedure of bringing it up.
Warning
The dev environment runs Claude in skip-permissions mode - it can execute anything on your machine without prompting. It also force-kills its own Claude instance, and any clangd.exe, that leaks memory past a threshold. The first launch shows a one-time explanation; press Enter to acknowledge it.
MIT. Third-party components and studied references are listed in THIRD_PARTY_NOTICES.md.