The project's README from github.com/MyLuxy/overdrive. As one markdown file: README.md.
English · Русский
Your PS5 game store.
Back from the dead, rebuilt from its own binary, with every line of source in the open.
Install · Features · Updates · Troubleshooting · Build it yourself
[!NOTE] The original Overdrive project has been shut down so I decompiled the last released build, recovered the complete source and rebuilt it.
You need a jailbroken PS5 running ShadowMount+,
the payload that installs .exfat images by itself. If ShadowMount+ shows its notification
when the console starts, you are ready. You also need a USB drive and a PC.
|
Download |
|
|
Copy it onto a USB drive, inside a folder called
The drive must be formatted as exFAT, which is how most drives come and what the PS5 reads. |
|
|
Plug the drive into the PS5. ShadowMount+ checks for new files every few seconds: it finds Overdrive, mounts it and installs it, and a notification tells you when it's done. There is nothing to click. |
|
|
Open Overdrive from the home screen. Look for this icon. Enjoy! |
You can also use any FTP client to move the file onto the console's internal storage
instead, again inside a homebrew folder: /data/homebrew/Overdrive.exfat.
You only install Overdrive by hand once. When a new version comes out, the app tells you by itself a few seconds after it opens:
The update needs about 600 MB free on the drive that holds Overdrive. update.zip in each
release is the package the app downloads for this; you never need it yourself.
Overdrive is free and open source. If you enjoy it, sponsoring helps me keep it updated.
homebrew and sit at the top level of the
drive, not inside another folder..exfat. Some PCs hide extensions: a file renamed to
Overdrive.exfat.zip or unzipped into a folder won't be found.The new version is installed but the console still has the old one loaded. Restart the console and open Overdrive again; the app tells you this itself if it happens twice in a row.
The update is downloaded next to the installed app, so the drive holding Overdrive needs about 600 MB free. Free some space on that drive and press Retry. Nothing has been changed yet when this happens.
Install it by hand: download Overdrive.exfat from the
latest release, close Overdrive, and copy
the new file over the old one in the homebrew folder.
Delete Overdrive.exfat from the homebrew folder first, then delete its icon from the home
screen. In the other order ShadowMount+ finds the file again and puts the icon back.
| Path | What it is |
|---|---|
app/ |
The application: JSX sources, state, assets, catalog data, and app.json (title id PPSA99058, version, capabilities) |
ps5-react/ |
The framework it runs on, vendored from half144/ps5-react |
packaging/make-exfat.sh |
Builds the exFAT image ShadowMount+ installs |
.github/workflows/build.yml |
The build |
Overdrive is a React app running on ps5-react, and its
whole JavaScript bundle sits in plain text inside eboot.bin. A bundler merges every module into
one scope, so imports between modules turn into bare names; since each top-level name stays
unique, the module that declares a name can be worked out again. That split the bundle back into
its 137 original modules with their real import/export lines, checked against the original
bundle until every import edge matched.
What a bundler throws away could not come back: most comments, the JSX syntax (it reads as
jsx(View, {…}) calls), and const/let (now var). None of that changes how the app behaves.
Builds run on ubuntu-24.04 with clang 18, only from Run workflow: a push builds nothing.
Each run puts Overdrive.exfat and update.zip in a draft release named after
app/version.js, which only maintainers can see.
The same build locally, on any Linux with the packages the workflow installs (clang-18,
llvm-18, cmake, ninja-build, nodejs, npm, zlib1g-dev, build-essential,
pkg-config, unzip, curl, exfatprogs, and Pillow from ps5-react/requirements.txt):
cd ps5-react
python3 tools/build_ps5.py --app-dir ../app --llvm /usr/bin
sudo ../packaging/make-exfat.sh dist/PPSA99058 ../Overdrive.exfat
The build downloads its pinned dependencies into ps5-react/.deps and writes the app folder, a
.zip and a .receipt.json into ps5-react/dist. It verifies the result itself
(tools/verify.py), so a green build means the payload structure and signatures check out.
--llvm /usr/bin points it at the system clang; upstream defaults to the Homebrew LLVM path
because macOS is its supported development environment.
The image is a plain exFAT volume whose root is the app folder, with 64 KiB clusters and the
label OVERDRIVE. To release a new version, raise the version in app/version.js and
app/app.json, run the workflow, test the draft's image on a console, then publish the draft:
that creates its tag, and installed apps offer exactly the tested files on their next start.
Two fixes in the vendored framework, both in the build tooling and both reported by a Linux build:
ps5-react/tools/common.py read the git apply --summary line with a fixed space count, which
glued the file mode onto the path (100644 <path>) and made every fresh dependency checkout
fail on the first patch that creates a file. It now splits on whitespace.ps5-react/tools/build_ps5.py opened the pinned LLVM package's data.tar.zst with tarfile,
which reads zstd only from Python 3.14 while the documented minimum is 3.12. It now falls back
to the zstd command.Nothing else in the framework is changed.
ps5-react/ is GPL-3.0-or-later and carries its own LICENSE, LICENSE-ATTRIBUTION and
NOTICE. Every dependency notice is copied into notices/ inside the built app, and
ps5-react/docs/DEPENDENCIES.md lists them with their sources.
Overdrive is an unofficial homebrew project and is not affiliated with or endorsed by Sony Interactive Entertainment. PlayStation and PS5 are trademarks of Sony Interactive Entertainment.