PowerSDR mRX PS and my Win10 Laptop

PowerSDR mRX PS and my Win10 Laptop, or how to loose hair without sleep.

Having upgraded my Laptop, from an old Dualcore IBM 2 GB Wireless B, Win 7 system to an HP Core I5 8 GB Wireless N, Win 10 system I was disappointed to find that I had huge issues running PowerSDR (3.3.6). No issues on the old Laptop at 96k primary sample rate, I was barely able to run PowerSDR at 48k sample rate on the new system. Every few minutes the system had issues with the audio reproduction, i.e. stuttering and stopping for up to 30 - 45 seconds.

Investigation and research on the internet was pointing to latency issues and so I downloaded a few different latency checkers to see what is going on. Voila, latency issues according to LatencyMon are with ndis.sys, but looking at Taskmanagers Network Performance monitor I found that I had plenty of bandwidth available, yet the Network throughput dropped. Next using Resource Monitor to monitor all Network Activity I found a huge number of strange things happening, i.e. svchost.exe communicating with lots of systems on the internet. Oh and that was without running any application, i.e.Firefox, Skype etc.

So I started writing down the IP addresses and checked what the hell was going on. More research informed me that Micro$ was gathering information from me. To cut a long story short I found a few programs that do create the appropriate Firewall/Group Polices and Registry entries to stop this from happening. Some small success, more a piece of mind issue (see Appendix).

Ok, lets query the biggest brain on the planet and ask for help (nope it is not, it is you and all the others that put this kind of information out on the INTERNET).

