Skip to content

levidehaan/interferenceScanner

Repository files navigation

WiFi Interference Scanner

Detect electromagnetic interference from HDMI cables, USB devices, and other 2.4GHz sources

What is this?

WiFi Interference Scanner is an Android app that helps you identify devices that are causing electromagnetic interference (EMI) with your WiFi network. Many consumer electronics - especially cheap HDMI cables, USB 3.0 cables, and poorly shielded devices - emit radio frequency interference in the 2.4GHz band, which is the same frequency used by WiFi.

This app uses a scientific two-phase testing methodology to detect and measure interference from suspected devices.

The Problem

Unshielded or poorly shielded cables and devices can leak electromagnetic radiation that interferes with WiFi signals. Common culprits include:

  • Unshielded HDMI cables (especially cheap ones from Amazon/eBay)
  • USB 3.0 cables and hubs (USB 3.0 operates at frequencies that harmonize with 2.4GHz)
  • Poorly shielded monitors and displays
  • Microwave ovens (when running)
  • Bluetooth speakers and devices
  • Baby monitors
  • Wireless security cameras

Symptoms of WiFi interference:

  • Sudden WiFi disconnections
  • Slow speeds when certain devices are running
  • Unstable video calls or streaming
  • High ping/latency in online games

How It Works

The app uses a baseline comparison methodology to detect interference:

Phase 1: Baseline Scan (10 seconds)

The app scans your WiFi environment without the suspected interference source plugged in. This establishes a clean baseline of:

  • Signal strength (RSSI in dBm)
  • Signal stability (volatility)
  • Channel congestion
  • Nearby network counts

Phase 2: Interference Scan (10 seconds)

You plug in or turn on the suspected device, and the app scans again with the device active. It measures the same metrics.

Phase 3: Comparison & Analysis

The app compares the two scans and calculates:

  • Signal strength drop (how much your WiFi signal weakened)
  • Volatility increase (how much more unstable the signal became)
  • Signal range increase (how much the signal fluctuated)
  • Channel congestion changes

Based on these measurements, it assigns a severity rating:

Severity Signal Drop Impact
None 0-2 dB No measurable interference
Minimal 2-5 dB Slight interference, usually acceptable
Moderate 5-10 dB Noticeable performance degradation
Significant 10-15 dB Frequent disconnections likely
Severe 15+ dB Critical interference, device unusable with WiFi

Installation

Option 1: Download APK (Recommended)

  1. Download the latest APK from the Releases page
  2. Enable "Install from Unknown Sources" in your Android settings
  3. Install the APK
  4. Grant Location and WiFi permissions when prompted

Option 2: Build from Source

git clone https://github.com/levidehaan/interferenceScanner.git
cd interferenceScanner
./gradlew assembleRelease
adb install -r app/build/outputs/apk/release/app-release.apk

Requirements

  • Android 6.0 (API 23) or higher
  • Location services enabled (required by Android for WiFi scanning)
  • Connected to a 2.4GHz WiFi network (for best results)
  • WiFi enabled

Usage Instructions

Step 1: Prepare Your Environment

  1. Make sure you're connected to your WiFi network
  2. Enable Location services on your device
  3. Have the suspected interference device ready (HDMI cable, USB hub, etc.)

Step 2: Baseline Scan

  1. UNPLUG or turn OFF the suspected interference device
  2. Open the app and tap "Start Interference Test"
  3. The app will scan for 10 seconds to establish a baseline
  4. Wait for the scan to complete

Step 3: Interference Scan

  1. When prompted, PLUG IN or turn ON the suspected device
  2. If it's an HDMI cable, start playing video through it
  3. Tap "Device Plugged In - Start Scan"
  4. The app will scan for 10 seconds with the device active

Step 4: Review Results

The app will show you:

  • A severity rating (None, Minimal, Moderate, Significant, Severe)
  • Detailed signal strength comparison
  • Signal stability analysis
  • Channel congestion impact
  • Recommendations for fixing the issue

Understanding the Results

Signal Strength (RSSI)

Measured in dBm (decibel-milliwatts). Typical values:

  • -30 to -50 dBm = Excellent signal
  • -50 to -60 dBm = Good signal
  • -60 to -70 dBm = Fair signal
  • -70 to -80 dBm = Weak signal
  • Below -80 dBm = Very weak signal

A drop of 3 dB = 50% power loss, 10 dB = 90% power loss

Volatility

Measures how much the signal strength fluctuates (standard deviation in dB):

  • 0-3 dB = Excellent (very stable)
  • 3-5 dB = Good (stable)
  • 5-8 dB = Fair (some fluctuation)
  • 8+ dB = Poor (unstable, indicates interference)

Channel Congestion

Shows how many networks are competing on each WiFi channel. The app analyzes channels 1, 6, and 11 (the three non-overlapping 2.4GHz channels).

Recommendations Based on Results

No Interference Detected

Your device is clean - no action needed.

Minimal Interference (2-5 dB drop)

  • Move the device further from your router
  • Try switching to 5GHz WiFi if your router supports it
  • Consider using a shielded cable

