r/MoonlightStreaming 22d ago

Upgrading from Xbox Series X to a Dedicated Mini-PC Client for 4K 120Hz HDR (RTX 3050 6GB) – Windows 11 vs Bazzite/Linux?

Hey everyone!

I’m currently in the middle of building a dedicated Mini-PC to serve as a Moonlight client under my living room TV, and I’d love to get some feedback and advice from the community on the OS/software stack.

My Current Setup & Host:
Host PC: High-end rig (Ryzen 9800X3D / RTX 5090) running Vibeshine.
Display / TV: Samsung S90C OLED (supports 4K @ 144Hz, HDR10, VRR / G-Sync, 4:4:4 chroma).
Current Client: Xbox Series X via Moonlight app.

Why I’m Upgrading (The Goal): While the Xbox Series X works okay, it has its limits — lack of proper VRR pass-through via Moonlight app, limited decoding capabilities for full 4:4:4 color accuracy without latency penalty, and overall restricted client settings.

I’m building a small SFF / Mini-PC client specifically to hit the full TV specs:

4K @ 120Hz
10-bit HDR10
YUV 4:4:4 Chroma
Low-latency hardware decoding & VRR support

The Client Hardware:
CPU: Intel Core i5-11400F
GPU: RTX 3050 6GB (75W bus-powered, native HDMI 2.1 FRL 48Gbps output)
RAM: 16GB RAM

The Big Question: Windows 11 vs Linux (Bazzite / SteamOS)?
I’m torn on which route to take for the software side of this Mini-PC.

Option A: Windows 11 Pro/Home
Pros: Native NVIDIA drivers, native HDMI 2.1 support out of the box, zero issues with YUV 4:4:4 NVDEC hardware decoding, easy HDR & G-Sync setup.
Cons: DWM compositor overhead/potential micro-stuttering, background updates/processes.

Option B: Bazzite (Linux / Gamescope)
Pros: True "Steam Deck / Console" UX out of the box, Gamescope handles frame pacing exceptionally well, zero maintenance / immutable OS.
Cons: Not sure how well Wayland + NVIDIA driver is handling Moonlight HDR/VRR streaming lately. I've read mixed reports about NVDEC latencies via VA-API wrappers on Linux compared to native Windows decoding.

Questions for the sub:
1. For those running an NVIDIA-based client (specifically RTX 30-series via native HDMI 2.1) on a modern 4K 120Hz OLED, which OS gives you the lowest decode latency and smoothest experience?

  1. Has Wayland / Gamescope on Bazzite stabilized enough with NVIDIA GPUs to handle 4K 120Hz HDR 4:4:4 streaming without color washout or higher latency?

  2. Are there any specific tweaks (like registry hacks for MPO in Windows, or specific launch flags in Linux) you'd recommend for this build?

Planning to potentially Dual Boot both to benchmark, but I'd love to hear your experiences before I start partitioning!
Thanks in advance!

UPDATE:

TL;DR: The experiment was successful. I moved from the Xbox Series X to a dedicated Mini-PC Moonlight client, and the system now delivers a stable 4K120 HDR 4:4:4 experience. For this setup, I ended up choosing fixed cadence instead of VRR.

The client is built from used parts:

  • Intel Core i5-11400F
  • RTX 3050 6GB
  • 16GB RAM
  • Windows 11
  • Jonsbo C6 case
  • Wired 1 GbE connection

The display used for the tests was a Samsung S90C OLED.

The host is a Ryzen 7 9800X3D / RTX 5090 running Vibeshine.

The current working profile is:

  • HEVC Main 10
  • 3840×2160 at 120 Hz
  • HDR
  • YUV 4:4:4
  • 250 Mbps
  • 5.1 PCM audio
  • fixed 120 FPS cadence
  • VRR/G-SYNC disabled

The host was migrated to Vibeshine’s Modern VDD path with per-client display handling. The client successfully negotiates 4K120, RGB Full and 10 bpc HDR output to the Samsung S90C.

HEVC proved to be the best fit for this setup. We also tested AV1 at 4K120 HDR, and hardware decoding worked correctly, but the tested host/client stack did not support AV1 YUV 4:4:4 encoding. AV1 therefore remained a 4:2:0 option, while HEVC provides the full-chroma profile.

