Workshop: repairs and experiments

APC Smart-UPS 1000 and 1500 on an 8S LiFePO4 battery: wiring, COM port setup, cooling

Published 10.11.2026

APC Smart-UPS 1000 and 1500 (SUA1000I, SUA1500I) on an 8S LiFePO4 battery instead of lead-acid. What it takes:

  • wiring and wire sizes, Anderson connectors, BMS and fuse;
  • an extra charger: the UPS itself charges a big battery very slowly;
  • setup over the COM port: number of battery packs, voltmeter calibration so the UPS charges to the voltage you want, runtime calibration;
  • starting from battery with no mains;
  • cooling: a fan with a thermal switch for the 1000, a quieter fan for the 1500;
  • which capacitors to replace;
  • the full list of UPS commands.

draft — work in progress

⚠ Before you start. A 100 Ah LiFePO4 battery stores about 2.5 kWh, and its short-circuit current is hundreds of amps. Every circuit below has a fuse next to the battery. Inside the UPS there is 230 V mains, and the capacitors stay charged after switch-off. Changing the UPS memory (EEPROM) is at your own risk: a wrong command can leave the UPS unusable.

Why LiFePO4 and why 8S

Both UPS models have a 24 V battery system: two 12 V lead-acid batteries in series. 8S LiFePO4 is eight 3.2 V cells, 25.6 V nominal. Its working range almost matches 24 V lead-acid:

StateLead-acid 2×12 VLiFePO4 8SPer LiFePO4 cell
UPS float (charge hold)~27.4 V~27.4 V3.42 V — 90–95 % charged, good for cell life
fully charged, at rest~25.4 V~26.8 V3.35 V
most of the discharge24–25 V, falling steadily25.6–26.4 V, almost flat3.2–3.3 V
UPS cuts off~21 V~21 V2.6 V — nearly empty, but still above 2.5 V

What LiFePO4 gives you: thousands of cycles instead of a few hundred, nearly all of its capacity even at high current, a third of the weight, and no hydrogen.

But the UPS “thinks” it has lead-acid. Because of that:

  • the charge percentage on the UPS means nothing for LiFePO4. The voltage curve is flat: the UPS shows “full” for a long time and then suddenly “empty”;
  • the runtime estimate is wrong until you set the pack count and calibrate (see “Setup”).

The battery: BMS, wires, connectors, fuse

BMS

Use the battery only with an 8S BMS (a protection and cell-balancing board). Without one, a weaker cell will sooner or later be over-discharged or overcharged.

WhatSUA1000ISUA1500I
UPS power670 W980 W
battery current at full power (≈ P ÷ 21 V ÷ 0.85 efficiency)up to ~38 Aup to ~55 A
BMS continuous current60 A or more100 A or more

⚠ Inrush current. The UPS has big capacitors on its battery input. When the battery is connected they charge almost like a short circuit: there is a spark, and some BMS boards trip their short-circuit protection. Then the UPS simply will not turn on. The cure is precharging: connect through a 10–20 Ω (5 W) resistor for a few seconds, then directly. You can buy ready-made connectors with a built-in resistor, or use a separate switch.

⚠ If the UPS lives in an unheated room, choose a BMS with low-temperature charge protection (LiFePO4 must not be charged below 0 °C).

Wires

Copper, fine-stranded flexible wire with silicone insulation, kept short: up to 1–1.5 m each way.

UPSMinimumRecommendedFuse at the battery
SUA1000I6 mm² (AWG 10)10 mm² (AWG 8)60 A
SUA1500I10 mm² (AWG 8)16 mm² (AWG 6)80 A

The fuse must be rated for DC and at least 32 V (ANL, MIDI, Class T or a DC breaker). It goes on the positive lead, as close to the battery as possible: it protects the wire, not the UPS. Flat automotive blade fuses are not suitable for these currents.

Why not thinner: 2 m of 16 mm² wire (there and back) drops ~0.2 V at 55 A. With 4 mm² the drop is already ~0.5 V and the wire gets noticeably warm. The UPS sees fewer volts and decides earlier that the battery is flat.

Anderson connectors

APC itself uses Anderson SB50 (grey) on its battery packs. So an SB50 on the lead from the LiFePO4 plugs straight into the UPS connector, no rework needed.

ConnectorRated currentWireUse
SB5050 A6–16 mm² (AWG 10–6)SUA1000I — with margin; SUA1500I — up to ~70 % load
SB120120 A16–35 mm² (AWG 6–2)SUA1500I at full power, long discharges
SB175175 A25–50 mm²more than these UPS need

