GameStream Migration
Seamlessly transition from discontinued NVIDIA GameStream to SolarFlare host for Moonlight.
Migrating from NVIDIA GameStream#
In February 2023, NVIDIA discontinued GameStream in GeForce Experience. SolarFlare is a modern, actively maintained open-source replacement designed specifically for Moonlight clients.
Key Differences & Advantages#
| Feature | NVIDIA GameStream | SolarFlare Host |
|---|---|---|
| Operating System | Windows only (NVIDIA GPU) | Linux (Primary), Windows, macOS |
| GPU Vendor Support | NVIDIA GeForce only | AMD (AMDGPU/VA-API), NVIDIA (NVENC), Intel (QuickSync) |
| Capture Pipeline | NVFBC proprietary | Linux KMS, Wayland DMA-BUF, PipeWire, X11 |
| Audio DSP | None (unfiltered audio) | Automatic Gain Control, Voice Activity Ducking, Noise Gate |
| Per-Client Profiles | None (global only) | Per-client bitrate, codec, and latency tuning |
| Self-Hosted API | None (cloud dependent) | Full REST API, Scoped Tokens, Webhooks |
Automated Migration with GSMS#
The upstream GSMS (GameStream Migration Sunshine) utility can automatically import existing box-art, commands, and shortcuts into SolarFlare apps.json.
Migration steps#
Disable GameStream in GeForce Experience first (it binds port 47989 and the two cannot coexist), then uninstall or disable GFE. Back up ~/.config/sunshine/{sunshine.conf, apps.json, credentials}. Install with ./scripts/linux-install.sh, apply setcap for KMS capture, open firewall TCP 47984-47990 plus 48010 and UDP 47998-48000, then re-pair each Moonlight client at https://<host>:47990/pin. Clocks must agree within ~30 s and clients re-pin because the server certificate changed. Moonlight itself needs no reinstall — get clients at moonlight-stream.org.
Sunshine to SolarFlare on the same PC#
In place: the binary name (sunshine), ports, systemd service (app-dev.lizardbyte.app.Sunshine.service), and ~/.config/sunshine/ layout are identical, so install over the existing setup and keep your apps.json, credentials, and pairings. Never run both at once. Windows hosts moving to Linux should export their app list first and rebuild launch commands for Linux paths.
Client reuse notes#
Desktop (Qt, recommended, full codec and HDR set), Android/TV (manual host add when mDNS is blocked), iOS/tvOS (HDR needs both ends capable), embedded/Pi (host must be a separate machine), and browser clients (smaller feature surface) all pair the same way. H.264 works everywhere; HEVC and AV1 need encoder and client support on both ends, with per-client overrides via client_profile_* keys.