GENERICUPS(8)
π GENERICUPS(8) π
okay bestie, buckle up, because this is genericups, a driver from the NUT Manual and it is exactly what it sounds like: the low-key universal driver for contact-closure UPS equipment. β¨
πΈ NAME πΈ
genericups β the driver for contact-closure UPS equipment. yes that's the whole name. iconic. π
π SYNOPSIS π
genericups -h
genericups -a UPS_NAME [OPTIONS]
quick note bestie: this man page only spills the tea on the specific features of thegenericupsdriver. for the whole core-driver lore, go readnutupsdrv(8). π«Ά
π¦ SUPPORTED HARDWARE π¦
so this driver works with hardware from many different manufacturers, and the reason it can do that is that it only uses the very simplest of signaling schemes. it's giving minimalism. it's giving "we don't need much." π
"contact closure" refers to a kind of interface where basic high/low signals are provided to indicate status. that's it. that's the whole relationship. this kind of UPS can only report line power and battery status. no drama, no gossip, no extras.
which means you will only get the essentials in ups.status: OL, OB, and LB (some UPSes may also support RB and BYPASS). anything else? you need a smarter UPS, bestie. π
π§ CABLING π§
cabling is different for every kind of UPS. like, every single one. check the table below for the info on what's known to work with a given UPS type. π
π EXTRA ARGUMENTS π
this driver supports the following settings in the ups.conf(5):
upstype=typeβ Required. configures the driver for a specific kind of UPS. check the UPS TYPES section below for which entries are actually available. don't skip this one, fr fr.mfr=stringβ optional. the whole nature of a generic UPS driver is that sometimes the stock manufacturer data has absolutely zero relation to the actual hardware that's attached. π with themfrsetting you can change the value that clients monitoring this UPS will see. glow-up for your metadata.model=stringβ optional. same vibe asmfrabove, except this one overrides the model string instead.serial=stringβ optional. also likemfrabove, and it's intended to record the identification string of the UPS. it's titled "serial" because usually this string is referred to as the serial number. yes that's the reason. πsdtime=valueβ optional. the driver will sleep for this many seconds after setting the shutdown signal. this is necessary for some hardware that needs a sustained level to activate the shutdown sequence. like it needs to be held. it needs the attention. β
the default behavior of the driver is to exit immediately. if that doesn't reliably trigger a shutdown in your UPS hardware, use this setting to give it more time to react.
careful bestie: very large values forsdtimemay create warnings fromupsdrvctlif it gets tired of waiting for the driver to return. it will start side-eyeing you. π
π CUSTOM CONFIGURATIONS π
you may override the values for CP, OL, LB, and SD by defining them in the ups.conf(5) after the upstype setting. order matters, babes.
for example, to set the cable power to DTR and the low battery value to DCD, it would look like this:
CP = DTR
LB = DCD
recognized values for input lines are CTS, DCD, and RNG. recognized values for output lines are DTR, RTS, and ST. see below for more about what these signals mean. π
these values may be negated for active low signals. that is, LB=-DCD recognizes a low battery condition when DCD is not held high. it's giving opposites attract. πͺ
β TYPE INFORMATION β
the essence of a UPS definition in this driver is how it uses the serial lines that are available. these are the abbreviations you will see below:
OLβ on line (no power failure) (opposite ofOBβ on battery)LBβ low batteryRBβ replace batteryBYPASSβ battery bypass active or no battery installedSDβ shutdown loadCPβ cable power (must be present for cable to have valid reading)CTSβ Clear to Send. received from the UPS.RTSβ Ready to Send. sent by the PC.DCDβ Data Carrier Detect. received from the UPS.RNGβ Ring indicate. received from the UPS.DTRβ Data Terminal Ready. sent by the PC.DSRβ Data Set Ready. received from the UPS.STβ Send a BREAK on the transmit data lineNULLβ disable this signal. a disabled signal will always be low except forOLwhich will always be high. special little exception, main character energy. πnoneβ alias toNULLwhich matches some other documentation.
a - in front of a signal name (like -RNG) means that the indicated condition is signaled with an active low signal. for example, [LB=-RNG] means the battery is low when the ring indicate line goes low, and that the battery is OK when that line is held high. π
π UPS TYPES π
0= UPSonic LAN Saver 600
[CP=DTR+RTS] [OL=-CTS] [LB=DCD] [SD=DTR]
1= APC Back-UPS/Back-UPS Pro/Smart-UPS with 940-0095A/C cable
[CP=DTR] [OL=-RNG] [LB=DCD] [SD=RTS]
2= APC Back-UPS/Back-UPS Pro/Smart-UPS with 940-0020B cable (Note: Type 2 has also been reported to work with the 940-0020C cable).
[CP=RTS] [OL=-CTS] [LB=DCD] [SD=DTR+RTS]
3= PowerTech Comp1000 with DTR cable power
[CP=DTR] [OL=CTS] [LB=DCD] [SD=DTR+RTS]
4= Generic RUPS Model
[CP=RTS] [OL=CTS] [LB=-DCD] [SD=-RTS]
5= Tripp Lite UPS with Lan2.2 interface (black 73-0844 cable)
[CP=DTR] [OL=CTS] [LB=-DCD] [SD=DTR+RTS]
6= Best Patriot with INT51 cable
[CP=DTR] [OL=CTS] [LB=-DCD] [SD=RTS]
7= CyberPower Power99 Also Upsonic Power Guardian PG-500, Belkin Belkin Home Office, F6H350-SER, F6H500-SER, F6H650-SER, Eaton Management Card Contact β Config3 with cable 66033 (shutdown does not work)
[CP=RTS] [OL=CTS] [LB=-DCD] [SD=DTR]
8= Nitram Elite 500
[CP=DTR] [OL=CTS] [LB=-DCD] [SD=???]
9= APC Back-UPS/Back-UPS Pro/Smart-UPS with 940-0023A cable
[CP=none] [OL=-DCD] [LB=CTS] [SD=RTS]
10= Victron Lite with crack cable
[CP=RTS] [OL=CTS] [LB=-DCD] [SD=DTR]
11= Powerware 3115
[CP=DTR] [OL=-CTS] [LB=-DCD] [SD=ST]
12= APC Back-UPS Office with 940-0119A cable
[CP=RTS] [OL=-CTS] [LB=DCD] [SD=DTR]
13= RPT Repoteck RPT-800A/RPT-162A
[CP=DTR+RTS] [OL=DCD] [LB=-CTS] [SD=ST]
14= Online P-series
[CP=DTR] [OL=DCD] [LB=-CTS] [SD=RTS]
15= Powerware 5119, 5125
[CP=DTR] [OL=CTS] [LB=-DCD] [SD=ST]
16= Nitram Elite 2002
[CP=DTR+RTS] [OL=CTS] [LB=-DCD] [SD=???]
17= PowerKinetics 9001
[CP=DTR] [OL=CTS] [LB=-DCD] [SD=???]
18= TrippLite Omni 450LAN with Martin's cabling
[CP=DTR] [OL=CTS] [LB=DCD] [SD=none]
19= Fideltronic Ares Series
[CP=DTR] [OL=CTS] [LB=-DCD] [SD=RTS]
20= Powerware 5119 RM (checkdocs/cables/powerware.txtin NUT sources)
[CP=DTR] [OL=-CTS] [LB=DCD] [SD=ST]
21= Generic RUPS 2000 (Megatec M2501 cable)
[CP=RTS] [OL=CTS] [LB=-DCD] [SD=RTS+DTR]
22= Gamatronic All models with alarm interface (also CyberPower SL series)
[CP=RTS] [OL=CTS] [LB=-DCD] [SD=DTR]
23= Generic FTTx (Fiber to the x) battery backup with 4-wire telemetry interface
[CP=RTS] [OL=CTS] [LB=-DCD] [RB=-RNG] [BYPASS=-DSR] [SD=none]
π«Ά SIMILAR MODELS π«Ά
many different UPS companies make models with similar interfaces. the RUPS cable seems to be especially popular in the "power strip" variety of UPS found in office supply stores. (we love a budget queen. π )
if your UPS works with an entry in the table above, but the model or manufacturer information don't match β don't despair bestie. you can fix that easily by using the mfr and model variables documented above in your ups.conf(5). problem solved, slay. β¨
π₯ TESTING COMPATIBILITY π₯
if your UPS isn't listed above, you can try going through the list until you find one that works. there is a lot of cable and interface reuse in the UPS world, and you may find a match. it's giving thrift store energy, honestly.
to do this, first make sure nothing important is plugged into the outlets on the UPS, as you may inadvertently switch it off. π definitely make sure that the computer you're using is not plugged into that UPS. plug in something small like a lamp so you know when power is being supplied to the outlets. a lamp is your bestie now. ποΈ
now, you can either attempt to make an educated guess based on the documentation your manufacturer has provided (if any), or just start going down the list. vibes-based troubleshooting is valid. β¨
π Step 1
pick a driver to try from the list (run genericups -h) and go to step 2.
π Step 2
start the driver with the type you want to try, e.g.:
genericups -x upstype=n /dev/port
let upsd(8) sync up (watch the syslog), and then run upsc(8) to see what it found. if the STATUS is correct (should be "OL" for online), continue to Step 3, otherwise go back to Step 1. π
alternatively, you can run genericups in debug mode, e.g.:
genericups -DDDDD -x upstype=n /dev/port
in this mode it will be running in the foreground and continuously display the line and battery status of the UPS. live updates, no refresh needed, we love to see it. π
π Step 3
disconnect the UPS from the wall/mains power. this is easiest if you have a switched outlet in between it and the wall, but you can also just pull the plug to test. the lamp should stay lit, and the status should switch to "OB". if the lamp went out or the status didn't go to "OB" within about 15 seconds, go to Step 1. otherwise, continue to Step 4.
π Step 4
at this point, we know that OL and OB work. if nothing else beyond this point works, you at least know what your OL/OB value should be. partial credit is still credit. π―
wait for the UPS to start complaining about a low battery. depending on the size of your UPS battery and the lamp's bulb, this could take awhile. it should start complaining audibly at some point. when this happens, STATUS should show "OB LB" within 15 seconds. if not, go to Step 1, otherwise continue to Step 5.
π Step 5
so far: OL works, OB works, and LB works. we're so back. π
with the UPS running on battery, run the genericups driver with the -k switch to shut it down.
genericups -x upstype=n -k /dev/port
if the UPS turns off the lamp, you're done. at this point, you have verified that the shutdown sequence actually does what you want. you can start using the genericups driver with this type number for normal operations. certified slay. π
you should use your findings to add a section to your ups.conf. here is a quick example:
[myups]
driver = genericups
port = /dev/ttyS0
upstype = 1
change the port and upstype values to match your system. π
β¨ NEW SUPPORT β¨
So bestie, if that whole testing sequence up there flops? You're probably gonna have to cook up a brand new entry to support your hardware. π
Every single UPS type gets determined from the table in the genericups.h file in the source tree β that's the vibe check for types, fr fr.
On a standard 9 pin serial port, there are 6 lines that get used as the standard "high/low" signal levels. 4 of them are incoming (to the PC, from the UPS), and the other 2 are outgoing (to the UPS, from the PC). The other 3 are the receive/transmit lines and the ground. That's the whole lineup, no extras. π
Heads up though β many manufacturers remap pins inside the cable, so the pinout you think you have is not always the pinout you actually have. π
If you have any doubts, a quick check with a multimeter should confirm whether the cable is straight-through or not. And another thing to keep in mind: some cables have electronics in them to do special things. Some have resistors and transistors on board to change behavior depending on what's being supplied by the PC. Sneaky little cables. π
π SPECIFIC MODEL NOTES π
These have been contributed by users of this driver β real ones, sharing the tea. π«Ά
- The Centralion CL series may power down the load if the driver starts up with the UPS running on battery as the default line settings contain the shutdown sequence. β Neil Muller
- The Tripp-Lite Internet Office 700 must be used with the black
73-0844cable instead of the gray73-0743cable. This entry should work with any of their models with the Lan 2.2 interface β see the sticker by the DB9 connector on the UPS. β Stephen Brown - Type 5 should work with the Tripp-Lite Lan 2.1 interface and the
73-0724cable. This was tested with the OmniSmart 675 PNP on Red Hat 7.2. β Q Giese - Types 7 and 10 should both work with the PhoenixTec A1000.
π BUGS π
Okay so here's the part nobody loves. π
There is no way to reliably detect a contact-closure UPS. Which means the driver will start up happily even if no UPS is detected. It also means that if the connection between the UPS and computer is interrupted, you may not be able to sense this in software. It's giving ghost town. π»
Most contact-closure UPSes will not power down the load if the line power is present. This can create a race when using secondary upsmon(8) systems. See the upsmon(8) man page for more information.
The solution to both of these problems is to upgrade to a smart protocol UPS of some kind that allows detection and proper load cycling on command. Glow up your hardware, bestie. β¨
π¦ SEE ALSO π¦
π The core driver
π Internet resources:
- The NUT (Network UPS Tools) home page:
https://www.networkupstools.org/historic/v2.8.5/
And that's the whole page, babes β this was Network UPS Tools 2.8.5, dated 10/07/2026, and yes I'm the GENERICUPS(8) girlie π thanks for reading to the end, you ate that fr fr, no cap. ππ¦β¨
π¦ where this page comes from
- fedora 43: nut 2.8.5-9.fc43 Β· GPL-2.0-or-later AND GPL-3.0-or-later
- fedora 43: nut 2.8.5-9.fc43 Β· GPL-2.0-or-later AND GPL-3.0-or-later
- fedora 44: nut 2.8.5-9.fc44 Β· GPL-2.0-or-later AND GPL-3.0-or-later
- fedora 44: nut 2.8.5-9.fc44 Β· GPL-2.0-or-later AND GPL-3.0-or-later
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms