SD formatting problem

Dear community!

Ive got a adafruit sd module and would like to experiment with it.
Unfortunately I seem to dont get it working… :frowning:

The wirering is as follows:

I get a message that the card is present so I think the wiring should be correct (I hope).

But I get a a error message saying that the fat partition could not be found.
I formatted the card many times with windows and the sd formatter with 16 as well
as fat32. But still getting this message:

Initializing SD card...Wiring is correct and a card is present.

Card type: SD2
Could not find FAT16/FAT32 partition.
Make sure you've formatted the card

This is what I get from the SD formater software:

Drive Format complete !
("Flash Erase" operation has been canceled because this device didn't support it.)

 Volume Information 
 - File system : FAT
 - Total space = 1.89 GB (2,039,218,176 Bytes)    
 - Cluster size = 32768 Bytes

Im using the sd wrapper from ladyada (sdfatlib) and running the sdinfo sketch from the

  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

 created  28 Mar 2011
 by Limor Fried 
 // 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 = 10;    

void setup()
  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. 
  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?");
  } 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:
    case SD_CARD_TYPE_SD2:

  // 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");

  // 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);
  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.print("Volume size (Kbytes): ");
  volumesize /= 1024;
  Serial.print("Volume size (Mbytes): ");
  volumesize /= 1024;

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

void loop(void) {

What could be wrong?
Thanks for help!! :slight_smile:

And if you format the SDcard explicitely on FAT32 (e.g. with your windows PC)?

thanks for reply!

I tried that too allready. Still not working... :( The card is from my old mobile so maybe the card is too old? Could that be? Should I get a new one? Hope the sdmodule is not broken... :(

This card is old since it doesn't support modern erase commands. It should work but some old microSD cards didn't support SPI very well.

Don't format this card FAT32, only cards larger than 2GB should be formatted FAT32. Don't use the Windows format utility.

From the SD Assoication:

Use the SD Formatter instead of formatting utilities provided with operating systems that format various types of storage media. Using generic formatting utilities may result in less than optimal performance for your memory cards.

SD Formatter is here

The SdFat formatter sketch also complies with the SD formatting standard.

Please run the SdInfo example from the latest version of SdFat. It provides more information than the Adafruit CardInfo program. Please post the output.

SdFat is here

I get this data from sdinfo

type any character to start

init time: 4 ms

Card type: SD2
readCID failed
SD errorCode: 0XD
SD errorData: 0XD

and this info from quickstart

Enter the chip select pin number: 10

Card successfully initialized.

Can't determine the card size.
Try another SD card or reduce the SPI bus speed.
The current SPI speed is: 4.00 MHz
Edit spiSpeed in this sketch to change it.


btw... this forum is very very fast... thanks for that ;)

Wow! This card is strange. If possible try another card to make sure it is not some other hardware problem.

Ok I changed the SPI speed and voila:

Enter the chip select pin number: 10

Card successfully initialized.

Card size: 2042 MB (MB = 1000000 bytes)

Volume is FAT16, Cluster size (bytes): 32768

Files found (name date time size):

Success!  Type any character to restart.

But I think that would make problems later on... Is the card too old should I get a new one?

I think it might be your breadboard setup. Some microSD cards can't cope with wires on breadboards.

I worry that a new card may also have problems at higher speeds.

Hm ok I see. Thanks!

For my purposes until now quarter speed is absolutely ok. Just testing. But when speed is needed how should I build a prototype or especially build a final project? Can some modern cards cope with this setup? Any experience there?

I have a project in my mind where I would like to plan camera positions on the desktop and transfer this positiondata to a motion control rig with dslr attached for stopmotion animation. Since the atmega has to read only one position every frame and run the steppers only once a few minutes to the new position speed isnt really neccesary.

I suspect a new card would help.

Others could summarize good PCB layout better than I can.