31

I have noticed that with some USB readers (not to mention other media devices, such as digital cameras) there seems to be an upper limit to the amount of internal storage they can support. When I insert low capacity micro sd cards (16GB or less) they work fine, however when I try 32GB or 64GB and the device cannot read the SD card. They are from different manufacturers, so I assume that this is the result of a more generic issue.

Question: Why aren’t some USB readers capable of supporting large capacity SD cards? Does it have to do with the computer architecture? It would be nice to know if there was a rhyme or reason to it all. Currently, it’s a bit of trial by fire; I'm never quite sure how to scale my memory due to the fact that I remain unsure whether it will be supported or not.

Giacomo1968
  • 53,069
  • 19
  • 162
  • 212
Arash Howaida
  • 547
  • 2
  • 7
  • 15
  • 1
    I think there are really two (related) questions here: 1) General: Why do devices have size limits? 2) Concrete: How can I tell the limit for a given device? Both are good questions IMHO. – sleske Jan 02 '18 at 10:50
  • @sleske my thoughts exactly. This should be split into two different stack questions. – Mindwin Remember Monica Jan 02 '18 at 15:06
  • 7
    I don't think your title is using the word "crash" the way the rest of the world does. Does loading a high capacity card render the card reader non-functional even after the offending card is removed, until some recovery action is taken such as a power cycle? – Ben Voigt Jan 02 '18 at 15:39

3 Answers3

36

The general rule is that devices can use what is available at the time of manufacture.
They cannot be expected to know what future development may bring.

These cards are all physically identical from the outside, however SD Cards have several 'types', separated by Capacity - SD, SDHC and SDXC which are basically split by size - up to 2GB, 32GB & 2TB address limits.

They are also separated by Speed - from 2MB/s to 90MB/s - in a confusing array of icons... numbers in circles, from 1 - 10, U-speeds in MB/10 & V-speeds which at last give the true speed in MB/s, i.e. V6 ... to V90.

Consumer-level guide at How to choose an SD card
Overview at Wikipedia - Secure Digital
Comprehensive guide at the SD Association - SD Standard Overview

Simplest way to tell what any given device can use...
... read the manual, or see what icon is next to the slot [if it's anything other than generic].

There's no other sure way other than trial & error.

Tetsujin
  • 47,296
  • 8
  • 108
  • 135
  • 1
    It could also be if they have support for FAT32, exFAT etc. A badly written firmware with no exFAT support might just crash if it tries to read such a card. – GuzZzt Jan 02 '18 at 13:44
  • 17
    @GuzZzt: No. USB card readers implement the USB Mass Storage protocol, which presents the SD card as an unorganized sequence of sectors. The USB host (i.e. the PC) has to interpret those, and typically that's done by the OS. The OS will contain a FAT driver, exFAT diver, etc. – MSalters Jan 02 '18 at 16:22
  • 3
    @MSalters, Sorry, I should have been more clear, I was thinking about the "media devices, such as digital cameras" part where a computer is not used to read the SD Card. – GuzZzt Jan 03 '18 at 07:34
12

SD cards have many generations supporting many different capacities and protocols. The protocol for talking to SD cards has changed and been enhanced several times to allow for faster speeds and larger capacities.

What this means is that older SD card reader may not support the necessary commands or protocols required for newer cards. A card may well be able to fall back to a lower speed for a card reader, but if the command needs more information to access more of the card then that card will simply not work in that reader.

Some devices might just need a firmware update to support newer cards, but many will never see such an update. It is often simply cheaper to replace a card reader than to issue a firmware update. For cameras and the like I would hope they would have the update.

Often a device will state the maximum size cards they support and they do that for exactly this reason.

The Wikipedia SD card page has some information on capacity and compatibilities:

By the time the version 2.0 (SDHC) specification was completed in June 2006, vendors had already devised 2 GB and 4 GB SD cards, either as specified in Version 1.01, or by creatively reading Version 1.00. The resulting cards do not work correctly in some host devices.

So compatibility is complicated by manufacturers "creative" reading of standards and making devices that are not fully standards compliant. That section lists a number of issues and caveats that may affect compatibility across SD card versions which may mean that newer and larger cards may not work.

Mokubai
  • 89,133
  • 25
  • 207
  • 233
0

Because newer higher capacity cards (e.g. SDXC) use electronic features that were part of the undefined bits for the older specifications (SD or SDHC). Depending on luck, the implementation of the reader may have suitable values for those bits to be compatible with newer variants, too.

As a simple artificial example, you can imagine a case where the storage device address selection wiring required 48 wires for SDHC and the manufacturer opted to wire all 64 bits just-in-case and that turned to be the correct option for supporting SDXC. Or the manufacturer wired 50 wires and grounded the extra 14 wires and that turned out to be the right solution by pure luck. Both implementations would have worked just fine within the older specs.

The point is that you cannot create forward compatible implementations (e.g. SDHC card reader magically supporting high capacity SDXC cards) because you don't know the future demands in future specifications. But if the current spec defines e.g. 64 bit number for some part of the specification, you can opt to preserve whatever values were transmitted or force the "know zero" bits to be always zero. Forcing stuff to zero will typically improve performance against electronic noise and may allow higher performance so trying to preserve bits that are "known to not be needed" might have extra cost that would reduce the value of the device for nothing in case that guess turned out to be incorrect for the future spec.