0X000009B4

UPS service failed to shut down: fix 0X000009B4

Server & Cloud Intermediate 👁 12 views 📅 May 28, 2026

Your UPS didn't shut down the server when power died. Here's how to fix that in under 15 minutes.

Before you start: what this error actually means

This error code means the UPS service (on Windows Server) got the signal to shut down the system but couldn't complete it in time. The power was gone, the battery was draining, but the shutdown script or command didn't fire. I've seen this mostly on older APC Smart-UPS units and CyberPower models running on Server 2016 and 2019. The root cause is almost always one of two things: a hung shutdown command or a battery threshold that's too low.

Fix #1: Quick check — the 30-second fix

Don't jump into configuration yet. First, verify the UPS is actually communicating with Windows. Open Device Manager and look under "Batteries." If you see a yellow warning triangle next to your UPS driver, that's your problem. Right-click and uninstall the driver, then reboot. Windows will reinstall it on next boot. I had a client last week whose entire print queue died because the UPS driver was stale from a Windows Update. This fixed it in under a minute.

If no warning triangle, run this from an admin command prompt:

net start | findstr "UPS"

If you don't see "UPS" in the list, the service isn't running. Start it with:

net start UPS

Then test the shutdown manually by pulling the UPS power cord (or using the test button on the UPS). If it shuts down cleanly now, you're done. If not, move to Fix #2.

Fix #2: Moderate fix — check the shutdown command timeout (5 minutes)

The most common cause of 0X000009B4 is that the shutdown command times out. By default, Windows gives the UPS service 30 seconds to execute a shutdown. That's not enough for larger servers with multiple services or databases. I always set it to 120 seconds on production boxes.

Open Registry Editor (regedit) and go to:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\UPS

Look for a DWORD called ShutdownTimeOut. If it doesn't exist, create it. Set the value to 120 (decimal). That's 120 seconds. Reboot the server or restart the UPS service. Then test again.

While you're here, also check BatteryThreshold under the same key. It's usually a DWORD called LowBatteryThreshold. Default is often 10% — that's too low. I set it to 25% on all servers. This gives the shutdown script more time to run before the battery dies completely.

One more thing: if you're using the built-in Windows UPS service (not APC PowerChute or CyberPower's software), make sure the shutdown command in the UPS configuration actually points to something valid. Go to Control Panel > Power Options > UPS tab > Configure. The "Run a program" field should point to a batch file or script that does the actual shutdown. I've seen this field empty way too many times.

Fix #3: Advanced fix — check the actual shutdown script or command (15+ minutes)

If the above didn't work, the problem is likely in the shutdown script itself. The UPS service calls a command — usually shutdown.exe /s /t 0 or a custom script. If that command hangs or fails, you get 0X000009B4.

Open Task Scheduler and look for a task named "UPS Shutdown" or similar. It's often in the Microsoft\Windows\PowerShell or custom folder. Check the action tab. If it calls a .bat or .ps1 file, test that file manually by running it from an admin command prompt. Does it complete immediately or hang? If it hangs, you've found your culprit.

Common hang causes:

  • The script tries to stop a service that won't stop gracefully. I had a client whose SQL Server service took 90 seconds to stop, and the shutdown script waited for it. Fix: add /f to force-close services in the shutdown command.
  • The script writes to a network drive that's offline. Fix: remove network dependencies from the shutdown script.
  • The script calls wmic or cscript which can hang if another process has locked something. Fix: use shutdown.exe /s /t 0 /f directly in the UPS configuration panel instead of a custom script.

Here's what your UPS shutdown command should look like in the simple scenario:

shutdown.exe /s /t 0 /f

That forces a shutdown immediately with no waiting for hung processes. If you need to log something first, use a batch file like this:

@echo off
echo %date% %time% UPS initiated shutdown >> C:\UPS\shutdown.log
shutdown.exe /s /t 0 /f

Apply that to the UPS configuration and test again. If the error persists, check the Event Viewer logs under Windows Logs > System. Filter by source "UPS" and look for Event ID 500 or 502 — those give you the exact reason the shutdown failed.

Still stuck? One more thing to try

If you're using older UPS hardware (like a Smart-UPS 1000 from 2010), the USB-to-serial adapter might be flaky. Replace the cable with a known-good one, or switch to a network management card if your UPS supports it. I've seen intermittent 0X000009B4 errors caused by a cheap USB cable losing connection mid-shutdown. The UPS service sends the shutdown command via USB, and if the cable drops, the command never arrives.

Also, update your UPS firmware. APC and CyberPower both have firmware updates for battery management and communication. A firmware update fixed this exact error on a client's SUA1500 last year. Took 10 minutes and solved a problem I'd been chasing for weeks.

Was this solution helpful?