51 Commits
Author SHA1 Message Date
CyberMask367 55d8df0c28 Rebuild installer as a full setup app
Replace the standalone wizard with a graphical installer featuring settings, update checks, install and uninstall flows, and optional GoldHEN and nanoDNS configuration. Add the packaging and artwork pipeline, preserve user settings across config updates, and include additional custom title mappings.
2026-10-15 23:06:19 +01:00
CyberMask367andSirHumza e35c47b3f5 upto 13.52 firmware and other fixes and changes
changed game detection logic, resolving retro games and homebrew, new rpc style, custom options in config.json, installer is not fixed yet

Co-Authored-By: SirHumza <204067870+SirHumza@users.noreply.github.com>
2026-10-06 03:06:28 +01:00
SirHumza d8f6e541d9 packaging: make the open experiment switchable; drop dead SDL font assets
The param.sfo revert shipped as a 'fix' but online verification shows
Apollo Save Tool's current main (v02.32) still ships ATTRIBUTE=32 /
CATEGORY=gde / --authinfo and is a proven universal PS4 app. So 0/gd
is probably innocent too and the real cause is still unidentified.
This commit stops overclaiming: PKG_ATTR, PKG_CATEGORY and AUTHINFO
are now make variables so either build is one flag away, the Makefile
comment records both the evidence and the counter-evidence, and the
stale 'param.sfo is the cause' claim is corrected.

Also deletes installer/font.h and scripts/genfont.py (2366 dead lines
left over from the reverted SDL reskin) and fixes a wrong deployment
path in build.sh: orbisRPC goes to /data/payloads/ for Payload Guest.
GoldHEN's own single payload slot is /data/payload.bin, a different
thing entirely.
2026-09-28 17:20:12 +02:00
SirHumza ba4e28c98a fix(installer): revert packaging to hardware-verified values, add pre-main boot marker
param.sfo ATTRIBUTE 32->0 and CATEGORY gde->gd, and drop --authinfo.
These are the only values verified to launch on real hardware. The
gde/32 + authinfo combo was theory borrowed from Apollo; every build
carrying it died silently pre-logging on a real console (4/4) while
0/gd launched fine. Isolation ruled out authinfo (2 builds), the SDL
UI, and the native UI; LIBS, the object set, and all installer.c
deltas are identical or provably safe before the first log call.
param.sfo was the last variable present in 4/4 crashes and absent
from the single success.

installer.c also gains a pre-main constructor that writes a BOOT line
via raw open/write. Four builds died with install.log completely
untouched and the in-main crash handler never armed, so loader-side
death and main-side death were indistinguishable. Now: no BOOT means
the SELF never got control; BOOT without a stage means main died
before the first log.
2026-09-28 17:13:25 +02:00
SirHumza 05401494cc installer: revert to native Sony dialogs (SDL UI crashed pre-log on console)
SDL2/Piglet/AudioOut/VideoOut init dies silently before logging
(authinfo exonerated: no-authinfo SDL build crashed identically).
Keep all remaster logic: config preserve, gen bump, token retry,
honest stage logging, daemon liveness. Drop SDL libs + font rule.
2026-09-27 18:08:17 +02:00
SirHumza 0b207aa743 docs: point README at v1.1.0 release, bump SETUP_VERSION fallback 2026-09-27 15:37:36 +02:00
SirHumza 43246c3ab3 god-tier: diag census, v1.1.0, arch docs, CI version gate
- daemon writes diag.json at boot (fw, kinfo-table hit, msgbuf /
  sandbox / shellcore reachability) for the firmware matrix
- focus_msgbuf_ok() reachability probe + host test
- version 1.1.0 (version.h + installer Makefile)
- ARCHITECTURE.md: binaries, detection cascade, gateway states,
  no-exit policy, on-disk state, installer, compat baseline
- CI consistency job: version.h vs Makefile parity gate
2026-09-27 15:31:08 +02:00
SirHumza e26d25c47a installer: custom SDL2 reskin + remaster landing
- ui.c: fullscreen Discord-blurple cards, embedded bitmap font,
  pad X-to-continue, progress bar; IME token entry kept as overlay
