# ps5upload: a homebrew loader for a jailbroken PS5, built as payload, engine and client

> ps5upload sends games, applications and homebrew to a jailbroken PS5 over a single encrypted port, resumes uploads after a dropped connection and manages the console's files from a desktop app, a phone or a browser. The repository is a Rust engine, a Tauri client and a C payload, with the console's own limits stated plainly.

**phantomptr/ps5upload** — Send games, apps and homebrew to a jailbroken PS5, and manage the console from your computer, phone or browser.

- Repository: https://github.com/phantomptr/ps5upload
- Website: https://discord.gg/fzK3xddtrM
- Stars: 841 · Forks: 64
- Language: TypeScript
- License: NOASSERTION
- Published: 2026-10-20 · Updated: 2026-10-20 · Language: en
- Canonical page: https://hysenlabs.com/projects/phantomptr-ps5upload

## Everything runs over one encrypted connection on port 9120

ps5upload gets games, applications and homebrew onto a jailbroken PS5 quickly and reliably, and the README summarises the properties that matter: uploads resume after a dropped connection, installs pick the route that works, and you can browse files, manage the console and run cheats from your computer, phone or browser.

The transport is specific. Everything runs over AVA1, one encrypted connection on port 9120, which is the protocol the payload side speaks to the host.

The upload story is the part with real engineering in it. The tool handles games, folders, disk images and .zip, .7z and .rar archives, with archives unpacked on the way and nothing extracted to your disk. Every file is verified, and an upload continues after a dropped connection, a helper restart or a rest mode. A job that will not fit is refused up front, counting what is already on the console, and the interface shows a queue, a live speed and an ETA.

The install paths are deliberately plural. PS4 .pkg files and PS5 fake packages for base, update and DLC can come from your computer with either Stream and install or Upload and install, from a NAS or SMB share, from a USB drive, or from a link. If the PS5 refuses one route, the app offers another.

That last sentence is the design in miniature. A jailbroken console is a moving target whose firmware changes what it accepts, so a tool that hardcodes one path is a tool that breaks on the next system update.

## The repository is a C payload, a Rust engine and a Tauri client

The Makefile at the root of the repository documents the tree layout, and it is the clearest description of the architecture available.

The payload/ directory holds the PS5 C payload for FreeBSD 11, which is the code that runs on the console. The engine/ directory is a Rust workspace with the ava1 crate, ps5upload-core, the ava1 and engine HTTP services, a lab CLI, a tests crate and a pkg crate. The client/ directory is the Tauri 2 desktop app, cross-platform across Linux, macOS and Windows on x64 and arm64.

The tests/ directory holds root integration smoke tests and tests/lab/, which are real-hardware shell scripts. The bench/ directory holds a hardware sweep, golden workloads and profiles, which is how you measure on the actual console rather than on a desk.

The scripts/ directory holds install and development helpers, one per operating system, plus shared mjs utilities, and the site/ and protocol/ directories hold the web parts and the wire format.

The separation is the interesting part. A Rust engine that speaks AVA1 over the network, a Tauri client that a person touches, and a C payload that has to run inside a FreeBSD 11 environment on the console, with a protocol directory to keep the three in step.

The root package.json is thin on purpose, and its scripts are about keeping the repository honest rather than building it:

```json
    "validate": "node scripts/validate-repo.mjs",
    "lint": "node scripts/check-scripts.mjs && npm --prefix client run lint",
    "i18n:check": "node scripts/i18n-coverage.mjs",
```

There is a separate script for the full validation, one for hardware validation, one for coverage, a scripts check, a scripts audit, an i18n coverage script with a report mode and a bootstrap mode that updates an allow list, a hardware smoke test, and a release script that runs scripts/release.sh.

## Installs across six platforms, with a packaging wrinkle on NixOS

Pre-built downloads land on the releases page, and the matrix in the README is a good guide to how the project thinks about distribution.

On macOS there is a dmg for Apple Silicon and Intel, and the instructions say to open the .dmg and drag PS5Upload into Applications, with a note that Gatekeeper blocks downloaded apps the first time. On Windows there is a zip for x64 and ARM64, unzipped and double-clicked, portable with no installer, and SmartScreen warns on first run.

Linux is covered four times over: a .deb for Debian and Ubuntu, a .rpm for Fedora, RHEL and Bazzite, a universal zip for any distribution which needs no install at all and runs through a PS5Upload.sh wrapper, and a NixOS route. The zip instructions say to chmod +x the wrapper and the AppImage and run the wrapper, because the wrapper handles the FUSE-less and WebKit white-screen cases, and the AppImage only works directly if the system has libfuse2 and a happy WebKitGTK.

Android is an apk, with the same interface, mobile-friendly, connecting over Wi-Fi, and a note about allowing local network access on Android 17.

The NixOS case is the interesting one, because no artifact is published for it. ps5upload is packaged in GriefNorth's NUR as ps5upload for x64 and ARM64, wrapping the same AppImage and needing no FUSE. The README gives a flake example and a non-flake expression, and the non-flake one ends with a note that ps5upload bundles UnRAR for .rar support, so nixpkgs needs config.allowUnfree = true. The Nix expression pins one release version, so it has to be bumped when a new ps5upload comes out.

If you want to try it without installing anything, there is a one-liner:

```bash
nix run github:GriefNorth/nur-packages#ps5upload
```

## The tool says plainly what it will not do

A section titled What it doesn't do appears immediately after the feature list, and it is short enough to quote.

It does not do system package patches, meaning NPXS Store or Settings updates, and the README points you at the PS5's own Settings, Debug Settings, Game, Package Installer for that. It also does not sign packages with fake keys, and it only installs packages the console already trusts.

That second point is the load-bearing one for judging the project. A tool that can install arbitrary packages on a console is a much more powerful and much more dangerous thing than a tool that manages packages the console has already been configured to accept. The line the project draws is between managing the console's own trusted set and extending that trust, and it draws it before the feature list rather than in a footnote.

The features it does claim are broad. Collection lists every game in your folders, including folders on a NAS scanned in place, grouped with its updates and DLC, showing what each PS5 already has with one click to install the rest, and it replaces the PS Game Library. Conversion builds an installable package from a decrypted game folder or an image, or writes a game folder as a game image in exfat, ffpkg, ffpfs or the smaller ffpfsc form that ShadowMount+ mounts.

Browsing and management covers files, games, disk images that can be mounted and edited in place, saves, screenshots and video clips, with register, launch, stop and uninstall for games, and copy, move, delete and permission changes.

There is also a long tail: cheats, fan curve, hardware view, Remote Play pairing, a payload sender with a catalogue and playlists, backport tools, and power controls for rest mode, reboot, shut down and waking over the network, optionally straight into your signed-in user.

## The engine can also be a self-hosted web UI

The runs everywhere line in the feature list has an important qualifier: any browser through the self-hosted Docker web UI, with a compose file in engine/compose.yaml. That means the client is not the only way in.

The architecture makes this natural rather than bolted on. The engine directory already contains an engine HTTP service alongside the core crates, and the protocol directory holds the wire format, so a browser based client is another consumer of the same API. The README lists twenty-one languages, which is the user interface layer, and the client is a Tauri application, so the same codebase can be presented as a desktop app, a mobile app or a web application.

The Makefile comments explain the reason the build insists on npm ci rather than npm install. The lockfile carries libc fields that select musl against glibc native binaries for the Alpine-based web UI image, and npm 11 writes them while npm 10 does not know the field and deletes it on every install. Because the target runs on every build, an older npm silently stripped the metadata and it had to be hand-reverted before each release, which is why the Makefile uses a strict install from the lockfile, the same thing CI does.

That comment is a small window into how the project is run. There is a validate script, an audit script for scripts, a check for script style, a coverage script, and separate i18n coverage and allow list maintenance, which suggests a project that treats its own repository as something to be checked continuously.

## Where ps5upload is the wrong tool

The first wrong fit is a console that is not jailbroken. The whole tool exists because the console runs the payload, and without that there is no AVA1 endpoint on port 9120 to talk to. The README's own framing, a tool for a jailbroken PS5, is the constraint.

The second is a workflow that needs to change what the console trusts. The tool will not sign packages with fake keys and will not patch system packages, so if your plan involves installing something the console does not already accept, this is not the instrument. The README sends you to the console's own package installer for the system update case.

The third is a firmware outside the stated range. The badge says PS5 firmware 1.00 to 13.60 supported, with 5.10, 9.60 and 13.60 tested. A specific supported range and a specific tested set is a much more honest statement than a compatibility claim, and it tells you that the behaviours you depend on are the ones verified on those three versions.

The fourth is a requirement for the original game files. Uploading and converting assume you already have the content, and the collection feature scans folders you point it at. The tool moves and manages what you have; it is not a source of game data, and the conversion features work from a decrypted folder or an image you supply.

On the state of the project, the releases move quickly, with v7.1.7, v7.1.8 and v7.1.9 all tagged on 2026-10-19, and the last push to the repository on the same day with the repository not archived. The licence badge reads GPL-3, the repository carries a LICENSE file and a LICENSES/ directory for the third party licences, and the root also holds DISCLAIMER.md, FAQ.md, TESTING.md, CHANGELOG.md, SECURITY.md and CONTRIBUTING.md. The version of the licences of the bundled components is worth reading before you redistribute a build, and this is not legal advice.

## Conclusion

ps5upload fits a user with a jailbroken PS5 who wants to manage installs, saves and files from a computer or phone rather than by hand. It does not fit a stock console, and it does not do what the README explicitly rules out, namely system package patches or signing packages with fake keys. Before adopting it, check the firmware versions in the badge against the console you have, because the supported range is specific and the tool only installs packages the console already trusts.

## FAQ

### What is ps5upload?

It is a tool that sends games, applications and homebrew to a jailbroken PS5 and lets you manage the console from your computer, phone or browser. Uploads resume after a dropped connection, installs pick the route that works, and everything runs over one encrypted connection using AVA1 on port 9120.

### Which platforms does ps5upload run on?

The releases page carries builds for macOS as a dmg, Windows as a portable zip, Linux as a deb, an rpm and a universal zip, and Android as an apk, plus a browser build through the self-hosted Docker web UI. The NixOS case is packaged in NUR rather than published as an artifact.

### What can ps5upload not do?

It does not do system package patches, meaning NPXS Store or Settings updates, and it does not sign packages with fake keys. It only installs packages the console already trusts, and the README points to the console's own package installer for system updates.

### How is the ps5upload repository structured?

The Makefile documents the layout: a C payload for the console under payload/, a Rust workspace under engine/ with the ava1 crate, core, HTTP services, a lab CLI and tests, a Tauri 2 desktop app under client/, real-hardware tests under tests/ and a hardware sweep under bench/.

### Which PS5 firmware versions does ps5upload support?

The badge in the readme states firmware 1.00 to 13.60 as supported, with 5.10, 9.60 and 13.60 tested. The project is licensed under GPL-3, with a LICENSE file and a LICENSES/ directory in the repository.

## Sources

- [Issues](https://github.com/phantomptr/ps5upload/issues)
- [phantomptr/ps5upload on GitHub](https://github.com/phantomptr/ps5upload)
- [Project website](https://discord.gg/fzK3xddtrM)
- [README](https://github.com/phantomptr/ps5upload/blob/main/README.md)
- [Releases](https://github.com/phantomptr/ps5upload/releases)

---

Hysen Labs editorial analysis, written from the project's own repository and release notes. Cite the canonical page: https://hysenlabs.com/projects/phantomptr-ps5upload
