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


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



Source for x86 (09/24/00 - latest version)
Binary (compiled on SuSE 6.4) (09/24/00 - latest version)


  1. download one of the above archives
  2. use tar fxz to uncompress the archive
  3. enter the new directory r2eboot
  4. if you downloaded the source, execute make; otherwise ignore this step
  5. copy the r2eboot executable to /usr/sbin or /root/bin or wherever you like
  6. unload all kernel drivers for the particular parport you want to use
  7. make sure that the hardware is installed properly
  8. 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.