www.redhawk.org

Apr 23, 2017 at 04:02 AM
Home arrow Blog arrow Example FAQs arrow Apupsd Cable Configuration - APC Smart/Dumb UPS Cables
Apupsd Cable Configuration - APC Smart/Dumb UPS Cables PDF Print E-mail
Written by Administrator   
Nov 17, 2001 at 03:10 PM

Apupsd Cable Configuration

- From my research to find/make a cable to connect my UPS to my Linux system. Of course I bought the UPS used with a reconditioned battery and the cost of a cable if I could find one was not what I was looking to do. This gives the specs. See the Network Stats link to find the data I am collecting on the UPS. Apupsd Cable Configuration

Cables

First, you will need a serial port cable between the APC UPS and your computer running apcupsd. You can use either the cable that came with your UPS (the easiest if we support it) or you can make your own cable. We recommend that you obtain a supported cable directly from APC.

If you already have an APC cable, you can determine what kind it is by examining the flat sides of the two connectors where you will find the cable number embossed into the plastic. It is generally on one side of the male connector.

To make your own cable, first, you must know whether you have a Smart UPS that sends ASCII characters called Smart Signaling, or a "dumb" UPS that uses serial port line voltage signaling, called Simple Signaling.

The "dumb" UPSes are older models such as the BackUPS (not BackUPS Pro) and the ShareUPS Basic Port that use Simple Signaling. Most other UPSes use Smart Signaling. If in doubt consult the Configuration Section of this manual, or the documentation that came with your UPS.

Smart Signaling Cable for SmartUPSes

If you must build your own cable, and you have a Smart UPS, we recommend building the cable as follows:
SMART-CUSTOM CABLE

Signal Computer UPS
DB9F DB9M
RxD 2 -------------------- 2 TxD Send
TxD 3 -------------------- 1 RxD Receive
GND 5 -------------------- 9 Ground

Simple Signaling Cable for "dumb" UPSes

For "dumb" UPSes using Simple Signaling, if you are going to build your own cable, we recommend to do so as follows:
SIMPLE-CUSTOM CABLE

