{"id":951,"date":"2026-10-27T23:11:44","date_gmt":"2026-10-27T23:11:44","guid":{"rendered":"https:\/\/windows-vps.org\/blog\/?p=951"},"modified":"2026-10-27T23:11:44","modified_gmt":"2026-10-27T23:11:44","slug":"troubleshooting-rdp-error-0x3-0x516-remote-desktop-disconnects","status":"publish","type":"post","link":"https:\/\/windows-vps.org\/blog\/troubleshooting-rdp-error-0x3-0x516-remote-desktop-disconnects\/","title":{"rendered":"RDP Error 0x3 and 0x516: Diagnosing Remote Desktop Disconnects"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">Two of the most common RDP failures do not look like connection problems at all. Error 0x3 (&#8220;The connection was lost because of a network-level error&#8221;) and error 0x516 (&#8220;The remote session was disconnected because there are no Remote Desktop License Servers available to provide a license&#8221;) both surface after authentication succeeds, which makes them easy to misdiagnose as network faults or client bugs. In reality 0x3 is a transport-layer problem and 0x516 is a licensing-role problem. They require completely different investigation paths, and both are resolvable in minutes once you know which event logs to read.<\/p>\n\n\n<!-- wp:heading level=\"2\" -->\n<h2>Error 0x3: The Transport Died, Not the Login<\/h2>\n<!-- \/wp:post-content -->\n\n<!-- wp:paragraph -->\n<p>The 0x3 code appears after credentials are accepted and the session is being set up. The RDP transport has negotiated security, opened the virtual channels, and then lost the connection during the display or input phase. Because the login succeeded, credential problems, NLA mismatches, and account lockouts are ruled out. What remains is a small set of transport causes:<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:list -->\n<ul><li><strong>MTU black-holing.<\/strong> The client&#8217;s path MTU is smaller than the tunnel or provider network supports, and large RDP frames are dropped without ICMP &#8220;fragmentation needed&#8221; coming back. Typical on VPNs, WireGuard, and some provider edge devices. Confirm with <code>ping -f -l 1472<\/code> and decrement until it succeeds; the working value minus 28 is your safe MTU.<\/li><li><strong>UDP transport instability.<\/strong> RDP over UDP (default since Server 2012) uses short-lived UDP flows that stateful firewalls expire quickly. See the <a href=\"https:\/\/windows-vps.org\/\">Windows Server host<\/a> docs for whether the provider NATs UDP on non-standard ports.<\/li><li><strong>RDP security layer mismatch after a patch.<\/strong> Server patched while the connection was up, or the client and server disagree on the negotiated protocol after CredSSP.<\/li><li><strong>Session exhaustion.<\/strong> The session was created, then immediately terminated because the maximum session count was reached (standard Windows Server allows 2 admin sessions).<\/li><\/ul>\n<!-- \/wp:list -->\n\n<!-- wp:paragraph -->\n<p>Diagnose from the server side, not the client. The RDP operational log under <em>Event Viewer &gt; Applications and Services Logs &gt; Microsoft &gt; Windows &gt; TerminalServices-RemoteConnectionManager<\/em> records the session state transitions. Enable it first if it is off:<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:code -->\n<pre class=\"wp-block-code\"><code>wevtutil sl Microsoft-Windows-TerminalServices-RemoteConnectionManager\/Operational \/e:true\nwevtutil sl Microsoft-Windows-TerminalServices-LocalSessionManager\/Operational \/e:true\n\n# Events within the last hour\nGet-WinEvent -LogName \"Microsoft-Windows-TerminalServices-LocalSessionManager\/Operational\" `\n  -MaxEvents 50 | Where-Object TimeCreated -gt (Get-Date).AddHours(-1) |\n  Select-Object TimeCreated, Id, Message | Format-List<\/code><\/pre>\n<!-- \/wp:code -->\n\n<!-- wp:paragraph -->\n<p>Event ID 24 in the LocalSessionManager log is a session disconnect, and its reason field distinguishes a client-initiated disconnect from a transport teardown. Event ID 39 in the RemoteConnectionManager log records the transport failure with the error code. If you see both within seconds, the network path is the cause. If you see only 24, the client closed the session.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:heading level=\"2\" -->\n<h2>Fix: Force RDP Over TCP Only<\/h2>\n<!-- \/wp:heading -->\n\n<!-- wp:paragraph -->\n<p>When the client and server paths disagree about UDP, forcing TCP removes the variable entirely. On the client, add <code>enableudp=0<\/code> to the <code>HKCU\\Software\\Microsoft\\Terminal Server Client<\/code> hive, or use the &#8220;Select a transport&#8221; option on the Experience tab of recent client builds. On the server, the setting lives under <em>HKLM\\SYSTEM\\CurrentControlSet\\Control\\Terminal Server\\WinStations<\/em> per-listener as <code>SelectTransport<\/code> (0 = UDP, 1 = TCP). If a single changed transport makes 0x3 disappear, the fix is on the network device \u2014 an MSS clamp or a fixed MTU on the tunnel \u2014 rather than on the server.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:heading level=\"2\" -->\n<h2>Error 0x516: Licensing, Not Connectivity<\/h2>\n<!-- \/wp:heading -->\n\n<!-- wp:paragraph -->\n<p>The 0x516 text is explicit once you read it carefully: no Remote Desktop License Server is available to provide a license. This error only occurs on a server that has the Remote Desktop Session Host role installed. A plain Windows Server used for administrative RDP does not need RDS licensing and never produces 0x516. If you are seeing it, one of the following is true:<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:list -->\n<ul><li>The RDS role was installed (often by an installer script or by clicking through &#8220;Add roles&#8221; for another guess), and the 120-day licensing grace period has expired.<\/li><li>The session host was configured with a specific license server name that no longer resolves.<\/li><li>The license server is present but all CALs are assigned, or the CAL type (per-user vs per-device) does not match the installed mode.<\/li><li>Microsoft&#8217;s licensing backend is unreachable, so the license server cannot validate CALs it holds.<\/li><\/ul>\n<!-- \/wp:list -->\n\n<!-- wp:code -->\n<pre class=\"wp-block-code\"><code># Check role state and grace period\n(Get-WmiObject Win32_ServerFeature -Filter \"ID=17\" | Select-Object Name, ID)\n$gp = Get-ItemProperty \"HKLM:\\SYSTEM\\CurrentControlSet\\Control\\Terminal Server\\RCM\\GracePeriod\" `\n  -ErrorAction SilentlyContinue\nif ($gp) { \"Grace period ends: $($gp.PSObject.Properties['LicensingGracePeriodExpiration'].Value)\" }\n\n# Configure the licensing mode and server\n$base = \"HKLM:\\SYSTEM\\CurrentControlSet\\Control\\Terminal Server\\RCM\"\nSet-ItemProperty $base -Name \"LicensingMode\" -Type DWord -Value 4   # 2=per-device, 4=per-user\nSet-ItemProperty $base -Name \"LicenseServers\" -Type MultiString -Value @(\"lic01.corp.local\")\nSet-ItemProperty $base -Name \"SpecifiedLicenseServers\" -Type MultiString -Value @(\"lic01.corp.local\")<\/code><\/pre>\n<!-- \/wp:code -->\n\n<!-- wp:paragraph -->\n<p>If the RDS role exists but you genuinely only need two administrative sessions, remove it. The role is not needed for default admin-mode RDP, and removing it restores the standard two-session limit without any CAL requirement. The Role and Feature removal is clean as long as you have not configured a session collection, which you can inspect with <code>Get-RDSessionCollection<\/code> if the RDS PowerShell module is present.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>The per-user vs per-device choice matters here and can cost real money. Per-device CALs require a device to be tracked across the fleet; per-user licenses follow a user. Microsoft sells RDS 2025 CALs at roughly USD 6.70 to USD 13 per license depending on volume, per user or device per CAL, so a 25-seat environment starts around USD 170 annually under subscription licensing or a one-time cost under perpetual. Doing the math on one wrong setting is worth the ten minutes.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:heading level=\"2\" -->\n<h2>Separating 0x3 From 0x516 in the Logs<\/h2>\n<!-- \/wp:heading -->\n\n<!-- wp:table -->\n<figure class=\"wp-block-table\"><table><thead><tr><th>Signal<\/th><th>0x3 (transport)<\/th><th>0x516 (licensing)<\/th><\/tr><\/thead><tbody><tr><td>When it appears<\/td><td>After NLA, during session setup<\/td><td>After full authentication, immediately before desktop<\/td><\/tr><tr><td>Server event<\/td><td>RemoteConnectionManager ID 39<\/td><td>TerminalServices-RemoteConnectionManager ID 1122 \/ 1123<\/td><\/tr><tr><td>RDP server role required<\/td><td>No<\/td><td>Yes (RDS Session Host)<\/td><\/tr><tr><td>Fix effort<\/td><td>MTU \/ transport \/ firewall<\/td><td>Role removal or CAL assignment<\/td><\/tr><\/tbody><\/table><\/figure>\n<!-- \/wp:table -->\n\n<!-- wp:paragraph -->\n<p>One final note on error-code reporting. The RDP client surfaces the numeric code in its own log rather than in the dialog, and the code you see in the dialog may be the WSA error rather than the Win32 error. If you are not certain which failure you have, note the exact dialog text and capture the server logs before changing anything. Changing MTU settings because of a licensing error is a common and expensive misdiagnosis. For the layer-by-layer baseline that should exist on any host before troubleshooting, the <a href=\"https:\/\/windows-vps.org\/\">plans page<\/a> and the <a href=\"https:\/\/windows-vps.org\/blog\/rdp-first-session-setup-windows-server\/\">first-session setup guide<\/a> cover the RDP listener, firewall scoping, and lockout policy in the order they should be built.<\/p>\n<!-- \/wp:paragraph -->\n","protected":false},"excerpt":{"rendered":"<p>Two of the most common RDP failures do not look like connection problems at all. Error 0x3 (&#8220;The connection was lost because of a network-level error&#8221;) and error 0x516 (&#8220;The remote session was disconnected because there are no Remote Desktop License Servers available to provide a license&#8221;) both surface after authentication succeeds, which makes them &#8230; <a title=\"RDP Error 0x3 and 0x516: Diagnosing Remote Desktop Disconnects\" class=\"read-more\" href=\"https:\/\/windows-vps.org\/blog\/troubleshooting-rdp-error-0x3-0x516-remote-desktop-disconnects\/\" aria-label=\"Read more about RDP Error 0x3 and 0x516: Diagnosing Remote Desktop Disconnects\">Read more<\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"iawp_total_views":1,"footnotes":""},"categories":[1],"tags":[],"class_list":["post-951","post","type-post","status-publish","format-standard","hentry","category-reviews"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v26.1 (Yoast SEO v26.1) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>RDP Error 0x3 and 0x516: Diagnosing Remote Desktop Disconnects - Windows VPS Blog<\/title>\n<meta name=\"description\" content=\"Two of the most common RDP failures do not look like connection problems at all. Error 0x3 (&quot;The connection was lost because of a network-level error&quot;)\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/windows-vps.org\/blog\/troubleshooting-rdp-error-0x3-0x516-remote-desktop-disconnects\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"RDP Error 0x3 and 0x516: Diagnosing Remote Desktop Disconnects\" \/>\n<meta property=\"og:description\" content=\"RDP Error 0x3 and 0x516: Diagnosing Remote Desktop Disconnects\" \/>\n<meta property=\"og:url\" content=\"https:\/\/windows-vps.org\/blog\/troubleshooting-rdp-error-0x3-0x516-remote-desktop-disconnects\/\" \/>\n<meta property=\"og:site_name\" content=\"Windows VPS Blog\" \/>\n<meta property=\"article:published_time\" content=\"2026-10-27T23:11:44+00:00\" \/>\n<meta name=\"author\" content=\"windows-vps\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@myxiechengxuan\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"windows-vps\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"5 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/windows-vps.org\/blog\/troubleshooting-rdp-error-0x3-0x516-remote-desktop-disconnects\/\",\"url\":\"https:\/\/windows-vps.org\/blog\/troubleshooting-rdp-error-0x3-0x516-remote-desktop-disconnects\/\",\"name\":\"RDP Error 0x3 and 0x516: Diagnosing Remote Desktop Disconnects - Windows VPS Blog\",\"isPartOf\":{\"@id\":\"https:\/\/windows-vps.org\/blog\/#website\"},\"datePublished\":\"2026-10-27T23:11:44+00:00\",\"author\":{\"@id\":\"https:\/\/windows-vps.org\/blog\/#\/schema\/person\/44caceed916d0db318aa08d5623a7a58\"},\"description\":\"Two of the most common RDP failures do not look like connection problems at all. Error 0x3 (\\\"The connection was lost because of a network-level error\\\")\",\"breadcrumb\":{\"@id\":\"https:\/\/windows-vps.org\/blog\/troubleshooting-rdp-error-0x3-0x516-remote-desktop-disconnects\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/windows-vps.org\/blog\/troubleshooting-rdp-error-0x3-0x516-remote-desktop-disconnects\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/windows-vps.org\/blog\/troubleshooting-rdp-error-0x3-0x516-remote-desktop-disconnects\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/windows-vps.org\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"RDP Error 0x3 and 0x516: Diagnosing Remote Desktop Disconnects\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/windows-vps.org\/blog\/#website\",\"url\":\"https:\/\/windows-vps.org\/blog\/\",\"name\":\"Windows VPS Blog\",\"description\":\"\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/windows-vps.org\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/windows-vps.org\/blog\/#\/schema\/person\/44caceed916d0db318aa08d5623a7a58\",\"name\":\"windows-vps\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/windows-vps.org\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/3f2573db5afcd1a6ab9abcc5d48fc8e42584bc87ab9d98cc156e5b2097766dd9?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/3f2573db5afcd1a6ab9abcc5d48fc8e42584bc87ab9d98cc156e5b2097766dd9?s=96&d=mm&r=g\",\"caption\":\"windows-vps\"},\"sameAs\":[\"https:\/\/windows-vps.org\/blog\",\"https:\/\/x.com\/myxiechengxuan\"],\"url\":\"https:\/\/windows-vps.org\/blog\/author\/myxiechengxuan\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"RDP Error 0x3 and 0x516: Diagnosing Remote Desktop Disconnects - Windows VPS Blog","description":"Two of the most common RDP failures do not look like connection problems at all. Error 0x3 (\"The connection was lost because of a network-level error\")","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/windows-vps.org\/blog\/troubleshooting-rdp-error-0x3-0x516-remote-desktop-disconnects\/","og_locale":"en_US","og_type":"article","og_title":"RDP Error 0x3 and 0x516: Diagnosing Remote Desktop Disconnects","og_description":"RDP Error 0x3 and 0x516: Diagnosing Remote Desktop Disconnects","og_url":"https:\/\/windows-vps.org\/blog\/troubleshooting-rdp-error-0x3-0x516-remote-desktop-disconnects\/","og_site_name":"Windows VPS Blog","article_published_time":"2026-10-27T23:11:44+00:00","author":"windows-vps","twitter_card":"summary_large_image","twitter_creator":"@myxiechengxuan","twitter_misc":{"Written by":"windows-vps","Est. reading time":"5 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/windows-vps.org\/blog\/troubleshooting-rdp-error-0x3-0x516-remote-desktop-disconnects\/","url":"https:\/\/windows-vps.org\/blog\/troubleshooting-rdp-error-0x3-0x516-remote-desktop-disconnects\/","name":"RDP Error 0x3 and 0x516: Diagnosing Remote Desktop Disconnects - Windows VPS Blog","isPartOf":{"@id":"https:\/\/windows-vps.org\/blog\/#website"},"datePublished":"2026-10-27T23:11:44+00:00","author":{"@id":"https:\/\/windows-vps.org\/blog\/#\/schema\/person\/44caceed916d0db318aa08d5623a7a58"},"description":"Two of the most common RDP failures do not look like connection problems at all. Error 0x3 (\"The connection was lost because of a network-level error\")","breadcrumb":{"@id":"https:\/\/windows-vps.org\/blog\/troubleshooting-rdp-error-0x3-0x516-remote-desktop-disconnects\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/windows-vps.org\/blog\/troubleshooting-rdp-error-0x3-0x516-remote-desktop-disconnects\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/windows-vps.org\/blog\/troubleshooting-rdp-error-0x3-0x516-remote-desktop-disconnects\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/windows-vps.org\/blog\/"},{"@type":"ListItem","position":2,"name":"RDP Error 0x3 and 0x516: Diagnosing Remote Desktop Disconnects"}]},{"@type":"WebSite","@id":"https:\/\/windows-vps.org\/blog\/#website","url":"https:\/\/windows-vps.org\/blog\/","name":"Windows VPS Blog","description":"","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/windows-vps.org\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Person","@id":"https:\/\/windows-vps.org\/blog\/#\/schema\/person\/44caceed916d0db318aa08d5623a7a58","name":"windows-vps","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/windows-vps.org\/blog\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/3f2573db5afcd1a6ab9abcc5d48fc8e42584bc87ab9d98cc156e5b2097766dd9?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/3f2573db5afcd1a6ab9abcc5d48fc8e42584bc87ab9d98cc156e5b2097766dd9?s=96&d=mm&r=g","caption":"windows-vps"},"sameAs":["https:\/\/windows-vps.org\/blog","https:\/\/x.com\/myxiechengxuan"],"url":"https:\/\/windows-vps.org\/blog\/author\/myxiechengxuan\/"}]}},"_links":{"self":[{"href":"https:\/\/windows-vps.org\/blog\/wp-json\/wp\/v2\/posts\/951","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/windows-vps.org\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/windows-vps.org\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/windows-vps.org\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/windows-vps.org\/blog\/wp-json\/wp\/v2\/comments?post=951"}],"version-history":[{"count":1,"href":"https:\/\/windows-vps.org\/blog\/wp-json\/wp\/v2\/posts\/951\/revisions"}],"predecessor-version":[{"id":954,"href":"https:\/\/windows-vps.org\/blog\/wp-json\/wp\/v2\/posts\/951\/revisions\/954"}],"wp:attachment":[{"href":"https:\/\/windows-vps.org\/blog\/wp-json\/wp\/v2\/media?parent=951"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/windows-vps.org\/blog\/wp-json\/wp\/v2\/categories?post=951"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/windows-vps.org\/blog\/wp-json\/wp\/v2\/tags?post=951"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}