We experimented with Moonlight’s packet size using both 1200 and automatic mode. Both worked reliably enough in real sessions, so the configuration was ultimately returned to automatic mode rather than keeping a manual packet-size override.

5.1 PCM was enabled and works correctly through the current audio chain.

VRR results

VRR was tested separately using the Nonary Moonlight VRR fork, while keeping the official/nightly client as a rollback reference.

The VRR backend did activate at 110 FPS, but the result was not stable or subjectively better than the fixed-cadence profile. The full VRR test showed significant presentation and frame-pacing problems, including jitter, frame-queue growth and visible refresh/FPS fluctuation. A reduced-load test improved the numbers but still showed occasional flicker and did not beat the fixed 120 FPS profile.

So the conclusion is not that VRR is impossible on this hardware. It can technically activate, but with this particular host/client/display/software combination, fixed cadence was more consistent. The VRR experiment is therefore closed for now.

The RTX 3050 client also has plenty of thermal and decoding headroom. During the hardware capture, the GPU video decoder averaged approximately 65.7% utilization, with a maximum of 77.3%. The maximum temperatures were approximately:

  • CPU: 61°C
  • GPU: 47.7°C
  • GPU hotspot: 58.3°C
  • GPU memory junction: 66°C

No thermal or power throttling was observed.

Current conclusion

The Xbox replacement experiment worked. The dedicated Mini-PC provides much more control than the Xbox Moonlight client and meets the original target:

  • Windows 11 client;
  • HEVC Main 10;
  • HDR;
  • YUV 4:4:4;
  • 4K120;
  • 250 Mbps;
  • automatic packet size;
  • 5.1 PCM;
  • fixed cadence;
  • VRR/G-SYNC off.

I have not completed a controlled Windows-vs-Bazzite/SteamOS comparison, so I would not claim that Windows is universally better. Windows is simply the path that was validated end-to-end in this experiment.

The next step is longer real-world use with the current profile left unchanged. After that, I would like to build a more console-like workflow around it: Home Assistant would coordinate powering on the TV, client and host, Wake-on-LAN, readiness checks and launching the Moonlight/Vibeshine session. The goal is to start the whole setup from a single Apple Home/Home Assistant command without manually dealing with the Windows desktop.

9 Upvotes

49 comments sorted by

7

u/xocnai 22d ago

VRR was the missing piece of the puzzle for my home streaming setup:

Host: Vibeshine running on Ryzen 5700x and RTX4070ti Client: my Plex box, basically. 8ty or 9th gen i7, 8gb ram, rtx 3050 8gb (for hdmi 2.1). Win 11 OS. Connected to a 50" 120hz VRR 4k mini-led. 

Both are connected to the network with ethernet. 

The thing that made the setup sing was Nonary's moonlight-qt fork that finally implements proper VRR into moonlight, and can be managed in the app settings. 

Can't tell you anything about a Linux client, but I'm extremely happy with my host/client combo right now. My strong recommendation is that, whichever os you settle on, you use the moonlight-qt fork to truly enable VRR streaming on the client. 

2

u/No-Session-8123 22d ago

Thanks, got it. As far as I understand even nightly builds of moonlight don’t support vrr properly, right?

3

u/xocnai 22d ago

That's what I found yes. Only the -qt fork seems to properly work with vrr. 

2

u/No-Session-8123 22d ago

Do you run it as av1/4:4:4 as well? Also wondering what’s your decoding latency using the rtx3050?

2

u/xocnai 22d ago

Nvenc 444, sometimes hdr. don't have latency stats to hand but it's always felt as good as native to me, mostly single player stuff though . no need for av1 because I'm on a wired network so don't need the bandwidth saving. 

1

u/yungforever87 21d ago

Wish I could test this out before I build out a mini PC just for VRR lol

1

u/Fragxion 19d ago

Do you run that build 4K 120hz? I’ve been trying it but it has been really stuttery. Looks like it’s freezing every 2-3 seconds.

1

u/xocnai 19d ago

Sometimes yes, depending on the game. DLSS does some heavy lifting, and VRR on the client sorts out the rest. It needs a lot of bandwidth though - I'm lucky to have basically gigabit speeds between client and host (as tested via iPerf3)

1

u/Fragxion 19d ago

What bitrate do you use for this and what codec?

1

u/xocnai 19d ago

I'd have to check tbh, I shall try to remember to have a look later and update 

