RemoteResetArduino

From RevSpace
Revision as of 19:58, 20 August 2013 by FooBar (talk | contribs)
Jump to navigation Jump to search
Project RemoteResetArduino
Status completed"completed" is not in the list (Proposed, Initializing, In progress, Completed, Stalled, Abandoned) of allowed values for the "Project Status" property.
Contact FooBar
Last Update 2013-08-20

Summary

An arduino program to toggle power and reset buttons on standard ATX PC's, and to read the status of the machine (Powered on or off, Power present @ PSU).

Introduction

I was building a 3-node cluster to test some cluster-filesystems for a client, and used 'wake-on-lan' to remotely boot the various cluster nodes when needed. This worked somewhat, but I was unable to reboot a hanging system, or see if a wake-on-lan packet actually arrived at the system.

Doing some tests with a firmata sketch on an arduino proved that I could easily toggle the powerbutton and resetbutton on an ATX mainboard, bringing this project to life.

Code

The code can be found on https://github.com/sigio/remotereset-arduino

Working

  • Connect the arduino to a usb port on a working system (I used a openwrt based router).
  • Connect the digital pins to the power and reset lines on an ATX mainboard.
  • Make a serial connection to the arduino (115200 baud)
  • Configure the pin-numbers (see 'help' command, use 'config' command)
  • Toggle reset and/or power buttons with commands 'reset #', 'power #' or 'force #'
    • Force will hold the (power) button for 4 seconds, reset and power only simulate a short press
  • Use the 'check #' command to see if a system is powered on

Pictures

Rra-mainboard.jpg Rra-arduino.jpg

Usage Session Example

> RemoteReset-Arduino started

> help

Help: 
 config      Edit configuration
   config [0-7] resetpin pwrpin name
 reset #     Toggle reset switch on config #
 power #     Toggle power switch on config #
 force #     Long-Press power switch on pc number #
 erase #     Erase config number #
 state       Check power state
 dump        Dump configuration to serial
 save        Save configuration to EEPROM
 load        Load configuration from EEPROM
 wipe        Wipe onfiguration and update EEPROM

> dump  

Config
Config: 0    Data: 0 / 255 / 255 / unused
Config: 1    Data: 1 / 7 / 6 / gluster1
Config: 2    Data: 1 / 3 / 2 / gluster2
Config: 3    Data: 1 / 4 / 5 / gluster3
Config: 4    Data: 0 / 255 / 255 / unused
Config: 5    Data: 0 / 255 / 255 / unused
Config: 6    Data: 0 / 255 / 255 / unused
Config: 7    Data: 0 / 255 / 255 / unused

> power 1

Sending power signal to pin: 6