A Potato-Powered Web Server


Small Servers



This experiment is now officially over, as the author has about had it rotting potatoes. Spud is now merely the World's Lowest Power Web Server, running on a single AAA battery (which should power it for several years). The voltage/current readings and graphs are no longer being updated. It is offline until I once again get an ISP that allows servers. Thanks for visiting.

This is an actual potato-powered Web server, currently online here. After the great SpudServer joke, I thought it would be interesting to see what an actual server capable of running on potatoes would look like. This server is very, very slow (around 0.2 hits/second), so you may have trouble connecting.

The CPU is a Microchip PIC16F876 running with a 76.8 KHz clock and a nominal 1.5V supply voltage (somewhat outside the manufacturer's specifications). At this speed and voltage, it draws 20 microWatts (0.00002 Watts), or roughly 100,000th to 1 millionth the power of any Intel 386 board I know of. It connects via SLIP at 4800 baud.

Every 5 minutes or so, a PC measures the voltage, current, and power output of the potato battery and sends the values in a small UDP packet to the server. The server then updates some internal RAM variables which are displayed as part of its home page. So you can watch the potatoes discharge (kind of like watching corn grow). I have no idea how long the battery will last. The server will fail when the voltage drops below about 1.35V.


Driving a standard PC serial port requires over 200 times the power needed to run the CPU, which would mean an additional 1000 potatoes. So, we borrow power from the serial port to drive the serial port. It seems reasonable to allow the server's interface to the outside world to power itself, and still call this a potato-powered server. The server is the CPU, and the CPU is powered by the potato battery.

The circuit has been designed so that no power can leak from the serial port into the server's power supply. Of course, there'd be no need for any potatoes at all if we did allow power to leak across. This emphasizes how utterly silly this server is, as if you didn't know that already.


On the left is a plot of battery voltage and current versus time (click for more detail). The initial open circuit voltage was 4.5V, followed by an accidental short to 0V, then a big spike when I added a sixth potato and restabbed all of the electrodes. Other sharp spikes and jumps are also where I restabbed the electrodes, but the more gradual increases in voltage are a bit of a mystery, probably due to corrosion and whatnot coming off the grotty electrodes.

Here is a another voltage graph, showing the effect of a single hit to the server. An isolated hit drops the voltage about 5mV. Exciting, huh?

After almost two weeks powering the server, the battery itself is experiencing some definate sprouting action, as well as the imminent putrefaction of potato No. 3. This is what I'm living with on my workbench these days.

July 15: The first batch of potatoes lasted 14 days 03:48, at which time the server reset itself. I replaced the rotting ones, and we're back up (and breathing much easier).


Here is the schematic diagram, and a closer view of the protoboard. The 220uF capacitor can power the server for about 10 seconds, long enough to swap in a new potato or simply stab one of the nails or copper wires into a fresh, juicy area. An LM339 quad comparator translates between the 1.5V logic levels of the PIC and 3.3V levels for the serial line.

The power supply, of course, is a 5 or 6 cell potato/galvanized nail/copper wire battery, wired first through a multimeter, and then to the server. The battery started at five cells, I added a sixth as the voltage fell.

Since there is no regulator, the power supply voltage actually varies from about 2.5V when the battery is fresh, down to 1.35V or so, where the server cuts out. The power usage follows the voltage, varying from 60uW at max voltage down to about 15uW at the minimum voltage. By adding a low-power voltage regulator, we could lower the power usage at the higher voltages. I haven't tried this yet.

Aug 3: I just added a Seiko S-81215SG ultra low-power 1.5V voltage regulator to the circuit. We now draw a relatively constant 13.5uA even when the battery voltage is up around 2.4V.


The code is a port of the original webACE code to a PIC. It has been heavily optimized for speed, in order to get the response time below TCP's default retransmission timeout. When you only get 19200 instructions/second, each one has to count!


The usual efficiency rating used for CPUs is MIPS/mW, which is a measure of the amount of energy required to execute one CPU instruction (1 MIPS/mW = 1 nanoJoule/instruction). The potato server gets about (76.8KHz/4) / 20uW = 1 MIPS/mW. Of course, these are tiny 8 bit instructions, so any comparison to say, a Crusoe, which also gets around 1 MIPS/mW at 1.5V, is at best light entertainment.
Copyright 2000 Fredric White
Created: June 28, 2000
Last Updated: Feb 20, 2003
f w h i t e@std.com