Ethernet Shield not working?

Hi
I have received today another brand new Arduino Ethernet Shield.
I ordered a new one as I thought the old one was broken, but the new one does exactly the same.

Following many many many examples, tutorials and suggestions I am left still with no luck.

What I have done:

  1. Attach shield to my Uno matching the pins between the main board and shield
  2. Power the Uno by USB
  3. Take the ready made example (version 1.0.6) from the library. The one I am trying is "Ethernet> Web Server"
  4. Changed the IP Address
  5. Added { pinMode(4, OUTPUT); digitalWrite(4, HIGH);} to setup() as per other suggestions
  6. Added a delay between init of Serial and Ethernet as per other forum suggestion
  7. Added a delay after Ethernet.begin as per other forum suggestion

What I have is a board on which the Ethernet Port Green LED flashes continuously. The Orange LED does not light up. On the top of the shield board the PWR LED is red and lit, the LINK, 100M and FULLD LED's flash continuously.
The setup () routine ends with the message as per the sketch (server is at ....)

And then NOTHING.

Can't ping it, can't connect to it, ......

Some sites suggest removing soldering from between pins, which I tried on the first board to no avail and frankly I don;t believe that the manufacturing is so bad that they would mess up different boards on exactly the same place for so long without fixing it.

So now I am asking if anyone can help me please..

OK, so after reading yet another forum topic, I thought to try connecting the shield to my laptop direct using a cross-over cable.

It seems to work now.

Can anyone explain why connecting it with a straight connector (UTP) via a stock standard Netgear unmanaged switch would not work?

Thanks in advance

Paul

Bad CAT5 cable?

Very simple client test code you can try unmodified 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.0"); //download text
    client.println("Host: checkip.dyndns.com");
    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

}