Skip to content

GNOME Remote Desktop: Handover daemon never starts in GDM greeter session — system-level RDP fails with ERRINFO_CB_CONNECTION_CANCELLED #504490

Description

@iamlyth

Nixpkgs version

Unstable

Describe the bug

System-level RDP via gnome-remote-desktop fails on every connection attempt. The system-daemon accepts the RDP connection and GDM successfully creates a headless greeter session (mutter starts headlessly, all GNOME session targets are reached), but the handover daemon never starts inside the greeter session. After ~30 seconds the system-daemon aborts with ERRINFO_CB_CONNECTION_CANCELLED.
The gsd-remote-desktop plugin (from gnome-settings-daemon), which is responsible for launching the handover daemon when it detects the session is remote and the system-daemon is running, does not appear to activate. All other gsd plugins (gsd-media-keys, gsd-rfkill, gsd-xsettings, gsd-power, gsd-usb-protection) start successfully in the greeter session.
Querying the greeter session's systemd user manager shows zero units matching "remote" or "Remote", confirming the handover daemon's unit file is not discoverable from within the greeter session.

Environment

Distribution: NixOS (nixpkgs-unstable branch (I tried this on 25.11))
Desktop: GNOME (Wayland)
Display Manager: GDM
gnome-remote-desktop version: 49.2
gnome-shell version: 49.4
GDM version: 49.2
Kernel: 6.18.19
Hardware: Framework Desktop, AMD Strix Halo (integrated graphics only, amdgpu)
RDP Client: Remmina on another device running GNOME.
Hardware module: nixos-hardware framework-desktop-amd-ai-max-300-series

Steps to reproduce

Here's my xserver module:

{ pkgs, lib, config, ... }:
with lib; let
  cfg = config.xservermodule;
in{
  options.xservermodule = {
    enable = mkOption {
      type = types.bool;
      default = false;
      example = true;
      description = ''
        Whether or not to enable the wayland/gnome service.
        '';
    };

  };
  config = mkIf cfg.enable {
    hardware.graphics = {
      enable = true;
    };
    services.xserver = {
      #enable graphical interface
      enable = true;
      #enable GNOME
      displayManager.gdm.enable = true;
      desktopManager.gnome.enable = true;
      #keymap in X11
      xkb = {
        layout = "us";
        variant = "";
      };
      videoDrivers = ib.mkDefault [];
      excludePackages = [pkgs.xterm];
    };
  };
}

Here's my RDP module

{ pkgs, lib, config, ... }:
with lib; let
  cfg = config.rdpmodule;
