InfiIoT Labs/Field insight 01
Engineering field report · 22 minute read

The six failure modes that actually break IoT products

The demo works. The pilot streams data. Then the product meets a mixed-vendor plant, a weak cellular link, an ageing sensor, a thousand-device firmware rollout, and an operator who has a shift to finish. This is where the architecture tells the truth.

InfiIoT LabsPublished 16 July 2026Standards reviewed: 13Scope: industrial IoT products
F-01Protocol seams
F-02Decision latency
F-03Drift
F-04Fleet OTA
F-05Adoption
F-06Offline survival

IoT products rarely die because MQTT cannot move a JSON payload. They die because the payload arrives without trustworthy meaning, arrives too late to change a decision, or keeps arriving after the physical process has changed underneath the model.

The prototype hides this. A prototype has one device model, a stable Wi-Fi network, a developer watching the logs, and permission to reboot whenever it feels confused. A product inherits the opposite conditions. It must survive partial knowledge, remote maintenance, human workarounds, and years of change.

The product equation
product reliability = protocol meaning × timely decisions × trustworthy signals
× safe change × operator use × offline survival

This behaves like multiplication, not addition. A zero in one term can erase excellent work everywhere else.

01 · Protocol fragmentation

The wire is connected. The meaning is not.

A Modbus register can be read perfectly and still be wrong. Register 40117 may contain a signed 16-bit temperature, an unsigned counter, two packed status bytes, or half of a 32-bit float whose word order changes between firmware versions. The transport succeeded. The product failed.

Industrial interoperability has at least four layers: electrical and network transport, protocol behavior, data shape, and domain semantics. OPC UA addresses this explicitly by combining services with an information model and conformance model. Its companion specifications add domain-specific types so that two systems can exchange more than an unlabelled number.[1] MQTT solves a different problem. It moves messages well, but topic names, payload schemas, units, timestamps, and command semantics still belong to the product team.

Build an adapter contract, not an adapter pile

Every device adapter should emit the same canonical envelope: asset identity, point identity, value, engineering unit, quality, event time, ingest time, sequence number, and source protocol. Writes need the same discipline: command identifier, requested state, validity window, acknowledgement, and final observed state. Without that envelope, every dashboard and rule engine quietly becomes another protocol adapter.

Contract fieldFailure it exposes
event_time + ingest_timeA stale value rendered as live
unit + scale°F treated as °C; kPa treated as bar
qualityA disconnected probe frozen at its last value
sequenceA replay that looks like a new event
command_idA retry that opens a valve twice
Kill test

The hostile device swap

Replace the pilot device with a second vendor's model that measures the same physical quantity. Change byte order, unit, timestamp behavior, null representation, and reconnect sequence. The application layer should need a profile change, not a rewrite. Then repeat the test after a gateway reboot while a command is in flight.

02 · Latency as a product defect

Fast transport can still produce a slow decision

Teams often quote broker latency because it is easy to measure. Operators experience something else: the age of the physical fact when it becomes visible and actionable. That path includes sampling, edge filtering, gateway queues, radio scheduling, cloud ingest, rules, databases, APIs, browser rendering, and the human response.

age_of_decision = sample_delay + edge_delay + queue_delay + network_delay
+ ingest_delay + compute_delay + render_delay

3GPP TS 22.104 does not define one universal number for "industrial real time." It specifies requirements for different cyber-physical applications because motion control, process monitoring, and power-system protection do not share a latency or availability budget.[2] A cloud dashboard should follow the same logic. A bearing trip, a maintenance trend, and a monthly energy report deserve different paths.

Measure age, tails, and jitter

Median latency makes a pleasant slide and a poor acceptance test. Record p50, p95, p99, maximum age, and jitter for every critical flow. Preserve the device event timestamp and a monotonic sequence through the pipeline. A green connectivity icon should never imply that the displayed value is fresh.

Practical starting targets · validate against process risk

Local safety or protection
HealthyRuns at the controller or edge with a process-specific deterministic deadline.
WarningDepends on a cloud round trip or a browser session.
Operator command feedback
HealthyAcknowledgement and observed state are separate; p95 is tracked end to end.
WarningThe button changes colour before the physical state is confirmed.
Live monitoring
HealthyAge of data is visible; stale and substituted states are explicit.
WarningA smooth chart interpolates across a network outage.
Reports and analytics
HealthyCompleteness and watermarking matter more than sub-second speed.
WarningLate data silently changes a previously issued report.
Kill test

