Tuesday 29 December 2020

Using Netsh for Wi-Fi Troubleshooting


Netsh, or network shell, is very powerful network utility that allows you to display or modify the network configuration of a computer that is currently running.
Netsh, among many other things, also allows you edit wireless settings (for example, SSID), start/stop WLAN, change the key or manage WLAN profiles. To be honesst all these topics are out of scope of this post. 
The key point of this blog post is the Troubleshooting of the Wi-Fi communication. In this post I will show you how you can use the Netsh to localize a Wi-Fi issue from the Windows client’s side. 
By WLAN Troubleshooting it is sometimes important to look at the WLAN issue from the client’s perspective. Using the Netsh you can collect information about link quality, generate a WLAN report with detailed information about all last issues or even capture 802.11 frames.


Contents
  • Netsh SHOW Commands
    • Collecting Wi-Fi link information
      • netsh wlan show interfaces
      • netsh wlan show wlanreport
    • Checking Wireless Adapter Capabilities
      • netsh wlan show wirelesscapabilities
      • netsh wlan show drivers
  • Netsh TRACE Commands
    • Using Netsh for packet capture
    • Useful Netsh Trace Filters
  • Links


Netsh SHOW Commands

Collecting Wi-Fi link information 

netsh wlan show interfaces

Use this command to see specific wireless adapter information, such as radio type, channel number, RSSI, up- and down-link data rate and type of authentication your computer is currently using.

PS C:\Users\itunakin> netsh wlan show interfaces

 
There is 1 interface on the system:
 
    Name                                    : WLAN
    Description                           : Intel(R) Wireless-N 7260
    GUID                                     : d4bced40-c85a-4912-a361-04734932bade
    Physical address                  : d8:fc:93:36:30:17
    State                                      : connected
    SSID                                       : GoGo
    BSSID                                     : 44:4e:6d:90:71:be
    Network type                       : Infrastructure
    Radio type                            : 802.11n
    Authentication                     : WPA2-Personal
    Cipher                                   : CCMP
    Connection mode                : Profile
    Channel                                : 13
    Receive rate (Mbps)            : 144.4    
    Transmit rate (Mbps)         : 144.4
    Signal                                    : 99%
    Profile                                   : GoGo
 
    Hosted network status       : Not available

“Rate” and “Signal” are most important for troubleshooting.

A signal quality between 80 and 100 percent corresponds to, the reliable connection. A signal above 70 percent is still good. Anything below 60 percent means you have a weak signal and this connection is not recommended for time sensitive communication. To calculate the received signal strength in dBm, you can use the formula: (% number / 2) - 100 = dBm. However, this is not accurate for all adapters.

Using the information about received and transmit rates, you can find out which MCS are used for downlink and uplink and, as a result, find out the information about modulation, coding rate, number of spatial streams, channel width, and guard interval. (You can use the MCS table for 802.11ac from the WirelessLAN Professionals’ site found here.) The MCS is sometimes very useful to know. For example, if the signal strength is 90% or more, and the device uses low MCS, it could mean that the receiver is affected by interference. As a result, the transmitter needs downgrade the modulation

To continually monitor and log the output of the 'netsh wlan show interfaces' command I would kindly recommend you look at two scripts from two experienced WLAN engineers:

This script provides the following features and functionality
  • A Windows GUI to continually monitor the output from the ‘netsh wlan show interface’ command
  • Configurable signal strength and data rate thresholds allow the users to control the levels at which the current signal strength and data rates will be disabled in green or red text.
  • An optional log – When logging is enabled, the output from each instance of the ‘netsh wlan show interface’ command will be written to a comma separated csv file in ASCII format so it can be easily opened by tools such as Excel.
  • A roaming log showing each roam.

netsh wlan show wlanreport

It's a very detailed report that can help you troubleshoot many Wi-Fi connectivity issues.

To get the report you must run this command from a command prompt with administrator privilege.

This command generates a report showing recent wireless session information (by default from the last three days)

The WLAN reports contain a graph with details of the connectivity status, including information, such as when the connection started, when it got disconnected, errors, and more.

The graph is interactive. You can point on an icon of a invent to see a description in the summary window or just click on it to see more detailed information.

These events are color coded and can help you to diagnose problems. The summary chart has a definition for each of the different colors.

The report also summarizes network adapters information configured on your system, session success/failures, disconnect reasons, and a lot more. It contains outputs for commands ipconfig /all and netsh wlan show all, among other things.

There is also very helpful summery section which describe disconnect reason.


Options

The duration of the report can be changed. For example, to create the report for last week use the command: netsh wlan show wlanreport duration="7"

 You can provide the path to an .etl file to use as the source of events instead of the machines event log: netsh wlan show wlanreport log="path\file.etl"

 For more details see the article from Microsoft “Analyze the wirelessnetwork report

 

    Checking Wireless Adapter Capabilities

        netsh wlan show wirelesscapabilities 

Use this command to validate that your device supports WFI Direct, can work as an access point, how many Spatial Streams does it support, is it MU-MIMO capable, what kind of ramming support features dies it support (802.11k, 802.11v, 802.11w)

More information: Miscellaneous technical details and validation


        netsh wlan show drivers

Use this command to view WLAN interface and driver information such as:

  • detailed information about your driver, like driver version, file name, version, date
  • supported Wi-Fi standards
  •  security methods provided by adapters
  • supported radio PHY

