Skip to content

About

easily manage your jailbroken ps4 via ftp from simple gui

Resources

Stars

0 stars

Watchers

0 watching

Forks

Latest commit

 

History

8 Commits

Folders and files

Repository files navigation

PS4 Manager

A small desktop app for a jailbroken PS4 over GoldHEN's FTP server. It manages plugins (no FileZilla, no renaming plugins.ini to .txt, no manual editing), browses the console's files, and installs, removes and moves packages (PKG manager) — from a direct link or from a .pkg sitting on your PC. It is built to grow further PS4 tools, so the name stays general.

The PKG manager's back end lives in pkg_manager.py next to the app (standard library only, no pip install there either).

python3 ps4_manager.py      # start the app

Everything the app writes (ps4_manager_config.json, backups/, title_cache.json and the local plugins.ini copy) stays next to the script and is ignored by git, and so are the two test suites, which are kept locally and are not published. The PS4-Manager.sh shortcut in the parent folder is only a local launcher for the same command and is not part of this repository.

It remembers your PS4's address, connects on startup and shows every plugin from /data/GoldHEN/plugins.ini grouped into Default (every game) and one group per title id (e.g. CUSA12345 — Your Game, names are read from your console). A click on the State column enables/disables a plugin, and the change is written back to the console.


Features

Plugin tool

  • Every plugin listed with its real state (● Enabled / ○ Disabled) and full path on the PS4.
  • Click the State cell (or the name, or press space) to toggle → writes =true / =false.
  • Entries that are missing from /data/GoldHEN/plugins/ are flagged with ⚠ so you notice broken entries before GoldHEN starts complaining.
  • Add plugin dialog with the two scope checkboxes: Default — every game or Game specific — one title. For a game you either pick from your installed games or type a new title id; the plugin file can be picked from the console's plugins folder, uploaded from your PC, or typed by hand. (Verified against a real console: the display name comes from each game's param.sfo.)
  • Enable all / disable all, remove entries, right-click menu (enable, disable, remove, download from the console, copy path), F5/Ctrl-R to reload, Ctrl-S to save.
  • Comments, blank lines, section order and any exotic lines in plugins.ini are preserved — a toggle changes only the value it has to change.

Plugin files

  • Browse, upload, download, delete, create folders — all over FTP.

PKG manager (its own entry in the sidebar, beside the plugin tool)

  • Install from a link: paste a http(s):// URL to a .pkg (or to a .json manifest) and the PS4 downloads and installs it by itself.
  • Install from this PC: pick a .pkg on your PC and it is streamed to the console over HTTP while it installs. Nothing has to be copied to the console first, and no menu on the PS4 is touched. Split packages (name_0.pkg, name_1.pkg, …) are sent as one package, in order.
  • Live progress for every phase the console reports — preparing, downloading (with MB counters) and installing — plus a Stop button, and the task id is logged.
  • Send a .pkg … / Delete from PS4: move package files onto the console over FTP and remove them again (default folder /data/pkg, changeable in ps4_manager_config.json as pkg_dir).
  • Installed on the PS4 lists the console's titles (system apps hidden, names from your title cache) and can uninstall one without touching the console.
  • Installing and uninstalling need one small homebrew service on the console — Remote Package Installer, listening on port 12800. The page checks for it automatically, starts it for you when it can (next bullet) and otherwise explains the one-time setup (How to set it up). Sending and deleting files only needs GoldHEN's FTP, so that half works with no extra setup at all.
  • Automatic installer start: drop an installer payload into payloads/ — rpi.bin, rpi.elf, installer.bin or installer.elf, i.e. one of the payloads the PC tools in the scene push through GoldHEN's BinLoader — and the PKG manager sends it by itself the first time it finds port 12800 dead, waits for the service to answer and then carries on with the install, no extra click and no trip to the setup notes. The app bundles no third-party payload, so that file has to be one you put there yourself; with no such file nothing is sent and the page keeps pointing at the one-time setup. It is sent once per session at most, because BinLoader takes a single connection.

Safe by default

  • Automatic local backup of plugins.ini before every upload (including a -before copy), browsable and restorable from the Backups dialog.
  • Settings has Save changes automatically: toggles can go straight to the console, with a debounce so a flurry of clicks becomes one upload.

Saved PS4 (auto-connect)

  • Settings has a Saved PS4 card: fill in address/port/user/password once and press Save settings — they are written to ps4_manager_config.json and every later start connects on its own, with nothing to type.
  • The card always states what the next start will do, e.g. “✔ Next start: connects automatically to 192.168.1.50:2121 as anonymous.” or a warning when Connect automatically on startup is switched off.
  • Addresses you used before appear as one-click Saved PS4s buttons; Forget saved PS4 deletes the stored address, password and history in one go.
  • The details are kept even if you just type them and close the window, and the header Connect button saves whatever is in the form before dialling.
  • The password (only needed for non-anonymous logins) is stored as plain text in the config file and the card says so.

Payload server (optional)

  • Settings has a Payload server card for GoldHEN's payload server (BinLoader, default port 9090). Fill in the address and it connects together with FTP, on the same Connect button — no second button and no second step. GoldHEN can bind 9090, 9020 or 9021: all three are tried, and the header/log name the port that answered, so a stale port number is not a dead end. A second pill in the header says Payload off, Payload ready or Payload no reply, and a payload server that stays silent never costs you the FTP session: you still get connected, the status line just says "FTP only" and why.
  • Leave the address empty and the manager never opens the port. Use the PS4 address above copies the console's IP, Test payload server reports what answered and probes what is typed right now, even before saving.
  • “PS4 Manager connected” on the console — off by default; switch it on in the Payload server card. The app ships one small payload of its own (payloads/notify.elf, source and makefile in payloads/notify/) and, with the switch on, pushes it through BinLoader once after a successful connect: it shows the notification, writes nothing to the console and returns. A PS4 has no notification API you can reach over the network, so a payload is the only way to draw one — and that is also its catch. It uses BinLoader's single connection, and on some GoldHEN builds a notification sent by a payload never renders on screen: there the loader's own “Payload received” line is what you see, and the app's log says exactly what happened (verified on such a build with this payload and with the payload SDK's own reference sample). To use your own words, rebuild it — see payloads/README.md.
  • The same route is what starts the PKG manager's console-side installer: an installer payload in payloads/ (see the PKG manager section) is pushed through BinLoader by itself when port 12800 is dead. Payloader (in ps4_manager.py) can also push any payload file you supply — that is the hook for your own payloads, and the app never bundles somebody else's binary.
  • Payload no reply means nothing accepted a connection on the payload ports - the console-side server is the missing half, not the app. In GoldHEN's menu open Settings -> Servers and switch BinLoader on (it shows its port, 9090 unless you changed it); recent builds offer ELF and BIN, over TCP and HTTP POST. Merely visiting that page is not enough, the setting has to be enabled - and GoldHEN's BinLoader is marked experimental: on some builds it stops listening after a single connection, so toggle it again if it worked once and then stopped.

Comforts

  • Dark, minimal flat theme built with the standard library (no Qt, no pip).
  • All network and file work runs on background threads — the window never freezes, transfers show progress in the status bar and every hiccup is logged (Show log). A dropped connection is re-established automatically and the command retried.
  • Find my PS4 on the network scans your subnet for an open FTP port and fills the IP in.
  • Open local … / Save copy … to edit a plugins.ini offline.

Getting started

  1. On the PS4: run GoldHEN and enable its FTP server (GoldHEN settings menu).
  2. Run python3 ps4_manager.py.
  3. In Settings type your PS4's IP (the address shown on the console), press Find my PS4 on the network if you don't know it, then Save & connect. Default port 2121, user anonymous, empty password — that's what GoldHEN expects.
  4. Next time the app starts it connects by itself — that is the Saved PS4 card working. If it ever stops, check that Connect automatically on startup is still on there.

Typical paths (the defaults):

What Path on the PS4
plugins.ini /data/GoldHEN/plugins.ini
plugins /data/GoldHEN/plugins/

GoldHEN reads plugins.ini when it starts, so restart GoldHEN (or at least the game) after changing something.

Requirements

  • Python 3.8 or newer with Tkinter. There is nothing to pip install.
  • If your Python is missing Tkinter (some Linux distros ship it separately) the script offers to install it for you on first run (apt/dnf/yum/zypper/pacman/apk/brew, asking for your password via sudo), then restarts itself. Use --no-install to disable that.

Command line

python3 ps4_manager.py [--host 192.168.1.50] [--port 2121] [--ini /data/GoldHEN/plugins.ini]
                       [--local plugins.ini] [--no-connect] [--no-install] [--version]

Files it creates

File Purpose
ps4_manager_config.json your saved FTP settings (delete it to start over)
backups/plugins-<timestamp>.ini automatic backups of plugins.ini
title_cache.json title id → game name cache

They live next to the script (falling back to ~/.config/ps4_plugin_manager/ if that folder is not writable).

Tests

The two test suites (test_ps4_manager.py for the offline half, test_live_ps4.py against a real console) are deliberately not part of this repository — the app runs without them — and are kept next to the app on the machine it was developed on. Nothing in ps4_manager.py or pkg_manager.py imports them.

The app carries its own sanity check instead, which needs nothing but Python:

python3 ps4_manager.py --selftest     # builds the whole UI once and exits

Run it after editing to confirm the window still comes up; it shows nothing on screen.

Notes / troubleshooting

  • Connection refused / timed out — the FTP server in GoldHEN must be enabled, the PS4 and PC must be on the same network, and the IP must be the one the console reports.
  • =true / =false is understood by GoldHEN 2.3 and newer. Older builds just load every listed plugin; disabling then means removing the line.
  • Console folders that contain images/param.sfo may not be readable over FTP (GoldHEN answers 550); game names fall back to the title id and nothing else breaks.
  • Big bogus sizes: GoldHEN's FTP reports nonsense sizes for a few very large files — cosmetic only.
  • “Installer not running” in the PKG manager — the console-side service on port 12800 is not up. If you left an installer payload in payloads/ the manager already sent it, and the log says whether BinLoader accepted it (see the payload-server notes above); otherwise press How to set it up there: install the Remote Package Installer homebrew once (title id FLTZ00003, a store build — flatz's GitHub has the source and building it needs the private PS4 SDK) and start it before a transfer. Sending/deleting .pkg files on the console keeps working without it.
  • No “PS4 Manager connected” notification on the console — first, that switch is off by default; turn it on in the Payload server card. It also needs GoldHEN's BinLoader (the payload server pill says whether that is up), and the log names the reason when it cannot send, e.g. Notification skipped: …/payloads/notify.elf is missing. If the log says the payload was sent and GoldHEN reports the payload as launched but nothing appears, that is a loader-side limitation of that build — a payload-sent notification is not rendered there, and no payload can change that (the SDK's own reference sample behaves the same way).
  • The console never starts downloading — the PS4 has to reach your PC on the port shown in the PKG manager. If a firewall is up, allow that port (sudo ufw allow 9898/tcp). One transfer at a time: the console's downloader queues the rest.

About

easily manage your jailbroken ps4 via ftp from simple gui

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages