IoT: 3. First 5 Features for Market Entry - FrankRay78/NetPace GitHub Wiki
Overview
Based on NetPace's current feature set (console app, Ookla server discovery, download/upload/latency testing) and the IoT market analysis, these are the first 5 features to implement to start addressing the IoT market, prioritized by impact and feasibility.
Timeline: 5-6 weeks to IoT MVP
Priority 1: Minimal Data Usage Mode ⭐⭐⭐⭐⭐
Why this is #1:
- IoT devices have tiny data plans (10-100MB/month)
- Your current tool downloads/uploads megabytes per test
- This is a showstopper - you can't even demo to IoT customers without this
- Relatively easy to implement (you already control payload size)
Implementation:
# Add test profiles
NetPace --profile micro # 100KB down, 50KB up (< 500KB total)
NetPace --profile small # 1MB down, 500KB up (< 2MB total)
NetPace --downloadsize 0.1 # Already exists! Just document it
NetPace --uploadsize 0.05 # Already exists! Just document it
What to add:
- Pre-defined test profiles (
--profile micro|small|medium|large) - Data usage estimation before running test:
NetPace --estimate --downloadsize 10 - Warning when test will exceed threshold: "⚠️ This test will use ~15MB. Continue? (y/n)"
Code changes:
- Add
TestProfileenum with size presets - Add
--profileflag to CLI - Modify existing
--downloadsize/--uploadsizeto accept smaller values (< 1 MB) - Display data usage in output: "Data used: 847 KB"
Time estimate: 2-3 days
Priority 2: Signal Strength Metrics ⭐⭐⭐⭐⭐
Why this is #2:
- IoT cares more about signal quality than raw speed
- A device showing 10 Mbps might have -95 dBm signal (terrible, will drop constantly)
- This is what differentiates you from generic speed tests
- Critical for pre-deployment validation
Implementation:
# New flag to include cellular metrics
NetPace --include-signal-metrics
# Output format (add to existing JSON/CSV):
{
"download_mbps": 5.2,
"upload_mbps": 1.8,
"latency_ms": 87,
"signal_strength_dbm": -72,
"signal_quality": "excellent",
"network_type": "LTE"
}
What to add:
- Detect if running on cellular connection (vs. WiFi/Ethernet)
- Read signal strength from system APIs:
- Linux:
/sys/class/net/wwan0/,mmcli(ModemManager), or AT commands - Windows: Use
netshor Windows API
- Linux:
- Parse RSSI, RSRQ, RSRP if available
- Classify signal: Excellent (> -70 dBm), Good (-70 to -85), Fair (-85 to -100), Poor (< -100)
Libraries to use:
- .NET:
System.Net.NetworkInformationfor interface detection - For cellular: Shell out to
mmcli -m 0 --signal-geton Linux - Parse output and include in SpeedTestResult
Code changes:
- Add
SignalMetricsclass toSpeedTestResult - Add
--include-signal-metricsflag (default: false) - Add platform-specific signal detection
- Display signal in output: "📶 Signal: -72 dBm (Excellent)"
Time estimate: 3-5 days
Priority 3: Location Tagging (GPS/Manual) ⭐⭐⭐⭐
Why this is #3:
- IoT customers need to track "Where was this test run?"
- Essential for pre-deployment site surveys
- Enables coverage mapping (Phase 2)
- Easy win with big impact
Implementation:
# Manual location
NetPace --location "34.0522,-118.2437" --location-name "LA Warehouse"
NetPace --location "Chicago Depot #5"
# Auto-detect (if GPS available)
NetPace --location auto
# Output includes location
{
"download_mbps": 5.2,
"location": {
"latitude": 34.0522,
"longitude": -118.2437,
"name": "LA Warehouse",
"address": "Los Angeles, CA"
}
}
What to add:
--locationflag accepting:- GPS coordinates:
"lat,lon"or"lat,lon,alt" - Address string:
"Chicago Depot #5"(store as-is, no geocoding needed yet) autokeyword (detect GPS if available)
- GPS coordinates:
--location-namefor friendly name- Add
Locationclass toSpeedTestResult - Store in CSV/JSON output
GPS detection (optional for v1):
- Linux: Read from
/dev/gps0orgpsd - Android: If running on Android device, use location services
- For MVP: Just support manual entry, skip auto-detection
Code changes:
- Add
Locationclass with lat/lon/name properties - Add
--locationand--location-nameflags - Include in output formats (CSV, JSON)
- Display in console: "📍 Location: LA Warehouse (34.05°N, 118.24°W)"
Time estimate: 2-3 days
Priority 4: JSON/CSV Output for Device IDs ⭐⭐⭐⭐
Why this is #4:
- IoT customers test hundreds of devices - they need to track which is which
- Current CSV/JSON output exists but doesn't support device identification
- This enables bulk testing workflows (even manually)
- Foundation for automated fleet testing (Phase 2)
Implementation:
# Add device metadata to test
NetPace --device-id "device-001" --imei "123456789012345" --sim "8901234567890123456"
# Output includes device info
{
"device_id": "device-001",
"imei": "123456789012345",
"sim_iccid": "8901234567890123456",
"download_mbps": 5.2,
"timestamp": "2025-12-07T10:30:00Z"
}
# CSV output
device_id,imei,sim_iccid,download_mbps,upload_mbps,latency_ms,timestamp
device-001,123456789012345,8901234567890123456,5.2,1.8,87,2025-12-07T10:30:00Z
What to add:
--device-idflag: Unique identifier for this device--imeiflag: International Mobile Equipment Identity (15 digits)--simflag: SIM card ICCID (19-20 digits)--custom-fieldflag: Allow arbitrary key-value pairs for flexibility- Include all metadata in JSON/CSV output
Code changes:
- Add
DeviceInfoclass with optional fields - Add CLI flags for device metadata
- Extend
SpeedTestResultto include device info - Update CSV/JSON formatters to include device columns
- Auto-detect IMEI if possible (read from modem)
Time estimate: 1-2 days
Priority 5: Quick Test Mode / No-Download Option ⭐⭐⭐
Why this is #5:
- IoT customers often just need "Can I connect? What's my signal strength?"
- They don't care about exact speed, just "Is it working?"
- Reduces test time from 30-60 seconds to 5-10 seconds
- Saves data (critical for IoT)
Implementation:
# Quick connectivity test (no speed test, just ping + signal)
NetPace --quick
# Skip download or upload individually (already exists!)
NetPace --no-download # Already supported ✅
NetPace --no-upload # Already supported ✅
# Combine for fastest test
NetPace --quick --no-download --no-upload
# Output: Just confirms connectivity + signal
✅ Connected to Verizon LTE
📶 Signal: -72 dBm (Excellent)
🏓 Latency: 45ms
⏱️ Test duration: 3 seconds
💾 Data used: 50 KB
What to add:
--quickflag that:- Skips server discovery (use first available or cached)
- Runs minimal latency test (5 pings instead of 20)
- Optionally skips download/upload (or uses micro profile)
- Display "quick test" indicator in output
- Optimize for speed: cache server list, parallel operations
You already have:
--no-download✅--no-upload✅--no-latency✅- Configurable test settings ✅
Just add:
--quickpreset that combines smart defaults- Server caching (save last used server to avoid re-discovery)
- Documentation for IoT users
Time estimate: 1-2 days
Implementation Order & Timeline
Week 1-2: Core IoT Enablement
- ✅ Minimal Data Usage Mode (3 days) - Showstopper fix
- ✅ Quick Test Mode (2 days) - Quick win, leverages existing features
Deliverable: IoT manufacturers can test devices without blowing data budgets
Week 3-4: Signal Quality & Identification
- ✅ Signal Strength Metrics (5 days) - Key differentiator
- ✅ Device ID Tracking (2 days) - Enables bulk workflows
Deliverable: IoT customers can identify signal issues and track individual devices
Week 5: Location & Documentation
- ✅ Location Tagging (3 days) - Pre-deployment validation
- Documentation & examples for IoT use cases (2 days)
Deliverable: Complete IoT MVP ready for pilot customers
Why These 5 vs. Others
Skipped for now:
- ❌ Multi-carrier testing - Requires AT command access, harder to implement
- ❌ Scheduled tests - Need background service/daemon, more complex
- ❌ Battery monitoring - Platform-specific, nice-to-have not must-have
- ❌ Bulk device testing - Need these 5 features working first
You can achieve 80% of IoT value with just these 5 because they enable:
- Testing without killing data plans ✅
- Seeing cellular signal quality ✅
- Tracking which device was tested ✅
- Recording where test was run ✅
- Fast connectivity checks ✅
Bonus: Custom Server Support
You mentioned OpenLibreSpeed or custom servers - this is actually perfect for IoT:
# Use custom speed test server (closer to IoT deployment)
NetPace --server "http://speedtest.mycompany.com"
# Skip Ookla server discovery entirely
NetPace --server "http://10.0.0.50:8080" --quick
Why IoT customers need this:
- Test against their own infrastructure (not public internet)
- Many IoT devices are on private APNs (can't reach public servers)
- Lower latency = more accurate for local deployments
- Avoids using Ookla servers (licensing concerns for commercial use)
Implementation:
- Already supported via
--serverflag! ✅ - Just document it for IoT customers
- Add validation for HTTP endpoints
- Support OpenLibreSpeed API format (if different from Ookla)
Marketing These 5 Features
Before NetPace IoT:
"We manually test cellular connectivity by having techs drive to sites with smartphones, run speedtest.net, and email us screenshots. It takes days and costs thousands."
After NetPace IoT:
"We run NetPace --profile micro --device-id device-001 --location auto --include-signal-metrics on each device. It uses 500KB, takes 10 seconds, and gives us signal strength, speed, and location. We tested 1,000 devices in 3 hours."
Next Steps
Start building! These 5 features are your IoT MVP.
Recommendation: Start with Priority 1 (Minimal Data Usage Mode) as it's the showstopper that prevents any IoT testing today.