Skip to content

WiFi Signal Strength Tester • Windows App • Made in High School for Washington Science Olympiad to standardize the way we measured the antennas we built

License

Notifications You must be signed in to change notification settings

SanderGi/WiFiStrengthTester

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

29 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

WiFiStrengthTester

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.

Recommended Installation Instructions (v1.0.1 has been published)

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.

Secondary Installation Instructions

  • 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**
    1. Right Click and select properties on the downloaded msix package
      image
    2. On the properties tab, click Unblock and then click Apply.
    3. On the Digital signatures tab, select the TestCert and Click Details.
      image
    4. Click View Certificate
      image
    5. Click Install Certificate
      image
    6. Select Local Machine and Click Next*
      image
    7. Click Yes in the User Account Control dialog
    8. Click Place all certificates in the following store, click Browse
      image
    9. Select Trusted Root Certification Authorities and click OK.
      image
    10. Click Next
      image
    11. Click Finish
      image
    12. Click OK to the dialog saying the import was successful.
      image
  • 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
    image
  • Click Collect Data
    image

**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

Alternative Download Options

  1. Download the WiFiStrengthTester zipfile, unzip it, and run the app.exe file inside it
  2. Download the single file app.exe and disable your antivirus lol
  3. Download the Source folder, make sure python 3.x.x and the necessary dependencies are installed, and run app.py

Application notes

  • 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

Why scans don't always complete

"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

Demo images

If correctly installed it should look something like this: image

Common Errors

  • WinError 10048--Only one usage of each socket adress/port is normally permitted
    issue 1589
    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

Changelog

Updating using the msix installer is easy, you just download and run the new installer (no need to uninstall the program first).

v1.0.1

  • 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

v1.0.0

  • 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)

About

WiFi Signal Strength Tester • Windows App • Made in High School for Washington Science Olympiad to standardize the way we measured the antennas we built

Resources

License

Stars

Watchers

Forks