Replacing APC Smart-UPS SC450RM battery


Problem statement

As I indirectly mentioned before, I use APC Smart-UPS SC 450 RM to provide battery backup for some of my servers.

It’s a handy 1U UPS. But what do you do exactly, when the time comes – after ~5 years – to replace the batteries?

More specifically: according to the manual, replacing the batteries can be accomplished without turning the UPS off. But exactly how?

And how does one change the “Date battery replaced” string in the EEPROM?

Let’s find out.

Get new batteries!

One pleasant morning, I started receiving angry emails from apcupsd:

Subject: fp8 UPS UPS_IDEN battery needs changing NOW.
[...]
DATE     : 2026-04-10 12:17:31 +0200
[...]
MODEL    : Smart-UPS SC450 RM
STATUS   : ONLINE REPLACEBATT
[...]
BATTDATE : 08/22/20

telling me to get a new battery pack.

Well, thank you, apcupsd, my reliable friend1. If only you weren’t spamming me every 9 hours with the same info. :-D

Anyway, one search later, I found out this UPS feeds on an RBC18 battery pack.

You can get the crazy expensive original APC replacement pack for €200, or opt for cheaper Chinesium packs for ~€67. For example from Reichelt.

Even better, if you can find HRL 634W F2 (6V 34W) cells2, get two, join them with double-sided tape, and re-use the connector from the old pack.

With new batteries sorted out, let’s talk about the next steps.

And now replace them

With batteries and screwdriver in hand, I took a trip to the DC. Opened the bay, unplugged old batteries, and plugged in the new ones. Done.

The status indicator still squeaks “Replace battery”. Hmm.

But since the UPS has exactly one button, I did not feel comfortable messing with it.

And I kept being spammed by apcupsd that the battery is bad. So, the question is: how does one reliably trigger a self-test (or battery test)?

Well, if you run apctest3, you get several options:

$ apctest
2026-05-15 16:07:23 apctest 3.14.14 (31 May 2016) unknown
Checking configuration ...
sharenet.type = Network & ShareUPS Disabled
cable.type = Custom Cable Smart
mode.type = APC Smart UPS (any)
Setting up the port ...
Doing prep_device() ...
 
You are using a SMART cable type, so I'm entering SMART test mode
Hello, this is the apcupsd Cable Test program.
This part of apctest is for testing Smart UPSes.
Please select the function you want to perform.
 
1) Query the UPS for all known values
2) Perform a Battery Runtime Calibration
3) Abort Battery Calibration
4) Monitor Battery Calibration progress
5) Program EEPROM
6) Enter TTY mode communicating with UPS
Q) Quit

The Battery Runtime Calibration sounds like it, but it isn’t. Not yet. First, we need to explain to the UPS that the battery is fine. And for that we really need to trigger self-test4.

Fortunately, if you search on the ’Net for smart ups protocol, you will find a few hits.

Together with the option 6 (Enter TTY mode communicating with UPS) we’re in business!

I’m not 100% sure which one has done the trick, but definitely doing the A (Front panel test) and W (Self test) made the UPS realize the batteries changed. Good.

The other thing I wanted to solve is the “Date battery replaced”, and also the UPS Identifier, because UPS_IDEN is rather non-specific.

At first I overlooked the 5) Program EEPROM menu item and ended up learning the low-level procedure the hard way:

Be mindful of the fact that you can’t paste in the whole string; the UPS won’t be happy with that. Instead, slowly type it in one by one.

Or, use the “Program EEPROM” menu. :-D

Closing words

In hindsight, the process was relatively straightforward.

After the battery reached full charge, I performed a runtime calibration (also part of apctest), restarted apcupsd and Bob’s my uncle5.

  1. As luck would have it, I was about to embark on a long-ish trip overseas, so timely replacement was essential. But Pim from ipng.ch where the server is hosted was flexible, and it worked out well before my scheduled departure. \o/

  2. Yes, I’m that cheap. If I can get ’em.

    The same holds for battery packs fitting other APC UPS-es. For example, the RBC6 costing €300 can be replaced with CSB RBC6 for €107, or with two GP12120F2 for €35 each. Etc.

  3. After turning off apcupsd, because it hogs the port. Btw, apcaccess, that talks to running apcupsd, supports only the status command.

  4. It would happen on its own, too. Since the UPS periodically self-tests. But that’s a once in 14 days affair (by default). So, absent more precise info, that’d be roughly 19 annoying emails later.

  5. I’m guessing I’ll be seeing him in another 3-5 years.