APC XS 1300 UPS Using 2 AGM Batteries

My trusty APC XS 1300 UPS’s battery died and wouldn’t keep a charge anymore. I really like this UPS, so I wasn’t ready to give up on it yet.

Original Battery

I first set out to buy a replacement battery, APCRBC109, but at $109.00, it was almost as expensive as a whole new unit. The APCRBC109 is 2 SLA 12v 9Ah batteries, which means its 2 sealed lead acid 12 volt 9 amp hour batteries that are wired in series to product 24 volts.

An amp-hour in its basic idea would be you can get 1 amp for 9 hours or 9 amps for 1 hour at 12 volts each.

So, if we were to use the UPS at full power we can estimate how long the battery on the UPS would last. This would give a estimate to compare other batteries with. You can get the total rating from the specs, 780 watts. To figure out how many amps it will draw from the battery, use the watts formula:

Watts is voltage x amperage, w = v x a. Re-arrange it so a = w / v
780w / 24v = 32.5 amps

In a perfect condition (ignoring UPS electronics loss, heat, etc)

9ah / 32.5a = 0.277 hours

Or about 16 minutes run time at full power. Pretty good to protect against short power outages, but we can do better if we want.

Replacement Battery

I bought 2 AGM 12v 55ah batteries.

If I apply the same formula as above, I can calculate theoretical run-time.

55ah / 32.5a = 1.69 hours

Or about 101 minutes! That makes sense because our new batteries hold about 6.11 times more power (55ah / 9ah) then the old ones.

The batteries need to be hooked up in a series, or positive to negative, circuit to create 24 volts (voltage is added in series) in the same way the original batteries do.  The batteries wont fit into the UPS, so I picked up 2 battery cases from Amazon and a resettable fuse.  The fuse was tied in series with the batteries just in case too much power is being drawn.


You can run standard AGM batteries to increase run time.

Wisdom Alarm Project

We have started a new project to interface to the Risco Group Rokonet Wisdom Alarm panel via the RS485 port.

Here is a link to the Wiki page of the project.

So far the code can read partition labels, zone labels, zone status, panel status, arm and disarm.  There are so many unknowns at this time, but we have a great starting point.

We do not have any protocol documentation, so if you can help get some, that would be very helpful and would speed the process along significantly.

We are looking for developers to contribute to this project and hopefully it can become a full Linux Open Source library.