SD Compatibility

Actually, I wanted to start this page in November 2005, after
the first 4GB SD cards became available. But at that time, there
was no big demand for information, so I forgot about this issue.
But now (October 2006) there are even more compatibility issues due to the
SD 2.00 specification introducing SDHC.

The first limit for regular SD cards is 4GB, due to
the 32bit byte addressing scheme. In contrast to other
standards, there is no block addressing mode defined.

The second limit is caused by the card size given in the
CSD (Card Specific Data) Register of regular SD cards
using CSD Version 1.0.
There are two fields within this CSD that indicate the
number of blocks available: C_SIZE and C_SIZE_MULT.
You can interpret these two values
as mantissa and exponent, where C_SIZE is a 12bit value
with an offset of 1 (1..4096), and C_SIZE_MULT is a 3bit value
with an offset of 2 (2..9):BLOCKNR = (C_SIZE+1)×2(C_SIZE_MULT+2),
where C_SIZE_MULT < 8
The default block length is 512 bytes, but can also be
specified as 1024 bytes or 2048 bytes. Actually, the
block length is given through a third parameter in the
CSD, the READ_BL_LEN. The block length is
calculated asBLOCK_LEN = 2READ_BL_LEN,
where READ_BL_LEN = 9, 10 or 11
Note: Compared to the other two values, especially the
C_SIZE_MULT with only three bit, the READ_BL_LEN
is a 4bit value with only three different values allowed, and
therefore a waste of register space.

Together, this leads to a total storage capacity ofBLOCKNR×BLOCK_LEN = (C_SIZE+1)×2C_SIZE_MULT+2×2READ_BL_LEN
When a block length of 1024 bytes is used, cards of up to 2GB
can be specified; with a block length of 2048 bytes,
cards of up to 4GB can be specified.

Devices that don't care about the READ_BL_LEN will
assume a block length of 512 bytes, and therefore be
limited to a maximum size of 1GB. Usually, these devices will
detect cards of more than 1GB and up to 2GB as half their actual size,
and cards of more than 2GB and up to 4GB as 1/4 of their actual size.
However, some of these devices do not check addresses against the
wrongly detected size, and therefore can access the full size properly,
once the media is partitioned and formatted according to the full size.
Some older devices may have
hardcoded tables for interpreting C_SIZE_MULT
values, and therefore might be limited to 512MB or 256MB.

Examples for card size units and card sizes:

READ_BL_LEN

C_SIZE_MULT

MULT

BLOCK_LEN

min.unit

max.size

9

0

4×

512

=

2kB;

8MB

9

1

8×

512

=

4kB;

16MB

9

2

16×

512

=

8kB;

32MB

9

3

32×

512

=

16kB;

64MB

9

4

64×

512

=

32kB;

128MB

9

5

128×

512

=

64kB;

256MB

9

6

256×

512

=

128kB;

512MB

9

7

512×

512

=

256kB;

1024MB

10

7

512×

1024

=

512kB;

2048MB

11

6

256×

2048

=

512kB;

2048MB

11

7

512×

2048

=

1024kB;

4096MB

The table above shows that standard SD cards with
BLOCK_LEN of 512 bytes and up to 8MB size could
be made in steps of 2kB, with increasing size up to
1024MB (1GB) in steps of 256kB. Larger SD cards
require a BLOCK_LEN of 1024 or 2048 bytes,
the largest SD cards of more than 2048MB (2GB)
and up to 4096MB (4GB) can
be only be made with a BLOCK_LEN of 1024 bytes
in increments of 1024kB (1MB).

The third limit was set by the SD Association: To ensure
wider compatibility, FAT12 and FAT16 were defined as the
standard fileystems
for SD cards. According to the strict FAT16 rules, there can
be a maximum of 65524 clusters available in a FAT16
filesystem, and the maximum allowed cluster size is 32kB. This
leads to a limit of 1.999GB for a FAT16 filesystem.
But the parameters of a FAT16 filesystem can be set
to a number of up to 128 sectors per cluster,
resulting in a cluster size of 64kB
on a standard media with 512 bytes per sector. This
allows FAT16 filesystems of up to 3.999GB. There are
many devices with support for 64kB cluster size,
but according to the FAT specification, this is not
mandatory. Most likely, the 32kB limit was just set to
have a defined limit for the cluster buffer in devices
supporting FAT16.

SDHC is not supposed to replace SD, it is an additional
standard intended for SD cards larger than 2GB. This
means that all SD cards of 2GB or less should still be
implemented as regular SD cards, and all SD card of more
than 2GB - in regular sizes 4GB or more - will be
SDHC cards. This would be the same as the change
from the regular Memory Stick Standard up to 128MB to
Memory Stick PRO for more than 128MB, in practice
256MB or more.

To solve the card size problem, a new CSD register layout,
CSD Version 2.0 was introduced. SD Devices are supposed
to check the CSD version given in the CSD_STRUCTURE
field first, and reject cards using an unknown CSD version.
In CSD Version 2.0, the C_SIZE field was
extended to 22 bit. The C_SIZE_MULT was
dropped, assuming a preset multiplier of 210.
The READ_BL_LEN was kept, but the only
value allowed is 9, indicating a block length of 512 bytes.
The calculation is the same, but due to the two fixed
values, the formula shrinks down to
Size = (C_SIZE+1)×219
The smallest card size would be 512kB, but SDHC is supposed
to be used for cards larger than 2GB. The new register
layout would allow cards of up to 2TB, which would also
supported by the new 32bit block addressing scheme. But
the specification defines an upper limit of 32GB,
where only 16 bit of C_SIZE are used and the
upper 6 bit remain unused.

The currently chosen limit of 32GB is most likely due
to the fact that many people believe that FAT32 would
be limited to 32GB. This is not true, FAT32 is only limited
to 2TB because of the 32 bit LBA values in the
filesystem parameters.

Another feature introduced in the SD 2.00 Specification
is the SD Speed Class Rating. These SD Speed Classes 2, 4 and
6 with a guaranteed minimum sustained write rate of
2, 4 or 6MB/s might seem very low for todays SD cards
and their advertized speeds of up to 23.4MB/s
(160x), in most cases indicating the maximum peak read rate.
But for the SD Speed Class Rating, there are most likely
several prerequisites - meaning that the card
must be able to accept data at the given rate under
certain conditions, e.g. filesystem fragmentation,
bank switching, wear-levelling and defect mapping.
But the section about the SD Speed Class Rating is not
available in the public version of the SD 2.00 specification.

Please note that the Speed Class Rating is intended to
be used in conjunciton with SD based Video Cameras.
The recording devices are supposed to indicate the
minimum speed class rating required, which means that
you have to use a card with a speed rating equal to or
higher than indicated speed rating. This also explains
why there are only speed classes 2, 4 and 6:
The highest regular HDV bitrate is 25Mbit/s and can be
handled by Class 4 SD/SDHC cards.
AVCHD uses bitrates of up to 15Mbit/s or 17Mbit/s
where Class 2 SD/SDHC cards should be OK, unless the cards
stick too close to the required minimum of 2MB/s.

The SD Association tried to keep the limit for
regular "Standard Capacity" SD cards at 2GB. But there was the
technical possibility to build 4GB SD cards
and a huge demand for larger SD cards, well before
the SD 2.00 specification was finalized.

I bought my first 4GB SD card in October 2005, while SDHC
was announced as being in "Final Review"
in January 2006. The first SDHC cards
were available in August 2006, and I bought my first
SDHC card in November 2006. This means that for
covering the demand for 4GB size, the SDHC standard was
about one year too late.

Now we are dealing with the situation that there
are regular SD cards of more than 2GB and
up to 4GB that are officially called "non-compliant",
and "compliant" SDHC cards of more than 2GB.
In real-life, the overlap applies to 4GB cards.
4GB "non-compliant" SD cards will work in
many SD host devices, either formatted to
FAT16 with a non-standard cluster size of 64kB,
or formatted to FAT32. However, these cards
might not work in SDHC compatible host devices,
where most of these are intentionally programmed
to refuse the "non-compliant" cards.
On the other hand, 4GB SDHC cards will definitely
not work in host devices that are not prepared
for SDHC cards (either by default or through a
firmware update).

