Ethernet shield - which pins?

Below I've pasted some extracts from the main page on this site for Arduino Ethernet Shield with questions!

Arduino communicates with both the W5100 and SD card using the SPI bus (through the ICSP header). This is on digital pins 10, 11, 12, and 13 on the Uno and pins 50, 51, and 52 on the Mega.

Huh? Those two sentences contradict surely? "Through the ICSP header. On pins 10-13?" I may have misunderstood, but the ICSP header is the little block at the bottom of the Arduino, and pins 10-13 on the Uno are nothing to do with that are they? So which does Arduino use to communicate with the shield? ICSP header, 10-13, or both?

On both boards, pin 10 is used to select the W5100 and pin 4 for the SD card. These pins cannot be used for general I/O.

So is the converse true, I can use pin 4 if I'm not using the SD card?

(And why on earth would I need TWO pins to select two devices that are mutually exclusive, surely binary would come in handy here?! Sorry if I'm missing an obvious point!)

Anyway, can someone perhaps help me and provide a little clarity on which pins I can and can't use when using just the network port?


SCK, MOSI and MISO are wired to both the ISP header (6 pin) and pins 11-13 on the Uno.

The SPI bus requires that each device on the bus have a unique chip select signal.

@groundfungus Thanks.

Just to be sure, though.

  • Are you saying I definitely can't use pins 11-13 on the Uno if using network port? (Or are they merely used optionally by the shield?)

  • What about pin 4, is that out of bounds too?

If 4 is out, that would explain why my project works but is a bit unstable, I'm using 4!

You can hang more devices on the SPI bus if each device has its own chip select. If the library you are using sets pin 4as a chip select then you can not use it for anything else as far as I know.


Ahh, okay. So I could use ICSP pins for driving e.g. a display as well, as long as the display has its own chip select?

I'm still confused about what is the difference between pins 11-13 and ICSP though. Why are they "tied" together - and how, given ICSP is 6 pins and not 3?

If the display is SPI, yes. The other three pins on the ISP header are Vcc, ground and reset. These pins are also in parallel with the corresponding pins on the regular headers. I do not know why they are in two places.

HI there... I'm using arduino uno + ethernet shield with SD card I'm ok with the 10-13 pins for the etherenet and pin 4 for the SD BUT! my issue is that I cannot use pin 0 and 1 ( tx and Rx) as simple input outputs, do you have any reference regarding this, forget about the code when I connect a led ( with the resistor) to the pin 1 it stays on allways and does not attend the digitalWirte(0,LOW or HIGH or 0 or 1) Again this is not a coding question is a pinout question.