in{
  options.rdpmodule = {
    enable = mkOption {
      type = types.bool;
      default = false;
      example = true;
      description = ''
        Whether or not to enable rdp.
        '';
    };
  };

  config = mkIf cfg.enable {
		services.gnome.gnome-remote-desktop.enable = true;

		# Ensure the service starts automatically at boot
		systemd.services.gnome-remote-desktop = {
			wantedBy = [ "graphical.target" ];
		};

		# Grant the gnome-remote-desktop system user GPU access
		# for DMA-BUF screen capture and VA-API hardware encoding
		users.users.gnome-remote-desktop.extraGroups = [ "render" "video" ];

		# Open the default RDP port (3389)
		networking.firewall.allowedTCPPorts = [ 3389 ];

		# Disable autologin to avoid session conflicts
		services.displayManager.autoLogin.enable = false;
		services.getty.autologinUser = null;

  };
}`

Expected behaviour

That GNOME Remote Desktop works with any RDP Client.

Screenshots

No response

Relevant log output

**Here's the log:**

Mar 28 16:38:39.137132 desktop systemd[1]: Created slice Slice /user/60580.
Mar 28 16:38:39.140937 desktop systemd-logind[1465]: New session 'c3' of user 'gdm-greeter-2' with class 'greeter' and type 'wayland'.
Mar 28 16:38:39.169910 desktop systemd[1]: Starting User Manager for UID 60580...
Mar 28 16:38:39.175295 desktop (systemd)[6480]: pam_unix(systemd-user:session): session opened for user gdm-greeter-2(uid=60580) by (uid=0)
Mar 28 16:38:39.322839 desktop systemd[6480]: Reached target Main User Target.
Mar 28 16:38:39.322859 desktop systemd[6480]: Startup finished in 142ms.
Mar 28 16:38:39.329052 desktop .gnome-session-[6507]: Starting GNOME session target: gnome-session-wayland@gnome-login.target
Mar 28 16:38:39.339887 desktop systemd[6480]: Reached target GNOME Wayland Session.
Mar 28 16:38:39.339918 desktop systemd[6480]: Reached target GNOME Shell.
Mar 28 16:38:39.339951 desktop systemd[6480]: Reached target Session services which should run early before the graphical session is brought up.
Mar 28 16:38:39.358536 desktop systemd[6480]: Reached target GNOME Session Manager is ready.
Mar 28 16:38:39.358943 desktop systemd[6480]: Starting GNOME Shell on Wayland...
Mar 28 16:38:39.392433 desktop gnome-shell[6523]: Running GNOME Shell (using mutter 49.4) as a Wayland display server
Mar 28 16:38:39.400759 desktop gnome-shell[6523]: No seat assigned, running headlessly
Mar 28 16:38:39.445272 desktop gnome-shell[6523]: Added device '/dev/dri/renderD128' (amdgpu) using no mode setting.
Mar 28 16:38:39.446427 desktop gnome-shell[6523]: Created gbm renderer for '/dev/dri/renderD128'
Mar 28 16:38:39.446431 desktop gnome-shell[6523]: GPU /dev/dri/renderD128 selected as primary
Mar 28 16:38:39.447635 desktop gnome-shell[6523]: Obtained a high priority EGL context
Mar 28 16:38:39.487654 desktop gnome-shell[6523]: Using Wayland display name 'wayland-0'
Mar 28 16:38:39.704170 desktop systemd[6480]: Reached target GNOME Session is initialized.
Mar 28 16:38:39.704218 desktop systemd[6480]: Reached target GNOME basic session services.
Mar 28 16:38:39.704246 desktop systemd[6480]: Reached target GNOME Session (session: gnome-login).
Mar 28 16:38:39.705104 desktop systemd[6480]: Starting IBus Daemon for GNOME...
Mar 28 16:38:39.705414 desktop systemd[6480]: Starting GNOME accessibility service...
Mar 28 16:38:39.705821 desktop systemd[6480]: Starting GNOME keyboard configuration service...
Mar 28 16:38:39.706247 desktop systemd[6480]: Starting GNOME keyboard shortcuts service...
Mar 28 16:38:39.706617 desktop systemd[6480]: Starting GNOME power management service...
Mar 28 16:38:39.707068 desktop systemd[6480]: Starting GNOME RFKill support service...
Mar 28 16:38:39.707572 desktop systemd[6480]: Starting GNOME file sharing service...
Mar 28 16:38:39.708004 desktop systemd[6480]: Starting GNOME smartcard service...
Mar 28 16:38:39.708430 desktop systemd[6480]: Starting GNOME USB protection service...
Mar 28 16:38:39.731725 desktop systemd[6480]: Reached target GNOME Session.
Mar 28 16:38:39.731744 desktop systemd[6480]: Reached target GNOME Wayland Session (session: gnome-login).
Mar 28 16:38:39.731771 desktop systemd[6480]: Reached target Current graphical user session.
Mar 28 16:38:39.773734 desktop .gnome-shell-wr[6523]: Missing required core component Settings, expect trouble…
                                              *** 30 second gap — handover daemon never appears ***
Mar 28 16:39:09.120539 desktop gnome-remote-desktop-daemon[1431]: [DaemonSystem] Aborting handover, removing remote client with remote id /org/gnome/RemoteDesktop/Client/2835525429
Mar 28 16:39:09.120981 desktop gnome-remote-desktop-daemon[1431]: [16:39:09:120] [1431:00000597] [ERROR][com.freerdp.core.peer] - [rdp_set_error_info]: ERRINFO_CB_CONNECTION_CANCELLED [0x00010409]

Additional context

No response

System metadata

  • system: "x86_64-linux"
  • host os: Linux 6.18.19, NixOS, 26.05 (Yarara), 26.05.20260323.fdc7b8f
  • multi-user?: yes
  • sandbox: yes
  • version: nix-env (Nix) 2.31.3
  • channels(root): "nixos-25.11"
  • nixpkgs: /nix/store/0zjk4bg7bw2zsh3w0rnyn4b4hfiw0s9n-source

Notify maintainers


Note for maintainers: Please tag this issue in your pull request description. (i.e. Resolves #ISSUE.)

I assert that this issue is relevant for Nixpkgs

Is this issue important to you?

Add a 👍 reaction to issues you find important.

Metadata

Metadata

Assignees

No one assigned

    Labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions