- We are not responsible for bricked devices, dead batteries, corrupted data, broken USB connections, thermonuclear war, or your Apple device turning into a pear.
- This project boots a volatile PongoOS image and does not intentionally flash the device, but low-level boot experiments always carry risk.
- Please do your own research if you have any concerns about the features included here before booting PongoOS or loading DFUoom.
- YOU are choosing to make these modifications. If you point the finger at us for messing up your device, we will point you back to this disclaimer — and may laugh a little.
— The DFUoom project
Charge the device, use a reliable data cable, and keep backups. The iPhone 6
(t7000) is the tested target. Other checkm8-compatible devices may expose
the required PongoOS APIs, but they remain untested.
Run Doom as a native ARM64 PongoOS module on checkm8-compatible Apple devices.
Educational purpose notice: This project was created for educational purposes, low-level systems research, and learning about boot environments, USB protocols, framebuffers, and game-engine portability.
DFUoom does not execute inside Apple's DFU firmware. DFU mode is the entry point used by checkra1n to boot a volatile PongoOS image. PongoOS then loads DFUoom and a user-supplied WAD entirely into RAM:
iPhone DFU mode
|
v
checkra1n / checkm8
|
v
PongoOS (volatile)
|
+-- DFUoom Mach-O module
+-- user-supplied WAD
|
v
Doom game loop -> Apple-device framebuffer
Nothing is flashed by the supplied scripts. A normal reboot removes PongoOS, DFUoom, and the uploaded WAD from memory.
- Native ARM64 Doom execution; no CPU emulation.
- Designed and tested for the iPhone 6 (
t7000, Apple A8). - Runtime framebuffer discovery through PongoOS.
- Full-screen clockwise landscape output, stretched to the device dimensions.
- Linux evdev keyboard control with real key-down/key-up events.
- Terminal-input fallback.
- Uploaded WAD exposed to the engine as an in-memory virtual file.
- PongoOS command echo hidden while the game is running.
- Reproducible, pinned PongoOS, cctools-port, and DoomGeneric revisions.
This repository does not contain DOOM.WAD, DOOM1.WAD, executables from
the commercial game, or any other game data. Supply a legally obtained IWAD,
or use a compatible free replacement such as Freedoom.
The build downloads the GPL-licensed DoomGeneric source at its pinned upstream revision. See Third-party notices.
git clone https://github.com/csoftware-arigpt/DFUoom.git
cd DFUoom
nix-shell
make -j"$(nproc)"
make verifyExpected artifacts:
build/Pongo.bin
build/DFUoom
Download checkra1n only from its official source, make it executable, and keep it outside this repository.
export CHECKRA1N=/absolute/path/to/checkra1nscripts/run-dfuoom.sh --boot /absolute/path/to/doom1.wadBefore checkra1n starts, the script displays this message for five seconds:
IMPORTANT: After PongoOS starts, press Ctrl+C in this terminal.
Follow checkra1n's DFU instructions. When PongoOS is visibly running on the
iPhone, press Ctrl+C once in the terminal. The wrapper treats that interrupt
as releasing checkra1n and continues waiting for PongoOS USB.
If PongoOS is already running:
scripts/run-dfuoom.sh /absolute/path/to/doom1.wad| Host key | Action |
|---|---|
WASD or arrows |
Move / turn |
Space |
Fire |
E |
Use |
Shift |
Run |
Alt |
Strafe |
1–7 |
Select weapon |
Esc, Enter, Tab |
Doom UI keys |
Q |
Detach the host controller without stopping Doom |
X |
Stop DFUoom |
For terminal fallback:
DFUOOM_INPUT_DEVICE=terminal \
scripts/run-dfuoom.sh /absolute/path/to/doom1.wadThe original DFUoom integration code is available under the MIT License. Fetched dependencies retain their respective licenses. The resulting combined binary includes GPL-licensed DoomGeneric code and must be distributed in accordance with that license.