Moderate to Significant Interference (5-15 dB drop)

  • Replace the cable with a shielded version (look for ferrite cores)
  • Move the device at least 3-6 feet away from your router
  • Switch to 5GHz WiFi band (highly recommended)
  • Add ferrite cores to the cable
  • Try a different port on your device

Severe Interference (15+ dB drop)

  • REPLACE THE CABLE IMMEDIATELY - it's likely violating FCC emissions standards
  • Keep the device FAR from your router (6+ feet minimum)
  • MUST switch to 5GHz WiFi - 2.4GHz will be unusable
  • Consider relocating your router
  • Report the cable/device to the manufacturer

Technical Details

How WiFi Scanning Works

The app uses Android's WifiManager API to:

  1. Trigger WiFi scans using startScan() (Phase 1)
  2. Read cached scan results using scanResults (Phase 2, to avoid Android's scan throttling)
  3. Monitor connected network RSSI via connectionInfo
  4. Calculate signal statistics over 10-second windows

Android Scan Throttling

Android limits apps to 4 WiFi scans per 2 minutes. To work around this:

  • Phase 1 triggers active scans
  • Phase 2 reads cached results from Phase 1 without triggering new scans
  • This ensures both phases complete successfully

Why Location Permission?

Android requires the ACCESS_FINE_LOCATION permission for WiFi scanning because WiFi SSIDs and signal strengths can be used to determine a device's physical location. The app does NOT collect or transmit any location data.

Privacy

This app:

  • ✅ Does NOT collect any personal data
  • ✅ Does NOT transmit any data over the network
  • ✅ Does NOT access the internet
  • ✅ Does NOT track your location
  • ✅ Runs 100% offline and locally on your device
  • ✅ Open source - you can review the code

The app only requires location permission because Android mandates it for WiFi scanning APIs.

Why This Matters

Electromagnetic interference from consumer electronics is a widespread but often undiagnosed problem. Many people suffer from "mysteriously bad WiFi" without realizing that a $5 HDMI cable is the culprit.

This app empowers users to:

  • Identify problematic devices scientifically
  • Make informed purchasing decisions
  • Improve their WiFi performance
  • Hold manufacturers accountable for poor shielding

Contributing

Contributions are welcome! Please feel free to submit pull requests or open issues.

Building the Project

# Clone the repository
git clone https://github.com/levidehaan/interferenceScanner.git
cd interferenceScanner

# Build debug APK
./gradlew assembleDebug

# Install on connected device
adb install -r app/build/outputs/apk/debug/app-debug.apk

# Build release APK
./gradlew assembleRelease

Project Structure

app/src/main/java/com/example/interferencescanner/
├── MainActivity.kt          # Main UI and workflow logic
├── WifiScanner.kt          # WiFi scanning and data collection
├── InterferenceAnalyzer.kt # Signal analysis and interference detection
└── ScanData.kt             # Data models for scan results

License

MIT License - See LICENSE file for details

Acknowledgments

  • Inspired by the WiFi analyzer community
  • Built with Kotlin and Android SDK
  • Material Design UI components

Support

If you encounter issues:

  1. Make sure Location services are enabled
  2. Ensure you're connected to WiFi
  3. Check that WiFi is enabled on your device
  4. Try restarting the app
  5. Open an issue on GitHub

Frequently Asked Questions

Q: Why does the app need Location permission?

A: Android requires it for WiFi scanning. The app doesn't collect or use location data.

Q: Why only 2.4GHz networks?

A: Most interference occurs in the 2.4GHz band. 5GHz is less susceptible to interference from cables and electronics.

Q: Can I test 5GHz interference?

A: The app will detect 5GHz networks, but most EMI occurs in 2.4GHz. You can still run tests while connected to 5GHz.

Q: How accurate is the detection?

A: Very accurate. The app measures actual RSSI changes. Drops of 5+ dB indicate real, measurable interference.

Q: My HDMI cable shows severe interference. What do I do?

A: Replace it with a shielded cable. Look for cables with ferrite cores or that specifically mention "RF shielding".

Q: Can this detect microwave ovens?

A: Yes! Run Phase 1 with the microwave off, then Phase 2 with it running. You'll see significant interference.

Real-World Examples

Example 1: Cheap HDMI Cable

  • Baseline: -45 dBm average, 2.1 dB volatility
  • With cable: -62 dBm average, 8.3 dB volatility
  • Result: 17 dB drop - SEVERE interference
  • Solution: Replaced with shielded cable, problem solved

Example 2: USB 3.0 Hub

  • Baseline: -52 dBm average, 3.2 dB volatility
  • With hub: -58 dBm average, 5.1 dB volatility
  • Result: 6 dB drop - Moderate interference
  • Solution: Moved hub away from router, switched to 5GHz WiFi

Example 3: Bluetooth Speaker

  • Baseline: -48 dBm average, 2.5 dB volatility
  • With speaker: -50 dBm average, 2.8 dB volatility
  • Result: 2 dB drop - Minimal interference
  • Solution: No action needed, within acceptable range

Made with ❤️ for people tired of mysterious WiFi problems

Found interference? Replace that cable!

About

Scan for Wifi Interference

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages