822 lines
		
	
	
	
		
			33 KiB
		
	
	
	
		
			Text
		
	
	
	
	
	
			
		
		
	
	
			822 lines
		
	
	
	
		
			33 KiB
		
	
	
	
		
			Text
		
	
	
	
	
	
| Desc: Frequently Asked Questions
 | |
| File: FAQ
 | |
| Date: 20 January 2006
 | |
| Auth: Russell Kroll <rkroll@exploits.org>
 | |
|       Arnaud Quette <aquette.dev@gmail.com>
 | |
|  
 | |
| -----------------------------------------------------------------------------
 | |
| 
 | |
|  Q: I just upgraded, and ...
 | |
| 
 | |
|  A: You have read UPGRADING in the base directory of the distribution,
 | |
|     right?  If not, go read it now, then come back to this file if your
 | |
|     question wasn't answered in there.
 | |
| 
 | |
| -----------------------------------------------------------------------------
 | |
| 
 | |
|  Q: upsstats says "Error: can't open template file (upsstats.html)".
 | |
|     How do I fix this?
 | |
| 
 | |
|  A: Go into your configuration path (/usr/local/ups/etc by default) and
 | |
|     copy the sample template files over to their real names.  The sample
 | |
|     template files are installed with 'make install-cgi-conf' and can 
 | |
|     also be found inside the source distribution in the conf directory. 
 | |
| 
 | |
| -----------------------------------------------------------------------------
 | |
| 
 | |
|  Q: upsmon fails the login and says "username required" now.
 | |
| 
 | |
|  A: Go read the UPGRADING file again.
 | |
| 
 | |
| -----------------------------------------------------------------------------
 | |
| 
 | |
|  Q: My 1.4 CGI programs won't talk to my 2.0 upsd.  What should I do?
 | |
| 
 | |
|  A: Upgrade the CGI programs to 2.0.  While 1.4 was intended as a 
 | |
|     compatibility tree that used the new protocol by default, the CGI
 | |
|     programs were not upgraded at the same time.  The 1.4 versions
 | |
|     still use the old REQ protocol, and your 2.0 upsd expects GET.
 | |
| 
 | |
| -----------------------------------------------------------------------------
 | |
| 
 | |
|  Q: I just upgraded from 1.2 and upsmon now fails to start, saying
 | |
|     "Fatal error: insufficient power configured!".  Why?
 | |
| 
 | |
|  A: You didn't read the top of the error, where upsmon says that it 
 | |
|     ignored the invalid MONITOR line because UPS directives now require
 | |
|     a UPS name.  It also means you didn't see the same warning in 
 | |
|     UPGRADING.
 | |
| 
 | |
|     At least you saw this in the FAQ before asking the list.
 | |
| 
 | |
| -----------------------------------------------------------------------------
 | |
| 
 | |
|  Q: My UPS driver now says it's "broken", and won't start.  What now?
 | |
| 
 | |
|  Q: My favorite UPS driver disappeared after an upgrade.  What now?
 | |
| 
 | |
|  A: Drivers are occasionally removed from the tree if they are no longer
 | |
|     receiving maintenance, or sometimes renamed to better reflect their
 | |
|     hardware support scope or replaced by a more generic driver.
 | |
|     There have been several architectural changes to the driver code
 | |
|     in recent times, and drivers which were not converted by someone
 | |
|     are eventually dropped.
 | |
| 
 | |
|     This is called progress.  We do this in order to avoid a situation
 | |
|     where someone believes that a driver is being maintained when it is
 | |
|     actually rotting slowly in the tree.  It also keeps the tree free of
 | |
|     old compatibility hacks for code that nobody actually uses anyway.
 | |
| 
 | |
|     To get a driver back into current releases, you need to convert it
 | |
|     yourself or get someone to do it for you.  This is not difficult.
 | |
|     The hardest part of any driver is decoding the protocol, and that's
 | |
|     already been done in the old version.
 | |
| 
 | |
| -----------------------------------------------------------------------------
 | |
| 
 | |
|  Q: I just upgraded and now I can't talk to older versions.
 | |
| 
 | |
|  A: Version 2.0 can't communicate with anything before 1.4 due to the
 | |
|     protocol changes.  Version 1.4 can communicate with both 2.0 and
 | |
|     most older versions since it was a transitional release and has
 | |
|     compatibility code for both protocols.
 | |
| 
 | |
| -----------------------------------------------------------------------------
 | |
| 
 | |
|  Q: My UPS driver program won't work.  I'm starting it as root, and root
 | |
|     owns the device, so what's the problem?
 | |
| 
 | |
|  A: The drivers drop root privileges long before the serial port is
 | |
|     opened.  You'll need to change the permissions on that port so that
 | |
|     their new user id can access it.  Normally this is "nobody", but it 
 | |
|     may be changed at compile-time by using configure --with-user.
 | |
| 
 | |
|     Read the error message.  If you have a permissions mismatch, then
 | |
|     you'll see something like this:
 | |
| 
 | |
| 	Network UPS Tools - APC Smart protocol driver 0.60 (1.1.7)
 | |
| 	This program is currently running as youruid (UID 1234)
 | |
| 	/dev/ttyS2 is owned by user root (UID 0), mode 0600
 | |
| 	Change the port name, or fix the permissions or ownership 
 | |
| 	of /dev/ttyS2 and try again.
 | |
| 	Unable to open /dev/ttyS2: Permission denied
 | |
| 
 | |
|     Now is a good time to point out that using "nobody" is a bad idea,
 | |
|     since it's a hack for NFS access.  You should create a new role 
 | |
|     account (perhaps called "ups" or "nut"), and use that instead.
 | |
| 
 | |
|     Also, scroll down to the "security domains" question to see an
 | |
|     even better way of restricting privileged operations.  Neither the
 | |
|     drivers nor upsd ever need root powers, and that answer tells you
 | |
|     how to make it work.
 | |
| 
 | |
|  A: You can also specify a user with "user=" in the global part of
 | |
|     ups.conf.  Just define it before any of your [sections]:
 | |
| 
 | |
| 		user = nut
 | |
| 
 | |
| 	[myups]
 | |
| 		driver = mge-shut
 | |
| 		port = /dev/ttyS0
 | |
| 
 | |
| -----------------------------------------------------------------------------
 | |
| 
 | |
|  Q: upsc, upsstats, and the other clients say "access denied".  The device
 | |
|     communication port (serial, USB or network) permissions are fine, so what
 | |
|     gives? 
 | |
| 
 | |
|  A: In this case, "access denied" means the access to upsd, not the device
 | |
|     communication port.  You're being denied since the system has no
 | |
|     permission to speak to upsd according to the access controls.
 | |
| 
 | |
|     There can be various reasons. To fix it, check:
 | |
|     - the LISTEN directive in upsd.conf. It should allow your local or remote
 | |
|       access method,
 | |
|     - your firewall rules. Port 3493/tcp must be opened to incoming connexions,
 | |
|     - your tcp-wrappers configuration (hosts.allow and hosts.deny).
 | |
| 
 | |
|     Refer to the upsd(8) and upsd.conf(5) manpages for more information.
 | |
| 
 | |
| -----------------------------------------------------------------------------
 | |
| 
 | |
|  Q: I have an APC Smart-UPS connected with a grey APC cable and it won't
 | |
|     work.  The Back-UPS type in the genericups driver works but then I 
 | |
|     don't get to use all the nifty features in there.  Why doesn't the 
 | |
|     right driver work?
 | |
| 
 | |
|  A: The problem lies in your choice of cable.  APC's grey cables
 | |
|     generally only do "dumb" signalling - very basic yes/no info about
 | |
|     the battery and line status.  While that is sufficient to detect a
 | |
|     low battery condition while on battery, you miss out on all the
 | |
|     goodies that you paid for.
 | |
| 
 | |
|     Note that the 940-0095B happens to be a grey cable, but it is actually
 | |
|     a dual mode cable and can be used in smart mode.  If you have
 | |
|     this cable, you need to edit your ups.conf to look like this:
 | |
| 
 | |
| 	[myups]
 | |
| 		driver = apcsmart
 | |
| 		port = /dev/whatever
 | |
| 		cable = 940-0095B
 | |
| 
 | |
|     All other grey cables from APC are assumed to be "dumb".
 | |
| 
 | |
|     If your grey cable isn't the 940-0095B, the solution is to dump that
 | |
|     cable and find one that supports APC's "smart" signalling.  Typically
 | |
|     these come with the UPS and are black.  If your smart cable has
 | |
|     wandered off, one can be built rather easily with some connectors and
 | |
|     cable - there's no fancy wiring or resistors.
 | |
| 
 | |
|     See this URL for a handy diagram:
 | |
| 
 | |
|     http://random.networkupstools.org/cables/940-0024C.jpg
 | |
| 
 | |
|     There is also a text version of that diagram in the docs/cables
 | |
|     directory of the NUT source distribution.  Either one should allow
 | |
|     you to build a good clone of APC's 940-0024C cable.
 | |
|    
 | |
|     There are simpler solutions involving 3 wires that work just fine
 | |
|     too, but Powerchute won't find the loopback DTR-DCD and RTS-CTS and
 | |
|     will be annoyed.  If you don't ever plan to use Powerchute, 3 wires
 | |
|     (RxD, TxD, GND) are sufficient.
 | |
| 
 | |
|     It should also be noted that the genericups driver has no way to
 | |
|     detect the UPS, so it will fire up quite happily if it can open the
 | |
|     serial port.  Merely having it start up is not necessarily an
 | |
|     indication of success.  You should start it and then check the
 | |
|     status with upsc or similar to be sure that it's reading the
 | |
|     hardware properly.
 | |
| 
 | |
| -----------------------------------------------------------------------------
 | |
| 
 | |
|  Q: Why does configure fail to find gd?
 | |
| 
 | |
|  A: Recent versions of gd should be detected automatically through the
 | |
