The eMMC protocol is freely available on the JEDEC website.

The SD Card (4-bit) protocol is not publicly available.

Many sources imply compatibility between SD Cards and eMMC, apart from differing bus widths.

How different are the protocols?

i.e. If I correctly implemented eMMC and reduced the bus width to 4-bits, would it work with an SD Card at full speed?


4 wires SD card protocol is publicly available, it's the same as MMC, although some max frequency details can be different. Early MMC cards were 1 bits wide, MMCmobile cards had 4bits and 8bits protocols, the 4bits protocol was similar to SD.

MMC and SD card have different initialisation sequences. SD is a derivative standard from MMC (which started as slim 7 contacts memory modules), before they diverged, adding 4bits, 8bits, DDR protocols. It is possible to detect the module type during the initialisation sequence.

MMC is a JEDEC standard, SD is covered by patents. The SD cartel deliberately made their modules incompatible to be able to get licensing fees.

  • \$\begingroup\$ Wikipedia says that it's proprietary. en.wikipedia.org/wiki/SD_card#Openness_of_specification Could you post a link to the publicly available SD card protocol? \$\endgroup\$ – fadedbee Dec 18 '20 at 8:57
  • \$\begingroup\$ @fadedbee. Look for "simplified specifications" taterli.com/wp-content/uploads/2017/05/… . What is missing is the "Secure" part in SD which was designed for DRM (music files for MP3 pods...) but probably never really used. \$\endgroup\$ – TEMLIB Dec 18 '20 at 9:23
  • \$\begingroup\$ Thanks, I've added the link to the Wikipedia page. \$\endgroup\$ – fadedbee Dec 18 '20 at 10:00
  • \$\begingroup\$ @fadedbee. You can also download from its source : sdcard.org/downloads/pls/index.html, but with passive-agressive licensing boilerplate. I've also made some drawing of the 4bits protocol sequence a while ago : temlib.org/site/wp-content/uploads/2015/09/sd_rw.svg \$\endgroup\$ – TEMLIB Dec 18 '20 at 12:57
  • \$\begingroup\$ Thanks, that diagram's worth a thousand words. What tool did you use to generate/edit it? \$\endgroup\$ – fadedbee Dec 19 '20 at 7:10

SD initialization command sequence would be needed to be performed first to know if it was an SD card to begin with, and which kind of SD card it is. If only eMMC initialization command sequence is performed as per eMMC specs, an SD card would not initialize properly.


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.