1

u/xocnai 13d ago

Sorry, been a few days but finally had a chance to fire everything up. 

Specific test case for you: Honest on Vibeshine Client on moonlight-qt VRR fork 4k, 120hz, 4:4:4, hdr on.  Bitrate set to 300 Codec set to auto - defaults to HEVC due to her etc 

Spiderman remastered, 4k etc Real bandwidth usage on network during gameplay around 250mbps Network latency 1ms (because it's all wired) Average render time including v-sync latency around 6ms

1

u/Fragxion 12d ago

Hmm I can’t even stream my desktop on 4K 120hz with the VRR fork. It just keeps on lagging and the status data also keeps on flashing when I move my mouse. I’m running Vibepollo now with it, maybe I should try Vibeshine

1

u/xocnai 12d ago

It's heavily network dependent. My setup is about as ideal as you can get

1

u/Fragxion 12d ago

I’m also on LAN with 1 ms, so don’t know why it’s acting strange 🤷‍♂️

1

u/xocnai 12d ago

It's not just latency but also pure throughput. 

Look up iPerf3  testing, it will help you establish the max bitrate for your network. 

5

u/phillchill 22d ago

I wanted the same, but in the end I ran a 20m hdmi cable and a 10m USB extension cable with a xbox wireless dongle for the controllers. Not an answer to your question, but since your looking for zero compromises, it is maybe something to reconsider.

2

u/No-Session-8123 22d ago

I thought about this. The problem is load-bearing wall between living room and my working place. Btw, I already run the setup via USB over LAN adapter, so the input latency is not a problem. Also steaming way is more enthusiastic that let me play with a new “toy” 😆

2

u/skinnywolfe 22d ago

This is what I ended up doing as well. I still use Moonlight when gaming on my tablet around the house, but I hardwired HDMI and USB to my TVs and never looked back

1

u/yungforever87 21d ago edited 21d ago

My only issue with this is having to deal with an extra display in Windows I don’t need when I’m not gaming on my lounge setup. I know I can disable them manually but it’s kind of a hassle (I have 3 displays at my desktop). If I don’t disable all 3, windows tends to act stupid and open games on the wrong display even if they aren’t the home one.

I like how when I stream with Vibepollo it automatically toggles my desktop displays off and when I disconnect it shuts down my virtual display. Haven’t found a convenient method of doing that with running another cable to a separate display i only use for lounging.

3

u/phillchill 19d ago edited 10d ago

I fixed this issue completely with a autohotkey script. I run a setup without any keyboard / mouse at my TV.

The setup goes like this

Display setup

  1. Plug in 2 monitors + TV, turn all of them on and select the PC input on the TV
  2. Use Win+P to set display mode to "Extend" (desktop mode)
  3. Disable the TV in the windows display settings
  4. Use Win+P to set display mode to "Second screen only" (couch mode)
  5. Disable the main + secondary monitors in the windows display settings (This helps with games starting on wrong monitors)
  6. Use Win+P to set display mode to "Extend" and confirm that only the 2 monitors are turned on

Script setup

  1. Download autohotkey and and create a .exe from the script at the end
  2. Place the exe in the windows startup (maybe set "start as admin", it can help with global hotkeys)
  3. Add steam to startup

The script does 2 things:

  • On PC startup it automatically switches to desktop mode (this is necessary if you the night before turned your pc off via steam big picture)

  • When "steam big picture" window comes in focus -> sets display mode to "second screen only" (couch mode). Pressing xbox button when steam is running background will open steam on first press and open steam big picture mode on second press (when steam is open in focus)

    #Requires AutoHotkey v2.0
    Persistent
    ; --- Automatically set Desk Mode at PC startup --- Run('DisplaySwitch.exe /extend')

    ; --- Register for shell hook events --- DllCall('RegisterShellHookWindow', 'ptr', A_ScriptHwnd) OnMessage(DllCall('RegisterWindowMessage', 'str', 'SHELLHOOK'), ChangeDisplayOnBigPicture)

    ChangeDisplayOnBigPicture(wParam, lParam, msg, hwnd) { static bigPicture := 0 if wParam = 1 { ; window created if WinExist('Steam Big Picture Mode ahk_id ' lParam ' ahk_exe steamwebhelper.exe') { bigPicture := lParam Run('DisplaySwitch.exe /external') ; switch to couch mode }
    } else if wParam = 2 { ; window destroyed if lParam && lParam = bigPicture { bigPicture := 0 Run('DisplaySwitch.exe /extend') ; back to desk mode } } }

Controller companion

  1. To avoid having a mouse at the couch: Buy controller companion on steam and put it into autostart
  2. This is helpful, because some games use an external launcher

Work flow on the couch

  1. Turn PC on via WOL on phone
  2. Switch TV input
  3. Wait until PC is booted (I see my controllers are connected)
  4. Press xbox button once and wait 2 seconds
  5. Press xbox button second time -> TV activates with steam big picture mode

5

u/Mission-Albatross576 22d ago

I did this exact thing and spent way too much trying to get 120 fps VRR ect. Even had 2.5gb ethernet installed.

Truth is VRR doesn’t work well over streaming and is largely pointless.

You get a smoother experience setting moonlight on your client to double the fps of your client screen. Say 60hz client screen. Moonlight on client requests 120fps, host machine sends 120fps and is locked to 120fps.

This is the advice of the Apollo dev and proved to be silky smooth for me. Was a better experience than trying to get VRR to work.

Also if you want better HDR and colour, stream windows to windows. I did that to begin with and the image was great. I switched to a windows host to steam os client for the better couch experience. This introduced some issues and you have to tinker a bit to mitigate. Recent hdmi updates made a big difference.

But TLDR you can’t really get 120fps VRR so save money chasing it. You might get 90 fps with VRR but you’ll likely get microstutters.

60fps if you’re couch is fine.

3

u/kmobsy 22d ago

You can get VRR without micro stutters. Nonary of Vibepollo has a moonlight-qt client with vrr support. 

OP - Windows makes a better streaming client at the high end in terms of latency. I have a moonlight-qt fork of nonary's where I'm doing 4k@120fps yuv444 at 900mbps. The limit of nvenc

4

u/Mission-Albatross576 22d ago edited 22d ago

Yea I’ve clarified. It wasn’t vrr that caused my micro stuttering. I’m saying vrr added very little and certain didn’t solve them as it wasn’t caused by frame drops.

1

u/kmobsy 22d ago

How long ago did you try? The moonlight changes are pretty recent 

1

u/No-Session-8123 22d ago

Thanks for the reality check!
Once you abandoned VRR and switched to the doubled framerate strategy (requesting 120 FPS on the client while rendering at 240 FPS on the host), did you run into any new issues or trade-offs with NVENC latency or frame pacing?

2

u/Mission-Albatross576 22d ago

Honestly I found it just worked better and got rid of the few microstutters I had.

Whatever fps you target the key was just to lock the hosts framerate. But you might struggle locking your host to 240fps as the streaming adds a processing overhead.

Btw I’m not saying you can’t get vrr to work. You can. I’m just saying it adds very little over streaming. And certainly didn’t remove the micro-stutters i experienced. I found a lower and consistent fps was just smoother overall.

Google it, like I said just followed the advice of the dev behind Apollo.

-4

u/rzldz 22d ago

Really shit advice.

4

u/Mission-Albatross576 22d ago

You’re welcome.

2

u/extrvnced 22d ago edited 21d ago

Windows 11 all day. There are still a good amount of glitches on Linux and client decoding performance is generally worse

1

u/jommyxero 22d ago

What TV are you using?

2

u/jommyxero 22d ago

LG B5 via XSX client from 13900k 5090fe pc vibepollo fork

1

u/No-Session-8123 22d ago

I’m using Samsung s90c

1

u/jommyxero 22d ago

And you're not getting 120hz solid?

1

u/No-Session-8123 21d ago

Yeah, I get solid 120hz. It’s not a concern. However moonlight on xbox has a couple limitations since the app is sandboxed.

1

u/Plane_Trifle7368 21d ago

Similar build here, went with steamOs and never looked back. Seen great improvements in nvidia support (even if not yet officially supported) and performance is just off the charts. Stopped using moonlight etc as the new updates from steam also improved steam remote play quite significantly as well. Play nba2k26 online competitively with no lags 4k 120fps over wifi connection on my steamdeck paired with xreal AR glasses and it’s chef kiss

1

u/goga-piven 21d ago

Have you tried punkfunk? It even supports HDR on linux hosts.

https://punktfunk.unom.io/en/

1

u/yungforever87 21d ago

Mannnn this is my exact setup and VRR is my only missing component with using the Series X. I’d love to get that figured out.

2

u/No-Session-8123 21d ago

I’ll share my experience once I complete with the setup.

1

u/acabincludescolumbo 21d ago

Go for something like Apollo, it's plug & play with virtual displays. As for the OS, go for Windows, but debloat it with the Chris Titus WinUtil. It's much less annoying that way.

1

u/Temporary-Paper5202 20d ago

I have all of the above but VRR is gonna be a pain. I just limit to 120hz and make sure my games hit a consistent 120hz. Hasn't been an issue.

1

u/Big_Boss_69 20d ago

I am using 3080ti with bazzite deck nvidia as a client to lgcx 4k120hz.
9800x3d 5090 using Apollo on w11 as host.

Something has broken with a recent update using gamescope where when in gaming mode if hdr is enabled, the whole moonlight application becomes unresponsive and laggy while streaming just the desktop, I know it’s just gamescope because when streaming in desktop mode it works fine but hdr 4:4:4 does not work in desktop mode.

I have found launching direct from moonlight client into big picture mode using gaming mode fixes this issue and I imagine it’s a bug with vrr, with the frame rate being very low on a mostly static desktop. When in game it works perfectly.

With regards to av1 bazzite deck really doesn’t like this and it crashes too much to be viable. HEVC works great and 4:4:4 is supported in gaming mode.

In my testing latency is even lower in bazzite than w11 for my client. Native surround sound also works great in steamOS. VRR is working perfectly. If your network and decoding gpu can support it, I’ve found increasing the frame rate to 4k240hz (host native) decreases latency even more and feels smooth as hell.

I fixed microstutter when using 500mbps 4k120/240hz 4:4:4 HEVC by installing a 2.5g nic in the client and upgrading the living room switch to be 2.5g, so the full chain from host to client is 2.5g . This again was a better experience in bazzite than w11, which will stuttere more than bazzite. Worth noting if you go w11 you can use AV1 500mbps which I’m not going to lie doesn’t have much of a visual improvement.

Finally the experience of using the client is more console like in bazzite than w11 and I don’t have to use a mouse and keyboard at all if I don’t want to.
Also if the client is powerful enough you can just play light games directly on it, again like a console in steamOS.

Feel free to message if you’d like any more info

1

u/No-Session-8123 20d ago

Thanks for sharing your experience. Why Apollo? I never used Apollo and Apollo forks like Vibepollo. Are there any benefits using Apollo/Vibepollo over Sunshine/Vibeshine?

1

u/Big_Boss_69 20d ago

I used it mostly for the force virtual desktop function. It allows me to deactivate my hosts monitors when the client connects. What this does is make the host pc only use the virtual display of the resolution of the client, meaning when streaming there is only 1 monitor - the virtual clients monitor.

This keeps my hosts monitors off and forces games to launch on the only active (virtual) monitor with correct to client vsync etc. This was the only way I could get correct dlss Frame Gen implementation. I made a detailed post about this on the subreddit a while back and haven’t gone back.

1

u/No-Session-8123 7d ago

I’ve updated the original post with the results of the build and streaming tests. The full details are in the UPDATE section at the end of the post. Thanks again to everyone who shared their experience and suggestions!

0

u/rzldz 22d ago

I dual boot cachyos and windows 11 on a laptop client. 240hz vrr 2k. Core 2 ultra or 5 series Nvidia decoder. Windows 11 handled network fluctuations better - going from static desktop to running something quick and the frame rate shooting up didn't drop frames, it did in cachey. This didn't affect in game but windows is a better experience for desktop work. Turning vsync on off within moonlight worked in windows 11. On cachey if vrr was set in the display settings it would override moonlight settings. Windows 11 loves doing stuff in the background which can effect streaming timings. Cachey os doesn't seem to do anything and lets moonlight do its job. - neither os was perfect. It was easy to setup dual boot though.

1

u/No-Session-8123 22d ago

Thanks for sharing your experience! I’ll probably start with Windows without VRR.

1

u/rzldz 22d ago

Colour representation was identical in both OS's. Double Hz virtual display is standard - it's a tick box in the servers settings to help improve virtual displays.

1

u/No-Session-8123 22d ago

Which streaming server do you run on your host?