|     gdlib-config script.  Note that gd 2.0.5 through 2.0.7 have an
 | |
|     unusable script, so upgrade to the newest version if you have one
 | |
|     of those installed.
 | |
| 
 | |
|     If you're stuck with an older version of gd, you can use it if you
 | |
|     specify the flags manually.  Look in gd's Makefile for "LIBS=", 
 | |
|     then use that value when you call configure:
 | |
| 
 | |
| 	./configure --with-gd-libs="<whatever>" --with-cgi
 | |
| 
 | |
|     If you don't have gd's Makefile available for some reason, you're
 | |
|     in for a lot of trial and error.  
 | |
| 
 | |
| -----------------------------------------------------------------------------
 | |
| 
 | |
|  Q: Why PNG?  You used to generate GIF bars with upsimage back in 1998
 | |
|     or 1999...
 | |
| 
 | |
|  A: http://www.burnallgifs.org/
 | |
| 
 | |
| -----------------------------------------------------------------------------
 | |
| 
 | |
|  Q: Why doesn't upsd implement the functionality of upsmon?  I have to
 | |
|     run THREE programs to monitor my UPS!
 | |
| 
 | |
|  A: I try to follow the "tool for the job" philosophy.  It may mean
 | |
|     more programs running, but the flexibility you get is usually
 | |
|     worth it.
 | |
| 
 | |
|     Yes, the machine with the UPS attached will generally have 3
 | |
|     processes (driver, upsd, upsmon) running, but this design allows a
 | |
|     much bigger setup.  Imagine a data room with a bunch of machines
 | |
|     all drawing power from the same UPS.  The rest of them just run
 | |
|     upsmon.
 | |
| 
 | |
|     Besides, if upsmon were rolled into upsd, upsd would get even
 | |
|     bigger than it is now.  You'd have one less process, but the
 | |
|     RAM consumption would be pretty close to now.
 | |
| 
 | |
|     See data-room.txt for more configuration ideas and explanations.
 | |
| 
 | |
|  A: If this really bothers you, roll up your sleeves and use the
 | |
|     sockdebug code to write a "upsmon" type program that sits on top of
 | |
|     the state sockets.  It won't work over the network, but it means
 | |
|     you don't need upsd.  It also means only one host can monitor the
 | |
|     UPS. 
 | |
| 
 | |
|     This is also a good option to consider if you can't use networked
 | |
|     monitoring code for security or safety reasons.
 | |
| 
 | |
|     See ideas.txt for more on this and other related topics.
 | |
| 
 | |
| -----------------------------------------------------------------------------
 | |
| 
 | |
|  Q: Why isn't upssched part of upsmon?
 | |
| 
 | |
|  A: Most users will never have any reason to use upssched.  It's
 | |
|     complicated, and getting it right for your situation can be tricky.
 | |
|     Having it live in a separate program saves resources and lets most
 | |
|     people avoid it completely.
 | |
| 
 | |
| -----------------------------------------------------------------------------
 | |
| 
 | |
|  Q: Why doesn't upsmon send a SIGPWR signal to init so it can deal with
 | |
|     power events?
 | |
| 
 | |
|  A: New versions of the init man page taken from the sysvinit package
 | |
|     are saying that usage of SIGPWR is discouraged, since /dev/initctl 
 | |
|     control channel is the preferred way of communication.
 | |
| 
 | |
|  A: The name of the game is portability.  Not everyone's init handles
 | |
|     that kind of signalling gracefully.  What's more, some admins
 | |
|     might want to do things differently even if they have that kind of
 | |
|     init running.
 | |
| 
 | |
|     So, to be compatible, upsmon just invokes a shell command.  If you
 | |
|     want to use init's SIGPWR stuff, just put the right "kill" line in
 | |
|     a shell script and make upsmon call it.  Everyone wins.
 | |
| 
 | |
| -----------------------------------------------------------------------------
 | |
| 
 | |
|  Q: Why can't upsset read my upsset.passwd file?
 | |
| 
 | |
|  A: You have an old version of upsset installed, since the current
 | |
|     version doesn't use that file.  Install a new version and then try
 | |
|     it again.
 | |
| 
 | |
|     Be sure to secure your CGI directory as instructed in the
 | |
|     upsset.conf.
 | |
| 
 | |
| -----------------------------------------------------------------------------
 | |
| 
 | |
|  Q: Why won't bestups talk to my Best Fortress UPS?
 | |
| 
 | |
|  A: There are at least two different protocols being used for hardware
 | |
|     with very similar names.  The bestups driver tends to support the
 | |
|     units built around the newer "PhoenixTec" protocol.  
 | |
| 
 | |
|     Previous releases of this software included a driver called
 | |
|     bestfortress which supported the older Best hardware.  See the
 | |
|     earlier entries about updating old drivers which have been removed
 | |
|     from the tree.
 | |
| 
 | |
| -----------------------------------------------------------------------------
 | |
| 
 | |
|  Q: What's this about "data stale"?
 | |
| 
 | |
