#R2eboot Remote Reboot Solution
Two of these devices connected to two servers are a cheap, easy and safe solution for rebooting hanging remote machines. Of couse this only works as long as one of the machines is still alive.
Hardware
The circuit may seem to be a bit overkill on the first look, but the IC
has it's purpose:
During parport initialization that's happening on reboot, the port sets all output pins to hi. The device must have some checking build in to make sure it doesn't get activated by this. It would result in an endless loop with both machines rebooting each other...
To make it as failsafe as possible without turning the device into a
computer on it's own, a 8bit comparator is used which allows for activation
on one particular combination of output bits.
Even though this makes the main part of the circuit, a negator is needed
to deal with the IC's inversed output. Also some diodes are required to
allow the use of more then one pin for powering this circuit.
A low power LED is on board mainly for debugging, it simply turns on when
the right combination is outputted on parport.
Since the actual "reset switch" is a simple transistor the device must be connected to the motherboard very carefully.
If you need some inspiration on how to implement this design, have a look at one I built.
Software
Download:
Source for x86 (09/24/00 - latest version)Binary (compiled on SuSE 6.4) (09/24/00 - latest version)
Installation/Usage:
- download one of the above archives
- use tar fxz to uncompress the archive
- enter the new directory r2eboot
- if you downloaded the source, execute make; otherwise ignore this step
- copy the r2eboot executable to /usr/sbin or /root/bin or wherever you like
- unload all kernel drivers for the particular parport you want to use
- make sure that the hardware is installed properly
- start r2eboot as required
Starting #r2eboot with any argument but -p will give you the following help
screen:
r2eboot -h |
Usage: r2eboot [-p <num>] Where <num> can be one of the following: If the -p option is not used, the program defaults to base address 0x378. |
You can choose from any of the standard parallel ports. 0x3bc is in there
twice since some people consider it to be the third port and other say it's
the real first one and therefore zero.
If you need to specify another address you have to edit the portlist[] array
in r2eboot.c and insert your port there. Make sure that you do NOT REMOVE the
trailing 0 which is used as end of list marker.