2 Network shields

Hi all,
This is my first post, I just started with the Arduino and I was wondering if it is possible to have 2 network shields?
Basically i want an In and Out for my network data. I was thinking it is not possible because both network shields would use
the same pins, but I am not too familiar with how this works. Any ideas to help me before i buy?
Thanks in advanced :slight_smile:

Why do you think you need two shields? Your pc is most likely only using a single network interface.

I agree with dxw00d that you probably don't need two shields but if you must have them for any reason, there is a possibility. Most of the pins of the Ethernet shield can be used by both shields together (not at the same time but that's a software issue). The reserved ones are pin 10 (SS of Ethernet) and 4 (SS of SD card). You can remove the two pins on the upper shield and reconnect them by jumper wire from other pins. You then have to use two versions of the Ethernet library with one having the SS pin changed to the rerouted pin.

I would like to do this too so that I can build a tiny ethernet bridge..

I read on the freetronics website


that there is an issue with the shield and the SPI bus


Thank you all for the replies! I will explain what I am thinking. I want to make something that I can inject HTML into every page that is requested and display a picture(logo) on it. I think it is possible to do with DD-WRT but, I want to build it with the Arduino. Building it is half the fun right? It really has no purpose I just want to see if it is possible :D

I think that is possible, but certainly not easy. A bit of pin bending would be required, and probably another ethernet library (or serious mods to the current library) for ether2.

edit: I was SurferTim on the DD-WRT forum. I patched a couple bugs in the ChilliSpot hotspot for them. I haven't been there in a while. I use Mikrotik/Routerboard routers now. I'm SurferTim on that forum also.

@OP: I don't think this is possible because an Arduino with an Ethernet shield is not able to be something like a transparent proxy by filtering certain network data streams and changing content. There are several reasons why this don't work, one is RAM capacity, the other is no access to low level ethernet traffic, processor speed is also accounting. This is possible with DD-WRT (or another Linux based network device) but out of reach for an Arduino.