More information: How to manage wireless networks using Command Prompt inWindows 10


    Netsh TRACE Commands

        Using Netsh for packet capture

Very often the packet sniffing the only way to understand what is going on in a WLAN and why Wi-Fi is not working properly? Packets newer lie! It is not my thought, but I totally agree with it. 
However, what would you do if you had a roaming issue at a remote site? Sure, if you have access to the infrastructure you can capture packets from access points, but it is difficult to predict which AP will be the next the client roams to. So, sometimes it is impossible to capture WLAN frames on site with a portable packet sniffer or to do it centralized from a controller. In these cases, the only solution is a troubleshooting on client site.

In this blog I would like to share my personal experience and describe how to collect network trace without installing Wireshark on a Windows OS.

Windows has a built-in netsh capture command that allows you to capture network traffic.
  1. Enable tracing for all components produces a lot of log files for processes that are not related to wireless authentication and can consume system resources.
  2. To start the network trace on the Wi-Fi adapter just run the command line (CMD or PowerShell) netsh trace start capture=yes scenario=WLAN traceFile= path\file.etl 
  3. Tracing will stop when the "netsh trace stop" command is issued or when the system reboots. This command takes some time to run. Do not surprise if it takes some minutes to run.
netsh trace start      - is always at the beginning of the command
capture=yes             - ensures network trace is captured
scenario=WLAN     - Troubleshoot wireless LAN related issues
traceFile= path\file.etl - specifies location of the output file. The default location is %LOCALAPPDATA%\Temp\NetTraces\NetTrace.etl

As a result, two files will be generated: 
  • one of them with the extension ETL is a packet capture trace file and 
  • another one with the extension CAB is an archive which contains system Information, technical detail of the wireless adapter, the driver, settings, IP configuration and more.
Unfortunately, this trace will not be opened directly in Wireshark. It does not support this format of trace. To convert the ETL file there are two options:
  • use Microsoft Message Analyzer and export the file to a CAP file. The problem is it does not work for decrypted packets. 
  • use etl2pcapng script (the link is below). It easy to use and you do not need to install any software. Just put the ETL file and the etl2pcapng script in one folder and run the tool with: etl2pcapng.exe in.etl out.pcapng
After converting the file, the tool prints a table which shows mappings between Windows interface indices and pcapng interface IDs.

After the converting you can open the standard PCAPNG file in the Wireshark

The problem is we can only see the traffic in the uplink. The information in all downlink packets cannot be decrypted after the 802.11 header. To solve this problem open protocol preferences and choose ‘Yes - without IV’

Now you can see all details.

    Useful Netsh Trace Filters

Using filters, you can keep your capture file sizes down. This is especially good because you capture data on a client device. Use 'netsh trace show CaptureFilterHelp' to display a list of supported capture filters and their usage.
Most useful filters for Wi-Fi capturing are:

Netsh trace Capture Filter

Wireshark Capture Filter

PacketTruncateBytes=<value>

frame slice value

Ethernet.Address=<xx-xx-xx-xx-xx-xx>

wlan.addr==<xx:xx:xx:xx:xx:>


PacketTruncateBytes=<value> 
If you apply a PacketTruncateBytes value, then captured only the specified number of bytes of each packet. It is working like the frame slice value at the Wireshark
frames will be sliced off after the number of bytes specified in this field. Be careful and do not restrict the packet size too aggressive to be sure you do not lose useful network information from management frames. The largest management frames are beacons. I have never seen a beacon large than 430 bytes. So, I would recommend do not limit the packet size below 450 bytes.
e.g. PacketTruncateBytes=450

 Ethernet.Address=<MAC address>
This is another useful filter for keeping the level of traffic down. Matches the specified filter against both source and destination. For example, you could filter out FF-FF-FF-FF-FF-FF if you interested in broadcast traffic only.

Wifi.Type=<Management|Data>
Matches the specified filter against the Wifi type. Allowed values are 'Management' and 'Data'. If not specified, the Wifi.Type filter is not applied.
Note: This capture filter does not support ranges, lists or negation.
 e.g. Wifi.Type=Management

Links

Microsoft “Analyze the wireless network report”
https://support.microsoft.com/en-us/help/4000462/windows-10-analyzing-wireless-network-report

Analyze the wireless network report
https://support.microsoft.com/en-us/windows/analyze-the-wireless-network-report-76da0daa-1db2-6049-d154-7bb679eb03ed#:~:text=At%20the%20command%20prompt%2C%20type,by%20Wi%2DFi%20connection%20sessions.

Validation Wireless Protection
https://docs.microsoft.com/en-us/windows-hardware/design/device-experiences/wireless-projection-validation-misc

More info: How to manage wireless networks using Command Prompt in Windows 10
https://www.windowscentral.com/how-manage-wireless-networks-using-command-prompt-windows-10

etl2pcapng 
https://github.com/microsoft/etl2pcapng

Data collection for troubleshooting 802.1X authentication
https://docs.microsoft.com/en-us/windows/client-management/data-collection-for-802-authentication

The Windows WLAN Monitor Script – MackenzieWiFi
http://mackenziewifi.com/index.php/2020/01/02/windows-wlan-monitor-script/

The Nigel Bowden’s script to write WLAN netsh information to a file:
https://github.com/wifinigel/win-wlan-data-script

MCS table for 802.11ac from the WirelessLAN Professionals:
https://wlanprofessionals.com/mcs-snr-rssi-chart/

No comments:

Post a Comment