◉ Pulse
JaimeJimenezG avatar
#38 today ▲ 1

JaimeJimenezG/Moonlight-ps4

C AI

A moonlight Client for PS4

Created Jul 31, 2026
Stars
15
Today
+4
Forks
0
Quality
75/100
Momentum
16

README

Fetched from GitHub on Oct 30, 2026, 11:07 PM UTC · README.md

View original on GitHub

Third-party content — Open Source Pulse is not the owner of this repository.

This README belongs to JaimeJimenezG/Moonlight-ps4 and its contributors. We fetch it directly from the project’s public GitHub repository and display it for reference only. All text, code, images and trademarks remain the property of their respective authors. See the repository for its license terms. Copyright / takedown policy.

moonlight-ps4

Unofficial Moonlight port (Sunshine/GameStream game-streaming client) for jailbroken PS4 (GoldHEN), built on the OpenOrbis toolchain.

Full port plan: PLAN.md.

Current version: 1.1.0

Status

Playable client for jailbroken PS4 (GoldHEN / FW 9.00 validated):

  • Pairing, applist, launch, and H.264 streaming against Sunshine
  • Audio (Opus + sceAudioOut)
  • Software video (FFmpeg) and hardware decode (libSceVideodec2, prefer_hw)
  • DualShock 4 input (scePad)
  • On-console UI (APPS / SETTINGS + on-screen keyboard) and INI config
  • Installable .pkg (CATEGORY=gd)
  • Optional performance overlay and Videodec2 / BGRA tuning knobs

TODO

  • Keyboard and mouse support
  • mDNS host discovery
  • Native YCbCr/NV12 presentation on sceVideoOut

Full port plan and longer backlog: PLAN.md. Validation notes: docs/CONSOLE_VALIDATE.md.

Requirements (development)

  • Linux x86_64 with clang, ld.lld, cmake, ninja, git, and curl
  • OpenOrbis toolchain v0.5.4 (default: ~/ps4dev/OpenOrbis/PS4Toolchain)
  • Cross-built FFmpeg for PS4 (H.264 decoder only): scripts/build_ffmpeg_ps4.sh
  • For PkgTool.Core: libssl.so.1.1 / libcrypto.so.1.1 in ~/ps4dev/hostlibs/usr/lib
  • PS4 with GoldHEN-compatible firmware (plan validated on 9.00)
  • Host PC running Sunshine

Dependencies (third_party)

Vendored libraries live as git submodules pinned in third_party/DEPS. Git only stores the commit SHA for each submodule — not a full copy of upstream. Orbis-specific fixes are not committed inside those repos; they live under patches/ and are applied after checkout.

git clone <this-repo>
scripts/setup_deps.sh    # checkout pins from third_party/DEPS + apply patches/