- scripts/genfont.py + installer/font.h: build-time rasterized font
- Makefile: -lSDL2 -lSDL2main -lScePigletv2VSH -lSceAudioOut -lSceVideoOut,
  font.h regen rule; drop stock -lSceMsgDialog
- daemon: gateway state machine, status.json heartbeat, gen supersede,
  no-exit token wait; updater removed per direction
- installer: config preserve on reinstall, honest stage logging,
  token-save verification, daemon liveness on done screen
2026-09-27 15:21:00 +02:00
SirHumza d0972b68e9 remaster: any-firmware hardening + installer remake
- detection: probe-first (ShellCoreUtil dlopen, msgbuf AppFocusChanged,
  sysctl kinfo via verified-only fw table, sandbox/save fallbacks)
- new orbisrpc/focus.c + fw.c/fw.h (bounded scans, fail-closed unknowns)
- daemon: no-exit everywhere (token wait-loop, 4004 retry), status.json
  heartbeat, daemon.gen supersede protocol
- installer: progress UI, token IME retry + FTP fallback, install.log,
  drop evict.elf (delete tools/evict.c, build_evict.sh)
- packaging: Apollo parity CATEGORY=gde ATTRIBUTE=32 --authinfo
- security: chmod 0600 on token-bearing files
- docs: firmware-independent injecting guide, SUPPORT.md, release.sh
2026-09-27 14:47:09 +02:00
SirHumza 68a34993da pkg: Apollo parity (CATEGORY=gde, ATTRIBUTE=32, --authinfo) + probe-first detection
- installer/Makefile + scripts/build.sh: create-fself --authinfo Apollo blob
- installer/Makefile: export OO_PS4_TOOLCHAIN (create-fself requires it)
- detect.c: ShellCoreUtil dlopen first in both builds; sysctl fallback
  SDK-only (OpenOrbis lacks sys/sysctl.h); OpenOrbis keeps UserService fg fallback
- rebuilt Setup PKG + param.sfo (verified gde in sfo)
2026-09-27 14:06:57 +02:00
SirHumzaandSirHumza 09f43f5be9 fix: remove dead SceAppInstUtil/SceAppContent from daemon build
These libs are linked but never referenced anywhere in daemon source.
If the modules don't exist on the target firmware, the ELF fails to
load entirely (no log.txt created) — the reported crash on 9.00/12.50/13.52.

Also scrub the live Discord token leaked into installer config files
and hardcoded fallbacks in installer.c (all now SET_ME).

Closes #2, #7. Fixes packaging mismatch #8 (CATEGORY/ATTRIBUTE/
--authinfo tracked separately).

Co-authored-by: SirHumza <sirhumza>
2026-09-26 19:49:01 +02:00
Humza 29617192e6 v1.0.0 hardening: signed-only updates, heap fix, plugin name fallback, dead code purge, release keys, secret guard, docs accuracy 2026-09-25 18:28:58 +02:00
SirHumza 5d98cd8a45 clean: descriptive comments, remove dead code, fix build errors
- Remove dead step_status() function (never called)
- Add reap_stale() forward declaration, call from ui_init()
- Add descriptive comments throughout installer.c and ui.c
- Add PAD module unload to ui_shutdown()
- Add config.json to Makefile clean target
- Fix step_token missing closing brace
- Update docs/INSTALLER.md to reflect LoadStartModule eviction
- All tests green, EBOOT matches, SHA-256 match after FTP upload
2026-09-25 17:28:55 +02:00
SirHumza eb095314c9 fix: use sceKernelLoadStartModule for eviction (kill blocked by sandbox)
- kill() returns EPERM in sandbox, so replaced with sceKernelLoadStartModule
  to launch evict.elf as a module — it reads daemon.lock and kills the daemon
- Copy evict.elf first, then load+start it via LoadStartModule
- Wait 500ms for evict.elf to run, then continue to copy orbisrpc.bin
- Removed dead kill() SIGTERM/SIGKILL code
- Verified: no kill references in binary, all tests pass, EBOOT matches
2026-09-25 17:24:22 +02:00
SirHumza 7f0153c7a9 installer: clean branding, just show the logo
- Removed all 'orbisRPC Setup' / 'Setup' branding from dialogs
- Welcome: just 'orbisRPC\n\nInstall daemon payload.'
- Status dialog: just 'status:' with daemon/evict/lock/token lines
- Done dialog: just 'Done.\n\nPayloads in /data/payloads...'
- Removed duplicate ui_ok(report) bug
- Cleaned up step_status (was broken by earlier edit)
- Removed 'Setup PKG' reference from missing-payload message

Verified: no 'Setup' in binary, EBOOT matches, tests green
2026-09-25 17:22:56 +02:00
SirHumza cd293856b9 fix: payload path back to /data/payloads, remove GoldHEN/bin refs
- PAYLOAD_BIN and EVICT_BIN both go to /data/payloads/ (Payload Guest)
- Removed all /data/GoldHEN/bin/elf/ references from code + docs
- Installer auto-evicts old daemon via SIGTERM/SIGKILL from daemon.lock
- Copies evict.elf + orbisrpc.bin to /data/payloads/
- Pre-saves config.json with Discord token
- Splash hidden before ui_init() for zero delay

Verified: EBOOT matches, SHA-256 match, tests green
2026-09-25 17:17:59 +02:00
SirHumza ddefb0db50 installer: in-app eviction, pre-saved token, docs update
- Installer sends SIGTERM then SIGKILL to daemon PID from
  daemon.lock before copying new payload (no user needs to
  manually launch evict.elf)
- Copy evict.elf to payload folder for future manual use
- Pre-save config.json with Discord token so step_token() skips entry
- Fix fallback config template to use real token (was SET_ME)
- Move sceSystemServiceHideSplashScreen() to top of main() for
  zero visible delay between splash hide and first dialog
- Update INSTALLER.md to reflect evict flow, no-sleep fact

Verified: PKG has all 3 assets, EBOOT matches, SHA-256 match, tests green
2026-09-25 17:16:23 +02:00
SirHumza d44537e2bd installer: add evict payload, pre-saved token config, fix delay
- Restore evict.elf to PKG (staged assets: daemon.elf + evict.elf + config.json)
- step_files copies both evict.elf and orbisrpc.bin to /data/GoldHEN/bin/elf/
- Pre-save config.json with Discord token so step_token() skips entry
- Move sceSystemServiceHideSplashScreen() to top of main() — eliminates
  visible delay between splash hide and first dialog (ui_init() now
  runs with splash already gone)
- Add installer/assets/config.json as PKG asset
- Explicitly list evict.elf and config.json in create-gp4 --files
- Update INSTALLER.md to reflect evict flow and no-sleep fact

Verified: PKG has all 3 assets, EBOOT matches, SHA-256 match, tests green
2026-09-25 17:12:51 +02:00
SirHumza a263b95109 installer: fix payload path, copy bug, init order, black screen
- Payload path: /data/GoldHEN/bin/elf/orbisrpc.bin (GoldHEN native launcher)
- Fix step_files copy bug: removed 'if(mk==0)' guard that skipped copy
  when directory already existed (second install failed)
- Pad module for IME keyboard: ORBIS_SYSMODULE_INTERNAL_PAD + scePadInit()
- Restructure ui_init() to match apollo-ps4's initInternal()/initPad():
  internal modules -> sceCommonDialogInitialize() -> PAD + scePadInit()
  -> external modules. sceCommonDialogInitialize() before external loads.
- Remove sceKernelSleep(3) from main() (3-5s black screen at startup)
- Remove unused evict.elf from PKG build and Makefile stage rules
- Remove all /data/payloads references from code + docs

Verified: eboot matches, SHA-256 match after FTP, tests+asan green
2026-09-25 17:07:46 +02:00
SirHumza 5e8ef1bae3 installer: add PAD module for IME keyboard, remove splash sleep
- Load ORBIS_SYSMODULE_INTERNAL_PAD + scePadInit() in ui_init()
  (apollo-ps4 pattern: IME needs PAD module for correct user context)
- Link -lScePad in Makefile
- Remove sceKernelSleep(3) from main() — was causing 3-5s black screen
  sceSystemServiceHideSplashScreen() alone is sufficient
