Compatibility issues with 2GB and larger cards
Compatibility with 2 gigabyte and larger SD cards has been poor, due to the SD/MMC protocol’s using a 32-bit address field denominated in bytes. The SDHC standard addresses this limitation by using 32-bit block addresses instead. Both SD and SDHC are traditionally accessed as 512-byte blocks on 512-byte boundaries, so the change to host software or firmware is minor but required. Before SDHC was standardized, various manufacturers “extended” the SD control block fields for their 2GB and 4GB cards in different ways. Those cards are incompatible with many SD and some SDHC devices, as they conform to neither standard. All SDHC readers work with standard SD cards.
Many older devices will not accept the 2GB size even though it is in the revised standard. The following statement is from the SD association specification:
“To make 2GByte card, the Maximum Block Length (READ_BL_LEN=WRITE_BL_LEN) shall be set to 1024 bytes. However, the Block Length, set by CMD16, shall be up to 512 bytes to keep consistency with 512 bytes Maximum Block Length cards (Less than and equal 2GByte cards).”
Since all cards up to and including the 1GB card use a fixed 512 block size, some device drivers do not handle the larger block size and will not even recognize the 2GB card. For example, the SanDisk web site shows examples of devices such as the iPAQ 1910 that will only support 1GB cards and the Epson Photo RX300 Technical support says they only support 1GB cards in the SD slot. Users of many early card readers have found that they also only support cards up to 1GB.