Distorted Vision
Senior Member
- Joined
- Jun 18, 2022
- Messages
- 480
- Thread Author
-
- #1
I have a TP-Link TX201 2.5 Gigabit PCI Express. I have had a problem with losing connection. I have resolved this by making changing to entries to properties in the Advanced Tab in Device Manager.
I have also done:
netsh winsock reset
netsh int ip reset
The issue I have now is that the download is only ~ 100Mbit/s. I have a 1Gbit/s connection. Normally it tests at ~950Mbit/s on this machine. I have tested the connection on my other machines and they are testing at 900-1000Mbit/s.
I have ordered a replacement NIC and CAT8 cable but I think it is a software issue not hardware related.
Any suggestions please?
I have also done:
netsh winsock reset
netsh int ip reset
The issue I have now is that the download is only ~ 100Mbit/s. I have a 1Gbit/s connection. Normally it tests at ~950Mbit/s on this machine. I have tested the connection on my other machines and they are testing at 900-1000Mbit/s.
I have ordered a replacement NIC and CAT8 cable but I think it is a software issue not hardware related.
Any suggestions please?
Solution
Hurray!
Issue is resolved:
Thank you ChatGPT
Issue is resolved:
Thank you ChatGPT
Distorted Vision
Senior Member
- Joined
- Jun 18, 2022
- Messages
- 480
- Thread Author
-
- #21
Mike: That is the result of the script that you posted in #18
The issue is not resolved. I need to abort as I have to study for exams.
- Joined
- Mar 14, 2023
- Messages
- 95,344
Thanks — that screenshot shows PowerShell parsing errors from the script file. Those usually happen when the script was copied with missing braces, stray characters, or “smart quotes.” Let’s avoid that by using a much smaller, robust script that checks each property exists before trying to set it and reports errors cleanly.
Run this in an elevated PowerShell (right‑click PowerShell → Run as Administrator). You can either paste the whole block into the elevated shell or save it as a .ps1 file and run it. If you save it, run with:
powershell -ExecutionPolicy Bypass -File .\fix-nic.ps1
Copy and paste this exact script:
What this does
After it runs
1) Run a Speedtest (browser or Speedtest app) and report download/upload.
2) Paste the verification output shown at the end of the script (the Get-NetAdapterAdvancedProperty and netsh output), or just paste the whole PowerShell output if there were errors.
If you still see the parser errors when running a file:
If you want, I’ll provide a short rollback script that restores the exact DisplayValues you posted earlier.
Run this in an elevated PowerShell (right‑click PowerShell → Run as Administrator). You can either paste the whole block into the elevated shell or save it as a .ps1 file and run it. If you save it, run with:
powershell -ExecutionPolicy Bypass -File .\fix-nic.ps1
Copy and paste this exact script:
Code:
# Minimal safe NIC tweak script - run as Administrator
$Adapter = "Ethernet" function Set-IfExists { param( [string]$Name, [string]$Value) $prop = Get-NetAdapterAdvancedProperty -Name $Adapter -ErrorAction SilentlyContinue | Where-Object { $_.DisplayName -eq $Name } if ($null -ne $prop) { try { Set-NetAdapterAdvancedProperty -Name $Adapter -DisplayName $Name -DisplayValue $Value -ErrorAction Stop Write-Host "OK: Set '$Name' -> '$Value'" } catch { Write-Warning "FAIL: Could not set '$Name' -> '$Value' : $($_.Exception.Message)" } } else { Write-Host "SKIP: Property not found: $Name" }
} Write-Host "Running NIC adjustments on adapter: $Adapter" -ForegroundColor Cyan # Re-enable Windows TCP autotuning
try { netsh int tcp set global autotuninglevel=normal | Out-Null Write-Host "OK: TCP autotuninglevel set to normal"
} catch { Write-Warning "Could not set TCP autotuninglevel: $($_.Exception.Message)"
} # Disable power/energy throttling options
Set-IfExists -Name "Energy-Efficient Ethernet" -Value "Disabled"
Set-IfExists -Name "Green Ethernet" -Value "Disabled"
Set-IfExists -Name "Gigabit Lite" -Value "Disabled"
Set-IfExists -Name "Power Saving Mode" -Value "Disabled"
Set-IfExists -Name "EEE Max Support Speed" -Value "Disabled" # Disable LSO (Large Send Offload) - common culprit
Set-IfExists -Name "Large Send Offload v2 (IPv4)" -Value "Disabled"
Set-IfExists -Name "Large Send Offload v2 (IPv6)" -Value "Disabled"
Set-IfExists -Name "Large Send Offload (IPv4)" -Value "Disabled"
Set-IfExists -Name "Large Send Offload (IPv6)" -Value "Disabled" # Increase buffers (attempt)
Set-IfExists -Name "Receive Buffers" -Value "8192"
Set-IfExists -Name "Transmit Buffers" -Value "8192" # Keep Flow Control enabled
Set-IfExists -Name "Flow Control" -Value "Rx & Tx Enabled" # Other sensible defaults
Set-IfExists -Name "Interrupt Moderation" -Value "Enabled"
Set-IfExists -Name "Speed & Duplex" -Value "Auto Negotiation"
Set-IfExists -Name "Jumbo Frame" -Value "Disabled" # Restart the adapter (brief disconnect)
Write-Host "Restarting adapter $Adapter..." -ForegroundColor Yellow
try { Disable-NetAdapter -Name $Adapter -Confirm:$false -ErrorAction Stop Start-Sleep -Seconds 3 Enable-NetAdapter -Name $Adapter -Confirm:$false -ErrorAction Stop Start-Sleep -Seconds 3 Write-Host "Adapter restart complete." -ForegroundColor Green
} catch { Write-Warning "Adapter restart failed: $($_.Exception.Message)"
} # Show verification
Write-Host "`nCurrent adapter advanced properties:" -ForegroundColor Cyan
Get-NetAdapterAdvancedProperty -Name $Adapter | Select-Object DisplayName, DisplayValue | Format-Table -AutoSize Write-Host "`nCurrent netsh TCP globals:" -ForegroundColor Cyan
netsh interface tcp show global
- Checks each property exists before setting it (so you won't get parser errors).
- Re-enables TCP autotuning (your netsh showed it was disabled).
- Disables the common Realtek power/EEE settings that throttle bandwidth.
- Attempts to raise the buffers (if the driver accepts the values).
- Restarts the adapter and prints verification so we can see the result.
After it runs
1) Run a Speedtest (browser or Speedtest app) and report download/upload.
2) Paste the verification output shown at the end of the script (the Get-NetAdapterAdvancedProperty and netsh output), or just paste the whole PowerShell output if there were errors.
If you still see the parser errors when running a file:
- Show the exact command you used to run the .ps1 file and the full error text; I’ll tell you exactly what to change.
- Or simply paste the script into the elevated PowerShell prompt instead of saving to file — that bypasses ExecutionPolicy / encoding problems.
If you want, I’ll provide a short rollback script that restores the exact DisplayValues you posted earlier.
Distorted Vision
Senior Member
- Joined
- Jun 18, 2022
- Messages
- 480
- Thread Author
-
- #23
Results of the script:
Set-NetAdapterAdvancedProperty : No matching display value found. The following are valid display values: 10 Mbps Full
Duplex, 100 Mbps Full Duplex, 1.0 Gbps Full Duplex, 2.5 Gbps Full Duplex
At C:\Script3.ps1:5 char:1
+ Set-NetAdapterAdvancedProperty -Name "Ethernet" -DisplayName "EEE Max ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidArgument: (MSFT_NetAdapter...ACC2E3AF5}:...):ROOT/StandardCi...ertySettingData) [
Set-NetAdapterAdvancedProperty], CimException
+ FullyQualifiedErrorId : Windows System Error 87,Set-NetAdapterAdvancedProperty
Set-NetAdapterAdvancedProperty : Value must be within the range 32 - 512, in increments of 8
At C:\Script3.ps1:9 char:1
+ Set-NetAdapterAdvancedProperty -Name "Ethernet" -DisplayName "Receive ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidArgument: (MSFT_NetAdapter...ACC2E3AF5}:...):ROOT/StandardCi...ertySettingData) [
Set-NetAdapterAdvancedProperty], CimException
+ FullyQualifiedErrorId : Windows System Error 87,Set-NetAdapterAdvancedProperty
Set-NetAdapterAdvancedProperty : Value must be within the range 64 - 4096, in increments of 8
At C:\Script3.ps1:10 char:1
+ Set-NetAdapterAdvancedProperty -Name "Ethernet" -DisplayName "Transmi ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidArgument: (MSFT_NetAdapter...ACC2E3AF5}:...):ROOT/StandardCi...ertySettingData) [
Set-NetAdapterAdvancedProperty], CimException
+ FullyQualifiedErrorId : Windows System Error 87,Set-NetAdapterAdvancedProperty
After : The term 'After' is not recognized as the name of a cmdlet, function, script file, or operable program. Check the spelling of the name, or if a path was included, verify that the path is correct
and try again.
At C:\Script3.ps1:18 char:1
+ After that finishes, run these two verification commands and paste th ...
+ ~~~~~
+ CategoryInfo : ObjectNotFound: (After:String) [], CommandNotFoundException
+ FullyQualifiedErrorId : CommandNotFoundException
DisplayName DisplayValue
----------- ------------
Energy-Efficient Ethernet Disabled
Flow Control Rx & Tx Enabled
Interrupt Moderation Enabled
IPv4 Checksum Offload Rx & Tx Enabled
Jumbo Frame Disabled
Large Send Offload v2 (IPv4) Disabled
Large Send Offload v2 (IPv6) Disabled
ARP Offload Enabled
NS Offload Enabled
Priority & VLAN Priority & VLAN Enabled
Receive Buffers 1024
Recv Segment Coalescing (IPv4) Enabled
Recv Segment Coalescing (IPv6) Enabled
Speed & Duplex Auto Negotiation
TCP Checksum Offload (IPv4) Rx & Tx Enabled
TCP Checksum Offload (IPv6) Rx & Tx Enabled
Transmit Buffers 512
UDP Checksum Offload (IPv4) Rx & Tx Enabled
UDP Checksum Offload (IPv6) Rx & Tx Enabled
Wake on Magic Packet Enabled
Wake on pattern match Enabled
Advanced EEE Disabled
EEE Max Support Speed 1.0 Gbps Full Duplex
Green Ethernet Disabled
Gigabit Lite Disabled
Network Address
Power Saving Mode Disabled
VLAN ID 0
Shutdown Wake-On-Lan Enabled
WOL & Shutdown Link Speed 10 Mbps First
Querying active state...
TCP Global Parameters
----------------------------------------------
Receive-Side Scaling State : enabled
Receive Window Auto-Tuning Level : normal
Add-On Congestion Control Provider : default
ECN Capability : disabled
RFC 1323 Timestamps : allowed
Initial RTO : 1000
Receive Segment Coalescing State : enabled
Non Sack Rtt Resiliency : disabled
Max SYN Retransmissions : 4
Fast Open : enabled
Fast Open Fallback : enabled
HyStart : enabled
Proportional Rate Reduction : enabled
Pacing Profile : off
Set-NetAdapterAdvancedProperty : No matching display value found. The following are valid display values: 10 Mbps Full
Duplex, 100 Mbps Full Duplex, 1.0 Gbps Full Duplex, 2.5 Gbps Full Duplex
At C:\Script3.ps1:5 char:1
+ Set-NetAdapterAdvancedProperty -Name "Ethernet" -DisplayName "EEE Max ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidArgument: (MSFT_NetAdapter...ACC2E3AF5}:...):ROOT/StandardCi...ertySettingData) [
Set-NetAdapterAdvancedProperty], CimException
+ FullyQualifiedErrorId : Windows System Error 87,Set-NetAdapterAdvancedProperty
Set-NetAdapterAdvancedProperty : Value must be within the range 32 - 512, in increments of 8
At C:\Script3.ps1:9 char:1
+ Set-NetAdapterAdvancedProperty -Name "Ethernet" -DisplayName "Receive ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidArgument: (MSFT_NetAdapter...ACC2E3AF5}:...):ROOT/StandardCi...ertySettingData) [
Set-NetAdapterAdvancedProperty], CimException
+ FullyQualifiedErrorId : Windows System Error 87,Set-NetAdapterAdvancedProperty
Set-NetAdapterAdvancedProperty : Value must be within the range 64 - 4096, in increments of 8
At C:\Script3.ps1:10 char:1
+ Set-NetAdapterAdvancedProperty -Name "Ethernet" -DisplayName "Transmi ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidArgument: (MSFT_NetAdapter...ACC2E3AF5}:...):ROOT/StandardCi...ertySettingData) [
Set-NetAdapterAdvancedProperty], CimException
+ FullyQualifiedErrorId : Windows System Error 87,Set-NetAdapterAdvancedProperty
After : The term 'After' is not recognized as the name of a cmdlet, function, script file, or operable program. Check the spelling of the name, or if a path was included, verify that the path is correct
and try again.
At C:\Script3.ps1:18 char:1
+ After that finishes, run these two verification commands and paste th ...
+ ~~~~~
+ CategoryInfo : ObjectNotFound: (After:String) [], CommandNotFoundException
+ FullyQualifiedErrorId : CommandNotFoundException
DisplayName DisplayValue
----------- ------------
Energy-Efficient Ethernet Disabled
Flow Control Rx & Tx Enabled
Interrupt Moderation Enabled
IPv4 Checksum Offload Rx & Tx Enabled
Jumbo Frame Disabled
Large Send Offload v2 (IPv4) Disabled
Large Send Offload v2 (IPv6) Disabled
ARP Offload Enabled
NS Offload Enabled
Priority & VLAN Priority & VLAN Enabled
Receive Buffers 1024
Recv Segment Coalescing (IPv4) Enabled
Recv Segment Coalescing (IPv6) Enabled
Speed & Duplex Auto Negotiation
TCP Checksum Offload (IPv4) Rx & Tx Enabled
TCP Checksum Offload (IPv6) Rx & Tx Enabled
Transmit Buffers 512
UDP Checksum Offload (IPv4) Rx & Tx Enabled
UDP Checksum Offload (IPv6) Rx & Tx Enabled
Wake on Magic Packet Enabled
Wake on pattern match Enabled
Advanced EEE Disabled
EEE Max Support Speed 1.0 Gbps Full Duplex
Green Ethernet Disabled
Gigabit Lite Disabled
Network Address
Power Saving Mode Disabled
VLAN ID 0
Shutdown Wake-On-Lan Enabled
WOL & Shutdown Link Speed 10 Mbps First
Querying active state...
TCP Global Parameters
----------------------------------------------
Receive-Side Scaling State : enabled
Receive Window Auto-Tuning Level : normal
Add-On Congestion Control Provider : default
ECN Capability : disabled
RFC 1323 Timestamps : allowed
Initial RTO : 1000
Receive Segment Coalescing State : enabled
Non Sack Rtt Resiliency : disabled
Max SYN Retransmissions : 4
Fast Open : enabled
Fast Open Fallback : enabled
HyStart : enabled
Proportional Rate Reduction : enabled
Pacing Profile : off
- Joined
- Mar 14, 2023
- Messages
- 95,344
Good — thanks for the output and the error messages. Everything we need is visible now.
What happened
Run these three commands in an elevated PowerShell (copy/paste the whole block). They use values within the ranges the driver reported:
Set-NetAdapterAdvancedProperty -Name "Ethernet" -DisplayName "Transmit Buffers" -DisplayValue "4096"
Start-Sleep -Seconds 3
Enable-NetAdapter -Name "Ethernet" -Confirm:$false
Then run these verification commands and paste their output (or screenshot):
Get-NetAdapterAdvancedProperty -Name "Ethernet" | Format-Table DisplayName, DisplayValue -AutoSize
netsh interface tcp show global
Get-NetAdapter | Format-Table Name, Status, LinkSpeed
What to test immediately
What happened
- The script mostly succeeded: EEE/Green/Gigabit‑Lite were disabled and autotuning was re‑enabled. Good.
- Failures were due to two things:
1) I tried to set EEE Max Support Speed to "Disabled" but that property only accepts specific speed strings (10 Mbps / 100 Mbps / 1.0 Gbps / 2.5 Gbps Full Duplex).
2) I attempted buffer values that exceed the driver’s allowed range (you saw the “Value must be within the range …” errors). Also one stray line of plain text in the script caused PowerShell to try to execute it (the “After that finishes…” line) — that must be removed or commented out.
Run these three commands in an elevated PowerShell (copy/paste the whole block). They use values within the ranges the driver reported:
Set EEE max to allow 2.5Gb negotiation
Set-NetAdapterAdvancedProperty -Name "Ethernet" -DisplayName "EEE Max Support Speed" -DisplayValue "2.5 Gbps Full Duplex"Set buffers to driver-allowed maximums (per the error messages: receive 32-512, transmit 64-4096)
Set-NetAdapterAdvancedProperty -Name "Ethernet" -DisplayName "Receive Buffers" -DisplayValue "512"Set-NetAdapterAdvancedProperty -Name "Ethernet" -DisplayName "Transmit Buffers" -DisplayValue "4096"
Restart adapter briefly (disconnects for a few seconds)
Disable-NetAdapter -Name "Ethernet" -Confirm:$falseStart-Sleep -Seconds 3
Enable-NetAdapter -Name "Ethernet" -Confirm:$false
Then run these verification commands and paste their output (or screenshot):
Get-NetAdapterAdvancedProperty -Name "Ethernet" | Format-Table DisplayName, DisplayValue -AutoSize
netsh interface tcp show global
Get-NetAdapter | Format-Table Name, Status, LinkSpeed
What to test immediately
- Do a Speedtest (browser or Speedtest app) and report download/upload.
- If you want a definitive single-flow vs multi-flow check, run iperf3 single-stream and multi-stream to your Linux server.
- Next steps: clean driver reinstall (completely uninstall device and delete driver, reboot, install TP‑Link TX201 driver from TP‑Link or Realtek RTL8125 recommended driver), clean boot to rule out third‑party software, and Wireshark capture to look for retransmits/duplicate ACKs.
Distorted Vision
Senior Member
- Joined
- Jun 18, 2022
- Messages
- 480
- Thread Author
-
- #25
Hurray!
Issue is resolved:
Thank you ChatGPT
Issue is resolved:
Thank you ChatGPT
- Joined
- Mar 14, 2023
- Messages
- 95,344
Nice — great to hear it’s fixed. That 779 Mbps (Windows) vs ~920 Mbps (Linux) is well within expected variance; more importantly the download now behaves and the intermittent disconnects are gone.
What fixed it (summary)
1) Monitor for 24–48 hours. If speeds stay stable and no drops occur, keep the current settings.
2) If you want to chase the last ~100–150 Mbps (to match Linux exactly), do a clean driver reinstall: uninstall the adapter (check “Delete driver software”), reboot, then install the TP‑Link TX201 vendor driver (or the Realtek RTL8125 driver recommended for your adapter). Test after the vendor driver — sometimes vendor builds are better tuned.
3) If you use third‑party AV/network monitoring software, keep an eye for background scans that might throttle downloads; do a quick test with AV disabled if you see regressions.
4) Keep your system up to date (Windows updates + chipset drivers + BIOS) — these affect PCIe and NIC behavior.
Useful commands (copy/paste in Admin PowerShell)
If you decide you want to restore your previous settings exactly, run this (Admin PowerShell):
Set-NetAdapterAdvancedProperty -Name "Ethernet" -DisplayName "Energy-Efficient Ethernet" -DisplayValue "Enabled"
Set-NetAdapterAdvancedProperty -Name "Ethernet" -DisplayName "Flow Control" -DisplayValue "Rx & Tx Enabled"
Set-NetAdapterAdvancedProperty -Name "Ethernet" -DisplayName "Interrupt Moderation" -DisplayValue "Enabled"
Set-NetAdapterAdvancedProperty -Name "Ethernet" -DisplayName "IPv4 Checksum Offload" -DisplayValue "Rx & Tx Enabled"
Set-NetAdapterAdvancedProperty -Name "Ethernet" -DisplayName "Jumbo Frame" -DisplayValue "Disabled"
Set-NetAdapterAdvancedProperty -Name "Ethernet" -DisplayName "Large Send Offload v2 (IPv4)" -DisplayValue "Enabled"
Set-NetAdapterAdvancedProperty -Name "Ethernet" -DisplayName "Large Send Offload v2 (IPv6)" -DisplayValue "Enabled"
Set-NetAdapterAdvancedProperty -Name "Ethernet" -DisplayName "ARP Offload" -DisplayValue "Enabled"
Set-NetAdapterAdvancedProperty -Name "Ethernet" -DisplayName "NS Offload" -DisplayValue "Enabled"
Set-NetAdapterAdvancedProperty -Name "Ethernet" -DisplayName "Priority & VLAN" -DisplayValue "Priority & VLAN Enabled"
Set-NetAdapterAdvancedProperty -Name "Ethernet" -DisplayName "Receive Buffers" -DisplayValue "1024"
Set-NetAdapterAdvancedProperty -Name "Ethernet" -DisplayName "Recv Segment Coalescing (IPv4)" -DisplayValue "Enabled"
Set-NetAdapterAdvancedProperty -Name "Ethernet" -DisplayName "Recv Segment Coalescing (IPv6)" -DisplayValue "Enabled"
Set-NetAdapterAdvancedProperty -Name "Ethernet" -DisplayName "Speed & Duplex" -DisplayValue "Auto Negotiation"
Set-NetAdapterAdvancedProperty -Name "Ethernet" -DisplayName "TCP Checksum Offload (IPv4)" -DisplayValue "Rx & Tx Enabled"
Set-NetAdapterAdvancedProperty -Name "Ethernet" -DisplayName "TCP Checksum Offload (IPv6)" -DisplayValue "Rx & Tx Enabled"
Set-NetAdapterAdvancedProperty -Name "Ethernet" -DisplayName "Transmit Buffers" -DisplayValue "512"
Set-NetAdapterAdvancedProperty -Name "Ethernet" -DisplayName "UDP Checksum Offload (IPv4)" -DisplayValue "Rx & Tx Enabled"
Set-NetAdapterAdvancedProperty -Name "Ethernet" -DisplayName "UDP Checksum Offload (IPv6)" -DisplayValue "Rx & Tx Enabled"
Set-NetAdapterAdvancedProperty -Name "Ethernet" -DisplayName "Wake on Magic Packet" -DisplayValue "Enabled"
Set-NetAdapterAdvancedProperty -Name "Ethernet" -DisplayName "Wake on pattern match" -DisplayValue "Enabled"
Set-NetAdapterAdvancedProperty -Name "Ethernet" -DisplayName "Advanced EEE" -DisplayValue "Disabled"
Set-NetAdapterAdvancedProperty -Name "Ethernet" -DisplayName "EEE Max Support Speed" -DisplayValue "1.0 Gbps Full Duplex"
Set-NetAdapterAdvancedProperty -Name "Ethernet" -DisplayName "Green Ethernet" -DisplayValue "Enabled"
Set-NetAdapterAdvancedProperty -Name "Ethernet" -DisplayName "Gigabit Lite" -DisplayValue "Enabled"
Set-NetAdapterAdvancedProperty -Name "Ethernet" -DisplayName "Power Saving Mode" -DisplayValue "Enabled"
Set-NetAdapterAdvancedProperty -Name "Ethernet" -DisplayName "VLAN ID" -DisplayValue "0"
Set-NetAdapterAdvancedProperty -Name "Ethernet" -DisplayName "Shutdown Wake-On-Lan" -DisplayValue "Enabled"
Set-NetAdapterAdvancedProperty -Name "Ethernet" -DisplayName "WOL & Shutdown Link Speed" -DisplayValue "10 Mbps First"
netsh int tcp set global autotuninglevel=disabled
Final note
Nice troubleshooting — testing from Linux and a second PC was the right move (excellent isolation). If you want, I can provide the exact TP‑Link/Realtek driver link I’d use for a clean reinstall (tell me whether you prefer TP‑Link or Realtek driver). If everything looks good, please mark the thread solved so others with the same issue can find the fix.
What fixed it (summary)
- Re‑enabled Windows TCP Receive Window Auto‑Tuning (netsh autotuninglevel=normal). Previously it was disabled and that often cripples single‑stream download performance on fast links.
- Disabled Realtek power/energy features (Energy‑Efficient Ethernet / Green Ethernet / Gigabit Lite / Power Saving Mode) that can force the NIC into a lower throughput mode.
- Disabled LSO (Large Send Offload) and increased Receive/Transmit buffers to driver‑allowed maximums (you set Receive = 512, Transmit = 4096).
- Restarted the adapter to apply changes.
- Autotuning lets Windows grow the TCP receive window to match high bandwidth × latency paths; disabling it frequently limits single‑flow throughput.
- EEE / Green features and power saving can reduce throughput or cause renegotiation behavior on certain Realtek drivers.
- LSO and offloads sometimes interact poorly with buggy drivers or Windows stacks; disabling them is a common troubleshooting step.
- Larger NIC buffers reduce packet drops under high throughput bursts.
1) Monitor for 24–48 hours. If speeds stay stable and no drops occur, keep the current settings.
2) If you want to chase the last ~100–150 Mbps (to match Linux exactly), do a clean driver reinstall: uninstall the adapter (check “Delete driver software”), reboot, then install the TP‑Link TX201 vendor driver (or the Realtek RTL8125 driver recommended for your adapter). Test after the vendor driver — sometimes vendor builds are better tuned.
3) If you use third‑party AV/network monitoring software, keep an eye for background scans that might throttle downloads; do a quick test with AV disabled if you see regressions.
4) Keep your system up to date (Windows updates + chipset drivers + BIOS) — these affect PCIe and NIC behavior.
Useful commands (copy/paste in Admin PowerShell)
- Show current advanced NIC properties:
Get-NetAdapterAdvancedProperty -Name "Ethernet" | Format-Table DisplayName, DisplayValue -AutoSize - Show TCP global state:
netsh interface tcp show global - Show adapter/link speed:
Get-NetAdapter | Format-Table Name, Status, LinkSpeed
If you decide you want to restore your previous settings exactly, run this (Admin PowerShell):
Set-NetAdapterAdvancedProperty -Name "Ethernet" -DisplayName "Energy-Efficient Ethernet" -DisplayValue "Enabled"
Set-NetAdapterAdvancedProperty -Name "Ethernet" -DisplayName "Flow Control" -DisplayValue "Rx & Tx Enabled"
Set-NetAdapterAdvancedProperty -Name "Ethernet" -DisplayName "Interrupt Moderation" -DisplayValue "Enabled"
Set-NetAdapterAdvancedProperty -Name "Ethernet" -DisplayName "IPv4 Checksum Offload" -DisplayValue "Rx & Tx Enabled"
Set-NetAdapterAdvancedProperty -Name "Ethernet" -DisplayName "Jumbo Frame" -DisplayValue "Disabled"
Set-NetAdapterAdvancedProperty -Name "Ethernet" -DisplayName "Large Send Offload v2 (IPv4)" -DisplayValue "Enabled"
Set-NetAdapterAdvancedProperty -Name "Ethernet" -DisplayName "Large Send Offload v2 (IPv6)" -DisplayValue "Enabled"
Set-NetAdapterAdvancedProperty -Name "Ethernet" -DisplayName "ARP Offload" -DisplayValue "Enabled"
Set-NetAdapterAdvancedProperty -Name "Ethernet" -DisplayName "NS Offload" -DisplayValue "Enabled"
Set-NetAdapterAdvancedProperty -Name "Ethernet" -DisplayName "Priority & VLAN" -DisplayValue "Priority & VLAN Enabled"
Set-NetAdapterAdvancedProperty -Name "Ethernet" -DisplayName "Receive Buffers" -DisplayValue "1024"
Set-NetAdapterAdvancedProperty -Name "Ethernet" -DisplayName "Recv Segment Coalescing (IPv4)" -DisplayValue "Enabled"
Set-NetAdapterAdvancedProperty -Name "Ethernet" -DisplayName "Recv Segment Coalescing (IPv6)" -DisplayValue "Enabled"
Set-NetAdapterAdvancedProperty -Name "Ethernet" -DisplayName "Speed & Duplex" -DisplayValue "Auto Negotiation"
Set-NetAdapterAdvancedProperty -Name "Ethernet" -DisplayName "TCP Checksum Offload (IPv4)" -DisplayValue "Rx & Tx Enabled"
Set-NetAdapterAdvancedProperty -Name "Ethernet" -DisplayName "TCP Checksum Offload (IPv6)" -DisplayValue "Rx & Tx Enabled"
Set-NetAdapterAdvancedProperty -Name "Ethernet" -DisplayName "Transmit Buffers" -DisplayValue "512"
Set-NetAdapterAdvancedProperty -Name "Ethernet" -DisplayName "UDP Checksum Offload (IPv4)" -DisplayValue "Rx & Tx Enabled"
Set-NetAdapterAdvancedProperty -Name "Ethernet" -DisplayName "UDP Checksum Offload (IPv6)" -DisplayValue "Rx & Tx Enabled"
Set-NetAdapterAdvancedProperty -Name "Ethernet" -DisplayName "Wake on Magic Packet" -DisplayValue "Enabled"
Set-NetAdapterAdvancedProperty -Name "Ethernet" -DisplayName "Wake on pattern match" -DisplayValue "Enabled"
Set-NetAdapterAdvancedProperty -Name "Ethernet" -DisplayName "Advanced EEE" -DisplayValue "Disabled"
Set-NetAdapterAdvancedProperty -Name "Ethernet" -DisplayName "EEE Max Support Speed" -DisplayValue "1.0 Gbps Full Duplex"
Set-NetAdapterAdvancedProperty -Name "Ethernet" -DisplayName "Green Ethernet" -DisplayValue "Enabled"
Set-NetAdapterAdvancedProperty -Name "Ethernet" -DisplayName "Gigabit Lite" -DisplayValue "Enabled"
Set-NetAdapterAdvancedProperty -Name "Ethernet" -DisplayName "Power Saving Mode" -DisplayValue "Enabled"
Set-NetAdapterAdvancedProperty -Name "Ethernet" -DisplayName "VLAN ID" -DisplayValue "0"
Set-NetAdapterAdvancedProperty -Name "Ethernet" -DisplayName "Shutdown Wake-On-Lan" -DisplayValue "Enabled"
Set-NetAdapterAdvancedProperty -Name "Ethernet" -DisplayName "WOL & Shutdown Link Speed" -DisplayValue "10 Mbps First"
netsh int tcp set global autotuninglevel=disabled
Final note
Nice troubleshooting — testing from Linux and a second PC was the right move (excellent isolation). If you want, I can provide the exact TP‑Link/Realtek driver link I’d use for a clean reinstall (tell me whether you prefer TP‑Link or Realtek driver). If everything looks good, please mark the thread solved so others with the same issue can find the fix.
- Joined
- Jul 22, 2005
- Messages
- 9,240
Oh you're so clever now
- Joined
- Mar 14, 2023
- Messages
- 95,344
Here’s the short recap you asked for.
Original issue
Original issue
- OP (distortedvision) reported intermittent loss of connection/slow Ethernet on a TP‑Link TX201 (Realtek PCIe 2.5GbE) and noted they’d tweaked Advanced tab properties in Device Manager to improve stability.
- Collected NIC details and confirmed the link was negotiating at 2.5 Gbps; asked for the Advanced-property list so I could generate exact commands.
- Gave a stable baseline config for Realtek 2.5GbE, with exact PowerShell one‑liners to apply it:
- Disable Energy‑Efficient/Advanced EEE and Green Ethernet; keep Flow Control On; disable LSO while troubleshooting; increase RX/TX buffers; keep Speed & Duplex on Auto. Also turned off NIC/PCIe power‑saving and suggested Balanced/High Performance power plan.
- Suggested physical/driver checks and logs:
- Use Cat6 and a different switch/router port, reseat the card/slot, and prefer vendor (TP‑Link/Realtek) drivers or roll back if a new one regressed.
- Capture evidence (continuous ping to gateway, Event Viewer entries) to verify local stability and timing of drops.
- Based on the thread, the adapter is up at 2.5 Gbps and the recommended settings/steps were provided; if Windows remains stable but WAN speeds are poor, the next step is to treat it as a line/modem/ISP issue (collect modem signal levels/SNR, reboot modem, run traceroute/MTR, then open a ticket with the provider).
Similar threads
- Solved
- Replies
- 12
- Views
- 2K