From 8d05f60a7edf1b6cd7d76f448c2a9194edff4102 Mon Sep 17 00:00:00 2001 From: phantomptr Date: Sat, 10 Oct 2026 11:14:44 -0700 Subject: [PATCH] PS5 Payload SDK v0.44, and scripts/update-ps5-sdk.sh to bump it Pin v0.44 (sha256 4d06eab7...). Its crt/ and prospero-nid are identical to v0.43, so the vendored sdk-crt (+ ps5upload.patch) and the portable prospero-nid stay as they are; the helper, installer and elfldr build to the same code (only the build-id differs). v0.44 adds LLVM 23 to the candidate list, so the Makefile comment and Homebrew fallbacks move too. scripts/update-ps5-sdk.sh (make update-sdk): finds the latest release (or --tag), checks the zip, rewrites the pin, re-vendors prospero-nid and crt only when upstream changed them (stops if our crt patch no longer applies), moves the "SDK vX.Y" doc mentions and installs with install-ps5-sdk.sh, keeping the old SDK as a backup. --check only reports. The installer names its backups after the release they hold. Co-Authored-By: Claude Opus 5.5 Claude-Session: https://claude.ai/code/session_01Ub1mez9eaVtTF8pMEFXvA9 --- CONTRIBUTING.md | 4 + FAQ.md | 2 +- Makefile | 17 +- README.md | 8 +- TESTING.md | 12 +- payload/sdk-crt.mk | 2 +- payload/third_party/sdk-crt/README.md | 7 +- scripts/install-macos.sh | 2 +- scripts/install-ps5-sdk.sh | 5 +- scripts/install-ubuntu.sh | 6 +- scripts/install-windows.ps1 | 2 +- scripts/ps5-sdk.env | 4 +- scripts/update-ps5-sdk.sh | 302 ++++++++++++++++++++++++++ third_party/elfldr/Makefile | 2 +- 14 files changed, 353 insertions(+), 22 deletions(-) create mode 100755 scripts/update-ps5-sdk.sh diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 3f891199..abbb4df2 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -29,6 +29,10 @@ make run-client # launch the Tauri dev app See the [README](README.md) and [TESTING.md](TESTING.md) for the full toolchain (PS5 Payload SDK, Rust, Node 22, Tauri prerequisites). +The PS5 Payload SDK release is pinned in `scripts/ps5-sdk.env`. `make update-sdk` +moves the pin to the latest upstream release and installs it (`SDK_TAG=vX.Y` for a +specific one, `SDK_CHECK=1` to only check); see TESTING.md, Layer 2. + ## Quality gate: run before opening a PR CI runs the same checks; running them locally first saves a round-trip. diff --git a/FAQ.md b/FAQ.md index c6c01795..ad8bd406 100644 --- a/FAQ.md +++ b/FAQ.md @@ -245,7 +245,7 @@ so overlapping work (a temperature read during an install) cannot crash the help There is no 32-bit x86 (i386 / i686) build for any desktop OS. **Q: Which PS5 firmware works?** -The helper is built against PS5 Payload SDK v0.43 and the same binary runs on **1.00 to 13.60**. +The helper is built against PS5 Payload SDK v0.44 and the same binary runs on **1.00 to 13.60**. Tested on 5.10, 9.60 and 13.60 (and confirmed by users on 12.20). In practice the limit is the **ELF loader** on port 9021, a third-party component; loader coverage is roughly 4.x to 12.x. diff --git a/Makefile b/Makefile index ffd10f31..df76974d 100644 --- a/Makefile +++ b/Makefile @@ -30,14 +30,14 @@ export PS5_PAYLOAD_SDK PS5_SDK_TAG := $(shell sed -n 's/^PS5_SDK_TAG=//p' scripts/ps5-sdk.env 2>/dev/null) # On macOS the payload SDK's `prospero-clang` wrapper resolves `ld.lld` -# and `clang` through `prospero-llvm-config`. SDK v0.43 supports LLVM 16–22. -# Homebrew exposes the current major as `llvm` (not `llvm@22`), so discover +# and `clang` through `prospero-llvm-config`. SDK v0.44 supports LLVM 16–23. +# Homebrew exposes the current major as `llvm` (not `llvm@23`), so discover # its real prefix and retain versioned fallbacks for older installations. # Linux/WSL picks up `llvm-config-` from apt naturally. ifeq ($(shell uname -s),Darwin) MACOS_LLVM_CONFIG := $(shell \ if command -v brew >/dev/null 2>&1; then \ - for formula in llvm llvm@22 llvm@18; do \ + for formula in llvm llvm@23 llvm@22 llvm@18; do \ prefix="$$(brew --prefix "$$formula" 2>/dev/null || true)"; \ if [ -n "$$prefix" ] && [ -x "$$prefix/bin/llvm-config" ]; then \ printf '%s\n' "$$prefix/bin/llvm-config"; \ @@ -96,7 +96,7 @@ ANDROID_ENV = JAVA_HOME="$(ANDROID_JAVA_HOME)" ANDROID_HOME="$(ANDROID_HOME)" ND ADB ?= $(ANDROID_HOME)/platform-tools/adb .PHONY: all help -.PHONY: install install-ubuntu install-macos install-windows +.PHONY: install install-ubuntu install-macos install-windows update-sdk .PHONY: setup setup-engine setup-payload setup-client .PHONY: build payload installer engine client _engine-release _payload-if-ready _android-build-if-ready .PHONY: test test-root test-engine test-engine-coverage test-desktop test-payload test-client test-client-coverage @@ -129,6 +129,8 @@ help: @echo " make install-ubuntu - Ubuntu/Debian/WSL2: apt + rustup + node + PS5 SDK $(PS5_SDK_TAG)" @echo " make install-macos - macOS: brew + rustup + LLVM + PS5 SDK $(PS5_SDK_TAG)" @echo " make install-windows - Windows 11: winget + rustup + VS Build Tools + PS5 SDK $(PS5_SDK_TAG)" + @echo " make update-sdk - Move the PS5 SDK pin to the latest release and install it" + @echo " (SDK_TAG=vX.Y for a specific one; SDK_CHECK=1 to only check)" @echo "" @echo "Quick start (after install):" @echo " 1. make setup - Check toolchains, install client deps" @@ -243,6 +245,13 @@ install-windows: exit 1; \ fi +# Bump the PS5 Payload SDK pin (scripts/ps5-sdk.env) to the latest upstream +# release, or SDK_TAG, and install it into $(PS5_PAYLOAD_SDK); the old SDK is +# kept as a backup. SDK_CHECK=1 only reports whether a newer release exists. +update-sdk: + @PS5_SDK_INSTALL_DIR="$(PS5_PAYLOAD_SDK)" bash scripts/update-ps5-sdk.sh \ + $(if $(SDK_TAG),--tag $(SDK_TAG)) $(if $(SDK_CHECK),--check) + #────────────────────────────────────────────────────────────────────────────── # Setup #────────────────────────────────────────────────────────────────────────────── diff --git a/README.md b/README.md index f68979d0..0e6bbd42 100644 --- a/README.md +++ b/README.md @@ -201,11 +201,11 @@ make run-client # launch the Tauri dev app (`libwebkit2gtk-4.1-dev`, `libgtk-3-dev`, `librsvg2-dev`, `libayatana-appindicator3-dev`, `libxdo-dev`, `libssl-dev`, `build-essential`), Node.js 22 LTS via NodeSource (only if missing), - Rust via rustup, and checksum-verified PS5 Payload SDK v0.43 → + Rust via rustup, and checksum-verified PS5 Payload SDK v0.44 → `~/ps5-payload-sdk`. - **`make install-macos`** — macOS: Xcode CLT, Homebrew, `node`, current - `llvm` (LLVM 22 at this release), Rust via rustup, and checksum-verified - PS5 Payload SDK v0.43. + `llvm` (LLVM 23 at this release), Rust via rustup, and checksum-verified + PS5 Payload SDK v0.44. - **`make install-windows`** — Windows 11: Node.js LTS, Rust, VS 2022 Build Tools (C++ workload), WebView2 Runtime, 7-Zip, and PS5 Payload SDK via `winget`. Run from an elevated PowerShell (or any shell with @@ -268,7 +268,7 @@ See [`TESTING.md`](TESTING.md) for the full workflow, and [`CONTRIBUTING.md`](CO ## Tech stack -- **Payload**: C (FreeBSD 11), prospero-clang, PS5 Payload SDK v0.43 +- **Payload**: C (FreeBSD 11), prospero-clang, PS5 Payload SDK v0.44 - **Engine**: Rust, tokio + axum - **Client**: Tauri 2, React, TypeScript, Zustand, Tailwind CSS v4, Vite - **Protocol**: AVA1 (Noise XX handshake, ChaCha20-Poly1305, BLAKE3 verification) diff --git a/TESTING.md b/TESTING.md index 50cadf3b..75b1ad6b 100644 --- a/TESTING.md +++ b/TESTING.md @@ -62,9 +62,19 @@ Each self-test lives in `payload/tests/*_selftest.c` (hardware guards, ptrace re AVA1 C itself is tested by `ava1-ctest`, which compiles it on the host and checks it against the Rust side (see the full gate below). -The SDK version is pinned in `scripts/ps5-sdk.env` (currently **v0.43**) +The SDK version is pinned in `scripts/ps5-sdk.env` (currently **v0.44**) and verified by checksum. Local installers and CI read the same file. +To move to a newer SDK release, run `make update-sdk` (or +`scripts/update-ps5-sdk.sh [--tag vX.Y] [--check]`). It downloads the release, +rewrites the pin and its checksum, refreshes the vendored `prospero-nid` and +`payload/third_party/sdk-crt` if upstream changed them at that tag, and installs +the SDK into `$PS5_PAYLOAD_SDK` (default `/opt/ps5-payload-sdk`), keeping the old +one as a `.backup--