Skip to content

Virtual display falls back to 30 Hz after every host reboot despite active supporter benefits (1.5.9) #537

Description

@shadow591003

Summary

On a machine with active supporter benefits (PRO), the virtual display falls back to 30 Hz after every cold boot of the host, even though the client requests 120 fps. Restarting the instance fixes it until the next reboot.

This looks like the same problem as #394 ("Stuck at 30hz even tho i have a paid acc"), which was reported fixed in 1.5.5 — but it still reproduces consistently on 1.5.9.

Environment

Duo 1.5.9.0 (Duo Manager shows the PRO badge, benefits confirmed unlocked)
Host OS Windows 11 Pro, 25H2, build 26200
GPU NVIDIA GeForce RTX 4090 (HAGS enabled)
CPU / RAM Ryzen 9 7950X3D / 96 GB
Client ROG Ally Z1 Extreme, Moonlight, 1920x1080 @ 120 fps, AV1
Encoder av1_nvenc, preset P6, two-pass full_res, spatial AQ

Steps to reproduce

  1. Set up an instance whose virtual display runs at 120 Hz (working state, confirmed ~118 fps end to end).
  2. Reboot the host. DuoService starts automatically (Start with Service enabled).
  3. Connect a client requesting 1920x1080 @ 120 fps.

Expected

The virtual display comes up at 120 Hz, as it does after a manual instance restart.

Actual

The virtual display stays at 30 Hz. Sunshine requests the mode change but it is never applied:

Info: Display refresh rate [30Hz]
Info: Requested frame rate [120fps]
Info: Requesting mode change to 1920x1080@120 using the SDR colorspace
Info: Creating encoder [av1_nvenc]
Info: NvEnc: created encoder AV1 P6 async two-pass rfi spatial-aq

Note that no Changing the display mode to ... line follows the request. In the working state, the very next connection logs:

Info: Display refresh rate [120Hz]
Info: Requested frame rate [120fps]

Additionally, the registry value is 30 after the reboot:

HKLM\SOFTWARE\Duo\Instances\<instance>\RefreshRate = 30

Workaround

Setting the registry value back and restarting the service restores 120 Hz reliably:

Set-ItemProperty 'HKLM:\SOFTWARE\Duo\Instances\<instance>' -Name RefreshRate -Value 120 -Type DWord
Restart-Service DuoService -Force

After this, the log shows Display refresh rate [120Hz] and the stream runs at ~118 fps. The value survives until the next host reboot, at which point it is 30 again. I now run this from a scheduled task at startup.

Note: Duo Manager exposes no UI field for the refresh rate, so the registry is the only way to correct it.

Side effect worth flagging

The 30 Hz cap silently collapses throughput: with an 80 Mbps client setting, the host only sent ~9 Mbps (measured on the host NIC), because only 30 frames per second were being encoded. This is very easy to misdiagnose as a network or client-bitrate problem — it cost me several hours before I looked at Display refresh rate in the log. It might be worth surfacing a warning when the achieved refresh rate is below the requested frame rate.

Minor: log truncation

duo.log appears to be truncated on every instance restart, which makes it hard to investigate after the fact — the evidence disappears exactly when applying the workaround. An option to retain or rotate logs would help when reporting issues like this.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions