[Nut-upsuser] CyberPower USB UPS fails to cut power during shutdown
James Northcott / Chief Systems
james at chiefsystems.ca
Mon Jul 18 21:01:56 UTC 2011
Hi,
I have a CyberPower UPS connected to a Ubuntu karmic machine. All
functions are working well. I can use upsc to see all the UPS
parameters, power loss and battery low events are correctly detected,
and shutdown is correctly initiated. If I run upsdrvctl shutdown, the
UPS cuts power immediately.
However, if I simulate a shutdown with upsmon -c fsd, the UPS fails to
cut power. The normal halt procedure completes, and my machine turns
itself off and stays off.
The relevant part of the shutdown script is:
flag=`sed -ne 's#^ *POWERDOWNFLAG *\(.*\)$#\1#p' /etc/nut/upsmon.conf`
wait_delay=`sed -ne 's#^ *POWEROFF_WAIT= *\(.*\)$#\1#p'
/etc/default/nut`
if [ -f "$flag" ] ; then
if $upsmon -K >/dev/null 2>&1 ; then
log_action_msg "Shutting down the UPS ..."
# log_action_msg "Restarting udev to give USB access"
# /etc/init.d/udev start
# sleep 10
log_action_msg "Running $upsdrvctl shutdown"
if $upsdrvctl shutdown ; then
sleep 5
log_action_msg "Waiting for UPS to cut the power"
log_end_msg 0
else
log_action_msg "Shutdown failed."
log_action_msg "Waiting for UPS batteries to run down"
log_end_msg 0
fi
log_action_msg "UPS should now be off!"
sleep 10
if [ "$wait_delay" ] ; then
log_action_msg " (will reboot after $wait_delay) ..."
sleep "$wait_delay"
/etc/init.d/reboot stop
fi
else
log_action_msg "Power down flag is not set (UPS shutdown not
needed)"
fi
else
if [ -z "$flag" ] ; then
log_daemon_msg
"##########################################################"
log_progress_msg "## POWERDOWNFLAG is not defined in
/etc/nut/upsmon.conf ##"
log_progress_msg
"## ##"
log_progress_msg "## Please read the Manual page
upsmon.conf(5) ##"
log_progress_msg
"##########################################################"
log_end_msg 0
fi
fi
This is part of /etc/init.d/nut, which gets called by /etc/init.d/halt
at the correct time. This script is bundled with the ubuntu package
(version 2.4.1-3ubuntu2)
If I run /etc/init.d/nut poweroff myself, the UPS receives the command
and cuts power. When I run the script directly, I see on the console:
Shutting down the UPS ...
Running /sbin/upsdrvctl shutdown
When the script is called from the halt routines, I see:
Shutting down the UPS ...
Will now halt
The "Will now halt" message is from /etc/init.d/halt, and indicates that
we returned to that script instead of having the power cut as expected.
I thought that the problem might be that the USB device is no longer
available, so I tried the commented lines above to restart udev to
restore access to USB devices. This didn't work.
I also tried specifying that the upsdrvctl command run as root, with
$upsdrvctl -u root shutdown - this also didn't work.
Does anyone have any ideas on why the shutdown command is failing when
run as part of the halt process? Or do you have any pointers on
debugging the halt process?
Thanks,
James
More information about the Nut-upsuser
mailing list