How to choose:

  • by current, not by wire size;
  • colours are a mechanical key: connectors of different colours do not mate. Take grey, like APC;
  • crimp the contacts, do not solder them: solder cracks under vibration and heat, and it creeps under the spring pressure;
  • buy genuine: fakes have thinner brass and a weaker spring, and the contact heats up. Easy check: after an hour at full current the connector should be barely warm.

Charging: the UPS charges, but very slowly

The UPS charger is sized for the stock lead-acid batteries (2×12 V 12 Ah in the SUA1000I, 2×12 V 17 Ah in the SUA1500I). It will charge a big LiFePO4 too, but slowly: its charging current is sized for a battery several times smaller, so a 100 Ah battery takes a very long time to charge from empty.

That is why you want a separate charger for 8S LiFePO4, connected to the battery in parallel with the UPS:

  • set its voltage no higher than the voltage the UPS charges to (for example 27.6 V, see calibration below). Then the two chargers do not fight each other, and the UPS never sees a battery voltage above its own;
  • the key point is to set both voltages against the same voltmeter. Put a multimeter on the battery terminals: calibrate the UPS over the COM cable to the voltage you need (step 2 below), then set the power supply voltage using the same multimeter. The UPS then does not notice the supply running in parallel and works as usual;
  • we used industrial 24 V power supplies: Eltek 1000, Eltek 1500 and Mean Well UHP-1500-24. Their output voltage can be trimmed to the value you need;
  • a power supply is not a charger: into a discharged battery it delivers its maximum current. Pick one that limits the current in that case instead of shutting down or restarting in a loop;
  • when the mains is gone, the switched-off supply must not drain the battery through its output. Check the battery current with the supply off;
  • give the charger its own fuse too.

Setup over the COM port

Everything LiFePO4 needs is done with commands over the COM port: pack count, calibration, limits, tests. No APC software is needed for it.

The cable. An ordinary serial cable will not do: UPS pin 1 is also the “shut down” command. You need a 940-0024C or an equivalent. How to solder one is in our article APC Smart-UPS 1000 on car batteries.

Terminal: 2400 bit/s, 8 bits, no parity, 1 stop bit, no flow control.

SystemTool
Linuxscreen /dev/ttyUSB0 2400 or minicom -D /dev/ttyUSB0 -b 2400
WindowsPuTTY: Serial, the COM port, 2400
  • A command is one character, no Enter. The UPS replies at once.
  • Always send Y first: the UPS replies SM (it enters “smart” mode).
  • While COM is in use, unplug the USB cable. We worked one at a time: COM for setup, USB for PowerChute.
  • Pause between the characters of multi-character commands. If you type too fast, the UPS stops answering.

Changing a value: send the parameter letter (the UPS shows the current value), then + or - for the next or previous allowed value. Then send the letter again to check.

Step 1. Number of battery packs

The UPS estimates runtime from how much battery it has. The > parameter is the number of external battery packs:

>        → 000        (no external packs)
+        → each "+" adds one pack
>        → check

How many: your battery capacity ÷ the stock capacity, minus one (the stock battery is already counted). For example, a 100 Ah LiFePO4 in the SUA1500I: 100 ÷ 17 ≈ 6, so 5 external packs. In the SUA1000I: 100 ÷ 12 ≈ 8, so 7.

Our UPS units are set to FF. ⚠ With that value the UPS treats the battery as huge: the runtime estimate (j) is too high, and the “battery low” warning may not come in time. The UPS then shuts down at its low voltage limit without a warning. If computers must shut down on their own, set the monitoring software to shut them down by voltage or by time on battery, and test it on a real discharge.

Why change > at all: left at 000, the UPS thinks the battery is small, signals “battery low” early, and the monitoring software (PowerChute, NUT) shuts the computers down while there are still hours of battery left.

Step 2. Voltmeter calibration: “fooling” the UPS about the voltage

The UPS charges the battery to a voltage it measures itself. Hence the trick: change the calibration of its voltmeter, and it keeps showing the same ~27.4 V while the real battery voltage is different. That is how you choose the voltage the UPS charges LiFePO4 to. In other words, the real battery voltage and the voltage the UPS shows will differ — by design.

GoalReal charge voltagePer cell
long life (recommended for permanent UPS use)27.4–27.6 V3.42–3.45 V
more capacityup to 28.0 V3.5 V
⛔ never above28.4 V3.55 V — the BMS starts balancing and cutting off

