Repository navigation
IoT: 3. First 5 Features for Market Entry
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
- 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)
# 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- 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)"
- 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
- 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
# 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"
}- 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)
- .NET:
System.Net.NetworkInformationfor interface detection - For cellular: Shell out to
mmcli -m 0 --signal-geton Linux - Parse output and include in SpeedTestResult
- 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
- 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
# 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"
}
}-
--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
- Linux: Read from
/dev/gps0orgpsd - Android: If running on Android device, use location services
- For MVP: Just support manual entry, skip auto-detection
- 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
- 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)
# 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-
--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
- 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
- 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)
# 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-
--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
-
--no-download✅ -
--no-upload✅ -
--no-latency✅ - Configurable test settings ✅
-
--quickpreset that combines smart defaults - Server caching (save last used server to avoid re-discovery)
- Documentation for IoT users
Time estimate: 1-2 days
- ✅ 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
- ✅ 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
- ✅ Location Tagging (3 days) - Pre-deployment validation
- Documentation & examples for IoT use cases (2 days)
Deliverable: Complete IoT MVP ready for pilot customers
- ❌ 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
- Testing without killing data plans ✅
- Seeing cellular signal quality ✅
- Tracking which device was tested ✅
- Recording where test was run ✅
- Fast connectivity checks ✅
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- 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)
- Already supported via
--serverflag! ✅ - Just document it for IoT customers
- Add validation for HTTP endpoints
- Support OpenLibreSpeed API format (if different from Ookla)
"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."
"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."
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.