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

_______________________________________________
Nut-upsuser mailing list
[email protected]
http://lists.alioth.debian.org/cgi-bin/mailman/listinfo/nut-upsuser

Reply via email to