Detect electromagnetic interference from HDMI cables, USB devices, and other 2.4GHz sources
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.
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
The app uses a baseline comparison methodology to detect interference:
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
You plug in or turn on the suspected device, and the app scans again with the device active. It measures the same metrics.
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 |
- Download the latest APK from the Releases page
- Enable "Install from Unknown Sources" in your Android settings
- Install the APK
- Grant Location and WiFi permissions when prompted
git clone https://github.com/levidehaan/interferenceScanner.git
cd interferenceScanner
./gradlew assembleRelease
adb install -r app/build/outputs/apk/release/app-release.apk- 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
- Make sure you're connected to your WiFi network
- Enable Location services on your device
- Have the suspected interference device ready (HDMI cable, USB hub, etc.)
- UNPLUG or turn OFF the suspected interference device
- Open the app and tap "Start Interference Test"
- The app will scan for 10 seconds to establish a baseline
- Wait for the scan to complete
- When prompted, PLUG IN or turn ON the suspected device
- If it's an HDMI cable, start playing video through it
- Tap "Device Plugged In - Start Scan"
- The app will scan for 10 seconds with the device active
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
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
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)
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).
Your device is clean - no action needed.
- Move the device further from your router
- Try switching to 5GHz WiFi if your router supports it
- Consider using a shielded cable
- 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
- 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
The app uses Android's WifiManager API to:
- Trigger WiFi scans using
startScan()(Phase 1) - Read cached scan results using
scanResults(Phase 2, to avoid Android's scan throttling) - Monitor connected network RSSI via
connectionInfo - Calculate signal statistics over 10-second windows
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
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.
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.
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
Contributions are welcome! Please feel free to submit pull requests or open issues.
# 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 assembleReleaseapp/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
MIT License - See LICENSE file for details
- Inspired by the WiFi analyzer community
- Built with Kotlin and Android SDK
- Material Design UI components
If you encounter issues:
- Make sure Location services are enabled
- Ensure you're connected to WiFi
- Check that WiFi is enabled on your device
- Try restarting the app
- Open an issue on GitHub
A: Android requires it for WiFi scanning. The app doesn't collect or use location data.
A: Most interference occurs in the 2.4GHz band. 5GHz is less susceptible to interference from cables and electronics.
A: The app will detect 5GHz networks, but most EMI occurs in 2.4GHz. You can still run tests while connected to 5GHz.
A: Very accurate. The app measures actual RSSI changes. Drops of 5+ dB indicate real, measurable interference.
A: Replace it with a shielded cable. Look for cables with ferrite cores or that specifically mention "RF shielding".
A: Yes! Run Phase 1 with the microwave off, then Phase 2 with it running. You'll see significant interference.
- 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
- 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
- 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!