#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.

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:

0 for base address 0x3bc

1 for base address 0x378

2 for base address 0x278

3 for base address 0x3bc

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.