`flat` ;2014/09/12 :UPSのModbus有効化手順に抜けがあったので追記
最近購入した、前面が液晶画面になっているSmart-UPS 750/500で、停電してシャットダウンした後に復電してもサーバが起動しない問題に遭遇。UPSのファームウェアとapcupsdを最新のものにする事で解決しました。
まず、問題のあった時点でのapcupsdとファームウェアのバージョンは以下の通りです。
% apcaccess : VERSION : 3.14.10 (13 September 2011) freebsd : FIRMWARE : UPS 08.8 / ID=18
この組み合わせでは、
という状況でした。
ただ、apctestコマンドから"Test kill UPS power"を試すとちゃんとUPSの電源は落ちます。UPSにkill信号を送る前にapcupsdが強制終了しているのではないかなどと考え、rcスクリプトをいじったりしてみましたが、状況は変わらず。
さて困ったなと思って、apcupsdの公式サイトを見ると、3.14.11のリリースノートに、"MODBUS protocol support"という記述があり、UPS側のファームウェア更新が必要だが、シリアルケーブルでの監視にも対応したとあったので、これを試す事に。
まず、 http://www.schneider-electric.us/support/index?page=content&country=ITB&lang=EN&id=FA164737 にアクセスして、ページ下方のAttachment(s):にある、"Firmware Upgrade Wizard Manual.pdf "と"FirmwareUpgradeWizard4_0.exe"をダウンロードします。"FirmwareUpdateImages.zip "は、Smart-UPSに関してはexeファイルの方に同じ物が同梱されていて必要ないようでした。あとはPDFファイルの説明に従ってファームウェアのアップデートを行うだけです。簡単に説明すると、
といった感じでした。
次に、UPSの画面を操作してModbusを有効にします。
`clear`
`clear`
サーバ側のapcupsdも最新の3.4.12にバージョンアップします。FreeBSDならportsがすでに最新版になっているので、
# portsnap fetch update # portmaster apcupsd
するだけです。更新後、apcupsdの設定ファイルを書き換えて、Modbusプロトコルを使うようにします。
UPSCABLE smart UPSTYPE modbus DEVICE /dev/ttyu0
サーバとUPSを付属のシリアルケーブル(940-0625A)で接続してapcupsdを起動します。無事に起動し、apcaccessの表示が以下のようになれば作業完了です。
% apcaccess VERSION : 3.14.12 (29 March 2014) freebsd : CABLE : Custom Cable Smart DRIVER : MODBUS UPS Driver UPSMODE : Stand Alone : FIRMWARE : UPS 09.1 / 00.4
これでUPS側のコンセントを抜き差しして試したところ、無事復電時に自動で再起動するようになりました。ちなみに、この組み合わせであればUSBケーブルでの接続でも復電後の自動再起動まで問題なくできるようでした。
参考: http://www.apcmedia.com/salestools/MPAO-98KJ7F/MPAO-98KJ7F_R0_EN.pdf