A simple program with GUI to display the RSS in dBm of available networks. Contains functionality for averaging the RSS values over given time intervals.
Go to the Microsoft Store and install the program.
Make sure you have Edge, Chrome, or Chromium installed since the application needs a browser for rendering.
- Download the installer (WiFi Strength Tester-x64.msix) from GitHub (can be found under Code or in Releases)
- To install the msix package you must add the package cert to the list of local machine trusted Certificate Authorities**
- Right Click and select properties on the downloaded msix package
- On the properties tab, click Unblock and then click Apply.
- On the Digital signatures tab, select the TestCert and Click Details.
- Click View Certificate
- Click Install Certificate
- Select Local Machine and Click Next*
- Click Yes in the User Account Control dialog
- Click Place all certificates in the following store, click Browse
- Select Trusted Root Certification Authorities and click OK.
- Click Next
- Click Finish
- Click OK to the dialog saying the import was successful.
- Right Click and select properties on the downloaded msix package
- Double click on the installer file and follow the instructions to install the application.
- At the end of the installer you can launch the WifiTester, or you can open the app from the start menu
- Click Collect Data
**You only need to do this once the first time you install one of my executables. I can't afford to buy an official certificate to sign the application, so bear with me on this one lol
- Download the WiFiStrengthTester zipfile, unzip it, and run the app.exe file inside it
- Download the single file app.exe and disable your antivirus lol
- Download the Source folder, make sure python 3.x.x and the necessary dependencies are installed, and run app.py
- Reads the RSS values directly using the Windows wlanapi.dll instead of deriving it from the signal quality (%)
- When multiple access points (BSSIDs) exist for the same SSID, the strongest connection is taken as measurement
- Occasionally a trial will not get a reading because new WiFi data is not available (this is potentially due to the routers not responding to too many requests in a short time frame). Connecting to the network being measured and keeping the sample rate (trials per time interval) low can lead to more complete scans
- Python spins up a webserver on localhost which talks to the electron app frontend (js, html, css) so having chrome or chromium installed is recommended
"WiFi devices only transmit when they actually have some data or an 802.11 management/control packet to send, and then only after certain channel access conditions have been satisfied. Generally speaking the remainder of the time the radio is either listening to detect a potential new packet to receive, actively attempting to receive a detected packet, or (in the case in a client device) in a power-save state where the radio is temporarily disabled to help conserve the battery" (https://www.quora.com/Do-wifi-devices-non-router-like-laptops-ipads-transmit-a-signal-constantly).
- Here wifi devices refers to both client devices and routers/APs
- In other words, there is not always a signal to measure the strength of
- Instead of caching old values and reusing them, the program simply takes no measurement when the wlanapi.dll has no new information available within the current trial
- To get more complete scans, you can attempt more trials
- Also make sure to be connected to the relevant network
If correctly installed it should look something like this:
- WinError 10048--Only one usage of each socket adress/port is normally permitted
Fix: You have some sort of unterminated process running on the port that WiFiTester uses (8080). Find it and kill it or compile the source code with a different port set in app.py
Updating using the msix installer is easy, you just download and run the new installer (no need to uninstall the program first).
- Removed extraneous entries in the data table for clarity
- Rounded mean RSS to the nearest integer to adhere to sig figs
- Disables the Collect Data! button when scanning to avoid multiple scans being started concurrently
- Changed the default Trial Count to 15 to get more complete scans for poorer connections
- UI improvements (drop-down to select available ssids, empty text boxes display a discription of what they do)
- Uses port 8080 exclusively
- Basic RSS reading capabilities
- Basic averaging functionality (mean, range, completed scans)
- Basic UI (control panel, data table)
- Logo's and other neat stuff
- Uses port 8000 (possibly 8080)