PlayStation Remote Play client for CivHomebrew on Nintendo Switch 2, built on Chiaki-NG.
Video decoding, audio, GPU presentation, sockets and controller input call the
game's native SDK directly through the primitives the loader provides, using
adapters taken from Moonlight-CivSwitch. The Chiaki-NG core is the git submodule
in third_party/chiaki.
- PS5 registration, saved pairing and controller input work on Switch 2.
- Smooth video and audio at 1080p60.
- CivHomebrew on a Switch 2. Switch 1 is not supported.
- To build: Git, Python 3.9+, Node.js 22+, CMake and a C/C++ toolchain.
git clone --recurse-submodules <repository-url>
# or, in an existing checkout:
git submodule update --init
npm run bootstrap # fetch pinned Emscripten, Mbed TLS, nanopb into this checkout
npm run build
npm test
npm run test:runtime
npm run package # produces dist/chiaki.civappUpload dist/chiaki.civapp to CivHomebrew's FTP Install civapp folder, then
launch Chiaki.
- Enable Remote Play in the PlayStation's settings. Both devices must be on the same local network.
- In Chiaki choose Find consoles on network, or Add console to enter an IPv4 address.
- Choose PS5 or the PS4 protocol version. Enter your PSN account ID (8 bytes, Base64, 12 characters; not your display name) and the 8-digit PIN from the console's Link Device / Add Device screen. PSN sign-in is not implemented.
- Select the console and Connect. If asked, enter the 4-digit login PIN.
Defaults: 720p, 30 FPS, Auto bitrate (10 Mbps at 720p30). Settings offer 360p/540p/720p/1080p, 30/60 FPS and Auto or 2–50 Mbps.
Controls:
- D-pad / A / B: navigate, select, back. Stream settings → Confirm button swaps A and B in Chiaki's menus to match PlayStation (bottom button confirms).
- Switch B/A/Y/X map by position to Cross/Circle/Square/Triangle.
- Minus/Plus map to Share/Options. Hold both to open stream controls (PS, touchpad click, disconnect).
- Wake console needs Remote wake enabled on the PlayStation.
Pairing and settings are saved under save:/civhomebrew/data/chiaki/. Account
IDs and registration PINs are not saved.
- H.264 only. No H.265, HDR, PSN/internet play, microphone, motion, adaptive triggers, remote keyboard or touchscreen gestures.
- LAN IPv4 only. If discovery is blocked (e.g. AP isolation), add the console by address.
- Video packets are not MAC-verified by default (other packet types are); see architecture.
python3 -m http.server 8000, then open http://localhost:8000/app/. The
stream itself needs the console.
- Gezine for CivSwitch
- XITRIX for CivHomebrew and Moonlight-CivSwitch
- Chiaki-NG and the Chiaki contributors
- Architecture notes
- Chiaki-NG's AGPL license and OpenSSL exception apply; see COPYING.
Moonlight and CivHomebrew adapters live in
app/vendor; dependency notices are inapp/notices.js. Reference revisions:third_party/reference-revisions.json. - When distributing binaries, provide the corresponding source and build instructions.
