skype for business , unified communications , Updates , | 2016/09/29 at 1:01pm

Skype for Business Network Assessment Tool – How to run on Server 2012 R2 OS

Skype for Business Network Assessment Tool (Free) – Running on Server OS

A few days ago Microsoft released a free Skype for Business Online Network Assessment Tool. Tom Arbuthnot has a good roundup here – The tool tests the connection to Microsoft Network Edge by streaming a set of packets to the nearest edge site and back for approximately 20s for a configured number of iterations. The tool reports:

  • Packet loss
  • Jitter
  • Round-trip latency
  • Reorder packet percentage

This only simulates a single audio call to the Skype for Business Media Edge, so it’s not a full network assessment tool. It will give you indicative quality of your network, but doesn’t take into account videoconferencing calls or desktop sharing. Something like the Integrated Research (IR) UC Assessor tool would be more suitable when it arrives shortly.

The results from using this tool can be used as part of a network assessment to determine if a network connection meets the targets that Microsoft publish for quality usage of Skype for Business Online.

Network Performance requirements from a Skype for Business client to Microsoft Network Edge













Network performance requirements from your network Edge to Microsoft Network Edge


We had a customer running the tool on some remote Server 2012 machines at remote sites – but couldn’t run this tool. It was throwing this error:

“Audio call started. Waiting for call to end…

Call should end shortly after configured duration of 17 s.

Unhandled Exception: System.IO.FileNotFoundException: Could not load file or assembly ‘Microsoft.Rtc.Internal.Media.dll’ or one of its dependencies. The specified module could not be found.”

It was quite puzzling. I had installed Media Foundation, Desktop Experience, the Skype for Business 2016 Basic client, trying to emulate a normal desktop OS for the purposes of this tool. But it was still failing. I had a bunch of Server OS virtual machines in my lab that worked fine, so I put this down to either patches or features installed. I dug a bit further and this article helped me out:

It looked to be something relating to the Windows 10 Universal C Runtime not being supported in my builds of Windows Server 2012 R2.

So the long and the short of it is…

  • Server OS needs Media Foundation, Desktop Experience installed from the Features menu or DISM.
  • You also need KB KB2999226
  • But it has pre-requisites of installing KB2919355,
    • You also need to follow this order – they must be installed in the following order: exe, KB2919355, KB2932046, KB2959977, KB2937592, KB2938439, and KB2934018.
  • But before you install KB2919355 you need to install KB2919442 is a prerequisite for Windows Server 2012 R2 Update and should be installed before attempting to install any of the other KBs!

So a bit complicated but this combination should get you there.

For customers over this side of the Pond, I also updated my NetworkAssessmentTool.exe.config to change the relay IP to the local anycast address for ( rather than

<?xml version=”1.0″ encoding=”utf-8″ ?>



<supportedRuntime version=”v4.0″ sku=”.NETFramework,Version=v4.5″ />



<add key=”Relay.IP” value=”″/>

<!– At least one of the following two protocols must be configured   –>

<!– Configure only one if testing only one protocol                  –>

<!– If both are configured, UDP will be preferred if it is available –>

<add key=”Relay.UDPPort” value=”3478″/>

<add key=”Relay.TCPPort” value=”443″/>

<!– WMAFilePath configures the WMA file to be streamed                            –>

<!– WMAOutputFilePath contains the received audio (for the duration of the call). –>

<!– If WMAOutputFilePath already exists, the existing file will be overwritten.   –>

<add key=”WMAFilePath” value=”Tone.wma”/>

<add key=”WMAOutputFilePath” value=”ReceivedAudioFile.wma”/>

<add key=”NumIterations” value=”1″/>

<add key=”ResultsFilePath” value=”results.tsv”/>

<add key=”Delimiter” value=”             “/>

<add key=”IntervalInSeconds” value=”5″/>