Over the past last month or so, I have been working on creating the hardware and
the software needed to be able to boot/reboot/hard reboot my computers at home.
The reason I need this is that I am going away for a few months, away from my computers,
and I would like to be able to keep on reverse engineering nvidia’s ptherm.
A possible software-only solution is to use
Wake-On-Lan to boot up the computer remotely,
ssh to connect to the computer, grub-reboot
to select the kernel to boot on at the next reboot and finally, the
watchdog to reboot the computer
when it crashes. If it seems to you like a pain to use, I definitely agree!
So, a hardware-based solution seems more interesting! The standard solution
to solve this issue is called
IPMI.
The interesting features are:
- Being able to cut the power down and put it back up again;
- Read back some of the state (Power & disk LEDs for instance);
- Having a serial console.
However, I don’t have an IPMI-ready motherboard as they are usually used on servers.
I thus decided to make myself an equivalent. The only thing that was worrying me
was that I had to be able to control that from the internet. So, one machine
had to be up and running! I decided to buy a Raspberry Pi
as it was the cheapest and lowest-power consumption computer I could get with an
ethernet port and a few
General Purpose Input/Output (GPIO).
Using those GPIOs, I can control a custom-made circuit board to cut the power,
press the power switch and read the power led state but the real question was
about the user interface to wrap those GPIOs. I decided to make a web-based user interface
because it was more demo-able and also could be updated in real time for displaying
logs and the power LED state.