Equivalent manual flow: git submodule update --init --recursive then scripts/apply_patches.sh. After patches, third_party/* working trees look dirty — that is expected; commit patch files, not submodule dirt.

To bump a dependency on purpose: edit the pin in third_party/DEPS, update the submodule to that commit, refresh patches if needed (scripts/refresh_patches.sh), and commit the new gitlink + DEPS (+ patches).

Build

git clone <this-repo>
cd moonlight-ps4
scripts/setup_deps.sh                # pinned third_party + Orbis patches
scripts/build_ffmpeg_ps4.sh          # once (→ ~/ps4dev/ffmpeg-ps4)

# PS4 app + .pkg (sources env.sh, configures, builds, packages)
scripts/build_pkg.sh
# scripts/build_pkg.sh --clean       # wipe build-ps4/ and reconfigure

# Optional: Linux development CLI (pairing / H.264 dump)
cmake -B build-host -G Ninja && cmake --build build-host

Installable artifact: build-ps4/Moonlight-1.1.0.pkg (also IV0000-MLNT00001_00-MOONLIGHTPS40000.pkg).

build_pkg.sh runs source scripts/env.sh itself. Manual CMake equivalent:

source scripts/env.sh
cmake -B build-ps4 -G Ninja -DCMAKE_TOOLCHAIN_FILE=cmake/openorbis.cmake
cmake --build build-ps4

Usage on PS4

  1. Install the .pkg (Package Installer / GoldHEN / FTP). The package uses CATEGORY=gd (required so GoldHEN injects plugins).
  2. Optional — YCbCr presentation (prefer_ycbcr=true, experimental):
  • Copy plugin/bin/ycbcr_unlock.prx → /data/GoldHEN/plugins/
  • Add [MLNT00001] in /data/GoldHEN/plugins.ini (see [plugin/README.md](plugin/README.md) and plugin/plugins.ini.example)
  • GoldHEN → Enable plugins
  • After each reboot, send the kpayload once: nc -w 3 <PS4_IP> 9090 < plugin/bin/ycbcr_kpatch_900.bin
  1. On first launch the app opens the SETTINGS menu if no host is set. You can also create /data/moonlight/moonlight.ini over FTP (see pkg/assets/misc/moonlight.ini). Optional: debug_host.txt with your PC IP.
  2. Start Sunshine on the PC. On first pair the app shows a PIN (also written to /data/moonlight/pin.txt); enter it at https://<pc>:47990/pin.
  3. Logs on the PC: nc -ulk 9999 (or enable file log in SETTINGS → /data/moonlight/debug.log).
  4. In the menu: X/O start app, L1/R1 switch APPS/SETTINGS, OPTIONS quit active Sunshine session, OPTIONS + Touchpad (~1 s) exit stream.

Defaults

Setting Default
Resolution / FPS 1920×1080 @ 60
Bitrate 20 Mbps, H.264
prefer_hw true (Videodec2)
prefer_ycbcr false (BGRA path; correct colors, SSE2 multi-thread convert)
Title ID MLNT00001

Mean decode/convert/present times are printed every second over UDP. Validation protocol: [docs/CONSOLE_VALIDATE.md](docs/CONSOLE_VALIDATE.md).

Isolated Videodec2 spike: videodec2_spike = true in the INI.

Host CLI (Linux)

./build-host/moonlight-cli pair 192.168.1.100
./build-host/moonlight-cli list 192.168.1.100
./build-host/moonlight-cli stream 192.168.1.100 --res 1280x720 --time 20
./build-host/moonlight-cli quit 192.168.1.100

Layout

cmake/openorbis.cmake           CMake toolchain for PS4
pkg/                            package assets (icon0, sce modules)
scripts/                        env, cross FFmpeg, .pkg packaging
src/
  main.c stream.c config.c      orchestration + INI config
  ui/                           on-console menu (APPS / SETTINGS + OSK)
  gamestream/                   pairing/HTTP/XML over mbedTLS
  audio/audio_orbis.c           Opus + sceAudioOut
  video/renderer_videoout.c     YCbCr/NV12 or BGRA presentation (sceVideoOut)
  video/nv12_blit.c             1088→1080 copy (WB_GARLIC / Onion alias)
  video/decoder_ffmpeg.c        H.264 software (FFmpeg)
  video/decoder_orbis.c         H.264 hardware (libSceVideodec2)
  gamestream/sps.c              SPS fixup (num_ref_frames=1)
  input/input_pad.c             DualShock 4
  orbis/                        VideoOut / Videodec2 / net helpers
  host/main_cli.c               Linux development CLI
plugin/
  ycbcr_unlock/                 GoldHEN PRX (1.63) for YCbCr VideoOut
  ycbcr_kpatch/                 FW 9.00 kernel kpayload (BinLoader)
  kernel_dumper_900/            kernel dump helper for RE
docs/                           console validation + kernel YCbCr RE notes
third_party/
  DEPS                        pinned tags/SHAs (lockfile for setup_deps.sh)
  moonlight-common-c          protocol engine (submodule + Orbis patches)
  mbedtls                     crypto (v3.6.4)
  opus                        audio
  h264bitstream               SPS rewrite
patches/                      Orbis patches applied by scripts/apply_patches.sh
scripts/setup_deps.sh         checkout pins + apply patches
scripts/apply_patches.sh
scripts/refresh_patches.sh    regenerate patches after local dep edits
Rendered by GitHub from the repository’s README. Scroll to read the full file.
First trending

Jul 31, 2026

first spotted on the list

Best rank

#20

highest position reached

Appearances

2

times on the trending list

Quality score

75

out of 100

Momentum

16

trend strength indicator

Star velocity

0.16

stars per day since creation

Activity — last 60 days

daily counts, collected every 6 hours
  • Stars
  • Forks
  • Merged PRs
  • Issues
  • Closed issues

Collecting activity data since launch — check back in a few days.

Star history

total stars per snapshot
10111213141516JaimeJimenezG/Moonlight-ps4 · Jul 31, 2 PM UTC: 11 starsJaimeJimenezG/Moonlight-ps4 · Jul 31, 7 PM UTC: 15 stars2:15 PM4:57 PM7:39 PM

Rank history

position on trending · lower is better
#1#20#25#30#35#40Jul 31, 2 PM UTC: rank #20Jul 31, 7 PM UTC: rank #382:15 PM4:57 PM7:39 PM

3D card for your website

Live HTML card with a glass surface and pointer tilt. Paste the iframe on any website.

<iframe src="https://www.notionpulse.cc/embed/JaimeJimenezG/Moonlight-ps4" width="420" height="240" style="border:0;max-width:100%;background:transparent" loading="lazy" title="JaimeJimenezG/Moonlight-ps4 — trending on Open Source Pulse"></iframe>

Stars badge

Show current stars in your README or profile. Auto-updates every 6 hours.

JaimeJimenezG/Moonlight-ps4 stars badge
Markdown
[![JaimeJimenezG/Moonlight-ps4](https://www.notionpulse.cc/api/badge/JaimeJimenezG/Moonlight-ps4.svg)](https://www.notionpulse.cc/repo/JaimeJimenezG/Moonlight-ps4)
HTML
<a href="https://www.notionpulse.cc/repo/JaimeJimenezG/Moonlight-ps4"><img src="https://www.notionpulse.cc/api/badge/JaimeJimenezG/Moonlight-ps4.svg" alt="JaimeJimenezG/Moonlight-ps4 stars badge" /></a>

Repository of the Day

#20 Repository of the Day

Repository of the Week

#20 Repository of the Week

Repository of the Month

#20 Repository of the Month