Defective Ethernet Shield?

I recently purchased an Arduino Ethernet shield on Amazon.com. It's called a "Desloo Ethernet Shield W5100 Micro-sd Card Slot for Arduino 2009 UNO Mega 1280 2560 Duemilanove".

This shield seems to be giving me trouble, as it takes a long time to connect to my home network after simply uploading any of the ethernet sketches to my Arduino Uno. It takes a lo-o-ong time before it connects to the IP I give to it, and then its not long before it's no longer pingable. Frustrating, I tell you.

I am doing everything correctly, as the shield does eventually connect.

Seems to me that I've purchased a $6.50 off-brand Ethernet shield whereas I should have gone the respective route and gotten the REAL deal!

Any thoughts? Are my negative occurrences indicative of Ethernet shields in general? Is this one of those "I get what I pay for" scenarions?

Thanks for any insight.

Any thoughts? Are my negative occurrences indicative of Ethernet shields in general? Is this one of those "I get what I pay for" scenarions?

I have several "off-brand Ethernet shield" and they all work as expected. Could also be your code or your home network setup. If the shield eventually works, then the problem is probably not with the shied itself.

That is not a 'R3' version. When everything is 'R3' (the Arduino board and the Ethernet Shield), then everything should work fine.
The cheap clone probably uses the same W5100 chip, but crystals and capacitors might be bad quality.

Show your sketch, perhaps you have forgotten something.
How slow is it ? ten seconds ? two minutes ?
The Ethernet Shield is slower than normal Ethernet devices, perhaps the router doesn't work well with the Ethernet Shield.

There are many more things that could cause it: bad cables, not enough power for the Ethernet Shield, and so on.

Have you double checked for MAC address and IP address clashes?

I have had similar LAN slow down symptoms when I have given two ethernet shields the same MAC and/or IP address. Throws the whole LAN for a loop.

Some client test code that does not require any configuration to use. You might try this code to see if you can get a response from the server.

//zoomkat 3-1-13
//simple client checkip test
//for use with IDE 1.0.1 or later
//with DNS, DHCP, and Host
//open serial monitor and send an e to test
//for use with W5100 based ethernet shields

#include <SPI.h>
#include <Ethernet.h>

byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED }; //physical mac address

char serverName[] = "checkip.dyndns.com"; // test web page server
EthernetClient client;

//////////////////////

void setup(){

  if (Ethernet.begin(mac) == 0) {
    Serial.println("Failed to configure Ethernet using DHCP");
    // no point in carrying on, so do nothing forevermore:
    while(true);
  }

  Serial.begin(9600); 
  Serial.println("Better client ip test 3/1/13"); // so I can keep track of what is loaded
  Serial.println("Send an e in serial monitor to test"); // what to do to test
}

void loop(){
  // check for serial input
  if (Serial.available() > 0) //if something in serial buffer
  {
    byte inChar; // sets inChar as a byte
    inChar = Serial.read(); //gets byte from buffer
    if(inChar == 'e') // checks to see byte is an e
    {
      sendGET(); // call sendGET function below when byte is an e
    }
  }  
} 

//////////////////////////

void sendGET() //client function to send/receive GET request data.
{
  if (client.connect(serverName, 80)) {  //starts client connection, checks for connection
    Serial.println("connected");
    client.println("GET / HTTP/1.1"); //download text
    client.println("Host: checkip.dyndns.com");
    client.println("Connection: close");  //close 1.1 persistent connection  
    client.println(); //end of get request
  } 
  else {
    Serial.println("connection failed"); //error message if no client connect
    Serial.println();
  }

  while(client.connected() && !client.available()) delay(1); //waits for data
  while (client.connected() || client.available()) { //connected or data available
    char c = client.read(); //gets byte from ethernet buffer
    Serial.print(c); //prints byte to serial monitor 
  }

  Serial.println();
  Serial.println("disconnecting.");
  Serial.println("==================");
  Serial.println();
  client.stop(); //stop client

}