Test a UPS during planned downtime with its normal load and the manufacturer’s approved procedure. Record transfer survival, the shutdown trigger, guest shutdowns and host power-off. A short self-test checks the battery under load but cannot prove your complete shutdown window. Use the downloadable record to separate observed times from estimated remaining runtime.
Contents
The number on the front of a UPS is a charge reading. It is not a health reading.
A unit showing full can drop the load the moment it transfers. The display will have been telling you everything was fine right up until the instant it stopped being fine, and it was not lying — it was answering a different question than the one you thought you were asking.
That gap between charged and working is the whole subject here. Sizing the unit is settled territory: VA against watts, runtime against your shutdown window. This is about what comes after you have bought the right size — proving it does the job, on a schedule, before the power goes out and proves it for you.
For the actual purchase decision, our CyberPower CP1500PFCLCD review explains its generation and battery differences. The APC Back-UPS Pro BR1500MS2 review covers the corresponding load, installation and shutdown-software questions.
The built-in self-test is not a runtime test
Most units test themselves. The test covers less than the name suggests.
Schneider’s documentation for the Smart-UPS line says the unit self-tests when you switch it on and every two weeks after that, and that during the test it runs on battery for approximately ten seconds (Schneider Electric FA405317). The Back-UPS line runs the same ten seconds on a different clock — Schneider describes the automatic test as happening every seven days after the unit is powered on — and its replace-battery alarm is framed against a standard two-minute runtime limit (Schneider Electric FAQ000267818).
The self-test puts the connected load on battery and checks the battery and internal subsystems. Keep it enabled. A pass is useful evidence about that short test; it does not show how long your workload takes to stop or whether power will last through that sequence. Schneider also warns that a Back-UPS can drop the load during a self-test if it overloads on battery. Schedule even this short check when an interruption is acceptable.
Charge is a percentage. Capacity is minutes. The panel shows you the first one and you need the second one.
Keep a timed shutdown record
Download the UPS shutdown verification record (CSV). Open it in a spreadsheet, fill the value column and save a separate copy for each run. The other columns give units and recording instructions. The blank sheet contains no measured results.
I would test one chain at a time: UPS, the machine running NUT, the network path needed by any other clients, then the guests and hosts that must stop. If the switch loses power before another host receives its shutdown signal, a working USB cable on the first machine does not finish the job.
Set the boundary before testing
Use a maintenance window when the connected equipment can lose power, confirm backups, and let the UPS charge as its manual requires. Record the model, battery installation date if known, connected equipment and normal workload. Check for an existing fault or overload before starting. Resolve those first.
For a battery-supported run, follow the exact model’s approved test procedure and retain protective earthing. Do not improvise mains wiring or assume that pulling an input plug is appropriate for every UPS. Set a conservative time limit and a recovery plan before switching to battery. Stop on an overload, unexpected power loss, communication failure or the time limit. Restore normal input by the approved procedure; do not keep draining the battery to obtain a bigger number.
If you do not yet have a working automatic shutdown configuration, stop at preparation. This record verifies an existing setup; it is not a NUT installation recipe. NUT’s shutdown testing instructions separate previewing the shutdown sequence from executing it. A forced-shutdown test is a real shutdown, even with mains present. It can switch off the UPS output and all attached equipment.
Read the status without changing it
On an already configured NUT system, replace upsname with its configured UPS name. This read-only command displays the values the driver exposes:
upsc upsname@localhost
The upsc manual documents that address format. Use the NUT server’s hostname instead of localhost when reading a remote server. Save the output with the record. A missing field is unknown, never zero.
NUT defines ups.load as percent, ups.realpower as watts and battery.runtime as seconds in its variable reference. Keep those units separate. Record where a watt reading came from; a UPS-reported watt value is not a wall-meter measurement. Label displayed runtime as an estimate.
Record the sequence
For an on-battery run, start one stopwatch when the UPS reports the switch to battery. Use it for every elapsed time, and save timestamped logs as supporting evidence. For a software-only rehearsal, start at the shutdown request instead and mark battery-only fields not tested.
| Record field | What to enter | What it tells you |
|---|---|---|
transfer_survived | Yes, no or not tested | Whether the protected equipment stayed on through transfer |
shutdown_trigger_s | Elapsed seconds, plus the event or rule in shutdown_trigger | When shutdown was requested; do not infer it from a later loss of network access |
last_guest_stopped_s | Elapsed seconds and a reference to guest/task logs | Whether the last guest completed a clean stop before the host went off |
host_off_s | Elapsed seconds and how power-off was confirmed | When the protected host finished; an unreachable web UI alone does not establish this |
input_restored_s | Elapsed seconds | Whether mains returned before or after shutdown completed |
ups_output_lost_s | Elapsed seconds only if it happened | An unexpected loss before clean shutdown is a failed run, not a target to aim for |
reported_runtime_at_trigger_s | The runtime estimate displayed at the trigger, or unknown | Context for the next check; it is not a measured reserve |
The sheet also records NUT/OS versions, battery charge, load, the test procedure, planned deadline, faults and restart checks. Keep a separate list of every protected host if the UPS feeds several. One successful host does not pass the others.
NUT’s upsmon manual distinguishes on-battery, low-battery and forced-shutdown events. Note which one your configuration uses. Once forced shutdown has started, returning mains is not a reliable cancellation method: NUT’s FSD state remains set until its data-server daemon restarts. Follow your prepared recovery procedure.
Calculate two times, then mark the result
Shutdown duration = host_off_s − shutdown_trigger_s. This is the time your existing shutdown chain took after the request. Preserve the guest logs, because a host that powered off by forcibly terminating a guest has not passed the clean-shutdown check.
Planned margin = planned_deadline_s − host_off_s. This measures completion against the deadline you chose. It does not measure how much battery was left. The UPS runtime calculator can help choose a starting expectation, but its curve cannot certify an aged battery in your rack.
An illustrative calculation: a request at 30 seconds, all guests stopped at 70 seconds and host off at 90 seconds gives a 60-second shutdown. Against a chosen 180-second deadline, the planned margin is 90 seconds. These example numbers are invented to show the arithmetic. They establish no runtime beyond the hypothetical 90-second observation.
Mark an on-battery run pass only if transfer survived, every protected guest and host stopped cleanly before the chosen deadline, and UPS output lasted through that completion without mains assistance. If you restored mains early, lost the record or could not confirm a guest’s stop, mark it incomplete. Any dropped load, forced guest stop or missed deadline is fail. A software-only rehearsal can pass its shutdown checks while battery support remains untested.
Save the actual logs next to the sheet.
After restoring normal power, record whether the UPS and its protected equipment returned as intended. Check that services are available and the battery is recharging. NUT’s testing instructions include restart behavior for a reason. On the next run, compare the same equipment, workload and trigger; a shorter test with fewer guests is not evidence of an improved battery.
Pure sine, or don’t put a server PSU behind it
This one has a mechanism, and the mechanism is published by the people selling the cheaper option.
CyberPower’s explanation of its own PFC Sinewave line is that a simulated sine wave produces a zero-output state during the phase change — a gap in the waveform — and that this gap can interrupt equipment running an active-PFC power supply when the unit switches from mains to battery (CyberPower, PFC Sinewave Series).
Read where that failure lands. Not during a brownout, not on a slow degrade — at transfer. The single event the UPS exists to handle is the event a simulated-sine unit is worst at, and active PFC is standard in modern PC and server supplies; CyberPower’s own page dates that transition to the last fifteen years.
Simulated sine into an active-PFC supply is asking for trouble on transfer. Pure sine for anything with a server PSU behind it.
USB and NUT, not a network management card
Network management cards cost absurd money next to the UPS they plug into. A UPS network management card is a separate accessory bought on top of the unit, and for a single-site homelab it buys network-side monitoring you can get from a cable.
USB plus NUT does the job and is what I’d run. Three pieces:
usbhid-upsshould detect anything implementing the HID Power Device Class, with the amount of data varying by manufacturer and model. NUT lists all MGE, Dell and AMETEK Powervar USB models, the newer Eaton USB models, and specific models from APC, CyberPower, TrippLite, Belkin, Powercom and PowerWalker (usbhid-ups man page). Check your exact model against the compatibility list before you count on it.upsmonwatches for the critical condition — on battery, low charge — sets the forced-shutdown flag, and lets every machine it is monitoring run its own shutdown command with a delay you set (NUT configuration notes).upscmdlists and runs the instant commands supported by your UPS, including the alarm control below when available.
That is the entire feature set most homelabs wanted from the card.
If it can’t trigger a clean shutdown of what’s plugged into it, most of the value is gone. A UPS that only buys you a few minutes of uptime during which nobody is home to act is a very expensive way to delay the same unclean power-off. Configure the shutdown chain when the unit arrives, then use the timed record above to check that each machine completes it.
The alarm will go off at 3am
It will. The alarm is standard equipment, and the first time it fires is the worst possible moment to be learning where the mute button is.
Decide now what you want it to do, and set it now. NUT exposes beeper.disable, beeper.mute, beeper.enable and beeper.toggle as instant commands (same reference), so this is one upscmd call, done while you are awake and thinking clearly about whether you actually want an audible alarm in that room.
Batteries are a consumable
Plan for the replacement rather than being surprised by it. Sealed lead-acid cells are on a several-year cycle, and third-party replacements are standard practice — not a corner cut.
Schneider puts most APC batteries at three to five years and notes that every 8°C (15°F) of extra operating temperature halves that life (Schneider Electric FA158934). That second figure is the one people miss. A UPS in a warm closet is not on the same schedule as the same UPS in a basement, and if you have put yours in the warm closet, the replacement year on your calendar is optimistic.
Which puts you back at the test. The only way to know where your battery is on that curve is to have measured it recently under load.
What I’d do: pure sine, USB, NUT, and a recorded test
Buy a pure sine wave unit sized to your load, connect it over USB, run NUT, and schedule a shutdown verification. For my single-rack plan, I would start there before buying a management card. Check that the exact UPS supports the functions your setup needs.
Keep the verification record beside your backup checks. Repeat after a battery replacement, a material load change or a shutdown configuration change, as well as the schedule recommended by the UPS maker. If the protected load cannot complete its clean shutdown within the available window, correct the battery, load or shutdown timing before relying on the setup unattended.
This is wrong for a few situations. Simulated sine into active PFC — do not, at any price. A consumer unit under a full rack, where the load is past what the unit is rated to hold and the runtime is theatre. And anyone who will not set up automatic shutdown, because at that point the money bought a surge protector with a battery in it, which is where this started.
Keep backups on separate equipment. A successful shutdown test does not replace them.
Sources for the timed record
Read October 4, 2026:
- Schneider: Smart-UPS self-test and Back-UPS self-test: duration, use of the connected load and the overload caveat.
- NUT configuration notes, Testing shutdowns: preview versus executed shutdown and checking recovery.
- NUT upsmon manual: on-battery, low-battery and forced-shutdown states; FSD persistence; software-triggered shutdown tests.
- NUT upsc manual and variable reference: read-only status retrieval and field units.
Frequently asked questions
How do you test a UPS properly?
Does a full charge indicator mean the UPS battery is good?
Does the UPS test sheet measure remaining battery runtime?
Do I need a pure sine wave UPS?
Is a UPS network management card worth it for a homelab?
Sources and corrections
- Last updated
- Sources checked
- Methodology
- See our methodology for research and review standards.
- Update log
- 2026-10-04 — Added a blank 35-field shutdown verification CSV and matching instructions for preparation, observed event times, clean guest/host shutdown, calculated duration, planned margin and recovery. Corrected the claim that a self-test skips the connected load against Schneider’s current documentation. Replaced generic plug-pull and deep-test instructions with a model-specific maintenance-window procedure and separated software-only shutdown rehearsal from battery-supported verification. No physical UPS test was run and no measurement was added. Source retrieval and browser checks are recorded under C:/Techfuel/audits/content-growth-20261004/guides/.
- Corrections
- Spotted an error or a stale number? Email contact@techfuelhq.com. Confirmed corrections are recorded here with the date and change.