This is done in the PROG service mode:

Y        → SM
1        (wait 2–4 seconds)
1        → PROG       (service mode)
B        → EA         (current battery voltmeter constant; yours will differ)
+ or -   → changes the constant by one step
R        → BYE        (leave PROG mode)

The procedure:

  1. Write down the starting values of B, 0, 4, 5, 6, so you can go back.
  2. Multimeter on the battery terminals. The UPS is on mains and charging.
  3. Change B one step at a time and wait a few minutes for the charge voltage to settle. The step size in volts is unknown and differs between boards.
  4. Direction: a higher constant means a lower real charge voltage (the UPS believes it has already reached its limit). A lower one does the opposite.
  5. Once you reach the target, send R to leave.

⚠ The same voltmeter measures the low cut-off, where the UPS drops the load. If it “reads high”, it will also cut off at a lower real voltage. Check that the low limit (~21 V as the UPS sees it) does not go below 2.5 V per cell (20 V) in real volts. Otherwise the BMS trips first and cuts the power.

There are more constants in service mode that are best left alone unless needed:

ConstantWhat it is (per repairers’ notes; APC does not document it)SUA1000ISUA1500I
0“battery constant” — for the runtime estimate; calibration changes it by itselfBCA1
4unknown0709
5charge estimate at the moment of transfer to batteryB5B9
6the point where the UPS considers the battery empty1313
Lmains voltmeter calibration——
Ctrl+Bmodel code0A0E

These are the factory values from the table at kirbah.github.io/apc-ups. Our SUA1000I read exactly 07 B5 13 BC in 2016.

⛔ Never send Ctrl+Y (it erases the EEPROM, and the UPS may not come back without reflashing its memory), and avoid z (factory reset of settings) unless you need it.

Step 3. Runtime calibration

After steps 1–2, run a calibration: a discharge under load from which the UPS updates constant 0.

  1. The battery is at 100 % (as the UPS sees it). The slow UPS charger gets in the way here, so charge the battery fully with the separate charger first.
  2. The load must be at least 35 %: lamps, a heater, but not computers that must not be switched off.
  3. D starts it. The UPS discharges the battery to ~25 % and returns to mains. A second D aborts.
  4. With a big battery this takes hours: 100 Ah at 35 % load on the SUA1000I is roughly 8–9 hours.

Starting from battery with no mains (cold start)

With no mains, the UPS starts from battery like this (per APC manual 990-1194C for SUA 750/1000/1500):

  1. The battery is connected, and the UPS plug is not in the socket (or there is no mains).
  2. Press and hold the I / Test button for about 3–4 seconds. The UPS beeps, the LEDs flash, then comes a second, long beep.
  3. Release the button during the long beep. If the beep ends while you are still holding, try again.
  4. The UPS runs a self-test and powers its output from battery.

If the UPS does not turn on at all: the battery is disconnected, fully drained, the BMS has tripped (see “Inrush current” above), or the UPS is faulty.

Cooling

Long battery operation means hours of the inverter at full power. The UPS was never designed for that: the stock battery runs out in minutes.

SUA1000I: a fan and a thermal switch

The SUA1000I has no fan. For long discharges we added a 12 V fan, an LM317 regulator and a thermal switch that turns the fan on only when the UPS gets hot.

WhatWhichNote
fan12 V DC, 80 mmit cannot run straight from the battery bus (up to ~28 V), hence the LM317
regulatorLM317, circuit in the SUA1500I section belowthe regulator can slow the fan until you cannot hear it at all, while it still spins
thermal switchceramic body, normally open (NO), 40 °Con the power transistor heatsink
supplyfrom the battery bus, through a 1 A fuseso the fan works on both battery and mains

How it works: while the UPS is cool, the switch is open and the fan is silent. After a long run on battery the heatsink heats up, the switch closes and the fan starts. Once the heatsink cools down, the switch opens again.

  • Use a ceramic thermal switch. We first had one in a metal body, and it stuck. The ceramic one does not.
  • The 40 °C rating is a guide. In practice it closes at a higher temperature: the switch follows the heatsink with a delay, and the switches themselves vary.
  • The LM317 runs hotter than in the SUA1500I: it brings the battery voltage (up to ~28 V) down to 12 V, dropping up to 16 V across itself. For a 0.15 A fan that is (28 − 12) V × 0.15 A ≈ 2.4 W, so a heatsink is a must.

One more thing for the SUA1000I: remove the plastic network card (SmartSlot) cage from inside. It blocks the air path. You will no longer be able to fit a network card.

