Remote Desktop intermittently freezing

I use a Windows 10 machine remotely at work. Both the local and remote machine are in the same ISP network (not same local network, but same ISP). I've been using it like that for almost a year now and I had never experienced absolutely any issues.

Until recently. I don't know if anything specific triggered this behavior, but I feel that it started happening after I upgraded the remote to W10 1903. I later upgraded the local one as well and I feel that it only made the problem worse (but I don't really have any data).

From time to time, the session will freeze - the image stops updating. However, what I type and mouse clicks are still being sent. No error message is shown whatsoever, the image simply freezes. To make it work again, I have to close and re-open the session. Everything that I had typed and/or clicked while it was frozen is there.

Is there any way I can debug this?


Solution 1:

I also ran into this issue since July 2019 on a Windows 10 1903 acting as the client machine. The following workaround on the client works for me, so that RDP no longer freezes.

Start an elevated command prompt (run cmd.exe as administrator), and then run:

reg add "HKLM\software\policies\microsoft\windows nt\Terminal Services\Client" /v fClientDisableUDP /d 1 /t REG_DWORD

After that, close and reopen all your RDP sessions on your client computer to restart the Remote Desktop Client (mstsc.exe, aka Microsoft Terminal Services Client) application.

I'm waiting for a final fix to this issue.

Follow-up: I am not sure, but it looks like fixed in 21H1 (both client and server must run 21H1 or higher). For me I no longer see freezes without the disable UDP workaround.

Solution 2:

Encountered this with Windows 10 (1903 and 1909).

Manifestations of the problem:

  1. RDP session updates oddly, distorting audio and video.

  2. RDP session hard-freezes. Client window is responsive, but the content within it is essentially a static image.

    • Sometimes the RDP session recovers, resuming normal function.

    • Other times the RDP session seems to hang indefinitely. No error messages seen; client window can be closed and restarted normally.

Speculated causation:

  • Seems to occur primarily when using the UDP protocol under load.

  • My guess is that the RDP protocol has lost some of its resilience to packets getting lost or out-of-order.

Work-arounds:

No single work-around seems complete. For example, I've had RDP completely freeze even in TCP-only mode. However, TCP-only coupled with trying to improve network connectivity or/and reducing load (such as video and audio) seems to greatly reduce the incident rate.

  1. Partial work-around: Improve network connectivity.
    A direct local connection may be relatively reliable.

  2. Partial work-around: Reduce network strain.
    Reducing RDP session settings, avoiding audio, and avoiding video seem to help.

  3. Full-ish work-around: Disable UDP.
    RDP seems to behave a lot better with TCP than UDP. Switching to TCP-only does seem a bit more laggy, but the lag is more ordered (which is strangely nicer than the erratic lag) and I've yet to encounter an indefinite hang.

    Three ways to implement (probably mutually compatible, but probably only need to do one):

    1. On client: Local Group Policy Editor
      → Local Computer Policy
      → Computer Configuration
      → Administrative Templates
      → Windows Components
      → Remote Desktop Services
      → Remote Desktop Connection Client
      → Turn Off UDP On Client
             → Enabled

    2. On server [untested]: Local Group Policy Editor
      → Local Computer Policy
      → Computer Configuration
      → Administrative Templates
      → Windows Components
      → Remote Desktop Services
      → Remote Desktop Session Host
      → Connections
      → Select RDP transport protocols
             → Enabled
             → Use only TCP

    3. Not recommended (tweaking Registry Editor)
      Source: @robbiefan's answer.
      On client: Registry Editor
      → Computer
      → HKEY_LOCAL_MACHINE
      → SOFTWARE
      → Policies
      → Microsoft
      → Windows NT
      → Terminal Services
      → Client
      → [right-click] → New → DWORD (32-bit) Value
             → Name: fClientDisableUDP
             → Value data: 1
             → Base: Decimal
      Note: This seems to have worked for me when I tried it, but can't verify much beyond that. I reverted this solution after trying it, preferring to rely on the Group Policy instead.


Discussion: Background

I'm fuzzy on the details, but in short, I think there was something about some bugs being discovered in the RDP protocol as implemented prior to Windows 10 1903:

  1. CVE-2019-1181 | Remote Desktop Services Remote Code Execution Vulnerability;

  2. CVE-2019-1182 | Remote Desktop Services Remote Code Execution Vulnerability.

Then Windows 10 1903 was meant to fix these, I think.

Apparently the new version of the RDP protocol has some issues, e.g. this one. Disabling UDP (to force TCP) seems to be a decent enough work-around, though the protocol can feel a bit laggier. That said, the older RDP protocol also had some rather obnoxious audio latency problems that seem to be a lot better now, so, personally, I'm happy about that!

Solution 3:

For me, connecting with Remote Desktop over VPN, the fix seems to be to disable Persistent bitmap caching under Show Options >> Local Experience

options dialog

Windows 10 Home build 18363 connecting to Win10 Enterprise build 18363 over Checkpoint VPN.

I tried disabling UDP as per the top voted answer but that resulted in frequent outright disconnects instead of frozen-screen symptoms.

Update: This isn't a complete fix. The freezing happens less often but still happens. I can trigger the freezing semi-"reliably" by copying dozens to hundreds of rows in Excel. Appears to be sensitive to size of the selection (smaller is less likely to freeze). Disabling clipboard under Local Resources doesn't seem to matter.

Solution 4:

I have had this issue for several weeks. I believed it to coincide with my laptop (that I'm connecting too) coming under heavy load.

This made me think that its possibly a result of the laptop throttling itself and loosing packets/connection, possibly as a result of prioritizing other things..

Yesterday I placed my laptop on 3 upside down shot glasses and aimed a fan at it to keep it cool.

I have not had a disconnect since. So from getting this issue at least 10 times per day I now have 0 cases in 2 days.

Not a real fix, but possibly something to keep in mind as a temporary workaround.