mirror of
https://github.com/knutwurst/patchdl.git
synced 2026-10-06 08:00:21 +02:00
Docs: README for 0.0.4 (cross-region install works, UI updates, filename)
README catches up to where the code is:
- The "cross-region install is a known limitation" section is gone. We
route through sceAppInstUtilAppInstallPkg now, verified end-to-end on
Dead Island 2 (01.000.001 -> 01.000.011, including the shared-storage
case where the patch lives under a master title id).
- A Web UI section documents the filter chips (Updatable default,
Updating separate bucket, All on the right) and Update all.
- Deploy section notes the new filename shape (patchdl_<version>.elf)
so Payload Manager can parse the version out of it.
deploy_ps5.sh follows: UP_NAME is now patchdl_${VERSION}.elf to match
the released asset naming.
This commit is contained in:
1 parent
a1d035313e
commit
fb47730d70
2 files changed
+34
-21
No files matched your search
@@ -45,6 +45,22 @@ Downloads survive interruptions:
|
|||||||
Patches download to `/data/patchdl` on the internal SSD. Large retail updates
|
Patches download to `/data/patchdl` on the internal SSD. Large retail updates
|
||||||
run tens of GB.
|
run tens of GB.
|
||||||
|
|
||||||
|
## Web UI
|
||||||
|
|
||||||
|
The Games view groups titles into filter chips:
|
||||||
|
|
||||||
|
- **Updatable** — has an installable update; selected by default.
|
||||||
|
- **Updating** — queued, actively downloading, paused with a partial on disk,
|
||||||
|
or installing.
|
||||||
|
- **Up to date**, **Needs FW**, **Can't update** — the rest.
|
||||||
|
- **All** — flat list at the right end of the strip.
|
||||||
|
|
||||||
|
**Update all** in the top bar queues a download for every game with an
|
||||||
|
installable update in one click. Shadowmounts are skipped (they pass the
|
||||||
|
download policy but not the install policy), so a sweep doesn't burn tens of
|
||||||
|
GB on bytes AppInstUtil would refuse — pick those up by hand when the disc is
|
||||||
|
ready.
|
||||||
|
|
||||||
## Safety model
|
## Safety model
|
||||||
|
|
||||||
Deny-by-default. A patch installs only for a genuine install, and only when the
|
Deny-by-default. A patch installs only for a genuine install, and only when the
|
||||||
@@ -88,8 +104,9 @@ scripts/build_ps5.sh # produces patchdl-ps5.elf
|
|||||||
## Deploy
|
## Deploy
|
||||||
|
|
||||||
This console uses the BD-JB autoloader with itsPLK's Payload Manager on port 8084
|
This console uses the BD-JB autoloader with itsPLK's Payload Manager on port 8084
|
||||||
(not a 9021 elfldr). `scripts/deploy_ps5.sh` uploads the version-named ELF and
|
(not a 9021 elfldr). `scripts/deploy_ps5.sh` uploads the version-named ELF
|
||||||
launches it; the payload replaces any running instance.
|
(`patchdl_<version>.elf`, so Payload Manager picks the version out of the
|
||||||
|
filename) and launches it; the payload replaces any running instance.
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
PS5_HOST=<console-ip> scripts/deploy_ps5.sh
|
PS5_HOST=<console-ip> scripts/deploy_ps5.sh
|
||||||
@@ -105,23 +122,19 @@ http://<console-ip>:12880/
|
|||||||
|
|
||||||
Verified on firmware 11.60: title scan, source classification, version
|
Verified on firmware 11.60: title scan, source classification, version
|
||||||
resolution past the nanoDNS block, firmware-compatibility filtering, the parallel
|
resolution past the nanoDNS block, firmware-compatibility filtering, the parallel
|
||||||
download pool, reboot-safe resume, and on-device SHA-256 verification. A full
|
download pool, reboot-safe resume, and on-device SHA-256 verification.
|
||||||
Dead Island 2 update (61.6 GB) downloaded and verified byte-perfect across
|
|
||||||
several reboots.
|
|
||||||
|
|
||||||
Install works for same-region patches, where Sony stores the patch bytes under
|
Install works through Sony's AppInstUtil. `sceAppInstUtilInstallByPackage` is
|
||||||
the installed game's own title id. PatchDL now mirrors etaHEN's native
|
unavailable from the homebrew payload context (rejected with `0x80B21163`
|
||||||
DirectPKGInstaller call shape for that path: it passes an empty
|
outside the system process), so PatchDL routes through
|
||||||
`MetaInfo.content_id`, lets AppInstUtil bind the signed package metadata, keeps
|
`sceAppInstUtilAppInstallPkg` — the simpler API that reads the PKG's embedded
|
||||||
the returned content id, and exposes `/api/installstatus` for installer progress
|
`content_id` and binds the install to the right title slot. Verified
|
||||||
when `sceAppInstUtilGetInstallStatus` is exported.
|
end-to-end: Dead Island 2 (`PPSA03099`) updated from 01.000.001 to 01.000.011
|
||||||
|
on 11.60, including the cross-region shared-storage case where Sony serves the
|
||||||
|
patch under a master title id.
|
||||||
|
|
||||||
Cross-region patches are a known limitation. Sony sometimes packages a regional
|
`/api/installstatus` reports installer progress once
|
||||||
patch under a different (master) storage title and ships it as a debug-magic
|
`sceAppInstUtilGetInstallStatus` finishes the queued task.
|
||||||
container. PatchDL downloads such a patch and verifies it against Sony's hashes,
|
|
||||||
but refuses to install it from the standalone ELF because `InstallByPackage`
|
Disc games still need the disc inserted for their patch to apply, which is a
|
||||||
does not retarget signed package metadata on 11.60, and the homebrew alternative
|
normal Sony requirement; that's why shadowmounts are download-only by policy.
|
||||||
(BGFT register) returns "not supported" outside the system process. Installing
|
|
||||||
that class of patch needs Sony's authenticated updater, which nanoDNS blocks.
|
|
||||||
Disc games need the disc inserted for their patch to apply, which is a normal
|
|
||||||
Sony requirement.
|
|
||||||
@@ -19,7 +19,7 @@ VERSION=$(sed -n 's/.*PATCHDL_VERSION[^"]*"\([^"]*\)".*/\1/p' "$ROOT_DIR/src/pat
|
|||||||
SRC_ELF="$ROOT_DIR/patchdl-ps5.elf"
|
SRC_ELF="$ROOT_DIR/patchdl-ps5.elf"
|
||||||
[ -f "$SRC_ELF" ] || { echo "build first: $SRC_ELF missing" >&2; exit 1; }
|
[ -f "$SRC_ELF" ] || { echo "build first: $SRC_ELF missing" >&2; exit 1; }
|
||||||
|
|
||||||
UP_NAME="patchdl-ps5-v${VERSION}.elf"
|
UP_NAME="patchdl_${VERSION}.elf"
|
||||||
TMP_ELF="$ROOT_DIR/$UP_NAME"
|
TMP_ELF="$ROOT_DIR/$UP_NAME"
|
||||||
cp "$SRC_ELF" "$TMP_ELF"
|
cp "$SRC_ELF" "$TMP_ELF"
|
||||||
|
|
||||||
|
|||||||
Reference in new issue
Block a user