The latency autopsy

Inject a timestamped physical transition at the sensor input and capture the moment it appears on the operator screen, triggers an alert, and reaches the history store. Add 2% packet loss, 500 ms jitter, a reconnect, and a database compaction event. Publish the latency histogram. If the team can only produce broker round-trip time, the product does not yet know its own response time.

03 · Sensor and model drift

The model is still accurate. The world it learned has gone.

Drift is not one phenomenon. Sensor drift changes the measurement system. Process drift changes the machine or its operating regime. Concept drift changes the relationship between inputs and the outcome a model predicts. Treating all three as "retrain the AI" can hide a fouled probe, a maintenance event, or a new production recipe.

Adaptive Windowing, or ADWIN, detects distribution change by resizing its observation window according to the rate of change and provides statistical bounds on false positives and false negatives.[3] Research on IoT sensor drift also shows why the test environment matters: a correction method can look effective under one drift shape and fail under another.[4] No detector eliminates the need for physical calibration and maintenance context.

D-1

Sensor drift

Offset, gain, hysteresis, contamination, ageing, cross-sensitivity.

D-2

Process drift

New product grade, seasonal load, changed duty cycle, replaced component.

D-3

Concept drift

The mapping between features and the target no longer holds.

Monitor the measurement system before the model

Start with physics: valid range, rate of change, flatline duration, redundant-sensor agreement, mass or energy balance, calibration age, and environmental compensation. Then monitor distributions and model residuals by operating regime. A single fleet-wide drift threshold is usually a mistake; a pump at 30% load and the same pump near its best efficiency point do not have the same normal signature.

Offset injection+1%, +3%, +5% of spanDetection delay and false alarm rate
Gain errorRamp from 1.00× to 1.08×Residual slope by operating regime
Stuck valueHold last reading during a real process changeFlatline time to alarm
Noise growthDouble variance without changing meanQuality downgrade before alarm
Maintenance stepSwap sensor or reset calibrationBaseline versioning and annotation
Kill test

The six-month jump

Replay six months of telemetry in chronological order, including maintenance, seasonal shifts, outages, and sensor replacements. The model must report coverage, uncertainty, drift events, and version changes. Randomly shuffling the data destroys the test because drift is a time problem. A model that scores well only after the future has leaked into its training set is a laboratory artefact.

04 · Fleet-scale OTA

One successful update proves almost nothing

Firmware update is authorised remote code execution. RFC 9019 uses less theatrical language, but reaches the same engineering conclusion: the device must authenticate and integrity-check the image, survive interrupted transfer or power loss, report status, and make updates practical for constrained and remotely deployed devices.[5] The SUIT manifest information model adds a monotonic sequence number to prevent rollback to an older image against policy.[6]

The second problem is statistical. A firmware defect that appears on 0.2% of hardware may pass a ten-device pilot and strand two hundred units in a fleet of one hundred thousand. Fleet updates therefore need cohorts, abort rules, health evidence, and a recovery path that does not depend on the application firmware being healthy.

The minimum credible update architecture

Signed manifest

Binds image digest, device class, version, dependencies, and authorisation policy.

Power-fail-safe install

A/B image slots or an equivalent recoverable state machine.

Independent rollback

Boot health decides whether to commit; the new application cannot mark itself healthy too early.

Cohorted rollout

Hardware revision, geography, carrier, and duty cycle are visible dimensions, not hidden variables.

Automatic abort

Failure, rejection, timeout, and post-boot health thresholds stop expansion.

Status truth

Downloaded, verified, installed, booted, healthy, rolled back, and unreachable are separate states.

AWS IoT Jobs exposes constant or exponential rollout rates plus abort conditions based on failed, rejected, or timed-out executions.[7] That is a useful control plane, not a substitute for a recoverable bootloader. A practical rollout might move through lab, internal fleet, 1%, 5%, 25%, and full deployment, but those percentages are working defaults. A medical device, remote valve, and soil node should not share the same policy.

Kill test

Power cut roulette