SUA1500I: a quieter fan (LM317)

The SUA1500I already has a fan, but it is loud. An LM317 regulator on the stock fan contacts lowers the fan voltage, and with it the speed and noise:

Vout = 1.25 × (1 + R2 / R1)       R1 = 240 Ω, R2 — 2.2–5 kΩ trimmer
  • 12–16 V on the fan instead of 24 V: noticeably quieter. The regulator can go even lower, until you cannot hear the fan at all while it still spins;
  • the LM317 heats up: (24 − 14) V × 0.2 A ≈ 2 W. It needs a small heatsink;
  • the LM317 needs at least 3 V more at its input than at its output.

⚠ Less speed means less cooling. After the mod, check the UPS temperature (C over COM) during a long discharge at your load. If it runs hot, turn the fan speed up with the LM317 as far as needed: you choose between quieter and cooler.

SUA1500I: an aluminium lid instead of steel

The transformer hums, and part of the hum comes from the steel top lid. The transformer’s magnetic field pulls on the steel, and the lid vibrates at 100 Hz. Aluminium is not magnetic and the field does not pull on it, so that part of the hum goes away.

In our SUA1500I the swap made it about 90 % quieter. The buzz that sounds like the transformer core humming went away. In fact it came from between the core and the top lid.

  • aluminium at least 1.5 mm thick, so the lid does not rattle on its own;
  • the lid must be earthed, just like the steel one was: an earth wire to the chassis;
  • steel shielded the transformer field a little, aluminium does not. Keep equipment sensitive to magnetic fields away.

Capacitors

Electrolytic capacitors in a UPS dry out over the years: their internal resistance (ESR) and heating go up and their capacitance goes down. Most often it shows up right at the transfer to battery. The inverter starts abruptly, the control board supply sags, and the output drops for a moment — the computer switches off, even though the battery is fine.

SignSuspect
the computer turns off at the transfer to batterycontrol board supply capacitors, battery bus capacitors
the UPS clicks its relays, restarts, “blinks”control board power supply
bulging tops, leaks, brown residuereplace, no question
“battery fault” with a new batterycapacitors near the battery input, contacts

What to replace them with:

  • the same capacitance, the same or higher voltage;
  • 105 °C, low-ESR: Panasonic FR / FM, Nichicon PW / HE, Rubycon ZLH / ZLJ;
  • the same diameter and lead spacing, so it fits the stock footprint;
  • film capacitors (grey or yellow rectangular ones) usually do not need replacing.

We replaced all the electrolytic capacitors except the largest one.

Extra transistors on the stock footprints

The boards of these UPS have empty footprints for inverter power transistors and their resistors. The same boards are used across several models in the series, and on the smaller models some positions are left unpopulated. Fit transistors and gate resistors into these places, and the inverter current is shared between more transistors.

What it gives:

  • each transistor runs cooler, because the current is shared;
  • more headroom for peaks (motor starts, power supplies with big input capacitors);
  • so long discharges at high load are less stressful.

What it does not give by itself:

  • the transformer is the same. It decides how much the UPS can deliver for a long time, and it is what heats up under overload;
  • the firmware counts overload against the model rating. So the UPS still signals overload at 100 % of its rated power;
  • battery current: the wires, connector, BMS and fuse are sized for the rating (see the tables above).

We fitted transistors and resistors identical to the ones already on the board.

⚠ The transistors must be the same type as the stock ones, from one batch, with a thermal pad to the heatsink, and with all their gate resistors. One transistor without its resistor, and the current balance is broken.

The full COM port command list

APC Smart protocol: one character, one command. The list is compiled from the protocol description in the NUT documentation and at kirbah.github.io/apc-ups. Some commands work only on some models; the UPS answers unsupported ones with NA.

CommandWhat it doesReply
Yenter “smart” mode — always firstSM
Rleave it (and PROG mode)BYE
Ctrl+AmodelSMART-UPS 1000
bfirmware version652.12.I
Vold firmware code—
aprotocol version, available commandslong string
Ctrl+Zallowed values of every parameterlong string
nserial number(do not publish)
mmanufacture date09/09/05
ycopyright(C) APCC

Measurements (read-only)

