APC Smart 1000 (SUA1000I) with NUT / Linux


Apc Smart 1000

(c) APC

Just before you’ll call me an UPS maniac – here’s one more review. My current choice for 1-3 box server setup – APC Smart-UPS 1000VA USB & Serial 230V is not really similar to the SC1000 reviewed by me earlier, as the latter has a somewhat simplified design internally and also the box itself is different (standalone/desktop vs standalone/RM). And the non-SC is a full-sine model, and has a richer LED display.

Overview

This UPS passed all my test scenarios. In short:

  • properly indicates OB and LB status (no surprises like Ever)
  • shuts down properly on shutdown command and returns OL when power is back (ditto)
  • reports accurate charge and runtime values – calibrated and calculated by UPS internally
  • acts correctly when anytime between LB (nut forced shutdown action) and load shutdown the power returns (shuts down the load anyway to properly power-cycle your systems)

As I have mentioned in one of my earlier posts, this behaviour is absolutely critical for a serious unattended UPS system, other than just UPS toys for desktops where the user is usually there to do the shutdown and then recover if anything goes wrong.

Connectivity of SUA1000I model at the back plate:

  • 8 IEC output sockets
  • 1 IEC input socket
  • battery contact plug
  • USB port
  • DB9 female port (not straight RS232)
  • management card slot

As you see you have 2 (or 3) options to link this UPS to your nut system:

  • USB – works with usbhid-ups driver
  • serial – via a 940-0024C cable – works with apcsmart driver
  • management card – should work via SNMP  (not tested)

USB and serial connectivity (while using the appropriate driver) report a bit differently. While the HID interface is pretty generic, the serial one seems to offer more details and an additional advantage of hacking the UPS using special PROG mode if required (see below). The relevant ups.conf section requires just driver and port lines for valid operation (port=auto for USB), but in my setup I have also set pollinterval/pollfreq to 2 seconds (the former for apcsmart, the latter for usbhid-ups).

For serial connection you need 940-0024C cable. If it does not come in your package, you cna either buy it or build it. The pinout for 940-0024C follows (courtesy NUT documentation):

940-0024C

USB connection

upsc output:

battery.charge: 100
battery.charge.low: 10
battery.charge.warning: 50
battery.mfr.date: 2011/11/15
battery.runtime: 6960
battery.runtime.low: 120
battery.temperature: 23.4
battery.type: PbAc
battery.voltage: 27.4
battery.voltage.nominal: 24.0
device.mfr: American Power Conversion
device.model: Smart-UPS 1000
device.serial: YS0412121583
device.type: ups
driver.name: usbhid-ups
driver.parameter.pollfreq: 2
driver.parameter.pollinterval: 2
driver.parameter.port: auto
driver.version: 2.6.0-exported
driver.version.data: APC HID 0.95
driver.version.internal: 0.35
input.sensitivity: high
input.voltage: 244.8
output.voltage: 244.8
output.voltage.nominal: 230.0
ups.beeper.status: enabled
ups.delay.shutdown: 20
ups.delay.start: 30
ups.firmware: 600.3.I
ups.firmware.aux: 1.5
ups.load: 16.2
ups.mfr: American Power Conversion
ups.mfr.date: 2004/03/17
ups.model: Smart-UPS 1000
ups.productid: 0002
ups.serial: YS0412121583
ups.status: OL
ups.test.result: No test initiated
ups.timer.reboot: -1
ups.timer.shutdown: -1
ups.timer.start: -1
ups.vendorid: 051d

upscmd -l output:

Instant commands supported on UPS [apcusb]:

beeper.disable - Disable the UPS beeper
beeper.enable - Enable the UPS beeper
beeper.mute - Temporarily mute the UPS beeper
beeper.off - Obsolete (use beeper.disable or beeper.mute)
beeper.on - Obsolete (use beeper.enable)
load.off - Turn off the load immediately
load.off.delay - Turn off the load with a delay (seconds)
load.on - Turn on the load immediately
load.on.delay - Turn on the load with a delay (seconds)
shutdown.reboot - Shut down the load briefly while rebooting the UPS
shutdown.return - Turn off the load and return when power is back
shutdown.stayoff - Turn off the load and remain off
shutdown.stop - Stop a shutdown in progress
test.battery.start.deep - Start a deep battery test
test.battery.start.quick - Start a quick battery test
test.battery.stop - Stop the battery test
test.panel.start - Start testing the UPS panel
test.panel.stop - Stop a UPS panel test

upsrw output:

[battery.charge.low]
Remaining battery level when UPS switches to LB (percent)
Type: STRING
Value: 10

[battery.runtime.low]
Remaining battery runtime when UPS switches to LB (seconds)
Type: STRING
Value: 120

[input.sensitivity]
Input power sensitivity
Type: STRING
Value: high

[ups.delay.shutdown]
Interval to wait after shutdown with delay command (seconds)
Type: STRING
Value: 20

[ups.delay.start]
Interval to wait before (re)starting the load (seconds)
Type: STRING
Value: 30

The upsc ups.status field – in addition to OL/OB/LB also reports CHRG and DISCHRG sub-states.

Serial connection

upsc output:

