TCP Optimizer 4 (Windows 7 / 8 / 10 / 2012/2019 Server are all supported)

Get help and discuss anything related to tweaking your internet connection, as well as the different tools and registry patches on the site. TCP Optimizer settings and Analyzer results should be posted here.
Djfe
New Member
Posts: 11
Joined: Thu Jun 21, 2018 8:57 pm

Post by Djfe »

Might be, though I've selected only one of them, after all (in the dialogue above)

The output:
Image
User avatar
Philip
SG VIP
Posts: 11527
Joined: Sat May 08, 1999 5:00 am
Location: Jacksonville, Florida

Post by Philip »

We found a typo with applying the LargeSendOffload, it's been corrected in the latest TCP Optimizer version.
Djfe
New Member
Posts: 11
Joined: Thu Jun 21, 2018 8:57 pm

Post by Djfe »

Thx, I can confirm that it's working now :)

Have you looked at RSS as well?
I'm ready to provide any info you need for fixing the bug, that prevents your tool from reading out RSS values.
Get-NetAdapterRss shows "enabled true" after all ^^

Setting rss to false in the tool -> Get-NetAdapterRss still shows "enabled true" (after reboot)

EDIT:
Setting ecn to enabled/disabled works

"Default" just keeps the value as it is. (true or false)
Is that intended?
User avatar
Philip
SG VIP
Posts: 11527
Joined: Sat May 08, 1999 5:00 am
Location: Jacksonville, Florida

Post by Philip »

"Default" applies the command as described in the MS documentation, some settings have "enabled/disabled/default" option. Will check RSS. Glad Lso is working as intended now.
User avatar
Philip
SG VIP
Posts: 11527
Joined: Sat May 08, 1999 5:00 am
Location: Jacksonville, Florida

Post by Philip »

RSS at program start is read from:

netsh int tcp show global
Receive-Side Scaling State: enabled
ukue
New Member
Posts: 13
Joined: Wed Apr 29, 2015 6:40 am

Post by ukue »

Image

Still getting blank space in RSS and RSC current values
User avatar
Philip
SG VIP
Posts: 11527
Joined: Sat May 08, 1999 5:00 am
Location: Jacksonville, Florida

Post by Philip »

Can you post a screenshot of command prompt: netsh int tcp show global

If it doesn't have lines for "Receive-Side Scaling State", or "Receive Segment Coalescing State" they will not show at program start. This is likely OS-version, or NIC dependent.

The program should still apply the settings, if available.
User avatar
Ashdaw
Posts: 983
Joined: Tue Dec 12, 2000 12:00 am
Location: Smithfield, New South Wales, Australia, Australia

Post by Ashdaw »

I just downloaded the latest 4.08 and I am wondering if I should be changing the CTCP to Cubic?
One other thing, would it be advantageous to change the connection speed to 100Mbps?
The attachment Net.108.jpg is no longer available
Attachments
Net.108.jpg
Main Computer:
GA97X G3
i7 4790K
GTX960
32gb Ram
1TB Samsung 860 SSD
NZXT Case
ukue
New Member
Posts: 13
Joined: Wed Apr 29, 2015 6:40 am

Post by ukue »

Philip wrote:Can you post a screenshot of command prompt: netsh int tcp show global

If it doesn't have lines for "Receive-Side Scaling State", or "Receive Segment Coalescing State" they will not show at program start. This is likely OS-version, or NIC dependent.

The program should still apply the settings, if available.
Image
Djfe
New Member
Posts: 11
Joined: Thu Jun 21, 2018 8:57 pm

Post by Djfe »

For me those settings are the first two entries (I think)
Image

I'm not sure whether your programm gets them in english or german though (when relying on powershell)
User avatar
Philip
SG VIP
Posts: 11527
Joined: Sat May 08, 1999 5:00 am
Location: Jacksonville, Florida

Post by Philip »

Ashdaw wrote:I just downloaded the latest 4.08 and I am wondering if I should be changing the CTCP to Cubic?
One other thing, would it be advantageous to change the connection speed to 100Mbps?
Ashdaw, I would put your advertised connection speed in the TCP Optimizer. With Windows 10, it won't make much difference. As to "Cubic" vs "CTCP" they are the two best choices currently, both are good, you can use either.
Linux is user friendly, it's just picky about its friends...
Disclaimer: Please use caution when opening messages, my grasp on reality may have shaken loose during transmission (going on rusty memory circuits). I also eat whatever crayons are put in front of me.
๑۩۞۩๑
User avatar
Philip
SG VIP
Posts: 11527
Joined: Sat May 08, 1999 5:00 am
Location: Jacksonville, Florida

Post by Philip »

Djfe wrote:For me those settings are the first two entries (I think)

