惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

V
Visual Studio Blog
Recent Announcements
Recent Announcements
雷峰网
雷峰网
The GitHub Blog
The GitHub Blog
罗磊的独立博客
月光博客
月光博客
J
Java Code Geeks
A
About on SuperTechFans
Microsoft Security Blog
Microsoft Security Blog
D
Docker
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
F
Fortinet All Blogs
U
Unit 42
C
Check Point Blog
Martin Fowler
Martin Fowler
有赞技术团队
有赞技术团队
博客园 - 叶小钗
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
酷 壳 – CoolShell
酷 壳 – CoolShell
Blog — PlanetScale
Blog — PlanetScale
大猫的无限游戏
大猫的无限游戏
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
阮一峰的网络日志
阮一峰的网络日志
MyScale Blog
MyScale Blog

J.D. Hodges

Claude Code Prompt Cache Has Likely Expired: What to Do Open WebUI Web Search Not Working? It's Off By Default Best Running Watch for High School Cross Country 2026 Claude Code Opus 5: Fix the VS Code Picker Still Showing 4.8 RTX 5090 vs 4060 in a Hybrid GPU Render Fleet Mac Prices Went Up June 2026: What Changed and What to Buy How to Set Up a SSH Connection in Claude Code Desktop How to Enable Wake-on-LAN on Synology NAS | Quick Guide Is the BCBS Settlement Payment Email Legit? (May 2026) How to Fix the VMware Workstation "mksSandbox" Crash (ISBRendererComm Error) - J.D. Hodges How to Check Codex Usage: CLI Status Line and Web Page How to Check Your Codex Usage on ChatGPT (Plus and Pro) MacBook Neo GPU vs Snapdragon X2, Radeon, Arc, RTX 5060 ThinkPad History: IBM 700C to Lenovo AI Workstations Codex /goal: How It Works, Setup, and What I Tested The BeBox: BeOS Hardware, Photos, and the Apple Deal That Wasn't Unable to Load Usage Limits in Claude? Use /usage Mother-In-Law Method for Claude Code Review (Honest Take) Best Laptop for Claude Code (2026) Best Way to Cook Corn on the Cob | Milk and Butter Boil Best Computer for ChatGPT (2026) | Laptops, Desktops, Budget Picks How to Use GPT-5.5 Today via Your Codex Subscription Remove McAfee WebAdvisor on Windows: Stop the Popup Codex Sandbox Error on Ubuntu 24.04: The AppArmor Fix WD19TBS Mouse Lag Fix: Dell Firmware Update Worked Claude Opus 4.6 vs 4.7 Max: WordPress Task Graded Claude Code Opus 4.7: Terminal + VS Code Upgrade Instructions Claude Code Rate exceeded. - J.D. Hodges Chuwi MiniBook X vs MacBook Neo: The $399 Laptop That Refuses to Throttle - J.D. Hodges Meta Muse Spark: The Honest Scorecard (3 Wins Out of 20)
RDP Slow on LAN? Fix the Remote Desktop 56 Kbps Trap
J.D. H. · 2026-07-21 · via J.D. Hodges

Summary: My Remote Desktop session into an old ThinkPad got progressively laggier. Ping said the network was perfect (1ms between host and client with no variation). Performance counters said the server was idle. I was about a day away from buying replacement hardware out of frustration with the lag 😣. The actual cause was a dropdown in the Remote Desktop Connection Experience tab that had the connection set to a 56 Kbps modem profile. 💡 Setting it to LAN (10 Mbps or higher) fixed it instantly. The counterintuitive part: the fix was to tell RDP to use more bandwidth, not less.

This was entirely my fault, a few days earlier there WERE some (temporary) LAN issues and in my haste I dropped the connection settings as low as I could (Modem), then days later that was my downfall. Switching it back to the LAN preset restored performance to near perfect.

Remote Desktop Connection Experience tab with connection speed set to Modem (56 kbps) and all visual features unchecked

Don’t do this on a contemporary connection!

Remote Desktop Connection Experience tab set to LAN (10 Mbps or higher) with all visual features enabled

💡 MUCH better!

Details:

The setup

  • Host: ThinkPad X230, i7-3520M @ 2.90 GHz (2 cores / 4 threads), 16 GB DDR3, 4 TB Crucial MX500 + 1 TB Samsung 850 PRO
  • Client: Samsung laptop, my daily driver
  • Network: wired gigabit LAN, same subnet, no VPN, no gateway in the path
  • Protocol: plain old mstsc.exe RDP

An X230 is a 2012 machine. So when the session got slow, I blamed the old hardware. Two cores! Ivy Bridge! Intel HD 4000! Obviously it’s time to migrate to a VM or a newer laptop, right?

Wrong, a silly software config mistake was my issue. 🤯

Step 1: measure before you buy anything

Before spending money, I checked the boring stuff.

Ping from client to server, running continuously through the lag:

Reply from 192.168.7.88: bytes=32 time<1ms TTL=128
Reply from 192.168.7.88: bytes=32 time<1ms TTL=128
Reply from 192.168.7.88: bytes=32 time<1ms TTL=128

Sub-millisecond, zero packet loss, TTL=128 (meaning no router hops, same subnet). And critically, the ping never moved even during the worst lag. So the network path was clean.

Step 2: two performance counters

Windows has built-in RDP diagnostics that I only learned about during this mess. Run these in PowerShell on the server (the machine you’re remoting into) while the session feels bad:

Get-Counter -Counter @(
  "\RemoteFX Network(*)\Current TCP RTT",
  "\RemoteFX Network(*)\Current UDP RTT",
  "\RemoteFX Network(*)\Current TCP Bandwidth",
  "\RemoteFX Network(*)\Current UDP Bandwidth",
  "\User Input Delay per Session(*)\Max Input Delay"
) -SampleInterval 2 -MaxSamples 30

Two counter families matter here:

User Input Delay per Session\Max Input Delay measures how long your keystroke or mouse click sits in the queue before the application picks it up. This is the single best “is the server too busy?” metric, and it reports the maximum in the interval, not the average, because slowness is perceived from the worst input, not the mean.

Mine came back at 16 ms peak, 0.36 ms average. 16 ms is one 60 Hz frame tick. That is the counter’s floor. The X230 was picking up input essentially instantly.

So: network fine, server fine, session terrible. 🤔

RemoteFX Network counters gave me numbers I could not make sense of at first:

current tcp rtt        : 47
current tcp bandwidth  : 56
current udp rtt        : 0
current udp bandwidth  : 2783318386

47 ms RTT on a sub-1ms LAN? A bandwidth of 56 next to a bandwidth of 2.78 billion? I wrote those off as broken counters and went chasing GPU drivers instead. That was a mistake, and it cost me hours.

Step 3: the accidental fix

On a hunch, I opened the RDP client on the Samsung, went to the Experience tab, and changed the connection speed setting to LAN (10 Mbps or higher).

The lag vanished instantly.

Which made no sense, because everything I’d read (and everything I’d assumed) says that when RDP is slow you strip the session down: lower the color depth, disable desktop composition, kill the animations, turn off font smoothing. Send less data. I had been running with all of that already disabled.

Then I re-ran the counters.

Here’s the before and after, same machine, same LAN, same session, nothing changed but one dropdown:

Counter Before (bad) After (good) Delta
Current TCP RTT 47 5 −42 ms (−89%)
Current TCP Bandwidth 56 10,000 178×
Current UDP Bandwidth 2,783,318,386 (garbage) 303,803 (~304 Mbps) real measurement
Max Input Delay (peak) 16 ms 16 ms unchanged, never the problem
Max Input Delay (avg) 0.36 ms 0.25 ms unchanged, never the problem
ICMP ping <1 ms <1 ms unchanged, never the problem

The units are kilobits per second. And look at those two numbers again:

  • 56 = Modem (56 Kbps)
  • 10000 = LAN (10 Mbps or higher)

Those are entries in the Experience tab dropdown. My session had been declaring itself a dial-up modem connection, and the RDP server took me at my word: maximum compression, minimal frame rate, progressive refinement (send a rough frame, sharpen it over later passes). Over a gigabit LAN. With sub-millisecond latency.

It wasn’t broken. It was doing exactly what it was told. 😅

The 47 ms “RTT” was the same story: that’s the protocol-level round trip under a session that was throttling itself into the ground, not the actual network. On the LAN profile it dropped to a healthy 5 ms. (5 ms is still higher than the <1 ms ICMP ping, and that’s expected. RemoteFX RTT measures the full protocol round trip, not raw ICMP.)

The UDP bandwidth going from an uninitialized 2.78-billion garbage value to a plausible ~304 Mbps also tells you UDP transport is genuinely running now. That matters beyond raw speed, because RDP over UDP handles packet loss much better than TCP-only does.

The fix

In the GUI: open Remote Desktop Connection, click Show Options, open the Experience tab, and set Performance to LAN (10 Mbps or higher).

To make it stick, save the connection as an .rdp file, open it in Notepad, and confirm these lines:

connection type:i:6
bitmapcachepersistenable:i:1

connection type:i:6 is LAN. Bitmap caching should stay on regardless: Microsoft’s own performance tuning guidance is that it gives a significant bandwidth improvement and should always be enabled unless you have a specific security reason not to.

If you want to pin it and stop Windows from re-deriving a bad estimate:

networkautodetect:i:0
bandwidthautodetect:i:0

Since the adaptive stack is clearly measuring UDP correctly once it’s not being lied to, leaving autodetect on may negotiate better than a hardcoded 10 Mbps floor. Worth an A/B on your own setup. Mine is happy either way.

Counterintuitive IMHO

Every troubleshooting instinct points the wrong direction here:

  • “RDP is slow, so reduce the data.” Nope. On a LAN you have bandwidth to burn and (on old hardware) no CPU to spare. Aggressive compression trades CPU for bandwidth. That’s the exact wrong trade on a gigabit link.
  • “The machine is 14 years old, that’s the problem.” Not this time. The counters showed it responding in a fraction of a millisecond.
  • “The counters look broken, ignore them.” This one cost me the most time. That garbage-looking 56 was the entire answer, sitting there in plain sight the whole time.

If your remote session is sluggish and your ping is clean, check the Experience tab, don’t waste unnecessary time and effort like I did 🙏

Happy computing! And if this fixed it for you too, drop a comment below 👍

Accurate at time of writing. Something off? Drop a comment.

What are you stuck on?

Stuck on something with Claude, Claude Code, or an AI workflow? Send the question. I'll try to answer in a future post and link it here.