Apparently the latest Intel wireless driver for the Intel Dual Band Wireless-AC 7260 is the culprit (looks like it has been withdrawn from the Intel site). So I removed the driver and installed an older driver (I installed 18.33.01, apparently 19.01 should be the last one that doesn't have this issue).

Hurrah, a big improvement, but only an improvement. There are still small audio stops every so often (10 - 15 seconds in length).

So more research needed. Because it looked like there are I/O issues I focused my queries on IRQ, Latency, Scheduling, network configuration etc., etc. and here is what I've found and implemented to improve system performance on MY Laptop to run PowerSDR on a Win 10 Laptop.

The first thing I did was to get into the WiFi Properties and disable all the additional MS crud that I don't need (YMMV).

I kept the following:

            • Client for Microsoft Networks (I need, but you might not need YMMV)
            • File and Printer Sharing for Microsoft Networks (see above)
            • Internet Protocol Version 4 (TCP/IPv4)

And disabled these:

  1. QoS Packet Scheduler (I don't use VoIP on me laptop and so I disable this, however as before YMMV)
  2. Link-Layer Topology Discovery Mapper I/O Driver (Don't need to have Windows build me a "GRAPHICAL" view of my home network)
  3. Microsoft Network Adapter Multiplexor Protocol (I do not "TEAM" multiple WiFi Nic's)
  4. Microsoft LLDP Protocol Driver (see 5.)
  5. Internet Protocol Version 6 (TCP/IPv6) (YMMV)
  6. Link-Layer Topology Discovery Responder (see. 5.)

Here is the my BASIC tuning, i.e. MY starting point before I apply the ADVANCED tuning.

NOTE: Modifying the Registry or the System Policies is not for the faint of heart. So before you do this you might make a backup of your registry or create a restore point in case you make a mistake. I take NO responsibility for you making changes to your system.

All the following can be done via some graphical systems modification tools (regedit or gpedit), I however thought it better to give you command lines which you can copy and paste. This could (should) make thinks easier and safer, but again YMMV. If you are familiar with the GUI-Tools by all means use what you are comfortable with.

So the first step is to open a Powershell (the new version of cmd) as Administrator.

NOTE: You have to start Powershell as ADMINISTRATOR, as we are going to make systems changes.

First I make sure that ALL TCP/IPv6 components are disabled. Disabling v6 DOES not disable ALL v6 components.

The v6 loopback interface will not be disabled some of the internal processes relying on the v6 loopback interface.

At last, at the Powershell prompt (PS C:\WINDOWS\system32>) type the following:


reg query HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip6\Parameters /v DisabledComponents >> $Env:HOMEPATH\regedit_bck.txt

NOTE: The above is one line! Your browser might have wrapped the line and displayed two line, but it sure is only one line.

The reg query command queries the value of the registry key, the >> $Env:HOMEPATH\regedit_bck.txt means to write (append) the output from the query in to the file regedit_bck.txt and the $Env:HOMEPATH is the location of the file, i.e your home directory (\Users\<user>).

If you do not write the command output to a file the return value (the stuff that will display on the screen) will look like this:


HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip6\Parameters DisabledComponents REG_DWORD 0xff

BUT ONLY IF THAT KEY EXISTS! If the KEY does not exist, the following ERROR message will be displayed.

ERROR: The system was unable to find the specified registry key or value.

If you get that error there is nothing to fear, all it means is that the specified registry key did not exist, and that the reg add command will add it to the list of keys.

So, lets add the key to disable all TCP/IPv6 components. At the Powershell prompt (PS C:\WINDOWS\system32>) type the following: (or copy and paste)


reg add HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip6\Parameters /v DisabledComponents /t REG_DWORD /d 255 /f

You can check if the command was successfully by running the following command:


reg query HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip6\Parameters /v DisabledComponents
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip6\Parameters DisabledComponents REG_DWORD 0xff

One more thing, the way I use the reg add command is to sets the key value in decimal (0-255), however the return value is in hexadecimal (0x0 - 0xff).

Next, I disabled the link local multicast name resolution (MDNS). I'm not using multicast on my home network and as DNS queries can bog the system I'll switch this off.

So, first the backup:


reg query "HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows NT\DNSClient" /v EnableMulticast >> $Env:HOMEPATH\regedit_bck.txt

Next switching it off by setting a new value in to the registry key:


reg add "HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows NT\DNSClient" /v EnableMulticast /t REG_DWORD /d 0 /f

Now the next key has to do with Microsoft Networks I do use that facility (File & Print sharing via the network) however, as LatencyMon had identified the ndis subsystem as a latency hogs I thought switching of signing EVERY SMB packet might help. So the next key disables SMB signing, again YMMV.


reg query HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters /v RequireSecuritySignature >> $Env:HOMEPATH\regedit_bck.txt
reg add HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters /v RequireSecuritySignature /t REG_DWORD /d 0 /f

Oh, and I also got rid of the SMB Multicasting.


reg query HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters /v EnableMulticast >> $Env:HOMEPATH\regedit_bck.txt
reg add HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters /v EnableSecuritySignature /t REG_DWORD /d 0 /f

The next registry keys are to tune the sound system for performance. I would say this is more for the advance user.

As before, we first create a backup, and then we set the key.


reg query "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Multimedia\SystemProfile" /v NetworkThrottlingIndex >> $Env:HOMEPATH\regedit_bck.txt
reg add "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Multimedia\SystemProfile" /v NetworkThrottlingIndex /t REG_DWORD /d 1 /f
reg query "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Multimedia\SystemProfile" /v SystemResponsiveness >> $Env:HOMEPATH\regedit_bck.txt
reg add "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Multimedia\SystemProfile" /v SystemResponsiveness /t REG_DWORD /d 0 /f
reg query "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Multimedia\SystemProfile\Tasks\Audio" /v "Scheduling Category" >> $Env:HOMEPATH\regedit_bck.txt
reg add "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Multimedia\SystemProfile\Tasks\Audio" /v "Scheduling Category" /t REG_SZ /d High /f
reg query "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Multimedia\SystemProfile\Tasks\Audio" /v "SFIO Priority" >> $Env:HOMEPATH\regedit_bck.txt
reg add "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Multimedia\SystemProfile\Tasks\Audio" /v "SFIO Priority" /t REG_SZ /d High /f
reg query "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Multimedia\SystemProfile\Tasks\Audio" /v "Latency Sensitive" >> $Env:HOMEPATH\regedit_bck.txt
reg add "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Multimedia\SystemProfile\Tasks\Audio" /v "Latency Sensitive" /t REG_SZ /d True /f
reg query "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Multimedia\SystemProfile\Tasks\Audio" /v Priority >> $Env:HOMEPATH\regedit_bck.txt
reg add "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Multimedia\SystemProfile\Tasks\Audio" /v Priority /t REG_DWORD /d 8 /f
reg query "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Multimedia\SystemProfile\Tasks\Audio" /v "GPU Priority" >> $Env:HOMEPATH\regedit_bck.txt
reg add "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Multimedia\SystemProfile\Tasks\Audio" /v "GPU Priority" /t REG_DWORD /d 31 /f
reg query "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Multimedia\SystemProfile\Tasks\Audio" /v BackgroundPriority >> $Env:HOMEPATH\regedit_bck.txt
reg add "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Multimedia\SystemProfile\Tasks\Audio" /v BackgroundPriority /t REG_DWORD /d 8 /f
reg query "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Multimedia\SystemProfile\Tasks\Pro Audio" /v "Scheduling Category" >> $Env:HOMEPATH\regedit_bck.txt
reg add "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Multimedia\SystemProfile\Tasks\Pro Audio" /v "Scheduling Category" /t REG_SZ /d High /f
reg query "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Multimedia\SystemProfile\Tasks\Pro Audio" /v "SFIO Priority" >> $Env:HOMEPATH\regedit_bck.txt
reg add "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Multimedia\SystemProfile\Tasks\Pro Audio" /v "SFIO Priority" /t REG_SZ /d High /f
reg query "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Multimedia\SystemProfile\Tasks\Pro Audio" /v "Latency Sensitive" >> $Env:HOMEPATH\regedit_bck.txt
reg add "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Multimedia\SystemProfile\Tasks\Pro Audio" /v "Latency Sensitive" /t REG_SZ /d True /f
reg query "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Multimedia\SystemProfile\Tasks\Pro Audio" /v Priority >> $Env:HOMEPATH\regedit_bck.txt
reg add "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Multimedia\SystemProfile\Tasks\Pro Audio" /v Priority /t REG_DWORD /d 8 /f
reg query "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Multimedia\SystemProfile\Tasks\Pro Audio" /v "GPU Priority" >> $Env:HOMEPATH\regedit_bck.txt
reg add "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Multimedia\SystemProfile\Tasks\Pro Audio" /v "GPU Priority" /t REG_DWORD /d 31 /f
reg query "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Multimedia\SystemProfile\Tasks\Pro Audio" /v BackgroundPriority >> $Env:HOMEPATH\regedit_bck.txt
reg add "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Multimedia\SystemProfile\Tasks\Pro Audio" /v BackgroundPriority /t REG_DWORD /d 8 /f

And last but not least, the following keys are for the VERY ADVANCE (keen). They are IRQ performance settings.

First we need to determine what IRQ our soundcard is using. I tried a few CLI tools, like wmic, or systeminfo, but msinfo32, which is a GUI-Tool provided the answer. So use msinfo32 and under System Summary, Hardware Resources, IRQs look for High Definition Audio Controller.

https://sites.google.com/site/vkonehw/home/radios/anan-100d/win10/IRQ.JPG

First we set the IRQ priority for the Real Time Clock.


reg query "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\PriorityControl" /v IRQ8Priority >> $Env:HOMEPATH\regedit_bck.txt
reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\PriorityControl" /v IRQ8Priority /t REG_DWORD /d 1 /fNext we set the IRQ priority for the Sound System. You need the IRQ number as determined above.
reg query "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\PriorityControl" /v IRQ22Priority >> $Env:HOMEPATH\regedit_bck.txt
reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\PriorityControl" /v IRQ22Priority /t REG_DWORD /d 1 /f

And last the priority for the System Timer.


reg query "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\PriorityControl" /v IRQ0Priority >> $Env:HOMEPATH\regedit_bck.txt
reg add HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\PriorityControl /v IRQ0Priority /t REG_DWORD /d 1 /f

Results:

Well, I can now run PowerSDR mRX PS (tested with 3.3.6) on my laptop using the WiFi interface with multiple receivers enabled and at a Primary Sample Rate at 384k without crackle and pops. I've not noticed any stops in the audio. Oh, and I can simultaneously watch a HD Video WITHOUT losing Video or Audio from either application (not that I want too), could try CuSDR.

So, yes it has made a difference FOR ME!

Again, I can not stress it enough, YOUR MILEAGE MAY VARY.

One last note if you do not use a Voice and/or Video application that needs QoS.

If you like to get rid of it follow the below steps.

Check if the following key is set to zero (0x0)


reg query HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\Psched /v NonBestEffortLimit

If the return value is not (0x0) run the following:


reg query HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\Psched /v NonBestEffortLimit >> $Env:HOMEPATH\regedit_bck.txt
reg add HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\Psched /v NonBestEffortLimit /t REG_DWORD /d 0 /f

One very last NOTE: I did create a new wisdom file after all the above modifications.

Here is a little video: multiple chained receivers with 384k primary sample rate, a 1.2 MHz spectrum display and no audio dropouts/stops! (Yep, I'm happy ... NOW)

© ¼ ½ ¾ ⅜ ⅝ @ π ω µ Ω ε η λ °© 2016 VK1HW