Skip to content

feat(rdp): configurable GRD max-framerate and stability fixes#4

Open
catinspace-au wants to merge 3 commits intomainfrom
feat/rdp-grd-configurable-refresh-rate
Open

feat(rdp): configurable GRD max-framerate and stability fixes#4
catinspace-au wants to merge 3 commits intomainfrom
feat/rdp-grd-configurable-refresh-rate

Conversation

@catinspace-au
Copy link
Copy Markdown

Summary

  • Patched GRD with configurable max-framerate — deploys gnome-remote-desktop 49.0-0ubuntu1.1hyperi1 which adds a max-framerate gsettings key. Stock GRD 49 hardcodes 60fps for the PipeWire screencast stream; setting this to 30 halves software encoding load on virtio-gpu VMs without hardware video encoding.
  • FreeRDP apt pin — pins at ubuntu0.4 (confirmed stable). ubuntu0.3 caused heap corruption.
  • PAM nice limits — allows GRD handover daemon to run at Nice=-10 without root.
  • Removed broken xrandr refresh rate — never worked on Wayland (silently failed).
  • dconf max-framerate=30 — set via system dconf profile, safely ignored on systems without the patched GRD schema.

Verification

Tested on desktop-derek after reboot:

  • pw-cli enum-params <node> Format shows maxFramerate: 30/1 on both gnome-shell output and GRD input streams
  • gsettings get org.gnome.desktop.remote-desktop.rdp max-framerateuint32 30
  • FreeRDP handover works, Nice=-10 confirmed on both system and handover daemons

Affected desktops

All virtio-gpu VMs with GRD Remote Login: desktop-derek, desktop-kaz, desktop-kay, desktop-damien.

Test plan

  • Deploy to one additional desktop (e.g. desktop-kaz) and verify PipeWire maxFramerate
  • Confirm dconf key is silently ignored on Fedora hosts
  • Verify apt pin prevents GRD overwrite on apt upgrade

Derek and others added 3 commits March 25, 2026 11:38
…imits

The xrandr refresh rate cap never worked on Wayland (mutter only generates
60Hz modes for virtual displays, xrandr --rate silently fails). Remove the
broken display.yml, refresh rate script, and autostart entry.

Add FreeRDP apt pin (ubuntu0.4 confirmed stable, ubuntu0.3 had heap
corruption), PAM nice limits so the handover daemon can run at Nice=-10,
and remove dangerous auto-restart of gnome-remote-desktop.service which
crashes active RDP sessions.
Deploy gnome-remote-desktop 49.0-0ubuntu1.1hyperi1 which adds a
max-framerate gsettings key to cap PipeWire screencast framerate.
Stock GRD 49 hardcodes 60fps — this halves software encoding load
on virtio-gpu VMs without hardware video encoding.

- Add grd_patched.yml task to deploy and pin the patched deb
- Set max-framerate=30 via system dconf profile
- Add grd_patched_version default variable
- Verified on desktop-derek: PipeWire stream shows maxFramerate 30/1
Adds Rust build optimisation tools to the developer_core Ansible role:
- sccache: shared compilation cache across projects
- cargo-sweep: build artifact cleanup
- mold: fast linker for native x86_64 builds (5-10x faster linking)
- Global ~/.cargo/config.toml with sccache wrapper, mold linker, jobs=8

All tools support Ubuntu, Fedora, and macOS. macOS config omits mold
linker flags (uses default linker) but still gets sccache and jobs=8.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant