Releases: mercurious/etk
ETK 0.4.0 — Tune the driver, photograph the crash
[0.4.0] - 2026-06-18
Tune the driver, photograph the crash. The hunt for ROCKNIX's headline instability — the a6xx GPU-fault freeze — produced two operator-facing instruments. A new DRIVER tab exposes the Mesa/Turnip dials the crash signature points at and stamps every session in the ledger with the exact dial set it ran under, so genuine-play tuning finally yields attributable data instead of N=1 guesses. And a crash-cam turns every recoverable freeze into a photographed, dial-tagged ledger entry — the frozen frame is grabbed at the R3 panic, bound to its session, and previewed full-screen on the device. Plus the Manage Shaders engine now deploys reliably. The throughline holds: ETK ships tooling, never bytes.
Added
- DRIVER tab — Turnip dials, ledger-tagged (Pitstop). A fifth tab exposing the Mesa/Turnip environment knobs as gamepad dials:
TU_AUTOTUNE_ALGO(the GMEM↔system-memory render decision engine) and theTU_DEBUGisolation ladder (nolrz/noubwc/sysmem/gmem+ an Advanced group). APPLY injects via the provenprofile.dpath (097-etk-turnip-dials) — effective next launch, survives a cold boot; Reset reverts to Turnip's built-in autotune. Every APPLY writesactive_tune.txt, whichsession_postmortemrecords as the ledger'stune_tagcolumn — so each race is attributable to the exact dial set it ran under. One knob per soak, on-screen. - Crash-cam — frozen-frame capture + on-device preview, bound to the ledger. The dominant ROCKNIX crash leaves no core and no RPCS3 fatal — only a frozen screen.
recovery.shnow grabs that frame viagrimat the R3 panic (best-effort, hard-timeout-bounded so it can NEVER stall the nuclear recovery), andsession_postmortembinds it to the crash's ledger row (crash_shotcolumn). In the Pitstop crash-detail card, press ↑ to view the frame full-screen (viaswayimg), dismissable with any button. A crash entry is now signature + frame + dial, all linked. - Manage Shaders deploy fix.
tools/vault_sweep.sh— the engine the Manage Shaders screen drives — is now deployed to the rig byinstall.sh. It had only ever reached the rig via a dev-time push, so a plain uninstall/reinstall cycle silently dropped it and broke the screen with a misleading "no boundary." The screen now distinguishes engine-missing from a genuinely absent rebuild boundary, and Sweep / Delete-vault / Clear-cache are field-confirmed. - Busy-frame throbber (Pitstop). TOOLS shader scan/clean and PADDOCK sync/push/pull now animate a ROCKNIX-style ASCII spinner on a background thread instead of freezing on a single frame.
Known issues / deferred
- The a6xx GPU-fault freeze remains the headline instability (carried from 0.3.1) — and 0.4.0's new instruments sharpened it without yet beating it. On-rig DRIVER-tab A/B established the fault is a NULL texture/vertex descriptor (
iova=0x0, source=TP|VFD) on the live-race render path (the High Speed Ring tunnel), not memory pressure or tiling — so theTU_AUTOTUNE_ALGOdials (gmem/sysmem) do not move it (4/4 froze). A first probe of RPCS3 Write/Read Color Buffers (the GT6 render-correctness knob) did not eliminate the freeze either, but indicatively moved the fault deeper, past the tunnel-mouth transition (N=1, suggestive). All of which reinforces the Stage-IV Turnip fork as the real next lever — the residual fault sits below the RPCS3 render-setting layer. - mako cannot render images on ROCKNIX — the gdk-pixbuf loader modules are stripped from the build, so a notification renders text but never an image. The crash-cam preview therefore uses
swayimg; a build lacking it degrades to a text toast with the SMB path.
ETK v0.3.1 — New Claude Cockpit Skill
Your AI Cockpit pit-engineer ETK now has a Cockpit Claude skill that supports Android adb-over-USB and ROCKNIX over ssh or USB-net gadget. Your Claude Cockpit can read your live telemetry with the Spotter feature and Engineer (telemetry→tuning) and deeply diagnose your crashes for tuning suggestions. Experimental autonomy support for aPSE3e Fork v4 allows you to record game runs and Claude Clockpit can attempt to synthesize an autonomous run from your data.
Added
- Cockpit · Android and ROCKNIX support —
scripts/rocknix_spotter_loop.shover ssh: full thermal map, GPU devfreq (drm/msm — no KGSL), CPU-prime freq, memory, the/dev/shm/etk_shmlive-stat bridge, and a crash-watch. RPCS3.log is identical to the Android fork's, and ROCKNIX adds real core dumps + on-devicegdb(cleaner crash forensics than Android tombstones). - aPS3e Shader Fork v4 companion — native pad-movie record/replay (Cockpit Driver tier / deterministic repro harness). See the aPS3e
shader-patch-4release. - User Guides — A (Android quickstart, the 90% path), B (ROCKNIX add-on), C (v4 APK install).
- Cockpit
SKILL.mdcross-platform pass (targets/transports, ROCKNIX specifics, target-layer detection).
ETK ships tooling, never bytes.
ETK v0.3.0 — Private Paddock
ETK v0.3.0 — “Private Paddock”
A paddock is race lingo for the behind-the-scenes area at a race track where teams prepare and maintain their cars, originating from agriculture. Inspired for handheld emulation enthusiasts, the new PADDOCK tab in ETK Pitstop is your mobile garage where you can sync your shaders, settings, and saves on-the-go, for free.
Upgrades to ETK Pitstop App:
- Stash your hard-earned shaders in a private repo on GitHub, no more need to sync to your computer to archive. Handheld collectors can now easily move shaders across your SM8250 fleet.
- Manage your shaders right on the device — sweep out stale shaders to make more storage space.
Upgrades to ETK in-game systems:
- Automatic Overheat Recovery, no more need to end a session when you push the limit
🌡️ Automatic overheat recovery — no more reboot
Tripping the thermal failsafe used to mean a reboot to get racing again. Not anymore. ETK's thermal governor now auto-recovers: an overheat drops you into a PIT-mode cooldown (»COOLDOWN on the HUD) and, once the device cools, returns to racing on its own and flashes RACE OK — fully automatic. Thresholds are also recalibrated for the hotter ROCKNIX nightly-20260610 stack (which tripped spurious overheats on the old ceiling), trips are debounced so a brief spike won't pit you, and a manual PIT is latched so it's never auto-overridden.
🔐 Private Paddock — your shaders, tunes, and saves in a free cloud vault
The PADDOCK tab becomes the Private Paddock: push/pull your vaults, configs, and savedata to your own private GitHub repo, straight from the rig over WiFi — no host computer. ETK ships the tooling; the bytes are yours and never shared. Set PADDOCK_TOKEN in etk.conf before ./install.sh to enable it (no token → the tab simply doesn't appear). Bundles are epoch-tagged per driver build with a homologation gate, so you never inject shaders built against a different driver.
🧹 Manage Shaders — reclaim your storage
Every ROCKNIX update rebuilds the graphics driver, stranding the shaders cached against the old build as dead weight — a saturated vault can be >90% corpse. The new TOOLS → Manage Shaders screen shows a per-game fresh/stale graph and lets you Sweep the stale orphans, Delete a game's vault, or Clear the RPCS3 cache, each behind a confirm. (First real sweep reclaimed ~175k files / 1.2 GB.)
Also
- TUNING: added
Disable ZCull Occlusion Queriesto the per-game tuning fields. - Tab reorder to TELEMETRY · TUNING · TOOLS · PADDOCK so the offline tabs cycle without landing on the network tab.
- Fixed: a BusyBox
cp -rnsilent no-op that could skip shader injection.
Compatibility
- Certified on ROCKNIX nightly-20260610 (SM8250 / Adreno 650 / Turnip). Expected to be compatible with nightly-20260614. Don't update past the recommended nightly without checking the README.
- In-place update: re-run etk's
./install.sh.
Full changelog: CHANGELOG.md
ETK v0.2.0 — Nightly Rider: GT5 leak-fixed RPCS3, Stage III stability harness
[0.2.0] - 2026-06-11
Back to the bleeding edge — ETK re-pins to ROCKNIX nightly 20260610 to ship the upstream Gran Turismo 5 memory-leak fix, and adds the Stage III stability harness (Mesa cache-cap lift + silent-crash core capture). Operator-validated on-rig the same day: GT5P racing at full 720p, RAM peaks down ~1.5 GB, and the formerly dominant "silent crash" class absent from the ledger.
Added
- Stage III stability harness (new install step 7,
STAGE3 HARNESS). Two rig-side primitives from the Stage III forensics sprint (dossiers/Stage3CustomRigDossier.md):profile.d/098-etk-stage3— setsMESA_SHADER_CACHE_MAX_SIZE=10G. Mesa's disk cache silently caps at 1 GB with LRU eviction; the ETK vault crosses 1 GB on a saturated GT suite, meaning the vault could evict its own oldest shaders and quietly un-saturate between sessions. Also raises the core-size ulimit for emulator processes.02-etk-coredump.sh+etk-stage3.service(oneshot) — Rocknix shipskernel.core_pattern = |/bin/false(crash cores are discarded) and the sysctl resets every boot. The unit re-arms capture to/storage/cores/(keeps newest 2) on every boot. Silent-class crashes — process death with no RPCS3 log signature and no dmesg trace — are undiagnosable without a core; this is the forensic capture path that finally gives Rocknix parity with Android's crash-dropbox.uninstall.shfully reverts all three artifacts and restores the stock core_pattern.
- README: verify step added to the GRUB-disable Power Pro Tip (a silently failed
remount,rwpreviously made the seds no-op), plus a note that OS updates revert the tweak.
Changed
- OS pin: ROCKNIX nightly
20260610(was official release20260601). The pin is evidence-driven, not novelty-driven: nightly-20260610 ships RPCS30.0.41-19444, the first build containing the upstream GT5 memory-leak fix (RPCS3 #18819 / PR #18844, merged 2026-06-05 — ~300 MB leaked per car model viewed, lethal on an 8 GB handheld and matching ETK's dominant silent-crash signature), plus Mesa Turnip 26.1.2 (driver parity with the Android/aPS3e comparison rig) and kernel 7.0.11. The official20260601release predates the fix by four days. README System Requirements / Getting Started / Windows flash guide,scripts/profiles/SM8250.sh, andAI_MANIFEST.mdall re-pinned. Migration note: the Turnip 26.1.0→26.1.2 bump invalidates the existing Mesa-side shader vault (driver hash keys the cache) — a fresh harvest cycle follows the update; with the new 10G cap it will never self-evict. - Per-title tunes: GT5P + GT HD Concept switched
Shader ModefromAsync Recompiler with Shader InterpretertoAsync Recompiler (multi-threaded)(matching the shipped template default). The interpreter hybrid does not avoid compile stalls — it adds a heavy GPU über-shader pass exactly during compile bursts, a credible amplifier of the Adreno fence-timeout crash class on a 7 W GPU (the same interpreter path is currently crashing the AMD Mesa driver upstream, RPCS3 #18838). Expect brief first-encounter pop-in instead of approximated rendering; the change is A/B-logged inconfig_changes.tsv.
Verified
- Live race validation on nightly-20260610 (SM8250, 2026-06-11): GT5P career sessions at full 720p with sessions 2–3× longer than the official-build era (366–519 s), RAM peaks 5.0–6.1 GB (vs 6.7–7.5 GB pre-fix), zero silent-class crashes on the boot's ledger, and the operator's verdict — comparable stability/feel to the patched Android build at higher fidelity, credits ground, car purchased. Known watch item: 3 thermal-failsafe activations during load/contact-heavy racing (longer sessions = more sustained heat); thermal ceiling behavior unchanged, monitoring continues.
Includes everything from the never-shipped 0.1.5 candidate set: the PKG-installer truncation fix (games no longer install incomplete — the bug behind the "card #2 kills games" saga) and the HUD QoL pair (vault size in GB, VAULT:ERROR → VAULT:LOADING during startup).
Upgrade path: update Rocknix to nightly-20260610 (Start → Updates & Downloads, nightly channel), re-run ./install.sh, expect a fresh shader-harvest cycle (the Turnip 26.1.2 bump invalidates prior vaults — by design, and the new 10G cache cap means the rebuilt vault never self-evicts).
ETK v0.1.4 — Supports official ROCKNIX 20260601 and internal storage options
ETK graduates from chasing nightlies to pinning the official ROCKNIX release (20260601), and adds an optional high-performance internal-storage path for intensive shader-harvesting runs. SD-card support was proven first; internal UFS is now an optional but recommended upgrade for operators who want a smoother, more durable rig. This is ETK's first full (non-prerelease) release.
🏁 Official release support
ETK is now certified against the official ROCKNIX release 20260601 (Mesa Turnip 26.1.0, kernel 7.0.2) on the SM8250 (Retroid Pocket Flip 2) — no more pinning to a moving nightly. Certification passed the full gate: clean structural drift (baseline banked + pinned), gamepad/headless ignition, R3 recovery surviving suspend/resume, and per-game render re-validated on GT HD Concept and GT5 Prologue.
💾 Internal storage — optional, recommended for heavy harvesting
For advanced operators, ETK now supports running the shader vault and small games on the device's internal UFS partition instead of the SD card:
- Durability (proven). The shader vault is rewritten every session — moving it off the wear-prone SD card to internal UFS reduces card wear and corruption exposure (the SD is the rig's single point of failure). Shaders write, credit, and survive an R3 recovery correctly on UFS.
- Smoothness (operator-confirmed). Running GT HD Concept and GT5 Prologue fully on internal is a clear, repeatable improvement in feel. ETK has no numerical frame-pacing instrument — a known limitation of MangoHUD telemetry on this platform — so the operator's subjective A/B comparison is treated as a first-class datapoint.
- Reversible by design. Symlink-based, with on-SD
.presplitsafety copies and aROLLBACK.sh;install.shis internal-aware and syncs symlink-safely with no change to your workflow.
This is advanced, opt-in territory. Internal storage does not improve crash stability, a full library doesn't fit a small partition (GT6/GT5 are too big), and reverting an OS-on-internal install requires fastboot. The new README Internal Storage (Advanced) section covers the partition layout, the LABEL=ROCKNIX/STORAGE collision, config divergence, and the ≥1.5 GB headroom rule before you commit.
🏁 Race-stability milestone (GT5P)
The headline durability blocker has been broken: Gran Turismo Prologue cleared the race-stability bar — five consecutive crash-free runs to a graceful exit — and exceeded it, with a best streak of 16 crash-free sessions (8 of them back-to-back clean finishes), including a run that carried into the official 20260601 release. The cause was the shader vault saturating: once the cache stops compiling mid-race, the in-race GPU fence timeout that defined the first month of testing largely stops firing.
This is the proof that matters — the rig can reach race-stable — but it's a property of a saturated vault, not the fresh install. The official 20260601 migration resets the vault, so a from-scratch rig re-enters the harvest cycle and will crash again until the cache re-saturates. That's by design: crashing is how shaders get banked. Two ways to reach the stable end-state faster:
- Import a community-shared vault (per-game shader
.zips in the README) to skip most of the harvest. - Keep R3 within reach and let the productive-crashing cycle do its work.
v0.1.4 is the release where race-stability was proven reachable — not where every session is clean. You will still crash; that's the sport.
Upgrade
Update ROCKNIX to the official 20260601 release, then run ./install.sh (macOS/Linux/WSL2) or the PowerShell installer (Windows) to sync. Internal-storage setup is documented in the README's Internal Storage (Advanced) section for operators who want it.
Full changelog: see CHANGELOG.md.
ETK v0.1.3 — Expert Tuning Advice now available in Session Crash Telemetry Detail View
Tap any session in the ledger to open a full-screen detail card. Crash a race and ETK now tells you — in plain language — what failed and which tuning dials to change to fix it; finish clean and you get a live-gauge summary of the run. This release also lands a round of crash-analytics integrity fixes, hardens the R3 panic path for the current RPCS3 build, and is certified on Rocknix nightly-20260531.
⚠️ Pre-release / alpha. ETK is certified against Rocknix nightly 20260531 and no race is yet certified stable. Test on an expendable SD card.
Upgrade
update Rocknix via its built-in updater to 20260531 or Flash a blank card, then re-run ./install.sh (or the PowerShell installer). Read-only telemetry changes — your vault, tunings, and history carry over.
Highlights — the TELEMETRY Session Detail View
Move the row cursor with the D-pad and press confirm to open a card for that session; back returns.
Clean runs — duration, shaders harvested, and proportional ASCII gauges for temp / load / RAM / battery drain:
Crashes / recoveries — a plain-language cause, where it died, and the suggested tuning fix pulled from the crash-signature catalog. Multi-cause crashes headline the real cause (not the R3 trigger), and unknown signatures degrade gracefully:
The crash copy was rewritten as player-facing diagnostics — no internal jargon — turning the ledger into a real troubleshooting tool.
Fixed
- Phantom
ABORTEDsessions polluting the ledger. A log-verbose title (Ridge Racer 7's RPCS3 log hits ~288 MB) could trip the Sentry into mistaking its own log-parser for a running game, igniting a self-reinforcing loop of bogus sub-60sABORTEDrows that buried real sessions (RR7 read 21 fake ABORTED vs 4 real CLEAN). Detection now keys on a precise process token and the post-mortem reads the log without exposing its path — the loop is gone, and existing phantom rows can be pruned. - Game-switch
VAULT:ERROR/ thermalWAIT. RPCS3 now runs as an AppImage (rpcs3-salauncher +AppRun.wrappedruntime, no plainrpcs3process); detection and recovery now match the real names, fixing a case where a session never properly "ignited." - R3 recovery hardened. The panic button targets the correct AppImage process names with an authoritative kill mirroring the Sentry's detection — guaranteeing the emulator dies and the session rolls up to a
RECOVERYrow.
Verified
- Certified on Rocknix nightly-20260531 (in-place from 20260529, SM8250). Drift
--checkclean; input-node renumbering was benign (find_gamepadmatches by name; DualSense buttons drifted to event9). The nightly's Turnip driver bump was re-validated on GT5P — vault re-layered cleanly (+10k shaders). Headless gate passed (gamepad codes unchanged, R3 survives suspend/resume, RPCS3 binds Adreno 650), and the ETK Pitstop tile still renders after the two upstream ES-engine bumps.
Housekeeping
- New user guide ("How to use the ETK") in the README; project root decluttered (disposable spikes, probe captures, and raw logs moved to a gitignored
_archive/).
Known limitations
- Detail-view gauges show peak/avg, not an intra-session time trace.
- Stock (non-ETK) Tools icons still don't render on the default theme — an upstream Rocknix bug (confirmed still unfixed in 20260531); ETK's own tile is unaffected.
- No version is yet certified race-stable (five consecutive crash-free runs of the same target).
🤖 Generated with Claude Code
ETK v0.1.2 — L1 screenshot modes, Tools-menu icon fix, certified on Rocknix nightly-20260529
The L1 screenshot shutter is now operator-controlled, the ETK Pitstop icon finally shows up in the Rocknix Tools menu, and the kit is certified against the latest Rocknix nightly (20260529) so it stays in step with upstream.
⚠️ Pre-release / alpha. ETK targets a specific Rocknix nightly (now20260529) and no race is yet certified stable. Expect rough edges; test on an expendable SD card.
Upgrade
Update Rocknix via its built-in updater to nightly-20260529 (or a clean reflash), then re-run ./install.sh (or the PowerShell installer). Your shader vault, tunings, saves, and ledger carry over. Note the behavior change: the default screenshot mode is now in-game (see below).
Highlights
- Three-state
L1screenshot mode —in-game(default) /always/disabled, cycled live from Pitstop → TOOLS → "Screenshot on L1". It's read on every press, so a toggle takes effect with no reboot or daemon restart, and the choice persists across reboots. Pickdisabledto freeL1for the game entirely (ETK never grabs the pad, soL1always reaches the game —disabledjust stops ETK also shooting). The deliberateSELECT+D-pad Upchord is never gated, so you always have a manual shutter. - ETK Pitstop icon now renders in the Tools menu. The default Rocknix theme draws Tools art from
<thumbnail>/<marquee>, not<image>, so our image-only entry showed nothing. The Tools registration now emits all three artwork fields, so the tachometer tile appears regardless of which artwork mode the theme uses. - Certified on Rocknix
nightly-20260529. In-place migration from20260528on SM8250 (Retroid Pocket Flip 2):etk_drift.py --checkclean (no structural drift); the input-node renumbering in29is benign (the DualSense buttons device moved nodes, andfind_gamepad()self-heals by name); gamepad button codes unchanged; R3 panic recovery survives suspend/resume (despite29's fake-suspend rewrite); and RPCS3 still bindsTurnip Adreno (TM) 650.
Fixed
L1screenshot fired in every context, with no way to turn it off. Now gated by the three-state mode above —in-gamekeeps it out of the frontend/Pitstop UI,disabledreturnsL1to the game.- ETK Pitstop tile was invisible in the Tools menu. Root-caused on-rig: it's a theme metadata-field mismatch, not an SVG problem (a PNG in the same field was equally blank). Fixed for our entry by emitting
<thumbnail>+<marquee>.
Changed
- Default screenshot behavior is now
in-game(was effectivelyalways). Existing rigs with no preference inheritin-gameon first boot after upgrade. Setalwaysin Pitstop → TOOLS if you screenshot the frontend / Pitstop UI.
Known limitations
- Stock (non-ETK) Tools icons still don't render on the
next-branchart-book-nexttheme. This is an upstream Rocknix bug (a malformed shippedgamelist.xmlplus the theme field-mismatch above), not an ETK regression — it persists with ETK fully uninstalled. Diagnosed on-rig and reported upstream; ETK's own tile is unaffected. - Orphan / kernel-panic ledger rows still credit zero shaders harvested. R3-triggered recoveries credit shaders correctly; only hard reboots that skip the postmortem under-report. Fix tracked for a future release.
- No race is yet certified race-stable (five consecutive crash-free runs of the same target). This release certifies OS-migration compatibility, not race stability.
ETK v0.1.1 — Windows installer port + automatic SSH pairing
A Windows PC can now act as the ETK host without WSL, and first-run SSH setup is automatic: type the rig password once, then never again. This is the release that makes onboarding a non-technical tester realistic.
⚠️ Pre-release / alpha. ETK targets a specific Rocknix nightly (currently20260528) and no race is yet certified stable. Expect rough edges; test on an expendable SD card.
Quick start (Windows)
Clone the repo (with Git for Windows + the OpenSSH client), then:
powershell -ExecutionPolicy Bypass -File .\windows_installer\etk-install.ps1First run asks for the rig password once (Rocknix default rocknix); reboot the handheld afterward so the ETK Pitstop entry appears. macOS/Linux is unchanged — ./install.sh now auto-pairs too.
Highlights
- Native Windows host support (no WSL). A faithful PowerShell port of
install.sh/uninstall.sh, verified end-to-end on a real SM8250 rig (no-vault): cold pair → full deploy → live Sentry. - Automatic host → rig SSH pairing. Idempotent and test-first — a cold pair costs at most one password; every later
ssh/scpis silent, and re-runs cost zero. It generates a dedicated no-passphrase key (~/.ssh/etk_rig, never touching yourid_*keys), installs it carriage-return-safe without clobbering existing keys, and writes an~/.ssh/configentry. Shared logic lives inscripts/etk_pair.shand is pulled into PowerShell viaGet-Heredoc(single source of truth). Standalone re-pair:./install.sh --pairoretk-pair.ps1. - OS-migration drift detector (
tools/etk_drift.py, new in this release). Banks nightly-keyed OS profiles and diffs a live Rocknix nightly against your pinned baseline and the device profile's pinned assumptions — so you can tell whether a nightly is safe to adopt before committing to it.
Fixed
- Windows CRLF in
Invoke-Rig— multi-line remote commands shipped with\rand silently broke the rig'ssh; CR is now stripped from every command. - PowerShell parser break — em-dashes in the
.ps1files decoded as curly quotes under PowerShell 5.1's codepage; scripts are now pure ASCII. - Pairing abort on a deliberately-failing SSH probe (
NativeCommandErrorunderStop) — probes now fail gracefully off the exit code. - SSH config portability —
IdentityFile ~/.ssh/etk_rigworks across Windows OpenSSH, Git's bundled ssh, and Mac/Linux.
Changed
etk-env.ps1$RigSshdefaults toroot@SM8250.local— most setups need zero config.- Windows host README rewritten around the zero-config flow; the manual handshake is now a documented fallback.
- Main README: the native PowerShell installer is the primary no-WSL Windows path (WSL2 remains the full, vaulted route).
Known limitations
- The Windows port is no-vault (no host-side shader backup/restore) — use the SMB
robocopyrecipe or WSL2. - mDNS auto-discovery isn't ported to PowerShell — set
$RigSsh(a literal IP always works). etk.confoperator overrides aren't pushed by the Windows port.
Full changelog: v0.1.0...v0.1.1
v0.1.0 — Launch ETK Edition: GTP5 SPEC
v0.1.0 — Launch ETK Edition: GTP5 SPEC
First public alpha of the Emulation Tuning Kit for Rocknix. PS3 emulation on an ARM64 handheld, instrumented like a track-day car.
The 787B problem
Mazda's 787B won Le Mans 1991 with a rotary engine the rest of the field said couldn't be done — and the FIA banned the engine the year after. ETK is in that spirit: PS3 emulation on a Snapdragon handheld is somewhere between "unreasonable" and "shouldn't work," so the kit treats it as an engineering problem. Live telemetry, productive crashing, shader harvesting between runs, automated recovery from kernel panics, on-rig config tuning. The pitch isn't that PS3 emulation suddenly becomes easy. It's that you have professional-grade tools to make a fighting attempt — and a vault to remember every shader you compiled along the way.
GT5 Prologue is the named target; GT6 — including a clean Nürburgring Nordschleife lap landed 2026-05-26 — was an unexpected bonus.
Verified configuration
- Handheld: Retroid Pocket Flip 2 (SM8250 / Adreno 650 / Mesa Turnip 26.1.0)
- OS: ROCKNIX nightly-20260525
- Host: macOS or Linux (experimental Windows via WSL2)
The device-profile architecture in scripts/profiles/SM8250.sh should cover every SD865 / Adreno 650 / Turnip handheld (Pocket 5, Pocket Mini / Mini V2, AYN Thor Lite) — but only the Flip 2 has been on-rig verified. Tester reports from the SD865 cohort warmly welcomed. The RP6 / SM8550 / Adreno 740 needs a new profile and its own shader vault.
What ships in v0.1.0
- Native ETK Pitstop app in the Rocknix Tools carousel — TELEMETRY / TUNING / TOOLS tabs, gamepad-editable RPCS3 settings, headless PS3
.pkginstaller - Live DDU overlay via MangoHUD: FPS, frametime, GPU temp + load, battery, shader counter, vault size, RAM — all on one strip
- Pit Wall console TUI for
install.shanduninstall.sh— 6-step / 4-step dashboards, mDNS rig auto-discovery, no per-file rsync flood - Device-profile architecture —
scripts/profiles/<soc>.shseparates hardware-specific values (thermal zones, cpufreq policy IDs, GPU paths, thresholds) from runtime scripts; adding a new SD865 device is a calibration pass, not a code change - Smart thermal protection with auto-PIT failsafe (CPU + GPU throttle on overheat)
- Shader vault indexed by
chipset / game ID / shader, bi-directional rsync between host and rig - Crash recovery via
R3panic button (headless on-device Nuclear Recovery) - Session telemetry — per-game ledger with summary stats, recovery signatures, config-change provenance
- Tier-B auto-backup of telemetry, tunings, RPCS3 user profile, and screenshots on every install
- L1 screenshot capturing the MangoHUD overlay (which RPCS3's built-in screenshot strips)
Pre-alpha caveats — read before installing
- Requires the exact Rocknix nightly above. Not tested against any other build, the official release, or future nightlies.
- Use a sacrificial SD card — not your main ROM library.
- This is a tinkerer's kit. Expect rough edges, partial coverage, and the occasional crash-into-the-vault that you turn into a lap time next run.
Getting started
See Getting Started in the README. ./install.sh auto-discovers your rig via mDNS — if Rocknix is on your LAN, you don't need to hunt for its IP.
What's next
- Phase 14: RP5 verification, rig-side self-update from the Pitstop TOOLS tab, broader tuning + shader sharing
- Phase 15: Beta testing
- Graduation: Rocknix stable when the SD865 stable channel catches up to the spring-2026 nightly features the kit pins
- SM8550 profile: RP6 / Odin 2 family
License + provenance
GNU GPL v2.0, matching Rocknix. Co-developed with Google Gemini (prototype) and Anthropic Claude Code (current). See AI_MANIFEST.md for the development laws and provenance details.
🏁 The vault is not empty. Drive accordingly.