Cut power at random points during download, verification, flash erase, image write, first boot, migration, and health commit. Repeat across every supported hardware revision and nearly full storage. The device must return to the prior healthy image or a recoverable maintenance mode. "Do not unplug during update" is not an industrial recovery strategy.

05 · Adoption is architecture

The technically correct screen can still be unusable at 2 a.m.

Operator adoption is often treated as training or change management, work scheduled after the product is already designed. In an industrial system, adoption reaches into alarm policy, screen hierarchy, permissions, acknowledgement, command confirmation, maintenance records, and the language used to name assets. That makes it architecture.

ISA-101 treats HMI design as a lifecycle covering design, implementation, operation, and maintenance, with attention to display structures, navigation, graphics, alarming, and usability.[8]NIST's OT guidance also frames the HMI as part of a control system whose availability, safety, and process constraints differ from ordinary IT.[12]

Watch for the shadow system.

If operators copy alarms into WhatsApp, keep a spreadsheet beside the dashboard, ask the control room to confirm every command by phone, or photograph the screen at shift handover, they are not resisting digitalisation. They are repairing missing product behavior.

Benchmark work, not page views

Monthly active users are almost meaningless when a maintenance engineer should log in only during a fault. Measure task completion: time to identify the affected asset, time to distinguish a bad sensor from a bad machine, alarm acknowledgement with evidence, command error rate, number of context switches, and the percentage of work that leaves the product for a spreadsheet or chat thread.

Alarm handling
HealthyAn alarm names the asset, condition, severity, evidence, owner, and next safe action.
WarningA red badge links to a chart and leaves diagnosis to the operator.
Commanding
HealthyIntent, permission, interlock, acknowledgement, and observed state are distinct.
WarningA successful API response is presented as a successful physical action.
Shift handover
HealthyOutstanding alarms, overrides, maintenance states, and stale signals form one handover view.
WarningThe outgoing operator writes a separate summary because the system has no operational memory.
Role design
HealthyThe portal reflects the decisions each role owns.
WarningEvery user receives the same dashboard with different menu permissions.
Kill test

The silent-observer shift

Put the product in front of an operator during a real shift and let the product team stay silent. Give the operator three realistic tasks, including one ambiguous alarm. Record elapsed time, wrong turns, calls for help, external tools, and moments where the operator no longer trusts the data. A guided demo measures the presenter, not the product.

06 · Graceful degradation

Offline is a normal operating state

Cellular fades. DNS fails. Certificates expire. A cloud region has a bad afternoon. The question is not whether the product disconnects, but which functions remain safe and useful while it is disconnected. RFC 9556 lists time sensitivity, data volume, connectivity cost, and resilience to intermittent service among the reasons IoT computation moves toward the edge.[9]

Graceful degradation needs a declared state machine. Local protection continues. Cached automations run within their validity window. Telemetry enters a bounded, persistent spool. The interface shows data age and connection state. Commands that require cloud authority fail closed, while explicitly authorised local commands follow a documented policy.

Size the queue before the field does
required_storage = messages_per_second × average_message_bytes
× maximum_offline_seconds × protocol_overhead × safety_factor

Then define what is discarded first. Losing a one-second temperature sample and losing a trip event are not equivalent.

MQTT 5 provides session expiry, message expiry, receive limits, and delayed will messages, but the product must choose values that match its storage and operational policy.[10] Azure IoT Edge, for example, stores upstream messages while offline and documents a default store-and-forward TTL of 7,200 seconds; retention still depends on TTL and available disk space.[11] Cloud defaults are not requirements. A remote mine with a two-day outage window needs a different calculation.

Reconnection is harder than disconnection

After reconnection, buffered telemetry can overwhelm ingest, old commands can become dangerous, and cloud desired state can conflict with a locally changed asset. Reconciliation needs event time, expiry, idempotent command identifiers, versioned configuration, and a conflict policy. The system should drain history at a bounded rate while current alarms keep their priority.

Kill test

The 72-hour island

Disconnect the site for 72 hours. Reboot the gateway, rotate a log, fill storage close to its limit, generate an alarm storm, and change one authorised local setting. Restore the link through a constrained connection. Verify safety behavior, queue priority, data age, expiry, deduplication, reconciliation, and catch-up time. If the test plan stops at "telemetry eventually uploads," it misses the dangerous half of recovery.

Failure interactions

These failures travel in packs