battery.alarm.threshold: 0
battery.charge: 100.0
battery.charge.restart: 00
battery.date: 11/15/11
battery.packs: 001
battery.runtime: 7500
battery.runtime.low: 120
battery.voltage: 27.40
battery.voltage.nominal: 024
device.mfr: APC
device.model: Smart-UPS 1000
device.serial: YS0412121583(
device.type: ups
driver.name: apcsmart
driver.parameter.pollinterval: 2
driver.parameter.port: /dev/ttyS0
driver.version: 2.6.0-exported
driver.version.internal: 2.03
input.frequency: 50.00   
input.quality: FF
input.sensitivity: H
input.transfer.high: 253
input.transfer.low: 208
input.transfer.reason: simulated power failure or UPS test
input.voltage: 243.3
input.voltage.maximum: 243.3
input.voltage.minimum: 240.4
output.voltage: 243.3
output.voltage.nominal: 230
ups.delay.shutdown: 090
ups.delay.start: 000
ups.firmware: 600.3.I
ups.id: UPS_IDEN
ups.load: 014.9
ups.mfr: APC
ups.mfr.date: 03/17/04
ups.model: Smart-UPS 1000
ups.serial: YS0412121583(
ups.status: OL
ups.temperature: 022.5
ups.test.interval: 1209600
ups.test.result: NO

upscmd -l output:

Instant commands supported on UPS [apcserial]:

calibrate.start - Start run time calibration
calibrate.stop - Stop run time calibration
load.off - Turn off the load immediately
load.on - Turn on the load immediately
shutdown.return - Turn off the load and return when power is back
shutdown.stayoff - Turn off the load and remain off
test.battery.start - Start a battery test
test.battery.stop - Stop the battery test
test.failure.start - Start a simulated power failure
test.panel.start - Start testing the UPS panel

upsrw output:

[battery.alarm.threshold]
Battery alarm threshold
Type: ENUM
Option: "0" SELECTED
Option: "T"
Option: "N"

[battery.charge.restart]
Minimum battery level for restart after power off (percent)
Type: ENUM
Option: "00" SELECTED
Option: "15"
Option: "30"
Option: "45"
Option: "60"
Option: "75"
Option: "90"

[battery.date]
Battery change date
Type: STRING
Value: 11/15/11

[battery.runtime.low]
Remaining battery runtime when UPS switches to LB (seconds)
Type: ENUM
Option: "120" SELECTED
Option: "300"
Option: "480"
Option: "660"
Option: "840"
Option: "1020"
Option: "1200"
Option: "1380"

[input.sensitivity]
Input power sensitivity
Type: ENUM
Option: "H" SELECTED
Option: "M"
Option: "L"

[input.transfer.high]
High voltage transfer point (V)
Type: ENUM
Option: "253" SELECTED
Option: "257"
Option: "261"
Option: "265"

[input.transfer.low]
Low voltage transfer point (V)
Type: ENUM
Option: "208" SELECTED
Option: "204"
Option: "200"
Option: "196"

[output.voltage.nominal]
Nominal output voltage (V)
Type: ENUM
Option: "230" SELECTED
Option: "240"
Option: "220"

[ups.delay.shutdown]
Interval to wait after shutdown with delay command (seconds)
Type: ENUM
Option: "090" SELECTED
Option: "180"
Option: "270"
Option: "360"
Option: "450"
Option: "540"
Option: "630"
Option: "000"

[ups.delay.start]
Interval to wait before (re)starting the load (seconds)
Type: ENUM
Option: "000" SELECTED
Option: "060"
Option: "120"
Option: "180"
Option: "240"
Option: "300"
Option: "360"
Option: "420"

[ups.id]
UPS system identifier
Type: STRING
Value: UPS_IDEN[ups.test.interval]
Interval between self tests (seconds)
Type: ENUM
Option: "1209600" SELECTED
Option: "604800"
Option: "0"

In serial connection mode there are no CHRG/DISCHRG sub-states reported, but there are more settings you can change with upsrw.

The PROG mode

If you do not care about losing your warranty and/or accidentally breaking your UPS device, you can enter the programming mode. Caution: you can break your device. You have been warned.

This mode can be useful when you need to change the battery constant. For example when you have replaced your batteries and after calibrating them the data reported still does not seem to make sense. You can also calibrate load measurement, battery voltmeter, input voltage voltmeter, and change other dangerous settings.

To use it connect to the UPS via a serial line 2400 8N1 and SW flow control (minicom is your friend). Send “Y” character. Response: “SM“. Send “1” and again “1” with a 1-2 second gap. Response: “PROG“. You are in programming mode. To change battery constant: Send “0” (zero). Response: current battery constant in hexadecimal format. Use “+” and “” to change (you will hear the UPS beeper clicking). Fianlly send “R” and the response will be: “BYE“. To confirm your changes send “Y” (response: “SM“) and “0” (zero) (response: battery constant).

Other settings (in former example the “0” was the command):

  • B: Calibration of the battery voltmeter
  • L: Calibration of line voltmeter
  • P: Calibration of load measurement

I calibrated my line voltmeter (it was a bit off) by using a real voltmeter, changing the parameter and observing if my real voltmeter and UPS measurement match. For more information check the excellent APCUPSD manual and this message on monitoring.nut.user.

Operation data

My APC Smart 1000 fully charged was able to support a load of about 43% for 29 minutes. Here’s how it went:

APC Smart 1000 discharge cycle with 43% load

APC Smart 1000 discharge cycle with 43% load

Advertisement

What do you think?

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s




Enter your email address to follow this blog and receive notifications of new posts by email.

Join 51 other subscribers

Marcin Gałkowski

Seasoned admin, Linux hacker, Android fan, Gentoo enthusiast. Doing digital audio on Linux when time permits. At work: IT Team Lead (+labs, +datacenters...)

BTC tip jar:

1HprotPu2zi8v8hFZBqVfcTYL7ZYVYBruo

%d bloggers like this: