How to Fix an APC UPS that’s not charging its Battery

I recently had my APC Smart-UPS 3000 RM report to me that I needed to replace the battery. Sure thing, I ordered a replacement from Ebay, plugged in and thought everything should be just fine.

Well, it wasn’t. The battery was not charged, and neither reset nor power cycling the UPS helped. Today, I was lucky enough to find this Video on Youtube:

Fortunately, also, I was having an old 9 pole m-f serial cable which I happily plugged into the back side of the APS first, and then into my server’s serial port. At which time everything was powered down.

It of course helps to RTFM before the fact, so I saw this scheme:

And as I had a spare female serial connector (it helps to never throw those kinds of things away; I used to make those cables myself about 20 years ago) and of course a soldering iron, I modified the cable that I had accordingly.

Since my server is running on Linux, instead of using Hyperterm, I used minicom with the following /etc/minicom/minirc.dfl:

pu port /dev/ttyS1
pu baudrate 2400
pu rtscts No
pu xonxoff No

Under ubuntu, you can install minicom just like apt-get install minicom. Then run minicom as root, and it should connect you to the APC. If not, you can use minicom -o -s to modify the settings.

The idea from the above Youtube video in essence goes like this: You somehow use a terminal program to connect to your APC UPS, then

  1. Press Shift+Y to get a SW prompt
  2. Press 1 two times with about 2 seconds interval to get a PROG prompt
  3. Press 0 to get a status, where everything except 8C is not what you want
  4. Press – as often as it takes to get the status set to 8C
  5. Press Shift+R to save and exit

In the Youtube video, it also says to use + to confirm the value; this was not working for me; + is just the opposite of -, i.e. it cycles the other way round.

In the comments to the Youtube video, I found a note that if you have an APC Network adapter plugged into the back of your UPS, then hitting those 1 two times at an interval of 2 seconds would not give you the PROG prompt. This was the case for me; I could remove the network card while the UPS was running, and got to the PROG prompt immediately after. After saving the value (Shift+R) I could just plug back in the network card; after a couple of seconds, I was able to reconnect using telnet or http as usual.

So bottom line: Make sure to build (or order) the correct serial cable.