The worst incidents cross boundaries. A gateway reconnects after an outage and replays stale data without event timestamps. The anomaly model interprets the replay as a process change. It produces an alarm with no operating context. An operator acknowledges it to clear the queue. The dashboard reports a successful workflow. Every subsystem behaved according to its local test.

Product verification must therefore include compound faults: drift during an outage, an OTA rollout over a weak link, a protocol adapter change during a model transition, and an alarm storm during shift handover. NIST SP 800-193 describes firmware resiliency in terms of protecting, detecting, and recovering.[13] The same three verbs are a useful test frame for the whole product.

07 · A 30-day product survival test

Stop asking whether the pilot works

A useful pre-production gate is short enough to run and hostile enough to reveal architecture. Thirty days will not prove field reliability, but it can expose products that rely on stable networks, perfect sensors, friendly firmware, and guided users.

Week 1MeaningOnboard a second vendor, execute read/write conformance tests, and validate units, timestamps, quality, and command idempotence.
Week 2Time and driftMeasure end-to-end age under load. Inject offset, gain, noise, flatline, packet loss, jitter, and maintenance steps.
Week 3Change and outageRun cohort OTA with power cuts and rollback. Island the site, exhaust part of the queue, then reconcile through a weak link.
Week 4Human operationRun unguided operator tasks across two shifts. Measure diagnosis, command confirmation, handover, workarounds, and trust failures.

The release scorecard

Protocol
HealthyA second vendor onboards through a profile and passes the canonical contract.
WarningApplication code changes for every new register map.
Latency
HealthyEvent-to-decision p95 and p99 are known for every critical flow.
WarningOnly broker or API latency is measured.
Drift
HealthyPhysical checks, regime-aware monitoring, and versioned baselines are tested.
WarningThe answer to every change is automatic retraining.
OTA
HealthySigned, recoverable, cohorted, observable, and automatically abortable.
WarningThe happy path succeeded on a developer bench.
Adoption
HealthyOperators complete ambiguous tasks without coaching or shadow tools.
WarningTraining compensates for missing workflow design.
Offline
HealthyLocal safety, bounded storage, expiry, and reconciliation are explicit.
WarningThe architecture diagram assumes a permanent cloud line.

A pilot proves that the team can connect a device. A product proves that thousands of changing devices can remain understandable, timely, recoverable, and useful without the original engineers standing beside them.

Research notes

Standards and original sources

Standards define constraints, not product-market fit. The working targets and test designs in this report are engineering recommendations; teams should tune them to the safety, process, regulatory, and connectivity conditions of their deployment.

  1. [1]OPC UA Part 1: Overview and Concepts · OPC Foundation
  2. [2]Service requirements for cyber-physical control applications in vertical domains (TS 22.104) · 3GPP
  3. [3]Learning from Time-Changing Data with Adaptive Windowing · Bifet and Gavaldà, SIAM SDM 2007
  4. [4]Assessing Machine Learning Approaches to Address IoT Sensor Drift · Barcelo-Ordinas et al.
  5. [5]A Firmware Update Architecture for Internet of Things (RFC 9019) · IETF
  6. [6]A Manifest Information Model for Firmware Updates in IoT Devices (RFC 9124) · IETF
  7. [7]AWS IoT Jobs rollout, abort, timeout, and retry configurations · Amazon Web Services
  8. [8]ISA-101 series: Human-machine interfaces for process automation · International Society of Automation
  9. [9]Internet of Things Edge Challenges and Functions (RFC 9556) · IETF/IRTF
  10. [10]MQTT Version 5.0 · OASIS Standard
  11. [11]Operate Azure IoT Edge devices offline · Microsoft
  12. [12]Guide to Operational Technology Security (SP 800-82 Rev. 3) · NIST
  13. [13]Platform Firmware Resiliency Guidelines (SP 800-193) · NIST
Next in the lab

One meter, three radios

A cost and power-budget teardown of NB-IoT, BLE, and LoRa for the same metering product, including coverage assumptions, gateway economics, battery modelling, and operational debt.

Read the radio field report →
Connected-product assessment

Bring one product. Leave with a clear next step.

Use 30 minutes to test the fit around one product and one blocked decision. If there is a fit, we will outline the two-week Product Blueprint.

30-minute fit callOne productNo prepared deck