- tests: link vendored sqlite amalgamation instead of system -lsqlite3; wrapper VFS with trivial xFullPathname; unlink stale app.db + pre-create before open (runner CANTOPEN) - tests: free parsed values in test_json_oom_safe (LSan leak) - ci: pin SDK via checkout+fetch-depth 0 (raw SHA is not a ref) - README: credit SirHumza & CyberMask367, no-PKG beta payload install, beta access via Discord
orbisRPC — Discord Rich Presence for PS4 (GoldHEN RPC)
by SirHumza & CyberMask367 · discord.gg/BWEyfcT7ZQ
Discord Rich Presence for the jailbroken PS4 — every game, zero setup.
A background daemon that lives entirely on your console and posts what you're
playing to Discord: name, cover art, timer. No PC at runtime.
Install (5 minutes)
⚠️ No PKG yet — beta installs via payload. Grab the latest test-build
.elffrom the Discord (discord.gg/BWEyfcT7ZQ).
- If an old test build is on the console, delete the
/data/orbisRPCfolder first. - Send the payload to the PS4 (elfldr / Payload Guest) and run it once —
it writes a fresh
/data/orbisRPC/config.json. - Open
/data/orbisRPC/config.json, put your Discord token in the"token": "SET_ME"slot, then re-run the payload. - Launch a game and watch Discord.
After a reboot: re-jailbreak, then enable AutoRun for orbisrpc in
Payload Guest once — it starts itself on every jailbreak after that.
✅ Firmware: confirmed working on 9.00 through 13.52.
Upgrading test builds: delete the /data/orbisRPC folder from your PS4
first, then launch the new payload once — it writes a fresh config.json.
Open /data/orbisRPC/config.json, put your Discord token in the
"token": "SET_ME" slot, and re-run the payload.
Support / Community
Questions, test-build feedback, bug reports: join the Discord —
discord.gg/BWEyfcT7ZQ — and post in
testers-chat. No need to hunt for the link; this is it.
⚠️ This is a beta. Test builds are handed out on the Discord — join the server to get beta access.
Game not showing on Discord? Your DNS blocker is likely eating Sony's
TMDB host. Either disable it or add an exception in
/data/nanodns/nanodns.ini:
[exceptions]
tmdb.np.dl.playstation.net
feature.api.playstation.com
.stun.playstation.net
stun..playstation.net
ena.net.playstation.net
post.net.playstation.net
gst.prod.dl.playstation.net
Save, then restart the console.
What you get
| 🎮 Any game, no lists | Names resolve from your console's metadata (SFO, app.xml) plus Sony's TMDB — CUSA, PPSA, indies, zero per-game setup. |
| 🖼️ Real cover art | Game art served per title, PlayStation logo when idle. |
| ⏱️ True timers | Survive reconnects and restarts, resume across quick game switches. |
| 🧠 Self-learning | First-seen titles are remembered, so later boots resolve instantly. |
| 🔄 Self-updating | Daemon updates land from GitHub releases with automatic rollback. No reinstall treadmill. |
| 📦 Simple install | Payload install → token → presence. (Setup PKG coming later.) |
How it works
PS4 (GoldHEN) Discord
┌─────────────────────────┐ ┌──────────────────┐
│ orbisRPC daemon │ TLS │ your profile │
│ sandbox scan → game ID │ ◄──► │ Playing Game │
│ metadata/TMDB → name │ │ [cover] [timer] │
└─────────────────────────┘ └──────────────────┘
Details: docs/DAEMON.md · docs/INSTALLER.md ·
docs/TROUBLESHOOTING.md ·
docs/PRODUCTION.md
Config
Only token (your Discord user session token) is required —
/data/orbisRPC/config.json. Everything else ships working.
| Key | Default | Meaning |
|---|---|---|
token |
— | Discord user session token (required) |
presence_state |
"On PS4" |
Activity state line for games and the home screen |
presence_settings_text |
"In Settings" |
Activity name while Settings is open |
poll_interval_s |
12 |
Detection cadence |
home_art |
project logo | Idle tile artwork (URL or uploaded asset key) |
pkgzone_enabled |
true |
Ask pkg-zone.com for homebrew names — sends the title id to a third party; set false to disable |
retro_enabled |
true |
Ask the retro-games indexes for PS1/PS2/PSP names and covers |
show_firmware |
true |
Show the Firmware X.YY line |
show_idle |
true |
Post a presence on the home screen, Settings and the browser |
show_media |
true |
Post media apps (Netflix, YouTube, Plex…) as Watching |
show_homebrew |
true |
Post homebrew titles. Retro classics are not affected |
debug |
false |
Verbose per-poll logging |
A false visibility flag still detects the title — it just stops telling
Discord about it, so a game underneath keeps showing. The exception is the home
screen: with show_idle off, a game that closes is cleared rather than left up,
since nothing is running underneath there.
Plus the self-learned titles map, which fills itself in as titles resolve.
Building
./scripts/build_sdk_from_source.sh # SDK from git (REQUIRED - see note)
PS4_SDK_SRC=~/ps4-payload-sdk-src \
PS4_PAYLOAD_SDK=~/ps4-payload-sdk ./scripts/build_sdk.sh # daemon payload
make -f installer/Makefile # Setup PKG (OpenOrbis toolchain, llvmshim)
make -C tests test # host unit tests
make -C tests asan # ASan/UBSan
python3 tests/e2e_consumer.py # contracts + linkage gate
⚠️ Build the SDK from git, not the release ZIP. The SDK's CRT refuses to
start on firmware it does not list, and terminates the payload before main()
with no log line. The released SDK (v0.9) lists 13.50 but not 13.52, so a
ZIP-built payload cannot boot on 13.52. See
findings/sdk-13.52.md.
Safety
A user session token grants full account access — never share the config, never commit a real token. Token-based presence is against Discord's ToS (standard practice for headless presence tools; risk is yours).
License
To be finalized (MIT vs GPL). No GPL source is copied into this tree.