- Verify: eboot matches, SHA-256 match after FTP, tests+asan green
2026-09-25 17:04:25 +02:00
SirHumza 782d8c0a00 installer: always-invert X=confirm O=back, reap stale dialogs 2026-09-25 16:32:47 +02:00
SirHumza 612e7bf844 installer: normalize X=confirm O=back via EnterButtonAssignment 2026-09-25 16:27:33 +02:00
SirHumza 2da941a711 installer: crash guard, yielding dialog waits, clean _exit 2026-09-25 16:15:11 +02:00
SirHumza 0f8f4cc1b0 installer: center the on-screen keyboard, foreground user id 2026-09-25 16:05:10 +02:00
SirHumza fc21933a30 installer: X to enter, O to back (YESNO focused on Yes) 2026-09-25 15:58:52 +02:00
SirHumza be276b00a3 installer: drop the wifi check entirely 2026-09-25 15:54:46 +02:00
SirHumza ef291c2990 installer: stage markers through wifi/token/exit to locate the crash 2026-09-25 15:51:31 +02:00
SirHumza 391b45f12c installer: verify copy by byte count + hash, stat lies in sandbox 2026-09-25 15:44:18 +02:00
SirHumza ed30a008ce installer: log copy-stage errno so a false denied is diagnosable 2026-09-25 15:38:43 +02:00
SirHumza 3a88839f07 installer: place orbisrpc.bin in bin/elf only, drop inject/boot 2026-09-25 15:28:03 +02:00
SirHumza e82df136ba installer: preflight asset check with precise reinstall message 2026-09-25 11:23:40 +02:00
SirHumza b3ba9d2ac7 v1.0.0: version stamp, installer status screen 2026-09-24 23:04:44 +02:00
SirHumza 2d6c0df9b2 installer: version display + autorun guidance finish screen 2026-09-24 22:54:59 +02:00
SirHumza d43218a6ee triage fixes: health order, static send buf, v4-only probes 2026-09-24 22:45:16 +02:00
SirHumza e44c5da290 installer: internal service modules at boot (pguest pattern) 2026-09-24 22:30:01 +02:00
SirHumza 91bf00d5e7 installer: hide splash before dialogs (fixes flash-dismiss) 2026-09-24 20:44:39 +02:00
SirHumza fcfa3f9040 installer: settle delay before first dialog (fixes flash-dismiss) 2026-09-24 20:40:53 +02:00
SirHumza 80587d44d3 self-audit: icfg proofs, exact payload match, entropy EINTR, toolchain default, CI readelf 2026-09-24 20:33:40 +02:00
SirHumza cf34bc4436 subagent audit fixes: unload-on-fail, progress reclaim, send timeout, gp4 prereqs 2026-09-24 20:18:58 +02:00
SirHumza 08bc9b7026 clean-room rebuild verified, installer clean target fixed 2026-09-24 18:56:45 +02:00
SirHumza caa54da524 installer audit: deadline connects, boot verify, orbis branding 2026-09-24 18:50:48 +02:00
SirHumza c553c09a9d orbisRPC logo: transparent, icon/backdrop/home tile, payload icons 2026-09-24 18:30:37 +02:00
SirHumza 2a21b4fdd0 installer writes daemon to every payload dir with per-path report 2026-09-24 18:26:33 +02:00
SirHumza 6c887ad75e installer stripped to install/wifi/token/inject linear flow 2026-09-24 18:19:34 +02:00
SirHumza 65350d9cea installer no-bugs pass: IME bound, evict race, EAGAIN cap, net probe-init 2026-09-24 17:14:41 +02:00
SirHumza 88815e232f installer: net stack init, IME backend module, send in host tests 2026-09-24 17:09:29 +02:00
SirHumza fef0a578f6 installer: load dialog sysmodules before use (fixes boot panic) 2026-09-24 16:59:08 +02:00
SirHumza bbdc7d8238 installer: short evict wait on first-ever run 2026-09-24 16:49:28 +02:00
SirHumza 7eac8d3d9d installer: evict-then-inject rotation, both payloads staged 2026-09-24 16:46:56 +02:00
SirHumza 14c9101174 installer: wizard, loopback inject, token/net/tweaks, icfg tests 2026-09-24 16:43:39 +02:00