PaulStoffregen
Well-known member
There are 4 card formats, called SD/FAT12, SD/FAT16, SDHC and SDXC. All use the same hardware, but each needs different software support because the filesystem data on the disk is different.
I believe Bill's SdFat library and the Arduino SD library (which is based on an older version of Bill's code) supports 2 of these: SD/FAT16 and SDHC.
SD/FAT12 is usually used on tiny cards, typically 32 megabytes or less, though in theory it can be used up to 128M.
SD/FAT16 is used on small cards, from 64 megabytes to 2 gigabytes.
SDHC is used on most modern cards, from 4 to 32 gigabytes.
SDXC is used on large cards, above 64 gigabytes and larger.
You might be able to make a SDXC card work, maybe, if you reformat it using FAT32 filesystem? My understanding is the problem isn't the card's hardware, which is pretty much identical to SDHC, but the filesystem format on the disk.
By default, Microsoft's tools will not format volumes larger than 32 gigs with FAT32, even though FAT32 can support extremely large disks. I believe there are 2, maybe 3 reasons. #1: Apparently some versions of Windows had a bad bug in their check disk program for FAT32 over 32 gigs. Microsoft "fixed" the problem by not allowing disks over 32G to be formatted with FAT32. #2: Some drivers don't support cluster sizes more than 32 kbytes (I know the drivers in Vista & Win7-8 do), but some drivers become slow and inefficient when dealing with disks that have a very large number of clusters. The 32 GB limit was probably a compromise to prevent filesystems with more than 1 million clusters which would be slow to use on many versions of Windows. #3: Microsoft might have some patents covering stuff in the newer format, meaning they can collect royalties or exert more control over the market? (I really don't know if this last point is true or valid, it might be just a rumor by anti-Microsoft haters)
The "mkdosfs" program on Linux can format any very large disks as FAT32. I've personally done this on a couple large hard drives, which seemed to work fine with used with Windows XP.
I have not personally tested cards larger than 32G. So far, I do not own any 64G cards. I have tested a few 32G and 16G cards, which worked fine.
I believe Bill's SdFat library and the Arduino SD library (which is based on an older version of Bill's code) supports 2 of these: SD/FAT16 and SDHC.
SD/FAT12 is usually used on tiny cards, typically 32 megabytes or less, though in theory it can be used up to 128M.
SD/FAT16 is used on small cards, from 64 megabytes to 2 gigabytes.
SDHC is used on most modern cards, from 4 to 32 gigabytes.
SDXC is used on large cards, above 64 gigabytes and larger.
You might be able to make a SDXC card work, maybe, if you reformat it using FAT32 filesystem? My understanding is the problem isn't the card's hardware, which is pretty much identical to SDHC, but the filesystem format on the disk.
By default, Microsoft's tools will not format volumes larger than 32 gigs with FAT32, even though FAT32 can support extremely large disks. I believe there are 2, maybe 3 reasons. #1: Apparently some versions of Windows had a bad bug in their check disk program for FAT32 over 32 gigs. Microsoft "fixed" the problem by not allowing disks over 32G to be formatted with FAT32. #2: Some drivers don't support cluster sizes more than 32 kbytes (I know the drivers in Vista & Win7-8 do), but some drivers become slow and inefficient when dealing with disks that have a very large number of clusters. The 32 GB limit was probably a compromise to prevent filesystems with more than 1 million clusters which would be slow to use on many versions of Windows. #3: Microsoft might have some patents covering stuff in the newer format, meaning they can collect royalties or exert more control over the market? (I really don't know if this last point is true or valid, it might be just a rumor by anti-Microsoft haters)
The "mkdosfs" program on Linux can format any very large disks as FAT32. I've personally done this on a couple large hard drives, which seemed to work fine with used with Windows XP.
I have not personally tested cards larger than 32G. So far, I do not own any 64G cards. I have tested a few 32G and 16G cards, which worked fine.