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-CUSTOM CABLE PC (9 pin) APC (9 pin) 2 RxD 2 3 TxD 1 5 GND 9
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.List of components one needs to make the Simple cable:
Solder both of the resistors into pin# (4) DB9 or (20) DB25 the DTR.
This will be 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.
Next bend each of the resistors so that one connects to (8) DB9 or (5) DB25 the CTS (battery low signal) and the other to (2) DB9 or (3) DB25 the RxD (other on battery signal). This second line is not currently used, but it may be in the near future (this second line fail does not seem to be used in apcupsd-3.7.1 -- KES Feb 2000). In fact, I recommend that you not connect the second resistor (KES Nov 2000).
(*) 8/5 is also wired to pin# 5 on the UPS cable side.
(*) 2/3 is also wired to pin# 3 on the UPS cable side.
(*) we use the DTR as our +5 volts power for the circuit.
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 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 Optional connections of original SIMPLE-CUSTOM specification that are not used. 4.7K ohm DTR 4 --[####]--* Note needed | RxD 2 ----------*--------- 3 Not used by ApcupsdApcupsd 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
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 |
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
#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
Cable | Power Loss | Low Battery | Kill Power | Cable Disconnected |
---|---|---|---|---|
940-0020B | Yes | Yes | Yes | No |
940-0023A | Yes | No | No | No |
940-0119A | Yes | Yes | Yes | No |
940-0095A/B/C | Yes | Yes | Yes | No |
simple | Yes | Yes | Yes | No |
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.
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
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
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
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
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.
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) 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 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 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 cable = 0020B action = ioctl(TIOMCBIS, DTR) set DTR