If you’ve ever stood in a dark server room listening to a UPS scream its last breath while your telemetry screen fades to black, you already know the difference between reliability and availability. You just might not have the words for it yet. In the embedded systems world—especially the one we inhabit at Fortec, where tropical humidity, unstable grids, and “good enough” hardware collide—the distinction isn’t academic. It’s the line between a system that survives and one that just looks good in a PowerPoint slide.
Most textbooks will tell you reliability is the probability a system will perform without failure over a given time. Availability is the percentage of time it’s operational. Clean. Simple. Useless. Because in the field, a device that’s “available” 99.9% of the time but reboots every time a gecko shorts a terminal isn’t reliable in any way that matters. And a system that’s perfectly reliable—until the generator runs out of diesel—has an availability problem that no amount of redundant microcontrollers can fix.
This article is for the engineers and integrators who deploy embedded systems where the grid is a suggestion, not a guarantee. We’ll tear apart the definitions, rebuild them with field data, and leave you with a framework you can actually use when your boss asks why the uptime SLA is 97% instead of 99.999%.
What Reliability and Availability Mean When You’re Not in a Data Center
Let’s start with the textbook definitions, because we need a common language before we can break the rules.
Reliability is the probability that a system will perform its intended function without failure for a specified period under stated conditions. It’s measured by metrics like Mean Time Between Failures (MTBF). A high MTBF means the hardware itself rarely breaks. In a temperature-controlled lab with filtered power, that number might be 100,000 hours. Beautiful.
Availability is the percentage of time a system is operational when needed. It’s calculated as uptime divided by total time, often expressed in “nines.” Five nines—99.999%—means about five minutes of downtime per year. That’s the gold standard in telecom and cloud infrastructure.
Here’s where it gets ugly. In the environments we design for—remote monitoring stations in the Amazon basin, agricultural controllers in Mato Grosso, or water pump systems in semi-arid Pernambuco—the “stated conditions” are a joke. Ambient temperatures swing from 12°C at night to 45°C inside a metal enclosure by noon. Mains power isn’t just intermittent; it’s often dirty, with voltage sags, surges, and frequency drift that would make a lab power supply weep. And the “specified period” might include a rainy season where everything is wet for three months straight.
So when a vendor quotes MTBF of 200,000 hours for their embedded controller, I ask: was that tested in a chamber with condensing humidity and ants? Because I’ve seen ants take down more systems than capacitor plague.
Why High Availability Can Mask Terrible Reliability
Here’s a trap I’ve seen too many times. A system achieves 99.9% availability over a year. That’s less than nine hours of downtime. Impressive, until you look at the logs and see it failed 47 times. Each failure lasted only a few minutes because a watchdog timer or an auto-restart script kicked in. But during those minutes, data was lost, pumps stopped, valves closed, and operators lost confidence.
This is the dirty secret of availability metrics: they don’t care about failure frequency. A system that crashes and recovers 1,000 times a month can still show 99% availability if each recovery is fast enough. But in the field, each crash might corrupt a log file, miss a critical sensor reading, or require a manual site visit because the auto-recovery didn’t account for some edge case—like a brownout that left the microcontroller in a latch-up state that only a full power cycle can clear.
I learned this lesson the hard way with a solar-powered weather station we deployed in 2018. The availability dashboard looked great—98.7% uptime. But the station was rebooting 20-30 times a day during cloudy periods because the input voltage would dip below the brownout threshold, the supervisor chip would trigger a reset, and the system would come back up in seconds. The availability metric said “good enough.” The data gaps said otherwise. We ended up redesigning the power supply with a supercapacitor bank to ride through the dips, and the reboot count dropped to near zero. Availability barely changed. Data quality improved dramatically.
Designing for Reliability in Hostile Environments
If you want a system that doesn’t just stay online but actually works correctly, you need to design for reliability first. Availability becomes a natural byproduct. Here’s what that looks like in practice, based on systems we’ve built and maintained across Brazil’s varied climates.
1. Power Supply: The Foundation of Everything
Most embedded failures I’ve diagnosed trace back to power. Not the microcontroller. Not the firmware. The power supply. In grid-unstable regions, you need to assume the input is hostile. That means wide-input DC-DC converters (we use 8-60V input range as a baseline), TVS diodes and polyfuses on all external connections, and enough bulk capacitance to ride through 100ms+ interruptions without resetting the processor.
For solar or battery-powered systems, the power management IC needs to handle graceful shutdown when the battery reaches a critical level—not just cut off and corrupt the filesystem. We’ve moved to using supercapacitors for short-term ride-through and logging the shutdown event so the system knows it was a controlled power loss, not a crash.
One field-proven trick: use a dedicated voltage monitor that asserts a reset only after the supply rail has been stable for a programmable delay. This prevents the endless reboot cycle that happens when a battery recovers just enough voltage after a load disconnect, then sags again under load. I’ve seen that cycle destroy flash memory in weeks.
2. Environmental Hardening Beyond IP Ratings
IP67 is great for dust and water jets. It doesn’t help with condensation. In humid environments, enclosures breathe as they heat and cool, drawing in moisture that condenses on PCBs overnight. Conformal coating helps, but we’ve found that potting critical sections—especially high-impedance analog front-ends—is more effective. The downside: potting makes rework nearly impossible. So we modularize. The sensor interface board gets potted; the main processor board gets conformal coating and a serviceable connector.
Temperature extremes also affect component lifetimes in non-obvious ways. Electrolytic capacitors dry out faster. Solder joints fatigue under thermal cycling. We’ve standardized on solid polymer capacitors and specified extended-temperature-range components (-40 to +105°C) even when the “typical” ambient is milder. The extra cost is trivial compared to a truck roll to replace a failed unit in a remote location.
3. Software That Assumes Hardware Will Fail
Reliable hardware is necessary but not sufficient. The firmware must be paranoid. Every write to non-volatile storage should be atomic or journaled. Communication protocols need timeouts, retries, and backoff strategies that don’t assume the network will be back in milliseconds. In our LoRaWAN-based sensor networks, we buffer data locally and use a store-and-forward approach with sequence numbers so the backend can detect gaps and request retransmission.
Watchdog timers are essential, but they’re often misused. A simple watchdog that resets the processor if the main loop hangs is better than nothing. But a smarter approach is a multi-stage watchdog: one timer for the main loop, another for the communication stack, and a hardware watchdog as the last resort. If the system resets, the bootloader should check a “reset reason” register and log it before restarting the application. That log is gold for post-mortem analysis.
Measuring What Matters: Field Metrics vs. Lab Metrics
MTBF is a lab metric. It’s calculated under controlled conditions, often using accelerated life testing models like Arrhenius for temperature or inverse power law for voltage stress. Those models are useful for comparing components, but they don’t predict field behavior well when multiple stressors interact.
In the field, I care about three things:
- Mean Time Between Unscheduled Interventions (MTBUI): How often does a human need to visit the site for something other than planned maintenance? This includes reboots, component swaps, and “percussive maintenance.”
- Data Completeness Ratio: What percentage of expected data points actually arrived and passed validation? A system can be “available” but still drop 30% of its measurements.
- Recovery Time After Grid Return: When power comes back after an extended outage, how long until the system is fully operational and synchronized? Systems that boot into a hung state because the RTC lost time or the network isn’t ready are a common failure mode.
We track these metrics across all deployed systems and use them to prioritize firmware updates and hardware revisions. MTBF is a footnote in our design reviews.
When Availability Trumps Reliability (and Vice Versa)
There are cases where availability matters more than reliability, and pretending otherwise is engineering vanity. A remote telemetry station that samples temperature once per hour can tolerate frequent reboots as long as it recovers quickly and doesn’t lose data. The cost of a site visit far outweighs the cost of a few missing data points. In that scenario, optimize for fast recovery and sturdy data buffering, not for a bulletproof uptime record.
Conversely, a controller managing a water treatment process or a medical cold chain cannot reboot randomly. A watchdog-triggered reset that takes 30 seconds might be acceptable if the process has enough mechanical inertia. But if the reset causes a valve to close or a pump to stop, you’ve got a reliability problem that no amount of availability can paper over. In these cases, you need hardware redundancy, fail-safe states, and possibly a secondary “safety” microcontroller that takes over if the primary loses its mind.
The key is to understand the cost of failure—not just the cost of downtime. A reboot during a non-critical period might be free. A reboot during a chemical dosing cycle could be catastrophic. Map your failure modes to real-world consequences, then decide where to spend your engineering budget.
Practical Design Patterns for the Real World
After years of field failures and the occasional success, here are patterns we’ve found that actually work in the tropics and on shaky grids.
1. The “Brownout Armadillo” Power Architecture
Name’s a joke, but the design is serious. The idea: your system should curl up and protect its vitals when power gets flaky, then unroll and resume cleanly when stable power returns. This means:
- A wide-input DC-DC converter that can handle sags down to 8V and surges up to 60V without damage.
- A holdup capacitor bank sized for at least 500ms of full-load operation after input loss—long enough to save state and park peripherals.
- A dedicated voltage supervisor that asserts reset only after input voltage has been stable above a threshold for 200ms, preventing chattering resets.
- Non-volatile storage of the system state so that on restart, the application knows whether it was a clean shutdown or a crash.
2. Communication Watchdogs with Backoff
Intermittent connectivity is the norm in our deployments. Rather than hammering the network with retries, our nodes use an exponential backoff with a maximum retry interval of 15 minutes. If the network is down for hours, the node logs data locally and sends it in a burst when connectivity returns. This prevents network congestion and saves battery power.
3. Environmental Monitoring as a First-Class Citizen
We include temperature, humidity, and sometimes vibration sensors inside every enclosure. This data is logged and transmitted alongside the primary application data. It’s not just for debugging—it’s for predictive maintenance. If we see internal humidity trending upward, we know a seal is failing before corrosion takes down the board. If the internal temperature is consistently higher than expected, we can investigate whether the enclosure’s sun shield has degraded.
FAQ
What’s the difference between reliability and availability in simple terms?
Reliability is about how often a system breaks. Availability is about how quickly it gets back up. A system that fails frequently but recovers in seconds can have high availability but poor reliability. In the field, poor reliability often leads to data corruption, missed events, and increased maintenance costs—even if the availability dashboard looks fine.
Why do embedded systems in tropical environments fail more often?
Heat, humidity, and unstable power are the main culprits. High temperatures accelerate component aging, especially electrolytic capacitors. Humidity causes condensation, corrosion, and short circuits. Unstable power leads to brownouts, surges, and repeated reset cycles that can corrupt firmware and damage flash memory. Enclosures that work in temperate climates often fail in the tropics because they don’t account for condensation from daily thermal cycling.
How can I improve reliability without increasing cost significantly?
Focus on the power supply and firmware resilience. Use wide-input DC-DC converters, add transient voltage suppression on all external connections, and implement a sturdy brownout detection and recovery strategy in firmware. These changes often cost less than 5% of the bill of materials but can prevent the majority of field failures. Also, invest in conformal coating or selective potting for high-impedance analog circuits—it’s cheap insurance against humidity.
What’s a realistic availability target for off-grid embedded systems?
For solar-powered or battery-operated systems in remote areas, 99% availability (about 3.65 days of downtime per year) is a solid target if you’ve designed for reliability. Pushing beyond 99.9% often requires redundant power sources, redundant communication paths, or frequent site visits—costs that rarely justify the marginal improvement. Focus on data completeness and intervention frequency instead of chasing nines.
Where This Leads Next
If you’ve followed along this far, you’re probably already thinking about the next layer: how to design firmware that survives not just hardware faults but its own bugs. That’s a topic we’ll tackle in an upcoming piece on defensive programming patterns for embedded systems—think memory protection units, stack canaries, and safe state machines. Because in the field, the most dangerous failure is the one you didn’t anticipate.
Until then, go check your power supply design. I’ll bet there’s a capacitor that’s too small.


