SD Card initialitzation fails - Arduino Ethernet

Hi,

I'm stoked trying to execute any of the examples about SD's from the Arduino reference.
I always receive the same answer:
"initialization failed."

This is the code:

/*
  SD card test 
   
 This example shows how use the utility libraries on which the'
 SD library is based in order to get info about your SD card.
 Very useful for testing a card when you're not sure whether its working or not.
 
 The circuit:
  * SD card attached to SPI bus as follows:
 ** MOSI - pin 11 on Arduino Uno/Duemilanove/Diecimila
 ** MISO - pin 12 on Arduino Uno/Duemilanove/Diecimila
 ** CLK - pin 13 on Arduino Uno/Duemilanove/Diecimila
 ** CS - depends on your SD card shield or module. 
 Pin 4 used here for consistency with other Arduino examples

 
 created  28 Mar 2011
 by Limor Fried 
 modified 9 Apr 2012
 by Tom Igoe
 */
 // include the SD library:
#include <SD.h>

// set up variables using the SD utility library functions:
Sd2Card card;
SdVolume volume;
SdFile root;

// change this to match your SD shield or module;
// Arduino Ethernet shield: pin 4
// Adafruit SD shields and modules: pin 10
// Sparkfun SD shield: pin 8
const int chipSelect = 4;    

void setup()
{
  //SD.begin(4);
 // Open serial communications and wait for port to open:
  Serial.begin(9600);
   while (!Serial) {
    ; // wait for serial port to connect. Needed for Leonardo only
  }
  Serial.print("\nInitializing SD card...");
  // On the Ethernet Shield, CS is pin 4. It's set as an output by default.
  // Note that even if it's not used as the CS pin, the hardware SS pin 
  // (10 on most Arduino boards, 53 on the Mega) must be left as an output 
  // or the SD library functions will not work. 
  
  //esto esta bien.
  pinMode(10, OUTPUT);     // change this to 53 on a mega


  // we'll use the initialization code from the utility libraries
  // since we're just testing if the card is working!
  if (!card.init(SPI_HALF_SPEED, chipSelect)) {
    Serial.println("initialization failed. Things to check:");
    Serial.println("* is a card is inserted?");
    Serial.println("* Is your wiring correct?");
    Serial.println("* did you change the chipSelect pin to match your shield or module?");
    return;
  } else {
   Serial.println("Wiring is correct and a card is present."); 
  }

  // print the type of card
  Serial.print("\nCard type: ");
  switch(card.type()) {
    case SD_CARD_TYPE_SD1:
      Serial.println("SD1");
      break;
    case SD_CARD_TYPE_SD2:
      Serial.println("SD2");
      break;
    case SD_CARD_TYPE_SDHC:
      Serial.println("SDHC");
      break;
    default:
      Serial.println("Unknown");
  }

  // Now we will try to open the 'volume'/'partition' - it should be FAT16 or FAT32
  if (!volume.init(card)) {
    Serial.println("Could not find FAT16/FAT32 partition.\nMake sure you've formatted the card");
    return;
  }


  // print the type and size of the first FAT-type volume
  uint32_t volumesize;
  Serial.print("\nVolume type is FAT");
  Serial.println(volume.fatType(), DEC);
  Serial.println();
  
  volumesize = volume.blocksPerCluster();    // clusters are collections of blocks
  volumesize *= volume.clusterCount();       // we'll have a lot of clusters
  volumesize *= 512;                            // SD card blocks are always 512 bytes
  Serial.print("Volume size (bytes): ");
  Serial.println(volumesize);
  Serial.print("Volume size (Kbytes): ");
  volumesize /= 1024;
  Serial.println(volumesize);
  Serial.print("Volume size (Mbytes): ");
  volumesize /= 1024;
  Serial.println(volumesize);

  
  Serial.println("\nFiles found on the card (name, date and size in bytes): ");
  root.openRoot(volume);
  
  // list all files in the card with date and size
  root.ls(LS_R | LS_DATE | LS_SIZE);
}


void loop(void) {
  
}

I'm using Arduino Ethernet powered by USB using a USB serial light adapter.
http://arduino.cc/en/Main/arduinoBoardEthernet

My SD card is 2 Gigas card formated using SD Formatter software on iOS. Previously I've test to format the card on Windows using FAT16

After spend some hours trying diferent solutions I've found this scketch proposed by johnwasser to evaluate the origin of the problem and the result is:

http://forum.arduino.cc/index.php?topic=240330.0

My result are:
errorCode: 1
errorData: 0

Many thanks in advance

Hello aleixOnion,

It could be a library issue. Look at your Arduino library folder at

C:\Users\YourName\Documents\Arduino\libraries

If you see a folder named 'SD', delete it. Close and open your Arduino IDE and program again your Arduino board.

Regards,

p

If you see a folder named 'SD', delete it. Close and open your Arduino IDE and program again your Arduino board.

Where did you get that advice?

Even if you import and use fat16lib's SdFat library, I wouldn't recommend removing the standard SD library.

Thank you Palliser,

If you see a folder named 'SD', delete it. Close and open your Arduino IDE and program again your Arduino board.

I'm not using any contributed library so at my libraries

C:\Users\YourName\Documents\Arduino\libraries

I don't have any folder.

SurferTim I think Palliser is suggesting delete SD library folder just in case I have it duplicated at the contributed libraries folder. C:\Users\YourName\Documents\Arduino\libraries

Sufer Tim do you think one solution may be use fat16lib's SdFat library as an alternative?

Thank you,

I understand what Pallister means now. My bad.

I use the standard SD library. Many think the SdFat library by fat16lib is better. If you want to use it, you can download it from Github and import it into the IDE.

Have you tried the SD.begin(4) function yet?

#include <SD.h>

void setup() {
  Serial.begin(9600);

  // disable w5100 SPI
  pinMode(10,OUTPUT);
  digitalWrite(10,HIGH);

  if(SD.begin(4) == 0) Serial.println("SD fail");
  else Serial.println("SD ok");
}

void loop() {
}

Yes, I just tried it with no luck. What I obtain is: "SD fail".

It may be a board hardware problem.