Moonlight PSP
More actions
| PSP Moonlight | |
|---|---|
| General | |
| Author | k4idyn |
| Type | Other |
| Version | 1.2 |
| License | GPL-3.0 |
| Last Updated | 2026/05/18 |
| Links | |
| Download | |
| Website | |
| Source | |
PSP Moonlight is a Moonlight-compatible game-streaming client for Sony PSP systems, designed around a custom PSP-native networking, decode, audio, input, and rendering stack.
The project streams H.264 video from a host PC running Sunshine, decodes video on the PSP main CPU, and uses the Media Engine for accelerated YUV-to-RGBA conversion.
Features
- Host discovery (mDNS, known-host probes, optional subnet scan).
- Pairing + TLS transport auth (Runtime identity, PIN flow, authenticated confirm).
- Game library + icons (Sunshine box-art download, static PNG decode, raw RGB565 cache).
- RTSP / RTP / FEC pipeline (PSP-native transport with CAVLC host profile required).
- OpenH264 decode + ME conversion (PSP-optimized software decode path).
- Audio (Opus playback when enabled; Performance preset disables local audio work).
- Input (Xbox and Browser modes, customizable PSP combo mapper).
- UPnP hotspot/remote assist (Temporary IGD UDP port mapping for stream ports).
- Multi-host support (Up to 8 paired hosts).
Installation
Requirements
PSP:
- PSP-1000 / PSP-2000 / PSP-3000
- Custom firmware: ARK-4 on 6.60/6.61 is the supported target
- 2.4 GHz Wi-Fi
Host PC:
- Sunshine current stable release recommended
- H.264 Baseline + CAVLC configured for PSP-compatible streaming
Instructions
- Extract both files to ms0:/PSP/GAME/Moonlight/.
- Both EBOOT.PBP and moonlight_me_helper.prx must be in the same directory.
- Requires custom firmware.
- Host must run Sunshine on the same LAN.
For full setup, pairing flow, and troubleshooting, see INSTALL.md.
Encoder settings guides
- AMD (AMF) - 13 settings with Web UI locations and recommended values
- NVIDIA (NVENC) - 8 settings covering presets, rate control, and AQ
- Intel (QSV) - 3 settings with generation-specific notes
- Software (x264) - CPU fallback preset and tune options
These guides matter because the PSP's software H.264 decoder is extremely constrained - wrong encoder settings on the host will cause failed streams, visual corruption, or massive frame drops. The guides explain which settings work and why.
Preset guide
| Preset | Use When | Stream | Audio |
|---|---|---|---|
| Performance | You want the most responsive PSP-1000 profile | 300x170, 30 fps, 384 kbps, 1056-byte packets | Disabled |
| Balanced | You want a middle point between detail and smoothness | 360x204, 20 fps, 480 kbps, 1200-byte packets | Enabled |
| Quality | You want native PSP resolution | 480x272, 10 fps, 576 kbps, 1200-byte packets | Enabled |
Screenshots
Known issues
- The PSP Wi-Fi radio is 2.4 GHz only and remains the main practical bottleneck.
- H.264 CAVLC is required for normal playback; CABAC is not recommended for PSP use.
- High resolutions above the native PSP display are outside the intended operating range.
- Some fast-motion content can still expose the PSP display and network limits.
Detailed notes at docs/KNOWN_ISSUES.md
Changelog
1.2.0 2026/05/18
- Streaming Presets
- Added a dedicated Preset row with PSP-focused Performance, Balanced, and Quality defaults.
- Performance now defaults to 300x170 at 30 fps, 384 kbps, 1056-byte packets, and audio disabled.
- Balanced now defaults to 360x204 at 20 fps, 480 kbps, 1200-byte packets, and audio enabled.
- Quality now defaults to native 480x272 at 10 fps, 576 kbps, 1200-byte packets, and audio enabled.
- Built-in stream sizes use the PSP LCD aspect ratio so presets fill the display without fixed black bars.
- The Resolution row is independent from the Preset row, so manual resolution changes no longer reapply the whole preset ladder.
- Packet size is now configurable from the settings menu and is saved to
config.ini.
- Pairing and Host Flow
- Pairing now completes the authenticated HTTPS
pairchallengeconfirmation after the signed pairing secret. - Failed or cancelled pair attempts now best-effort unpair from the host so later attempts do not inherit stale half-paired state.
- Stale paired-host entries are cleared when a host reports paired but returns an empty app list, allowing the user to pair again without manual config cleanup.
- App-list loading and launch transitions prime both display buffers to avoid stale host-list/loading frames during slow network work.
- Game-list fetch failure can fall back to a Desktop launch tile when the host app list is unavailable.
- Pairing now completes the authenticated HTTPS
- Input
- Reworked the default PSP-to-Xbox mapping for full controller coverage:
- L + Triangle/Cross/Square/Circle maps to right stick up/down/left/right.
- L + D-pad Left/Right maps to LT/RT.
- L + D-pad Down/Up maps to L3/R3.
- The Button Mapping UI now exposes the combo modifier, all virtual actions, and a right-stick source selector.
- Added an optional
modifier + analog nubright-stick mode. - Mapping files are versioned and legacy defaults migrate to the new v2 map.
- Browser mode now sends mouse/keyboard input only, with stronger analog mouse acceleration.
- App-owned combos such as HUD toggle and stream exit are consumed locally instead of also sending host input.
- Reworked the default PSP-to-Xbox mapping for full controller coverage:
- Telemetry and HUD
- Added diagnostics telemetry for CPU, GPU, ME, RAM, media bandwidth, usable video bandwidth, audio bandwidth, local drops, loss, and FEC.
- Diagnostics telemetry updates once per second even when the HUD is hidden.
- HUD layout now places decode timing alongside latency and shows loss/FEC values from the RTP/FEC path.
- Low-Work PSP Path
- Performance preset disables local audio decode/playback by default to reduce PSP CPU, memory, and audio-thread work.
- Audio Disabled remains client-side and can be changed from the PSP settings menu.
- Video rendering applies the stream color/dither adjustment only to decoded video output, not to menu UI or HUD text.
- Retail builds compile out diagnostics-only logging, telemetry formatting, and debug sampling at call sites so public XMB builds do less PSP work.
- Build and Documentation
- Public docs updated for v1.2 presets, packet-size setup, pairing behavior, and controller mapping.
- Generated local build artifacts and internal audit notes are ignored so release diffs stay focused.
- Added
scripts/smoke_checks.shsomake smokevalidates release prerequisites and fails fast on unresolved merge markers. - CI now validates
release/**branches and uploads CI artifacts only; public release assets remain manual to preserve PSPSDK parity.
1.1.0 2026/05/06
- Networking
- Client-selected bitrate is now used directly for launch and transport bitrate setup (no implicit startup downscale).
- Connection quality classification now prioritizes transport-side loss/FEC recovery signals and no longer penalizes clean links for decode-side FPS stalls.
- RTCP Receiver Reports now use interval loss accounting and RFC3550-style jitter representation in RTP clock units.
- Adaptive bitrate fast-drop trigger now requires 3 consecutive drop signals before halving.
- Release
- Retail (non-dev) build artifacts are published manually for this release because CI uses a different PSPSDK and does not produce reproducible release binaries for this branch.
- Documentation
- Public docs refreshed for ARK-4-only CFW guidance.
- Installation guidance updated to remove risky flash-write install wording.
- Encoder setup instructions now present vendor-neutral CAVLC guidance for NVIDIA/AMD/Intel users.
1.0.0 2026/05/05
- Release Hardening
- Retail build mode is now the documented default for public packaging.
- Public docs were normalized from pre-release audit wording to release wording.
- CABAC compatibility documentation was clarified as normal-mode unsupported behavior with explicit CAVLC host guidance.
- Fixed (vs v0.2.3-beta)
- Pairing persistence now survives partial connection failures: successful pairing is saved even when launch/RTSP infrastructure fails later in the same attempt.
- RTSP/launch infrastructure failures now return a dedicated retryable status (
-3) distinct from user cancel (-2) and pairing failure (-1). - Settings UI now flushes controller state after OSK/button-mapping flows to prevent stale Start-edge saves on return.
- Config bootstrap now remembers default-loaded config when no file exists so first-session host/pairing additions persist correctly.
- Documentation
- Updated README status badges and version history for public release posture.
- Reworked release-validation documentation to include retail build commands and git-tag comparison notes.
- Removed internal blocker/audit wording from user-facing docs (
docs/KNOWN_ISSUES.md, encoder settings guides, and UI/architecture headers).
Initial 1.0.0 publication 2026/05/04
- Release
- Stable v1.0 public documentation set.
- Security, memory, reliability, and architecture hardening work from the beta cycle is now integrated in the release branch.
- Networking
- UPnP IGD hotspot/remote assist is included for RTP/RTCP UDP mapping setup and cleanup during streaming sessions.
- Documentation
- Removed pre-release blocker workflow references and test-only publication content from public docs.
- Updated README, install flow, and known-issues content for v1.0 user-facing guidance.