I'm not sure whether your programm gets them in english or german though (when relying on powershell)
The program reads them in your native Windows language, it shows empty if it does not recognize the setting. It will still apply the settings correctly, it just wont read the RSS/RSC on program start because of the language difference. We may add those translations in the next version, thanks for the screenshots.
User avatar
Ashdaw
Posts: 983
Joined: Tue Dec 12, 2000 12:00 am
Location: Smithfield, New South Wales, Australia, Australia

Post by Ashdaw »

Thanks Philip, I will do that. :)
Main Computer:
GA97X G3
i7 4790K
GTX960
32gb Ram
1TB Samsung 860 SSD
NZXT Case
User avatar
Philip
SG VIP
Posts: 11527
Joined: Sat May 08, 1999 5:00 am
Location: Jacksonville, Florida

Post by Philip »

ukue and Djfe, can you please try the following command in command prompt (not PowerShell):

chcp 437 && netsh int tcp show global

Does it show the results in English?

Thanks.
ukue
New Member
Posts: 13
Joined: Wed Apr 29, 2015 6:40 am

Post by ukue »

Nope, It doesn't. It is in the OS language ( spanish in my case)
Djfe
New Member
Posts: 11
Joined: Thu Jun 21, 2018 8:57 pm

Post by Djfe »

I can confirm that.
It still displays the message in German for me
User avatar
Philip
SG VIP
Posts: 11527
Joined: Sat May 08, 1999 5:00 am
Location: Jacksonville, Florida

Post by Philip »

What about when executed as two separate commands, i.e.

chcp 437 [ENTER]

netsh int tcp show global

If that doesn't work, I am afraid we'd have to parse the output for different languages to get it to display properly on program start :/
Djfe
New Member
Posts: 11
Joined: Thu Jun 21, 2018 8:57 pm

Post by Djfe »

Doesn't make any difference sadly
seems like MS kinda screwed up there for netsh
And you definitely aren't the only one puzzled by that

Even this doesn't work:
https://itworldjd.wordpress.com/2013/11 ... -language/

(I found lots of stackoverflow threads and stuff like that

Even the go language had to work around it haha
https://github.com/golang/go/issues/14859
https://go-review.googlesource.com/c/go/+/20865
https://go-review.googlesource.com/c/go/+/21195)

But they don't seem to be willing to change it's functionality anymore.
https://docs.microsoft.com/en-us/window ... etsh/netsh
It is recommended that you use Windows PowerShell to manage networking technologies in Windows Server 2016 and Windows 10 rather than Network Shell. Network Shell is included for compatibility with your scripts, however, and its use is supported.
Are there infos you can't get with powershell/WMI right now?

There are lots of available APIs

Code: Select all

Get-NetAdapter
Get-NetAdapterRsc
Get-NetAdapterRss
Get-NetOffloadGlobalSetting
Get-NetTCPSetting
Get-NetIPInterface
Especially
Get-NetOffloadGlobalSetting
seems to be ideal for getting global rss and rsc
User avatar
Philip
SG VIP
Posts: 11527
Joined: Sat May 08, 1999 5:00 am
Location: Jacksonville, Florida

Post by Philip »

Do the Powershell variants display their results in English?

Get-NetOffloadGlobalSetting
Get-NetAdapterRsc
Get-NetAdapterRss

The reason we were using netsh for some of the commands is backwards compatibility with Windows 7/8, there are different Powershell cmdlet implementation levels/bugs for each OS.
Linux is user friendly, it's just picky about its friends...
Disclaimer: Please use caution when opening messages, my grasp on reality may have shaken loose during transmission (going on rusty memory circuits). I also eat whatever crayons are put in front of me.
๑۩۞۩๑
Djfe
New Member
Posts: 11
Joined: Thu Jun 21, 2018 8:57 pm

Post by Djfe »

I think I found the "solution" urgh (for netsh anyways)

Microsoft saves all those strings in the corresponding ressource files, the dlls

in this case probably "netshell.dll"

How did I find this out?
First things I found out
https://u-tools.com/help/RemoteMgmtServer.asp
https://social.technet.microsoft.com/Fo ... erversetup
https://docs.microsoft.com/de-de/previo ... t_grouping
https://docs.microsoft.com/de-de/previo ... oup-string
https://stackoverflow.com/questions/423 ... ect-string
https://books.google.de/books?id=2u-34S ... gs&f=false


All interesting but not about netsh, yet.
But it's likely that it will work this way with netsh as well.

The relevant links (to solving this problem) tl;dr
https://blogs.msdn.microsoft.com/oldnew ... 00/?p=8243
https://blogs.msdn.microsoft.com/oldnew ... /?p=40813/
https://docs.microsoft.com/de-de/window ... edirection
https://docs.microsoft.com/de-de/window ... ed-strings

searching with regedit for "netshell.dll,-" also reveals what some of the localized strings are (String and id); but also some ids for icons
(the relevant strings don't seem to be duplicated in the registry, but you could use the code described in above scripts to find the ids you need)

maybe relevant(?)
http://www.jasinskionline.com/windowsap ... angid.html
https://xpdll.nirsoft.net/netshell_dll.html (maybe xp didn't include the relevant strings, yet? apart from that important table!)

YESSSS! SUCCESSS!!! Found the sneaky bastard.
https://www.win7dll.info/netiohlp_dll.html
Or the newer dll (Win10): http://windows10dll.nirsoft.net/netiohlp_dll.html
ID:4478

Code: Select all

---------------------------------------------- Receive-Side Scaling State : %1!s! Chimney Offload State : %2!s! NetDMA State : %7!s! Direct Cache Acess (DCA) : %8!s! Receive Window Auto-Tuning Level : %3!s! Add-On Congestion Control Provider : %4!s! ECN Capability : %5!s! RFC 1323 Timestamps : %6!s!
If you need backwards compatibility to older OSes, then you should use the commands from above to get the localized string from netiohlp.dll (to be able to parse, in which line which result is printed)

I just saw, that you answered already, here's what it looks like:
Image
seems like my network adapters don't support rsc (it's enabled globally in the OS though)
Djfe
New Member
Posts: 11
Joined: Thu Jun 21, 2018 8:57 pm

Post by Djfe »

I'm still looking
maybe this is also helpful
https://stackoverflow.com/questions/461 ... powershell
User avatar
Philip
SG VIP
Posts: 11527
Joined: Sat May 08, 1999 5:00 am
Location: Jacksonville, Florida

Post by Philip »

We may have to change the way the program reads RSS and RSC at startup, we just have to test which OSes are compatible (and correctly display) Get-NetOffloadGlobalSetting.

Some Windows versions/builds had discrepancies in what is returned with netsh vs PowerShell cmdlets for some of the settings, hence the mixture of methods used by the program. We will likely resort to using PowerShell, at least for newer OS variants.
User avatar
Philip
SG VIP
Posts: 11527
Joined: Sat May 08, 1999 5:00 am
Location: Jacksonville, Florida

Post by Philip »

The TCP Optimizer has been updated to version 4.0.9.

It now reads RSS and RSC at startup via PowerShell. We also changed the way they are applied to the global PowerShell setting. The recommended optimal RSC setting was changed to "disabled" as well, as it is better disabled for gaming/latency and Wi-Fi adapters.


Djfe and ukue, please confirm if it now correctly reads RSS and RSC on startup with your international Windows variants? Thanks in advance.
Djfe
New Member
Posts: 11
Joined: Thu Jun 21, 2018 8:57 pm

Post by Djfe »

yes, it works :)
Image
ukue
New Member
Posts: 13
Joined: Wed Apr 29, 2015 6:40 am

Post by ukue »

Philip wrote:The TCP Optimizer has been updated to version 4.0.9.

It now reads RSS and RSC at startup via PowerShell. We also changed the way they are applied to the global PowerShell setting. The recommended optimal RSC setting was changed to "disabled" as well, as it is better disabled for gaming/latency and Wi-Fi adapters.


Djfe and ukue, please confirm if it now correctly reads RSS and RSC on startup with your international Windows variants? Thanks in advance.
It works now! thank you so much for your work!!
User avatar
Philip
SG VIP
Posts: 11527
Joined: Sat May 08, 1999 5:00 am
Location: Jacksonville, Florida

Post by Philip »

Thanks for the feedback, glad it's working now :)
MagikMark
Regular Member
Posts: 100
Joined: Thu Nov 21, 2013 8:57 pm

Post by MagikMark »

Philip,

Can we also check the LSO. In my case it doesn't read it right in Windows 10 PRO x64. Tried experimenting with it. Enabled it using poweshell and the app still reads it as "disabled"
User avatar
Ashdaw
Posts: 983
Joined: Tue Dec 12, 2000 12:00 am
Location: Smithfield, New South Wales, Australia, Australia

Post by Ashdaw »

The new version works really well Philip. :)
Main Computer:
GA97X G3
i7 4790K
GTX960
32gb Ram
1TB Samsung 860 SSD
NZXT Case
User avatar
Philip
SG VIP
Posts: 11527
Joined: Sat May 08, 1999 5:00 am
Location: Jacksonville, Florida

Post by Philip »

MagikMark wrote:Philip,

Can we also check the LSO. In my case it doesn't read it right in Windows 10 PRO x64. Tried experimenting with it. Enabled it using poweshell and the app still reads it as "disabled"
Not all adapters support LSO.. What is the ouput of this PowerShell cmdlet in your system?

Get-NetAdapterLso -Name *
MagikMark
Regular Member
Posts: 100
Joined: Thu Nov 21, 2013 8:57 pm

Post by MagikMark »

Image

I disabled it for now
User avatar
Philip
SG VIP
Posts: 11527
Joined: Sat May 08, 1999 5:00 am
Location: Jacksonville, Florida

Post by Philip »

MagikMark wrote:Image

I disabled it for now
Mark, this should be read correctly. In order for us to troubleshoot it further, can you please copy the command output and paste it into a text file, then email it to me ( philip @ sg ) ? Thanks.
erpguy2
Member
Posts: 25
Joined: Thu Aug 14, 2014 8:37 pm

Post by erpguy2 »

one minor problem with latest version of TCP Optimizer. It seems to "mis-identify" Windows 10 Pro v1803 as "Windows 10 Enterprise build 17134" on one of my computers

Image

it should be updated to correctly recognize the proper edition of Win10 v1803 RS4 version
User avatar
Philip
SG VIP
Posts: 11527
Joined: Sat May 08, 1999 5:00 am
Location: Jacksonville, Florida

Post by Philip »

Thanks for the info. The build number is correct (17134.254), just the "Enterprise" wording is incorrect.

Seems this is a Microsoft omission. Reading from the Windows Registry, the 32-bit location of "ProductName" shows the correct "Windows 10 Pro" wording, while the 64-bit equivalent shows "Windows 10 Enteprise" :

32-bit: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProductName
64-bit: HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\Windows NT\CurrentVersion\ProductName
User avatar
Philip
SG VIP
Posts: 11527
Joined: Sat May 08, 1999 5:00 am
Location: Jacksonville, Florida

Post by Philip »

It has been updated to properly read "Pro" instead of "Enterprise", if you re-download the exe from our site. There are no functionality changes, so the program version was not changed from 4.0.9.
horseshoe
New Member
Posts: 2
Joined: Tue Dec 18, 2018 5:43 pm

Post by horseshoe »

Philip wrote:It has been updated to properly read "Pro" instead of "Enterprise", if you re-download the exe from our site. There are no functionality changes, so the program version was not changed from 4.0.9.
My download of this tool has the apply link greyed out. My Optimizer looks like the ones already posted with the apply link greyed out. Is this supposed to be that color, or should this novice click elsewhere?
Djfe
New Member
Posts: 11
Joined: Thu Jun 21, 2018 8:57 pm

Post by Djfe »

You need to choose settings first
by selecting checkboxes at the bottom of the program

Optimal is a profile that selects the values of which the author of this program thinks that they are more optimal than the default ones of windows

Custom allows you to set each variable to values that you prefer

you can also do optimal first, then apply it and then customize it afterwards :)
horseshoe
New Member
Posts: 2
Joined: Tue Dec 18, 2018 5:43 pm

Post by horseshoe »

Djfe wrote:You need to choose settings first
by selecting checkboxes at the bottom of the program

Optimal is a profile that selects the values of which the author of this program thinks that they are more optimal than the default ones of windows

Custom allows you to set each variable to values that you prefer

you can also do optimal first, then apply it and then customize it afterwards :)
Thanks. That worked. Now to test the program. Should any visible changes be noticed?
User avatar
Philip
SG VIP
Posts: 11527
Joined: Sat May 08, 1999 5:00 am
Location: Jacksonville, Florida

Post by Philip »

horseshoe wrote:Thanks. That worked. Now to test the program. Should any visible changes be noticed?
How visible the changes are depends on your line. Problematic connections, older OSes, in the presence of packet loss, etc. will have a more visible change right away. Fast, working connections, close to the advertised speed limit will only see visible difference in connections to more distant servers even though the connection is better optimized on your end.
vgchat
New Member
Posts: 3
Joined: Sat Nov 05, 2016 11:06 pm

Post by vgchat »

Hey there, this tool needs upgrading... since it can only optimize for up to 100 mbps. What about those of us on 1GB speeds?
User avatar
Philip
SG VIP
Posts: 11527
Joined: Sat May 08, 1999 5:00 am
Location: Jacksonville, Florida

Post by Philip »

Hello vgchat,

It is 100+ Mbps, including 1GBps. The same settings are applied for 100Mbps and up. The only difference would be bumping the TCP Window auto-tuning algorithm even higher (from "normal" to "experimental"), nut we've found that it makes PCs unstable in high-speed transfers, as it can consume too much memory unnecessarily, and it also causes issues with local LAN shares transfers.
Linux is user friendly, it's just picky about its friends...
Disclaimer: Please use caution when opening messages, my grasp on reality may have shaken loose during transmission (going on rusty memory circuits). I also eat whatever crayons are put in front of me.
๑۩۞۩๑
Post Reply