Native Android runtime research for jailbroken PlayStation 5 consoles.
PS5Droid is an open-source systems-research project that investigates — step by step, with test evidence — what it would take to run Android application components directly inside a native PS5 homebrew payload. It is not a Linux boot, a VM, an emulator image, or a Waydroid port, and it does not claim to run Android apps today. Every capability this repository ships is either tested on the host, implemented against verified console APIs but not yet console-executed, or honestly marked not implemented / blocked.
Waydroid is used as an architectural reference only (see
docs/waydroid-analysis.md); no Waydroid
code is imported. Low-level console facts come from the open-source
ps5-payload-sdk ecosystem.
| Area | Status |
|---|---|
| Portable platform layer (memory, threads, fs, IPC) | Implemented and tested (host) |
| Linux ABI dispatch experiment (guest fd table, epoll/eventfd, mmap/brk/futex subset) | Implemented and tested (host) |
| Compatibility matrix (77 syscalls: 22 emulated / 2 partial / 53 unsupported) | Implemented and tested (host) |
| Capability probes + runtime manager with structured blockers | Implemented and tested (host) |
| Android image manifest + SHA-256 + read-only ext4 superblock probe | Implemented and tested (host) |
| Launcher UI model + 8x8 framebuffer font | Implemented and tested (host) |
Native PS5 payload (ps5droid.elf, video-out + pad + user service) |
Implemented, NOT tested on console |
| PS5 PKG packaging | Not implemented (ELF-payload path only) |
| Linux binary loading / bionic re-hosting (Milestone 4) | Implemented and tested (host) |
| Binder re-hosting (Milestone 5) | Implemented and tested (host) |
| APK package inspection (Milestone 6) | Implemented and tested (host) |
| Audio output | Not implemented (explicitly reported unsupported) |
| Vulkan / GPU-accelerated Android graphics | Blocked (no Vulkan driver for homebrew; proprietary AGC/GNM only) |
Build status: host build + 40 unit tests green (gcc and clang, ASan/UBSan clean). The PS5 target is cross-built in CI only when explicitly requested, using the official open-source SDK.
app/main.cpp (host CLI) app/ps5_main.cpp (PS5 payload)
ui/launcher + ui/bitmap_font
android/runtime_manager + android/image_manager (+ sha256)
compat/syscall_dispatch (Linux ABI experiment)
compat/memory_compat + compat/ipc_compat
platform/ (posix backend | ps5 backend)
- platform/ — portable memory/thread/fs/display/input primitives; the PS5 backend uses ps5-payload-sdk facilities with hand-maintained, provenance-documented firmware declarations.
- compat/ — accepts Linux x86_64 syscall numbers and executes a
small, honestly classified subset (anonymous memory, clocks, futex
wait/wake, streams); everything else returns
-ENOSYSwith an explanation. The verified Linux→FreeBSD number mapping (e.g. mmap 9→477) is data insrc/compat/linux_abi.h. - android/ — image handling (manifest, SHA-256, ext4 superblock probe; no mounting is possible on Orbis) and the runtime manager whose start attempt always reports structured, reasoned blockers today.
- ui/ — pad/keyboard-driven launcher model and a framebuffer font.
Details: docs/architecture.md.
cmake -B build -G Ninja
cmake --build build
ctest --test-dir build --output-on-failure
./build/ps5droid-host # probes + Linux ABI demo
./build/ps5droid-host --matrix # full compatibility matrixexport PS5_PAYLOAD_SDK=/opt/ps5-payload-sdk
cmake -B build-ps5 -G Ninja \
-DCMAKE_TOOLCHAIN_FILE=$PS5_PAYLOAD_SDK/host/toolchain/prospero.cmake \
-DPS5DROID_BUILD_PS5=ON
cmake --build build-ps5 --target ps5droid # -> build-ps5/ps5droid.elfDeploy with prospero-deploy over the ELF loader (port 9021). See
docs/development.md for prerequisites and
console caveats. ps5droid.elf is a payload, not a PKG, and has not
been run on a console from this project yet.
PS5Droid is MIT-licensed (see LICENSE). Third-party
references and their licenses are tracked in
THIRD_PARTY_NOTICES.md. The project never
bundles or downloads proprietary Sony SDKs, console keys, Google Play
Services, Widevine or proprietary codecs.