Signal Computer UPS
DB9F 4.7K ohm DB9M
DTR 4 --[####]--* DTR set to +5V by Apcupsd
|
CTS 8 ----------*--------- 5 Low Battery
GND 5 -------------------- 4 Ground
DCD 1 -------------------- 2 On Battery
RTS 7 -------------------- 1 Kill UPS Power

List of components one needs to make the Simple cable:
  1. One (1) male DB9 connector, use solder type connector only.
  2. One (1) female DB9/25F connector, use solder type connector only.
  3. One (1) 4.7K ohm 1/4 watt 5% resistor.
  4. resin core solder.
  5. three (3) to five (5) feet of 22AWG multi-stranded four or more conductor cable.

- Solder the resistor into pin 4 of the female DB9 connector.

- Next bend the resistor so that it connects to pin 8 of the female DB9 connector.

- Pin 8 on the female connector is also wired to pin 5 on the male DB9 connector. Solder both ends.

 

- Solder the other pins, pin 5 on the female DB9 to pin 4 on the male connector; pin 1 on the female connector to pin 2 on the male connector; and pin 7 on the female connector to pin 1 on the male connector.

 

- Double check your work.

We use the DTR (pin 4 on the female connector) as our +5 volts power for the circuit. It is used as the Vcc pull-up voltage for testing the outputs on any "UPS by APC" in Simple Signaling mode. This cable may not work on a BackUPS Pro if the default communications are Smart Signaling mode. This cable is also valid for "ShareUPS" BASIC Port mode and is also reported to work on SmartUPSes. However, the Smart Cable described above is much simpler. To have a better idea of what is going on inside apcupsd, for the SIMPLE cable apcupsd reads three signals and sets three:

Reads:
CD, which apcupsd uses for the On Battery signal when high.

CTS, which apcupsd uses for the Battery Low signal when high.

RxD (SR), which apcupsd uses for the Line Down
signal when high. This signal isn't used for much.

Sets:
DTR, which apcupsd sets when it detects a power failure (generally
5 to 10 seconds after the CD signal goes high). It
clears this signal if the CD signal subsequently goes low
-- i.e. power is restored.

TxD (ST), which apcupsd clears when it detects that the CD signal
has gone low after having gone high - i.e. power is restored.

RTS, which apcupsd sets for the killpower signal -- to cause the UPS
to shut off the power.

Please note that these actions apply only to the SIMPLE cable, the signals used on the other cables are different.

Finally, here is another way of looking at the CUSTOM-SIMPLE cable:
APCUPSD  SIMPLE-CUSTOM CABLE


Computer Side | Description of Cable | UPS Side
DB9f | DB25f | | DB9m | DB25m
4 | 20 | DTR (5vcc) *below | n/c |
8 | 5 | CTS (low battery) *below | <- 5 | 7
2 | 3 | RxD (no line voltage) *below | <- 3 | 2
5 | 7 | Ground (Signal) | 4 | 20
1 | 8 | CD (on battery from UPS) | <- 2 | 3
7 | 4 | RTS (kill UPS power) | -> 1 | 8
n/c | 1 | Frame/Case Gnd (optional) | 9 | 22

Note: the <- and -> indicate the signal direction.


Optional connections of original SIMPLE-CUSTOM specification
that are not used.

4.7K ohm
DTR 4 --[####]--* Note needed
|
RxD 2 ----------*--------- 3 Not used by Apcupsd

Apcupsd will also support the following off the shelf cables that are supplied by APC:

940-0020B Simple Signal Only, all models.
940-0023A Simple Signal Only, all models.
940-0119A Simple Signal Only, Back-UPS Office.
940-0024[B/C/G] SmartMode Only, SU and BKPro only.
940-0095[A/B/C] PnP (Plug and Play), all models.
940-1524C SmartMode Only

Simple Signaling Features Supported by Apcupsd for Various Cables

The following table shows the features supported by the current version of Apcupsd (3.8.2 or later) for various cables running the UPS in Simple Signaling mode.

Cable Power Loss Low Battery Kill Power Cable Disconnected
940-0020B Yes No Yes No
940-0020C Yes Yes Yes No
940-0023A Yes No No No
940-0119A Yes Yes Yes No
940-0095A/B/C Yes No Yes No
simple Yes Yes Yes No

Simple UPS Signaling

Apparently, all APC signaling UPSes have the same signals on the output pins of the UPS. The difference at the computer end is due to different cable configurations. Thus, by measuring the connectivity of a cable, one can determine how to program the UPS. This is to be verified.

The signals presented or accepted by the UPS on its DB9 connector using the numbering scheme listed above is:

UPS Pin         Signal meaning
1 <- Shutdown when set by computer for 1-5 seconds.
2 -> On battery power (this signal is normally low but
goes high when the UPS switches to batteries).
3 -> Mains down (line fail) See Note 1 below.
5 -> Low battery. See Note 1 below.
6 -> Inverse of mains down signal. See Note 2 below.
7 <- Turn on/off power (only on advanced UPSes only)

Note 1: these two lines are normally open, but close when the
appropriate signal is triggered. In fact, they are open collector
outputs which are rated for a maximum of +40VDC and 25 mA. Thus
the 4.7K ohm resistor used in the Custom Simple cable works
quite well.

Note 2: the same as note 1 except that the line is normally closed,
and opens when the line voltage fails.

The Back-UPS Office 500 signals

The Back-UPS Office UPS has a telephone type jack as output, which looks like the following:
Looking at the end of the connector:

6 5 4 3 2 1
_____________
| . . . . . . |
| |
| |----------|
|__|

It appears tht the signals work as follows:

UPS            Signal meaning
1 (brown) <- Shutdown when set by computer for 1-5 seconds.
2 (black) -> On battery power
3 (blue) -> Low battery
4 (red) Signal ground
5 (yellow) <- Begin signaling on other pins
6 (none) none

940-0020B Cable Wiring

This diagram is for informational purposes and is not complete. Although we do not know what the black box semi-conductor contains, we believe that we understand its operation (many thanks to Lazar M. Fleysher for working this out).

This cable can only be used on simple signaling UPSes, and provides the On Battery signal as well as kill UPS power. Most recent evidence (Lazar's analysis) indicates that this cable under the right conditions may provide the Low Battery signal. This is to be confirmed.

APC Part# - 940-0020B

Signal Computer UPS
DB9F DB9M
CTS 8 -------------------- 2 On Battery
DTR 4 -------------------- 1 Kill power
GND 5 ---------------*---- 4 Ground
|
--- *---- 9 Common
DCD 1 ----|///|----------- 5 Low Battery
||
RTS 7 ----|///| (probably a
--- semi-conductor)
Thanks to Lazar M. Fleysher for proper

940-0020C Cable Wiring

This diagram is for informational purposes and may not be complete, we don't recommend that use it to build you build one yourself. This cable can only be used on simple signaling UPSes, and provides the On Battery signal, the Low Battery signal as well as kill UPS power. In apcupsd versions 3.8.2 and prior, please set your UPSCABLE to 940-0020B. In version 3.8.3 and later, you may specify the cable as 940-0020C. Please note that this diagram may not be accurate.
APC Part# - 940-0020C

Signal Computer UPS
DB9F DB9M
CTS 8 -------------------- 2 On Battery
DTR 4 -------------------- 1 Kill power
GND 5 ---------------*---- 4 Ground
|
*---- 9 Common
RTS 7 -----[ 93.5K ohm ]----- 5 Low Battery
or semi-conductor

940-0023A Cable Wiring

This diagram is for informational purposes and may not be complete, we don't recommend that use it to build you build one yourself. This cable can only be used on simple signaling UPSes, and apparently only provides the On Battery signal. As a consequence, this cable is pretty much useless, and we recommend that you find a better cable because all APC UPSes support more than just On Battery. Please note that we are not sure the following diagram is correct.
APC Part# - 940-0023A

Signal Computer UPS
DB9F DB9M
DCD 1 -------------------- 2 On Battery

3.3K ohm
TxD 3 --[####]-*
|
DTR 4 ---------*
GND 5 ---------------*---- 4 Ground
|
*---- 9 Common

940-0095A Cable Wiring

This diagram is for informational purposes and may not be complete, we don't recommend that use it to build you build one yourself. This cable is used with the backupspropnp and the newbackupspro.
APC Part# - 940-0095A

Signal Computer UPS
DB9F DB9M
DTR 4 ----*
CTS 8 ----|
DSR 6 ----*
GND 5 ---------------*---- 4 Ground
|
*---- 9 Common
RI 9 ----*
|
RxD 2 ----*--------------- 2 On Battery

4.7K ohm
DCD 1 --[####]-*
|
TxD 3 ---------*--[####]-- 1 Kill UPS Power
4.7K ohm

940-0095B Cable Wiring

This diagram is for informational purposes and may not be complete, we don't recommend that use it to build you build one yourself.
APC Part# - 940-0095B

Signal Computer UPS
DB9F DB9M
DTR 4 ----*
CTS 8 ----|
DSR 6 ----|
DCD 1 ----*
GND 5 ---------------*---- 4 Ground
|
*---- 9 Common
RI 9 ----*
|
RxD 2 ----*--------------- 2 On Battery
TxD 3 ----------[####]---- 1 Kill UPS Power
4.7K ohm

940-0119A Cable Wiring

This diagram is for informational purposes and may not be complete, we don't recommend that use it to build you build one yourself. This cable is used with the BackUPS Office UPSes.
APC Part# - 940-0119A

UPS Computer
pins pins Signal Signal meaning
1 (brown) 4,6 DSR DTR <- Shutdown when set by computer for 1-5 seconds.
2 (black) 8,9 RI CTS -> On battery power
3 (blue) 1,2 CD RxD -> Low battery
4 (red) 5 Ground
5 (yellow) 7 RTS <- Begin signaling on other pins
6 (none) none

Win32 Implementation Restrictions for Simple UPSes

Due to inadequacies in the Win32 API, it is not possible to set/clear/get all the serial port line signals. apcupsd can detect: CTS, DSR, RNG, and CD. It can set and clear: RTS and DTR.

This imposes a few minor restrictions on the functionality of some of the cables. In particular, LineDown on the Custom Simple cable, and Low Battery on the 0023A cable are not implemented.

Internal Apcupsd Actions for Simple Cables

This section describes how apcupsd 3.7.2 (September 2000)
treats the serial port line signals for simple cables.

apcaction.c:
condition = power failure detected
cable = CUSTOM_SIMPLE
action = ioctl(TIOCMBIS, DTR) set DTR (enable power bit?)

apcaction.c:
condition = power back
cable = CUSTOM_SIMPLE
action = ioctl(TIOCMBIC, DTR) clear DTR (clear power bit)
action = ioctl(TIOCMBIC, ST) clear ST (TxD)

apcserial.c:
condition = serial port initialization
cable = 0095A, 0095B, 0095C
action = ioctl(TIOMBIC, RTS) clear RTS (set PnP mode)

cable = 0119A
action = ioctl(TIOMBIC, DTR) clear DTR (killpower)
action = ioctl(TIOMBIS, RTS) set RTS (ready to receive)

apcserial.c:
condition = save_dumb_status
cable = CUSTOM_SIMPLE
action = ioctl(TIOMBIC, DTR) clear DTR (power bit?)
action = ioctl(TIOMBIC, RTS) clear RTS (killpower)

cable = 0020B, 0020C, 0119A
action = ioctl(TIOMBIC, DTR) clear DTR (killpower)

cable = 0095A, 0095B, 0095C
action = ioctl(TIOMBIC, RTS) clear RTS (killpower)
action = ioctl(TIOMBIC, CD) clear CD (low batt)
action = ioctl(TIOMBIC, RTS) clear RTS (killpower) a second time!

apcserial.c:
condition = check_serial

cable = CUSTOM_SIMPLE
action = OnBatt = CD
action = BattLow = CTS
action = LineDown = SR

cable = 0020B, 0020C, 0119A
action = OnBatt = CTS
action = BattLow = CD
action = LineDown = 0

cable = 0023A
action = Onbatt = CD
action = BattLow = SR
action = LineDown = 0

cable = 0095A, 0095B, 0095C
action = OnBatt = RNG
action = BattLow = CD
action = LineDown = 0


apcserial.c
condition = killpower

cable = CUSTOM_SIMPLE, 0095A, 0095B, 0095C
action = ioctl(TIOMCBIS, RTS) set RTS (kills power)

cable = 0020B, 020C, 0119A
action = ioctl(TIOMCBIS, DTR) set DTR (kills power)

RS232 Wiring and Signal Conventions

DB-25
Pin # DB-9
Pin # Name DTE-DCE Description
1 -- FG --- Frame Ground/Chassis GND
2 3 TD ---> Transmitted Data, TxD
3 2 RD <--- Received Data, RxD
4 7 RTS ---> Request To Send
5 8 CTS <--- Clear To Send
6 6 DSR <--- Data Set Ready
7 5 SG ---- Signal Ground, GND
8 1 DCD <--- Data Carrier Detect
9 -- -- --- Positive DC test voltage
10 -- -- --- Negative DC test voltage
11 -- QM <--- Equalizer mode
12 -- SDCD <--- Secondary Data Carrier Detect
13 -- SCTS <--- Secondary Clear To Send
14 -- STD ---> Secondary Transmitted Data
15 -- TC <--- Transmitter (signal) Clock
16 -- SRD <--- Secondary Receiver Clock
17 -- RC ---> Receiver (signal) Clock
18 -- DCR <--- Divided Clock Receiver
19 -- SRTS ---> Secondary Request To Send
20 4 DTR ---> Data Terminal Ready
21 -- SQ <--- Signal Quality Detect
22 9 RI <--- Ring Indicator
23 -- -- ---> Data rate selector
24 -- -- <--- Data rate selector
25 -- TC <--- Transmitted Clock

Pin Assignment for the Serial Port (RS-232C), 25-pin and 9-pin, Female End

 

13                         1         5         1
_______________________________ _______________
. . . . . . . . . . . . . / . . . . . / RS232-connectors
. . . . . . . . . . . . / . . . . / looking into the
--------------------------- ----------- end of the cable.
25 14 9 6

The diagram above represents the Female end of the cable. The
male end is the same, but looking from inside the cable.

DTE : Data Terminal Equipment (i.e. computer)
DCE : Data Communications Equipment (i.e. UPS)
RxD : Data received; 1 is transmitted "low", 0 as "high"
TxD : Data sent; 1 is transmitted "low", 0 as "high"
DTR : DTE announces that it is powered up and ready to communicate
DSR : DCE announces that it is ready to communicate; low=modem hang-up
RTS : DTE asks DCE for permission to send data
CTS : DCE agrees on RTS
RI : DCE signals the DTE that an establishment of a connection is attempted
DCD : DCE announces that a connection is established

 

Ioctl to RS232 Correspondence

#define TIOCM_LE        0x001
#define TIOCM_DTR 0x002
#define TIOCM_RTS 0x004
#define TIOCM_ST 0x008
#define TIOCM_SR 0x010
#define TIOCM_CTS 0x020
#define TIOCM_CAR 0x040
#define TIOCM_RNG 0x080
#define TIOCM_DSR 0x100
#define TIOCM_CD TIOCM_CAR
#define TIOCM_RI TIOCM_RNG
#define TIOCM_OUT1 0x2000
#define TIOCM_OUT2 0x4000

Last Updated ( Nov 08, 2005 at 08:56 PM )
<Previous