|  A: It means your UPS driver hasn't updated things in a little while.
 | |
|     upsd refuses to serve up data that isn't fresh, so you get the
 | |
|     errors about staleness.
 | |
| 
 | |
|     If this happens to you, make sure your driver is still running.
 | |
|     Also look at the syslog.  Sometimes the driver loses the connection
 | |
|     to the UPS, and that will also make the data go stale.
 | |
| 
 | |
|     Note: some very slow machines have trouble keeping up with the
 | |
|     serial ports during periods of extreme load.  My old 486 used to
 | |
|     flip between "stale" and "OK" while running backups.
 | |
| 
 | |
|     If this happens a lot, you might consider cranking up DEADTIME
 | |
|     in the upsmon.conf to suppress some of the warnings for shorter
 | |
|     intervals.  Use caution when adjusting this number, since it
 | |
|     directly affects how long you run on battery without knowing
 | |
|     what's going on with the UPS.
 | |
| 
 | |
|     Note: some drivers occasionally need more time to update than the
 | |
|     default value of MAXAGE (in upsd.conf) allows.  As a result, they 
 | |
|     are temporarily marked stale even though everything is fine.  This
 | |
|     can happen with MGE Ellipse equipment - see the mge-shut man page.
 | |
|     In such cases, you can raise the value of MAXAGE to avoid these
 | |
|     warnings; try a value like 25 or 30.
 | |
| 
 | |
| -----------------------------------------------------------------------------
 | |
| 
 | |
|  Q: Why do the client programs say "Driver not connected" when I try
 | |
|     to run them?
 | |
| 
 | |
|  A: This means that upsd can't connect to the driver for some reason.
 | |
|     Your ups.conf entry might be wrong, or the driver might not be 
 | |
|     running.  Maybe your state path is not configured properly.
 | |
| 
 | |
|     Check your syslog.  upsd will complain regularly if it can't
 | |
|     connect to a driver, and it should say why it can't connect.
 | |
| 
 | |
|     Note: if you jumped in with both feet and didn't follow the INSTALL
 | |
|     document, you probably started upsd by itself.  You have to run
 | |
|     'upsdrvctl start' to start the drivers after configuring ups.conf.
 | |
| 
 | |
| -----------------------------------------------------------------------------
 | |
| 
 | |
|  Q: Everything works perfectly during the shutdown, and the UPS comes 
 | |
|     back on, but my system stays off.  What's happening?
 | |
| 
 | |
|  A: Assuming you don't have the problem in the next question, then you
 | |
|     probably have an ATX motherboard, have APM or ACPI enabled in your
 | |
|     kernel (assuming Linux here), and are reaching the 'halt' at the
 | |
|     bottom of your shutdown scripts.
 | |
| 
 | |
|     Your machine obeys and shuts down, and stays down, since it
 | |
|     remembers the 'last state' when the UPS restarts.
 | |
| 
 | |
|     One solution is to change your shutdown scripts so you never reach
 | |
|     that point.  You *want* the system to die without reaching the
 | |
|     part where the kernel tells it to shut down.  A possible script
 | |
|     might look like this:
 | |
| 
 | |
| 	# other shutdown stuff here (mount -o remount,ro ...)
 | |
| 
 | |
| 	if (test -f /etc/killpower)
 | |
| 	then
 | |
| 		/usr/local/ups/bin/upsdrvctl shutdown
 | |
| 
 | |
| 		sleep 600	# this should never return
 | |
| 
 | |
| 		# uh oh, we never got shut down! (power race?)
 | |
| 		reboot
 | |
| 	fi
 | |
| 
 | |
| 	halt -p
 | |
| 
 | |
|     The other solution is to change your BIOS setting to "always power
 | |
|     on" instead of "last state", assuming that's possible.
 | |
| 
 | |
| -----------------------------------------------------------------------------
 | |
| 
 | |
|  Q: My system has an ATX power supply.  It will power off just fine, but
 | |
|     it doesn't turn back on.  What can I do to fix this?
 | |
| 
 | |
|  A: This depends on how clueful your motherboard manufacturer is, and
 | |
|     isn't a matter of the OS.  You have to do one of the following
 | |
|     things depending on what's supported:
 | |
| 
 | |
|     - Set a jumper on the motherboard that means "return after outage"
 | |
| 
 | |
|     - Set something in the BIOS that says "power up after power failure"
 | |
| 
 | |
|     - Try using something (like a capacitor) across the power button 
 | |
|       to "push" it for you - this might not work if it needs a delay
 | |
| 
 | |
|     - Hack the cable between the power supply and the motherboard to fool
 | |
|       it into powering up whenever line power is present
 | |
| 
 | |
|     - Teach a monkey to watch the machine and press the power button
 | |
|       when the outage is over.
 | |
| 
 | |
|       This might work, but it creates high produce bills.
 | |
| 
 | |
|     If you can't use one of the first two options, give the board to
 | |
|     an enemy.  Let them worry about it.
 | |
| 
 | |
| -----------------------------------------------------------------------------
 | |
| 
 | |
|  Q: My PowerMac G4 won't power back up by itself (into Linux) after the
 | |
|     UPS shuts down.  What can I do about this?
 | |
| 
 | |
|  A: This is about the same situation as the ATX question above, only
 | |
|     worse.  Earlier Macs apparently supported a hack where you could
 | |
|     cat some magic characters at /dev/adb to enable "server mode".
 | |
|     This would instruct the system to reboot while unattended.
 | |
| 
 | |
|     From Usenet post <6boftzxz51.fsf@ecc-office.sp.cs.cmu.edu>:
 | |
| 
 | |
| 	# Send packet over the ADB bus to the PowerMac CUDA chip
 | |
| 	# telling it to reboot automatically when power is restored
 | |
| 	# after a power failure.
 | |
| 
 | |
| 	cat /etc/local/autoboot.adb > /dev/adb
 | |
| 
 | |
|     autoboot.adb contains these three bytes (in hex):  01 13 01
 | |
| 
 | |
|     Unfortunately, the hardware has evolved and there is no good
 | |
|     equivalent for this hack on today's systems.
 | |
| 
 | |
|     If you find out how to do this, please send me some mail, since
 | |
|     this affects one of my systems and my stop-gap solution is getting
 | |
|     cranky.
 | |
| 
 | |
|     Note: this question has been in the FAQ for over a year and 
 | |
|     there's still no answer.  Let me guess: everyone who runs a server
 | |
|     on Mac hardware has a team of trained monkeys, and feeds them
 | |
|     by growing bananas in the tropical environment formed by waste heat
 | |
|     from the equipment. 
 | |
| 
 | |
|     The rest of us are still waiting for the answer.  Booting into the
 | |
|     Mac OS to frob the "file server" panel is not an acceptable
 | |
|     solution.
 | |
| 
 | |
|  A: If you're on OS X, this is relatively simple to fix.  Go to system
 | |
|     preferences, click on energy saver, click on the options tab, check
 | |
|     "Restart automatically after a power failure".
 | |
| 
 | |
|     If you're on some other OS, hope they've figured out how to duplicate
 | |
|     the above in a non-simian manner.
 | |
| 
 | |
| -----------------------------------------------------------------------------
 | |
| 
 | |
|  Q: I want to keep the drivers and upsd in their own security domains.
 | |
|     How can this be accomplished?
 | |
| 
 | |
|  A: Using a few role accounts and a common group, you can limit access
 | |
|     to resources such as the serial port(s) leading to the UPS
 | |
|     hardware.
 | |
| 
 | |
|     This is just an example.  Change the values to suit your systems.
 | |
| 
 | |
|     Create a user called 'nutdev' and another called 'nutsrv'.  Put
 | |
|     them both in a group called 'nut'.
 | |
| 
 | |
|     Change the owner of any serial ports that will be used to nutdev,
 | |
|     and set the mode to 0600.  Then change the ownership of your state
 | |
|     directory (usually /var/state/ups) to nutdev.nut.
 | |
| 
 | |
|     For my development system this yields the following /dev entries:
 | |
| 
 | |
|     0 crw-------   1 nutdev   tty        4,  64 Sep  3 17:11 /dev/ttyS0
 | |
|     0 crw-------   1 nutdev   tty        4,  65 Sep  3 17:11 /dev/ttyS1
 | |
| 
 | |
|     Switch to root, then start the drivers:
 | |
| 
 | |
|     # /usr/local/ups/bin/upsdrvctl -u nutdev start
 | |
| 
 | |
|     The listing for /var/state/ups then looks like this:
 | |
| 
 | |
|     4 drwxrwx---   2 nutdev   nut          4096 Aug 20 18:37 .
 | |
|     4 drwxr-xr-x   4 root     root         4096 May 14 21:20 ..
 | |
|     4 srw-rw----   1 nutdev   nut             0 Sep  3 17:10 apcsmart-ttyS0
 | |
|     4 srw-rw----   1 nutdev   nut             0 Sep  3 17:10 megatec-ttyS1
 | |
| 
 | |
|     You may have to remove old socket or state files first if you are
 | |
|     changing to this security scheme from an older version.  The drivers
 | |
|     will create new files with the right owners and modes.
 | |
| 
 | |
|     Note that /var/state/ups is group writable since upsd will
 | |
|     place the upsd.pid file here.
 | |
| 
 | |
|     You may have to change the groups of upsd.conf and upsd.users to
 | |
|     make them readable.  These files should not be owned by nutsrv,
 | |
|     since someone could compromise the daemon and change the config
 | |
|     files.  Instead, put nutsrv in a group ("nut" in this example), then
 | |
|     make the files owned by root.nut, with mode 0640.
 | |
| 
 | |
|     Once the config files are ready, start upsd:
 | |
| 
 | |
|     # /usr/local/ups/sbin/upsd -u nutsrv
 | |
| 
 | |
|     Check your syslog to be sure everything's happy, then be sure to
 | |
|     update your startup scripts so it uses this procedure on your next
 | |
