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--