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.


This post currently has 4 responses

  • Yet another battery exchange done in 2022, and I had of course long time forgotten about this work. The observation was that after calibration, the runtime was like at 4 minutes, and I kept getting warning messages. I remembered this, dug into my rack and even found my old serial cable. Attached it after slightly pulling out the network card, and did the whole hullabaloo described throughout this article and comments. After all of that, everything appears to be working fine. I’m actually leaving a printout of this in my rack, as I tend to forget what I had done ¯\_(ツ)_/¯

  • Here is an update: I had to replace my battery today, and again had a problem. The UPS was working, but the web interface said, “Serial Communication Lost.” Since I hadn’t guarded my cable from last time, I quickly created a new one, and lo and behold, the status was 2C instead of 8C. I changed it, removed the cable from my computer, plugged back in the network module…

    …and it didn’t help. I first found out that you can update the date of the battery replacement, as shown here:

    After hitting Shift+Y, instead of hitting 1 twice, you type “x” – which shows the last change date of the battery, or nothing. Then type “-” followed by the current date in the format MM/DD/YY. Type x again, and it should show what you have entered.

    This did not help. The next step was to find this page. After entering Smart Mode using Shift+Y, I tried to show self-test results using Shift+X. The result was “NO”, so no results available. I ran a self-test using Shift+W, and after that, Shift+X responded “OK.” Still, no luck in the web interface (each time I disconnected the serial cable from my computer and pushed back in the network card). I even tried the reset button of the network card.

    I ended up powering everything down, including the UPS. I restarted, and it was working again.

    Possible explanations: Either a real reboot was needed, or the fact that I had left plugged in the serial cable on the side of the UPS was causing the problem to persist.

  • Hey Matthias,

    You are awesome and thank you for adding that little note at the end of your post “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”. I could not figure out why I couldn’t gain access to the “PROG” mode but after simply removing the card and I immediately gained access.

    Thanks again for a great post!

Leave a Reply

Your email address will not be published. Required fields are marked *