There is a new type of SD card available, the Super SD card.
This is a card that looks like an MMCplus card, but also supports
the SD interface standard. The card is supposed to detect the
host interface and either act as SD or as MMCplus card,
in order to avoid the slow SPIO mode when using MMCplus cards
in hosts that don't support the faster MMC 4 modes.
The card size is compliant to the SD specification that
allows a 1.4mm "Thin SD" form factor without write protect
slider.

There is only very little public information available,
including confusion about the number of pads, the
supported modes, and especially the resulting
speed with the same figures stated as Mbit/s and MB/s.
At least the count of pads was easily to verify
after unpacking the the card: There are 13 pads
indicating that the card could support 8bit MMC 4.

While the hybrid SD/MMC concept sounds like an excellent
idea, first tests showed that the host detection is not
as good as it should be. The card seems to prefer
running in SD mode, even if the host would also support
the faster MMC 4 modes. In SD mode, the maximum
read rate is about 10.67MB/s, and the maximum write
rate is about 3.47MB/s. So it looks like the
SD mode is SD 1.01.
In several SD 1.01 and even SD 1.1 / MMC 4 card readers,
the card only runs in the slow MMC 3.31 mode, leading
to exactly the situation that was supposed to be
avoided by inventing the Super SD. Due to this
behaviour, the Super SD qualified for a column in the
compatibility table.

This is a list of the first announced
or available SDHC cards and will be kept for reference purposes.

Manufacturer

Series

4GB SDHC

8GB SDHC

A-Data

Super Series SDHC 2.0 Class 2

-

###

A-Data

Turbo Series SDHC 2.0 150x

###

-

ATP

ProMax SDHC Class 6

AF4GSDP

###

Kingmax Digital

SDHC

###

???

Kingston

SDHC Class 2

SD2/4GB

-

Microdia

SDHC 52XTRA

###

###

Microdia

SDHC 82XTRAPlus

###

###

Microdia

SDHC 160XTRAPRO

###

###

Panasonic

SDHC Class 2

RP-SDR04G

-

Pretec

SDHC

###

###

RiData

SDHC Pro Series

###

###

SanDisk

Standard SDHC Class 2

SDSDBR-4096

-

SanDisk

Ultra II SDHC Class 6

SDSDRH-4096

-

SanDisk

miniSDHC Class 2

###

-

Toshiba

SDHC Class 4

SD-HC004GT4

SD-HC008GT4

Transcend

SDHC Class 2

TS4GSDHC

TS8GSDHC

Transcend

SDHC Class 6

TS4GSDHC6

-

Transcend

miniSDHC Class 2

TS4GSDMHC

-

An entry "###" means that the model
number is not known.

As of 2007-06-28, the availability of SDHC cards was
still limited. There were more and more SDHC Class 6 8GB cards
available, but their write performance
was only about 10-12MB/s maximum. Transcend removed the
4GB 150x SDHC Class 6 from their catalogue, and the
SanDisk 4GB Extreme III SDHC was expected to be released within
a few weeks. This means that there were no
really fast SDHC cards available, not to speak of 8GB in size.
For miniSDHC and microSDHC, the situation was even worse:
8GB microSDHC have been announced some time ago, while
the first 4GB microSDHC did not even hit the market yet.

2008-01-11: In the meantime, the situation looks better.
The Extreme III SDHC is available as 4GB and 8GB, and
there are even 16GB Class 6 SDHC with about 12MB/s write
available. 8GB microSDHC with impressive 15MB/s write
are available as well.

Results for 4GB microSDHC compatibility will be added soon.
The table entries are explained below.
The sort order is by controller manufacturer, controller type and
controller firmware or manufacturing week.Important note: Devices manufactured in 2005 or earlier
will most likely not support SDHC.
Especially for Alcor Micro, the production week
influences the firmware level.
First SDHC support starting in week 02/2006,
for certain models later.