|     boot.
 | |
| 
 | |
|     If you like this, you'll probably also find the chroot process to
 | |
|     be useful and interesting.  See chroot.txt for more details.
 | |
| 
 | |
| -----------------------------------------------------------------------------
 | |
| 
 | |
|  Q: What's the point of that 'security domains' concept above?
 | |
| 
 | |
|  A: The point is limiting your losses.  If someone should happen to
 | |
|     break into upsd in that environment, they should only gain access
 | |
|     to that one user account.  Direct access to the serial device is
 | |
|     not possible, since that is owned by another user.
 | |
| 
 | |
|     There is also the possibility of running the drivers and upsd in a
 | |
|     chroot jail.  See the chroot.txt provided in the source 
 | |
|     distribution for an example implementation. 
 | |
| 
 | |
|     Why give would-be vandals any sort of help?
 | |
| 
 | |
|     Put it this way - I *wrote* good chunks of this stuff, and I still
 | |
|     run the programs this way locally.  You should definitely consider
 | |
|     using this technique.
 | |
| 
 | |
| -----------------------------------------------------------------------------
 | |
| 
 | |
|  Q: How can I make upsmon shut down my system after some fixed interval?
 | |
| 
 | |
|  A: You probably don't want to do this, since it doesn't maximize your
 | |
|     runtime on battery.  Assuming you have a good reason for it (see
 | |
|     the next entry), then look at upssched.txt or the upssched man
 | |
|     page for some ideas.
 | |
| 
 | |
| -----------------------------------------------------------------------------
 | |
| 
 | |
|  Q: Why doesn't upsmon shut down my system?  I pulled the plug and nothing
 | |
|     happened.
 | |
| 
 | |
|  A: Wait.  upsmon doesn't consider a UPS to be critical until it's both
 | |
|     'on battery' and 'low battery' at the same time.  This is by design.
 | |
|     Nearly every UPS supports the notion of detecting the low battery
 | |
|     all by itself.  When the voltage drops below a certain point, it
 | |
|     _will_ let you know about it.
 | |
| 
 | |
|     If your system has a really complicated shutdown procedure, you
 | |
|     might need to shut down before the UPS raises the low battery flag.
 | |
|     For most users, however, the default behavior is adequate.
 | |
| 
 | |
|     Ask yourself this: why buy a nice big UPS with the matching battery
 | |
|     and corresponding runtime and then shutdown early?  If anything, I'd
 | |
|     rather have a few more minutes running on battery during which the
 | |
|     power might return.  Once the power's back, it's business as usual
 | |
|     with no visible interruption in service.
 | |
| 
 | |
|     If you purposely shut down early, you guarantee an interruption in
 | |
|     service by bringing down the box.
 | |
| 
 | |
|     See upssched.txt for information on how you can shutdown early if
 | |
|     this is what you really want to do.
 | |
| 
 | |
| -----------------------------------------------------------------------------
 | |
| 
 | |
|  Q: The CGI programs report "access to that host is not authorized" - 
 | |
|     what's going on?
 | |
| 
 | |
|  A: Those programs need to see a host in your hosts.conf before they
 | |
|     will attempt communications.  This keeps people from feeding it
 | |
|     random "host=" settings, which would annoy others with outgoing
 | |
|     connection attempts from your system.
 | |
| 
 | |
|     If your hosts.conf turns out to be configured correctly with 
 | |
|     MONITOR entries and all that, check the permissions.  Your web
 | |
|     server may be running the CGI programs as a user that can't read
 | |
|     the file.
 | |
| 
 | |
|     If you run your web server in a chroot jail, make sure the programs
 | |
|     can still read hosts.conf.  You may have to copy it into the jail
 | |
|     for this to work.  If you do that, make sure it's not writable by
 | |
|     any of the user accounts which run inside the jail.   
 | |
| 
 | |
| -----------------------------------------------------------------------------
 | |
| 
 | |
|  Q: upsd is running, so why can't I connect to it?
 | |
| 
 | |
|  A: Assuming you haven't changed the TCP port number on the command line
 | |
|     or at compile-time, then you probably have some sort of firewall
 | |
|     blocking the connection.
 | |
| 
 | |
|     upsd listens on TCP port 3493 by default.
 | |
| 
 | |
| -----------------------------------------------------------------------------
 | |
| 
 | |
|  Q: How do you make upsmon reload the config file?
 | |
| 
 | |
|  Q: How do you make upsd reload the config file?
 | |
| 
 | |
|  A: Either find the pid of the background process and send it a SIGHUP,
 | |
|     or just start it again with '-c reload'.
 | |
| 
 | |
|     If you send the signals yourself instead of using -c, be sure you
 | |
|     hit the right process.  There are usually two upsmons, and you
 | |
|     should only send signals to one of them.  To be safe, read the pid
 | |
|     file.
 | |
| 
 | |
| -----------------------------------------------------------------------------
 | |
| 
 | |
|  Q: I just bought a new WhizBang UPS that has a USB connector.  How do
 | |
|     I monitor it?
 | |
| 
 | |
|  A: There are several driver to support USB models.
 | |
| 
 | |
|     - usbhid-ups supports various manufacturers complying to the HID standard,
 | |
|     - tripplite_usb supports various Tripp-Lite units,
 | |
|     - bcmxcp_usb supports various Powerware units.
 | |
| 
 | |
|     Refer to the "driver-name" (8) manpage for more information.
 | |
| 
 | |
| -----------------------------------------------------------------------------
 | |
| 
 | |
|  Q: What is this usbhid-ups (formerly newhidups) about?
 | |
| 
 | |
|  A: The basic USB UPS support was done until NUT 2.2 using hidups. To allow
 | |
|     a wider support accross platforms for USB/HID compliant devices,
 | |
|     usbhid-ups driver uses libusb (which is available for a wide range of
 | |
|     operating systems) and libhid (currently, a modified internal version
 | |
|     of it).
 | |
| 
 | |
|     As of NUT 2.2, usbhid-ups completely replaces the legacy hidups driver
 | |
|     and provide support for various manufacturers. At that time, it will
 | |
|     be renamed to usbhid-ups.
 | |
| 
 | |
|     usbhid-ups is built automatically if possible (libusb development files
 | |
|     need to be installed) and installed by the "make install" command.
 | |
| 
 | |
| -----------------------------------------------------------------------------
 | |
| 
 | |
|  Q: Why doesn't my package work?
 | |
| 
 | |
|  Q: I can't run this because there's no package for it.  Why isn't this
 | |
|     in a package yet?
 | |
| 
 | |
|  A: Sorry, can't help you there.  All official releases are source code
 | |
|     and are posted on http://www.networkupstools.org/ along with PGP
 | |
|     signatures for verification.
 | |
| 
 | |
|     This means all packages have been built by a third party.  If you
 | |
|     have an issue that's related to packaging, you will need to seek
 | |
|     help with whoever built it for you.
 | |
| 
 | |
| -----------------------------------------------------------------------------
 | |
| 
 | |
|  Q: Why are there two copies of upsmon running?
 | |
| 
 | |
|  A: It's not really two complete copies if your OS forks efficiently.
 | |
| 
 | |
|     By default, upsmon runs most of the grunt work as an unprivileged
 | |
|     user and keeps a stub process around with root powers that can
 | |
|     only shut down the system when necessary.  This should make it much
 | |
|     harder to gain root in the event a hole is ever discovered in
 | |
|     upsmon.
 | |
| 
 | |
|     If this really bothers you and you like running lots of code as
 | |
|     root, start upsmon with -p and it will go back to being one big
 | |
|     process.  This is not recommended, so don't blame me if something
 | |
|     bad happens in this mode.
 | |
| 
 | |
| -----------------------------------------------------------------------------
 | |
| 
 | |
|  Q: I have <some problem> with <some old version> ...
 | |
| 
 | |
|  A: Get the latest stable release, and see if it still happens.  If it
 | |
|     goes away, it means someone else reported it and got it fixed a 
 | |
|     long time ago.
 | |
| 
 | |
|     If that doesn't work, try the latest development version.
 | |
| 
 | |
|     If your problem is STILL there, then contact the mailing lists.
 | |
| 
 | |
|     Hint: check the release date on the version you have.  If it's more
 | |
|     than about 6 months old, there's probably a newer stable tree
 | |
|     version out there.
 | |
| 
 | |
| -----------------------------------------------------------------------------
 | |
| 
 | |
|  Q: Do you have to use a serial connection to monitor the UPS?
 | |
|     What about direct network connections (SNMP or otherwise)?
 | |
| 
 | |
|  A: No. NUT currently support USB communication through usbhid-ups,
 | |
|     tripplite_usb and bcmxcp_usb, and SNMP communication through snmp-ups.
 | |
| 
 | |
|     Any time there is a gap in features, it's usually because the
 | |
|     group of people who own that hardware and the group of people who
 | |
|     write code don't overlap.  The fix is to make them overlap -
 | |
|     turn an owner into a developer or vice-versa.
 | |
| 
 | |
| -----------------------------------------------------------------------------
 | |
| 
 | |
|  Q: What happened to the patch I sent?
 | |
| 
 | |
|  A: If a release goes by and your patch hasn't been included, it was
 | |
|     probably dropped.  There can be a lot of patches waiting for 
 | |
|     inclusion at some points, and occasionally some have to be
 | |
|     rejected.
 | |
| 
 | |
|     Design issues or severe coding style problems can be the reason
 | |
|     for this.  I try to point out what the problems are, but there are
 | |
|     limits.  See developers.txt for some pointers on submitting
 | |
|     patches.
 | |
| 
 | |
|     Sometimes patches are put on hold due to a feature freeze.  If it
 | |
|     doesn't show up once the new version opens up, send it again.
 | |
| 
 | |
| -----------------------------------------------------------------------------
 | |
| 
 | |
|  Q: I'm not much of a programmer.  How can I help?
 | |
| 
 | |
|  A: There's always work to be done outside of the realm of code bashing.
 | |
|     Documentation might not always be so clear.  A user's perspective
 | |
|     is sometimes needed to appreciate this.  Bug reports on a project's
 | |
|     documentation are just as valuable as those for the actual source.
 | |
| 
 | |
|     Fielding questions on the mailing lists is also helpful.  This
 | |
|     lets other people to focus on coding issues while allowing the
 | |
|     original poster to get some information at the same time.  It's
 | |
|     quite a relief to open that mailbox and find that someone else
 | |
|     has already handled it successfully.
 | |
| 
 | |
| -----------------------------------------------------------------------------
 | |
| 
 | |
|  Q: I replaced the battery in my APC Smart-UPS and now it thinks the 
 | |
|     battery is low all the time.  How do you fix this?
 | |
| 
 | |
|  Q: My APC UPS keeps reporting "OL LB", even after it's been charging
 | |
|     for many hours.  What can I do about this?
 | |
| 
 | |
|  A: This happened to me, and some other people too.  The combination of
 | |
|     our experiences should prove useful to you.
 | |
| 
 | |
|     First, you need to realize that the UPS apparently stores data about
 | |
|     the battery, load, and runtime.  After replacing the battery, it
 | |
|     needs to be clued in to the new situation.  If the traditional
 | |
|     runtime calibration doesn't work, you have to try something a
 | |
|     little more drastic.
 | |
| 
 | |
|     You need to *completely* drain the UPS while it has a good ground.
 | |
|     This means you can't just pull the plug.  You also have to
 | |
|     disconnect it from the computer so this software won't shut it
 | |
|     down.
 | |
| 
 | |
|     The easiest way to do this is to first unplug your computer(s) from
 | |
|     it, and plug in a token load like a lamp.  Also, move the UPS to a 
 | |
|     power strip that doesn't switch the ground line or an outlet that
 | |
|     you can switch off at your panel.
 | |
| 
 | |
|     Once the UPS is up at 100% charge (this is important), disconnect
 | |
|     the power.  It _must_ remain connected to the ground, or the
 | |
|     results may not be accurate.  Ignore the sounds it makes, and go
 | |
|     away until it's done.  Don't do anything to the front panel while
 | |
|     this is happening.
 | |
| 
 | |
|     After all of this, put things back the way they should be and let
 | |
|     it charge up.  You should find that it again gives reasonable
 | |
|     values and behavior, as it was when it was new.
 | |
| 
 | |
|     Thanks to Matthew Dharm for helping me nail down this procedure.
 | |
| 
 | |
| -----------------------------------------------------------------------------
 | |
| 
 | |
|  Q: multimon.cgi seems to be stuck at an old version, even though I
 | |
|     just installed a new one.
 | |
| 
 | |
|  A: multimon was removed during the 1.1 development cycle.  upsstats
 | |
|     now does everything it used to do, and then some.  You should just
 | |
|     delete those files and start using upsstats directly.
 | |
| 
 | |
| -----------------------------------------------------------------------------
 | |
| 
 | |
|  Q: OK, I switched to upsstats.  Now it's giving me Celsius.  I like
 | |
|     Fahrenheit.  Where's the config file to switch it back?
 | |
| 
 | |
|  A: Temperature scales are handled by the template files, so edit your
 | |
|     upsstats.html and change it from TEMPC to TEMPF.
 | |
| 
 | |
| -----------------------------------------------------------------------------
 | |
| 
 | |
|  Q: Why is the mailing list ignoring me?
 | |
| 
 | |
|  A: You probably asked a question that's answered in this FAQ or
 | |
|     somewhere else in the documentation and nobody wants to quote it
 | |
|     for you.
 | |
| 
 | |
|     Convincing the other subscribers that you've actually read down this
 | |
|     far might be useful.  You might mention "queequeg" for better results.
 | |
| 
 | |
|     This URL may also be helpful:
 | |
| 
 | |
| 	http://www.catb.org/~esr/faqs/smart-questions.html
 | |
| 
 | |
| -----------------------------------------------------------------------------
 | |
| 
 | |
|  Q: I found some information about another kind of UPS protocol you
 | |
|     don't support yet, but I don't know what to do with it.  Can you
 | |
|     help?
 | |
| 
 | |
|  A: If you're not a programmer, you can still help others by making
 | |
|     that protocol available.  You might host the document somewhere and
 | |
|     send the URL to one of the mailing lists.
 | |
| 
 | |
| -----------------------------------------------------------------------------
 | |
| 
 | |
|  Q: How can you answer questions to situations that nobody's encountered
 | |
|     yet?  Isn't this a frequently asked questions file?
 | |
| 
 | |
|  A: Magic.
 | |
| 
 | |
|  A: It's both that and a frequently *anticipated* questions file, too.
 | |
| 
 | |
|     The idea is to write it up in here so that nobody asks the mailing
 | |
|     list when it finally does get released.  
 | |
| 
 | |
| -----------------------------------------------------------------------------
 |