Skip to content

EVO Player v0.3.0

Pre-release
Pre-release

Choose a tag to compare

@github-actions github-actions released this 10 Aug 09:36
· 50 commits to main since this release

The player starts from the console now, and tells you what changed.

New

  • A home-screen tile. EVO Player registers a Media-category title and
    appears in the console's own Media row, so it starts from the controller.
    Until now launching meant opening a browser on a second device to reach the
    websrv launcher. The tile is title EVOP10001 on loopback port 9056,
    deliberately distinct from ProsperoPlayer's PRSP10001/9055 so both can be
    installed on the same console; nothing here touches upstream's registration.
    Build and install with ./scripts/build-media-tile.sh --install.
  • The uninstaller ships with it, and is built first. Sony usually hides
    Options → Delete for Media hosts, so removal is --uninstall, or the
    one-shot EVOPlayer_UninstallTile.elf when the launcher is not resident.
    It is built before the launcher, unconditionally, so the way back exists
    before it is needed.
  • A changelog in the app, under About. Release notes per version with the
    emphasis inverted the way the other informational rows work — the change is
    what you came to read, so NEW / FIXED steps back.
  • A real application icon, generated by tools/gen_app_icon.py from vector
    shapes using the same signed-distance rasteriser as the UI icons. The
    repository previously had no EVO icon at all, so packaging fell back to a
    1×1 placeholder and the Media launcher carried upstream's branded artwork.
  • ./scripts/update-console.sh — rebuilds and updates both install paths
    in one command.

Fixed

  • The Media launcher's Makefile could never have worked. It depended on
    assets/ProsperoPlayer.elf while the source embeds assets/EVOPlayer.elf,
    so make failed on a missing prerequisite. A missing player now explains
    itself instead of surfacing as an assembler error about a file it cannot
    open.
  • The tile and the development install no longer fight over one directory.
    The launcher embeds the player and rewrites it on every launch; with both
    pointing at /data/homebrew/EVOPlayer the tile silently overwrote whatever
    install-homebrew.sh had just pushed, with nothing to say which binary had
    actually started. The tile's copy lives at /data/evoplayer/app, and
    uninstalling the tile no longer deletes the development install.
  • uiview reported version 0.0.2 for every render, because the version was
    hardcoded in tools/uiview.sh rather than read from VERSION. Its About
    fixture had also drifted from the real screen.
  • Installing the tile never returned. prospero-deploy is
    socat -t 9999999, which waits for the far end to close, and elfldr does not
    close while the payload it spawned is alive. The launcher is resident by
    design — that is what serves the tile's deeplink — so the deploy ran until it
    was killed, long after the payload was up. Console deploys are bounded now
    (--timeout, default 90s), and timeout's exit 124 is reported as what it
    actually means: still resident, detached.

Known gaps

  • The launcher is a payload, so it must be re-injected after every jailbreak;
    the tile stays registered but does nothing without it. Autoload is the
    answer, and is the exploit host's job rather than this repository's.
  • The tile embeds the player whole, so the launcher payload is player-sized
    (~34 MB) and updating the tile means re-injecting all of it.
  • PP_VERSION in the launcher is a separate constant from VERSION.


Install

  1. Jailbreak the console (12.70) and start ps5-payload-elfldr.
  2. Deploy ps5-payload-websrv.
  3. Extract the homebrew zip to a USB stick as /homebrew/EVOPlayer/,
    or copy it to /data/homebrew/EVOPlayer/ over FTP.
  4. Launch it from http://<ps5>:8080/index.html.

EVOPlayer-*.elf is the bare payload. Note that sending it with
elfldr alone runs it headless — it needs the homebrew launcher to
get a display plane. See the README.

Requirements

  • PS5 on firmware 12.70, jailbroken (re-run after every reboot)
  • A USB stick for media

Verification

Built reproducibly in CI from the pinned toolchain (clang 18.1.3,
PS5 Payload SDK v0.42, FFmpeg 7.0.1). CI has no console, so these
binaries are not hardware-tested.
Checksums in SHA256SUMS.txt.

Licensed GPL-3.0-or-later. Derived from ProsperoPlayer; see NOTICE.