ps5-vitals
Read and write PlayStation 5 system vitals from your PC over LAN.
$ ps5-vitals temp
CPU: 43 C (rc=0)
SoC: 40 C (rc=0)
$ ps5-vitals storage
storage:
/user 529.1 GiB free / 627.5 GiB total ( 15.6% used)
/data 529.1 GiB free / 627.5 GiB total ( 15.6% used)
/mnt/usb0 405.7 GiB free / 465.6 GiB total ( 12.9% used)
/mnt/usb1 14.3 GiB free / 14.3 GiB total ( 0.2% used)
$ ps5-vitals fan set 70
fan threshold set to 70 C (ioctl rc=0)
What it does
A zero-dependency Python CLI that ships with pre-built PS5 payload ELFs. It
pushes each op to the PS5 via elfldr (TCP 9021), lets the payload run, then
parses the resulting [ps5-vitals-result] ... line out of the kernel log
stream (TCP 9081, etaHEN's forwarder). End-to-end round-trip on a 5.50 console
is ~1 second.
| Subcommand | What it does | Mechanism |
|---|---|---|
temp |
CPU and SoC temperature in °C | sceKernelGetCpuTemperature + sceKernelGetSocSensorTemperature(0) |
storage |
Free / total for /user, /data, /mnt/usb0, /mnt/usb1 |
statvfs() |
fan get |
Best-effort fan duty (0..100) | sceKernelGetCurrentFanDuty (weak-linked) |
fan set N |
Set fan turbo threshold (30, 40, 50, 60, 70, 80, 90 °C) | /dev/icc_fan ioctl 0xC01C8F07 |
version |
Liveness ping | sceKernelGetCpuTemperature as a no-cost probe |
Requirements
- A jailbroken PS5 with a live Y2JB → etaHEN → ps5debug-NG chain:
- etaHEN's klog forwarder on TCP 9081 (the default).
- elfldr / Poops on TCP 9021 (the default).
- The PS5 on the same LAN as your PC, default IP
10.0.0.108(override with--hostorPS5_IP). - Python 3.8+ on the PC side. No third-party packages.
Install
pip install ps5-vitals
The wheel bundles 11 pre-built payload ELFs (one per op, plus the seven fan-set thresholds) so you don't need the PS5 payload SDK or a cross compiler.
PS5 SDK pin (for the source payload)
If you want to rebuild the bundled ELFs from source:
ps5-payload-dev/sdk≥ 0.37 (providesprospero.mk,libSce.libkernelwithsceKernelGetCpuTemperatureandsceKernelGetSocSensorTemperature).clang/lldmatching the SDK release.- Firmware-specific: this package targets 5.50 (the SDK's
PS5SDK_FW=0x550is implicitly the safe default for dynamically linked payloads using only public NIDs).
To rebuild:
git clone https://github.com/ps5-payload-dev/sdk
PS5_PAYLOAD_SDK=$PWD/sdk make -C payload
The source lives in payload/vitals.c; the Makefile is at
payload/Makefile. Each vitals-*.elf is exactly one operation — the
operation is baked into the ELF at build time via -DCOMMAND=... (or
-DCOMMAND_FAN_SET_N=N). This makes each push cheap and stateless.
On-ramp to a home-screen tile
This package is the CLI path. The same vitals.c is the foundation
for an on-screen SDL2 tile (vitals-tile.elf) that would render a
1080p vitals panel with a fan slider and storage bars. The build
target is gated on having a valid PS5 fPKG signing key — the underlying
issue is the 0x80F00101 SCE_NP_DRM_CONTENT_ERROR_HEADERSIGN blocker
that affects every non-Sony-keyed fPKG on 5.50+. When a key is sourced,
the SDL2 frontend reuses these exact payload primitives and the CLI
remains the test harness for them.
What works on 5.50 (verified 2026-07-25)
| Console feature | Source | ps5-vitals command |
|---|---|---|
| CPU temperature | sceKernelGetCpuTemperature |
temp |
| SoC temperature | sceKernelGetSocSensorTemperature(0) |
temp |
| Storage free/total | statvfs() |
storage |
| Fan threshold | /dev/icc_fan ioctl 0xC01C8F07 |
fan set N |
| Fan duty (best-effort) | sceKernelGetCurrentFanDuty |
fan get |
What does not work today (because of the DRM blocker, not the code):
- Installing the on-screen tile as an fPKG (no working signing key).
- True fan RPM (the kernel reports duty, not RPM).
- Custom fan curve (only the threshold is exposed; the curve is what the firmware uses internally to translate threshold → duty).
License
MIT. See LICENSE.
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distributions
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file ps5_vitals-0.1.0-py3-none-any.whl.
File metadata
- Download URL: ps5_vitals-0.1.0-py3-none-any.whl
- Upload date:
- Size: 306.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.0
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
7cc4e2a61f6f71197a9c760fa4667a0e590232a131605f92b6966ab1eaa7f043
|
|
| MD5 |
395c48422fc4f365bc949e82d1ab0c33
|
|
| BLAKE2b-256 |
073601fcf9803f91a49f6ffce5248f35748397e7e39e2ebef1778083b143b340
|