How to put Ethernet shield to sleep?

Hello, I have a little project where the temperature is uploaded every x minutes to a Web server.

I would like to stop the Ethernet shield (e.g. power off, sleep) and start it only when I need.

This is to save energy, and also because I cannot manage to have a stable Ethernet over several days (I do not say more about that as I would like to focus the thread on shutting off the Ethernet shield).

My platform is Arduino Uno Rev3 + Ethernet Shield Rev3.

Is there a software solution for shutting the W5100 off, or at least reset / restart it?

Alternatively, is there is simple hardware solution for that?

A related question that was not answered: "How to manual reset an Ethernet Shield" http://arduino.cc/forum/index.php/topic,15995.0.html

Thanks in advance, Alexandre

The high bit of the Mode Register (MR) at address 0x0000 will force a software reset if set to 1.

There seems to be no "Low Power Standby" mode and no way to turn the power off or down. You would have to make hardware changes (a relay in the 5V line, for example) to turn off the Ethernet. Just call Ethernet.begin() again after you turn the power back on.

Thanks for the prompt answer!

johnwasser:
The high bit of the Mode Register (MR) at address 0x0000 will force a software reset if set to 1.

Ok, I can see that Ethernet.begin already calls W5100.init();, which is implemented in w5100.cpp and performs the reset with writeMR(1<<RST);

Incidentally, there has just been another bug report on this precise piece of code. Having implemented the proposed patch, I will let my system run for a while and see if the stability has increased…

johnwasser:
You would have to make hardware changes (a relay in the 5V line, for example) to turn off the Ethernet

Ok. If someone has a link with more explanations, I would be interested. Alternatively with a transistor maybe?

Cordially,
Alexandre