CommandWhatExample
Bbattery voltage (as the UPS voltmeter sees it)27.40
gnominal battery voltage024
fbattery charge, %100.0
jestimated runtime, min0117:
Pload, %012.3
Ctemperature inside the UPS, °C030.1
Lmains input voltage216.0
M / Nhighest / lowest mains voltage since the last query218.4
Ooutput voltage216.0
Fmains frequency50.00
9line qualityFF — fine, 00 — bad
Qstatus flags (table below)08
Gcause of the last transfer to batteryR, H, L, T, O, S
Xself-test resultOK, BT, NG, NO
~ ' 8status registers 1, 2, 3 (table below)00
>number of external battery packs000

Settings (changed with + / -)

CommandWhatValues
>external battery packs0, 1, 2…
xlast battery replacement datedate
cUPS name (up to 8 characters)text
Eself-test interval336 (14 days), 168 (7), ON (at power-on), OFF
q“battery low” warning — how many minutes before the endthe model’s set of values: + / - step through it
kalarm delay0 (5 s), T (30 s), L (low battery only), N (off)
pshutdown delay after a commandseconds, the model’s set of values
rturn-on delay after mains returnsseconds, the model’s set of values
eminimum charge before the UPS powers its output after mains returns00 (0 %), 01 (15 %), 02 (25 %), 03 (90 %)
l / ulow / high mains limit for transfer to batteryvolts, the model’s set of values (ours: 208 / 253)
ooutput voltage on battery220, 230, 240
smains sensitivityH, M, L

Actions

CommandWhat it doesNote
ALED and beeper test2 s
Wself-test (like the Test button)result via X
Usimulate a mains failurethe UPS goes to battery
Druntime calibrationonly at 100 % charge; a second D aborts
Sshut down after delay p (on battery only)turns back on when mains returns
@nnnshut down and turn on after nnn tenths of an hourpause between characters
K Kshut down after the delaytwice, more than 1.5 s apart
Z Zshut down immediatelytwice, more than 1.5 s apart
Ctrl+N Ctrl+Nturn ontwice, more than 1.5 s apart
Delete (0x7F)cancel S, @, K
z⚠ reset settings to factory defaults

Status flags Q (hexadecimal, bits)

BitMeaning
0calibration in progress
1SmartTrim — lowering high mains voltage
2SmartBoost — raising low mains voltage
3on mains
4on battery
5overload
6battery low
7replace battery

Common values: 08 — on mains, all fine; 10 — on battery; 50 — on battery and low.

Status registers

RegisterBits used on Smart-UPS
~ (1)6 — ready to power the load on command; 7 — on command or when mains returns
' (2)4 — DC imbalance; 6 — SmartTrim / SmartBoost relay fault
8 (3)0 — shut down on low battery; 1 — cannot go to battery due to overload; 2 — main relay fault; 3 — sleeping after @; 4 — shut down after S; 5 — charger fault; 7 — temperature above normal

Messages the UPS sends on its own

CharacterWhat happened
!mains lost, the UPS is on battery (repeats every 30 s)
$mains returned
%battery low
+battery recharged to the set level
?abnormal condition (overload etc.)
=abnormal condition cleared
*about to cut the output
#replace battery (every 5 hours)
|a setting in memory was changed

PROG service mode

CommandWhat
1 … pause 2–4 s … 1enter, reply PROG
0 4 5 6constants (table in step 2)
Bbattery voltmeter calibration
Lmains voltmeter calibration
Ctrl+Bmodel code — ⚠ do not change
Rleave, reply BYE
Ctrl+Y⛔ erases the EEPROM — never

Summary: the order of work

  1. An 8S LiFePO4 battery with a BMS, a fuse at the battery, wires and an Anderson connector from the tables above.
  2. First connection through a precharge resistor.
  3. A 940-0024C COM cable, terminal 2400 8N1, Y → SM.
  4. Write down all constants (PROG: 0, 4, 5, 6, B).
  5. > — battery pack count to match the LiFePO4 capacity.
  6. B in PROG — bring the real charge voltage to 27.4–27.6 V (multimeter on the battery). Check the low cut-off. Set the external supply voltage by the same multimeter.
  7. Fully charge the battery with the separate charger, then D — calibration at a load of 35 % or more.
  8. SUA1000I: a 12 V fan through an LM317 with a ceramic thermal switch, remove the plastic SmartSlot cage. SUA1500I: optionally an LM317 on the fan and an aluminium lid.
  9. Test a long discharge at your own load: temperature C, runtime j, battery voltage with a multimeter.

Article changelog

DateWhat changed
2026-11-07First version (draft): 8S LiFePO4, wires and connectors, charging, the COM port and all commands, voltmeter calibration, cold start, cooling and mods from our own experience, capacitors, transistors.