3 min read

Hacking the APC Smart-UPS 1000

I have an old APC Smart-UPS 1000 (SU1000NET) that recently started giving me bad battery warning beeps. I’ve had that in the past, and replacing the battery has always solved it. This time it didn’t.

First I read that sometimes the battery constant for these UPS devices can get confused. (I read that at: http://www.conetrix.com/Blog/post/Manually-esetting-an-APC-Smart-UPS-battery-constant-after-new-battery-replacement.aspx). So I did the reset procedure described there.

A few things to keep in mind before you do this:

  • You need an APC cable, not a plain serial cable. In my case I had one that I hooked up to an FTDI USB serial cable.
  • The instructions from the site above aren’t exact - they make reference to pressing **1** but they really mean press 1
  • There is no need to type any keys other than the ones specified. No returns, etc.
  • The keys are case-sensitive. Y is not y.

So I hooked the cable up, connected a terminal at 2400/8/N/1 Xon and changed the value of the battery constant from 79 back up to A0, which I’d read was the correct value for the SU1000NET. Here are the keys I entered:

Y (you see SM) 1 (then wait 1 second) 1 (you see PROG) 0 (I saw 79) +++++++ (and kept on pressing + slowly until I saw A0) R (you see BYE)

I pressed Y0R to see that it had been properly set. Then I pressed the self-test button and… more beeps and another battery failure indication. Boo.

So I figure something has gone awry with this UPS. I wanted to shut off the beeps at least. That led me to this wonderful site: http://www.networkupstools.org/ups-protocols/apcsmart.html

That describes the entire PowerChute protocol. So I decided to turn off the weekly self-test. I did: Y (see SM) E (see 336) + (see OK) E (see 168) + (see OK) E (see ON) + (see OK) E (see OFF) R (see BYE)

Hopefully that will turn the annoying beeps at 3am off. In the meantime, my UPS still tells me that the new batteries are bad. But when it loses power, it still does the right thing… so hopefully this will work.