Problem with old Ethernet shield

I just get a old version Ethernet shield, when I test it use Webserver example in the Ethernet library, it show the ip is 0.0.0.0, why? There sames need a mac address, but I don’t know the mac address of this board, how to know the mac address?

the follow is the test code

/*
  Web Server
 
 A simple web server that shows the value of the analog input pins.
 using an Arduino Wiznet Ethernet shield. 
 
 Circuit:
 * Ethernet shield attached to pins 10, 11, 12, 13
 * Analog inputs attached to pins A0 through A5 (optional)
 
 created 18 Dec 2009
 by David A. Mellis
 modified 9 Apr 2012
 by Tom Igoe
 
 */

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

// Enter a MAC address and IP address for your controller below.
// The IP address will be dependent on your local network:
byte mac[] = { 
  0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
IPAddress ip(192,168,0,77);

// Initialize the Ethernet server library
// with the IP address and port you want to use 
// (port 80 is default for HTTP):
EthernetServer server(80);

void setup() {
 // Open serial communications and wait for port to open:
  Serial.begin(9600);
   while (!Serial) {
    ; // wait for serial port to connect. Needed for Leonardo only
  }


  // start the Ethernet connection and the server:
  Ethernet.begin(mac, ip);
  server.begin();
  Serial.print("server is at ");
  Serial.println(Ethernet.localIP());
}


void loop() {
  // listen for incoming clients
  EthernetClient client = server.available();
  if (client) {
    Serial.println("new client");
    // an http request ends with a blank line
    boolean currentLineIsBlank = true;
    while (client.connected()) {
      if (client.available()) {
        char c = client.read();
        Serial.write(c);
        // if you've gotten to the end of the line (received a newline
        // character) and the line is blank, the http request has ended,
        // so you can send a reply
        if (c == '\n' && currentLineIsBlank) {
          // send a standard http response header
          client.println("HTTP/1.1 200 OK");
          client.println("Content-Type: text/html");
          client.println("Connnection: close");
          client.println();
          client.println("<!DOCTYPE HTML>");
          client.println("<html>");
                    // add a meta refresh tag, so the browser pulls again every 5 seconds:
          client.println("<meta http-equiv=\"refresh\" content=\"5\">");
          // output the value of each analog input pin
          for (int analogChannel = 0; analogChannel < 6; analogChannel++) {
            int sensorReading = analogRead(analogChannel);
            client.print("analog input ");
            client.print(analogChannel);
            client.print(" is ");
            client.print(sensorReading);
            client.println("
");       
          }
          client.println("</html>");
          break;
        }
        if (c == '\n') {
          // you're starting a new line
          currentLineIsBlank = true;
        } 
        else if (c != '\r') {
          // you've gotten a character on the current line
          currentLineIsBlank = false;
        }
      }
    }
    // give the web browser time to receive the data
    delay(1);
    // close the connection:
    client.stop();
    Serial.println("client disonnected");
  }
}

Do you use the newest Arduino 1.0.1 ?

You could use DHCP and let the router give it an IP address.

Ethernet.begin(mac);   // no fixed ip, use DHCP.

Most older ethernet shield have that mac address in the example. If you have the ethernet shield running, you could use a tool on your computer to retrieve the mac address. I forgot which tool....

In my research, the MAC is arbitrary and needs to be set in your code:

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

(from Examples -> Ethernet -> WebServer);

After that, Ethernet.begin(mac); should start the interface with DHCP.

I also suggest taking a look at Examples -> Ethernet ->DhcpAddressPrinter as this can help with bringing up the interface.

Which Ethernet chip are you using?

That code will only work with the W5100 chip.The ENC28J60 requires using different libraries that you can check out in the ETHER_28J60 Arduino examples.

I ask this because I got the same results as you until I realized that I was using the incorrect libraries (IP of 0.0.0.0).

By the way, if you plan to put this into any production environment, I would recommend that you use the locally administered MAC address convention.

http://en.wikipedia.org/wiki/MAC_address http://standards.ieee.org/regauth/groupmac/tutorial.html

In addition, if you are going to have more than one of these Ethernet shields/modules on your network, they all need to be unique. Do not re-use MAC addresses.