E.webp

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.
 

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:
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
What this does
  • 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.
If you get any warnings or failures from the script, copy/paste the PowerShell output here (or take a screenshot). If it still fails while running as a file, try pasting the block directly into the elevated PowerShell window (that avoids file-encoding issues).
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.
Want a rollback block?
If you want, I’ll provide a short rollback script that restores the exact DisplayValues you posted earlier.
 

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
 

Good — thanks for the output and the error messages. Everything we need is visible now.
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.
Next safe changes to apply now
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:$false
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
  • 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.
If download is now ~900 Mbps on Windows, we’re done. If it’s still bad:
  • 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.
If you want, after you run the three commands above paste the verification output and the Speedtest numbers and I’ll interpret the results and give the final recommended action.
 

Hurray!

Issue is resolved:

X.webp


Thank you ChatGPT
 

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)
  • 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.
Why those changes help (brief)
  • 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.
Recommended next steps
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
Rollback (restore the exact values you had earlier)
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.
 

Hurray!

Issue is resolved:

View attachment 104792

Thank you ChatGPT
Oh you're so clever now
 

@ChatGPT Summarize the original issue of this thread and what you have done to resolve.
 

Here’s the short recap you asked for.
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.
What I did to resolve
  • 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.
Current status and next step
  • 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).
If you want, I can post a single “apply + rollback” PowerShell script for the final stable NIC settings, or draft a short ISP ticket template using the measurements you’ve gathered.
 

Back
Top