# eMMC Bus modes and bus width selection

**URL:** <https://forums.sandisk.com/t/emmc-bus-modes-and-bus-width-selection/222461>\
**Category:** Card Readers | Adapters | other products\
**Created:** [October 8, 2021, 12:31pm UTC](https://forums.sandisk.com/t/emmc-bus-modes-and-bus-width-selection/222461 "2021-10-08T12:31:09Z")\
**Posts on this page:** 2\
**Page:** 1

<div class="post-metadata">

**Author:** ![Abhishek2](https://avatars.discourse-cdn.com/v4/letter/a/cab0a1/32.png) [@Abhishek2](https://forums.sandisk.com/u/Abhishek2)\
**Post date:** [October 8, 2021, 12:31pm UTC](https://forums.sandisk.com/t/emmc-bus-modes-and-bus-width-selection/222461/1 "2021-10-08T12:31:09Z")

</div>

Hi,  
We are using Sandisk eMMC device version 5.1  
We are developing application for switching different bus modes and bus width supported by the device.

1. SDR bus mode with 1-bit, 4-bit and 8-bit bus width.
2. DDR bus mode with 4-bit and 8-bit bus width.
3. HS200 bus mode with 4-bit and 8-bit bus width.
4. HS400 bus mode with 8-bit bus width.

For the same, Embedded Multi-Media Card Electrical Standard v5.1(JDEC) document is used for our reference.

Procedure followed to do the same is as below,  
1. After booting the device, we are reading ext\_csd[185] register. Value is 0x02. This indicates device operates in HS200 mode.  
Example:  
**root@root# mmc extcsd read /dev/mmcblk1 | grep HS\_TIMING**  
\*\* High-speed interface timing [HS\_TIMING: 0x02]\*\*

```
2. Next I am writing below values to ext_csd[183] to select bus width
	* 0x01 for 1-bit bus width
	* 0x02 for 4-bit bus width
	* 0x03 for 8-bit bus width
3. Next I am writing 0x01 value to ext_csd[185] to select SDR bus mode.
Example:
	**root@root# mmc bus_mode_selection SDR x8 /dev/mmcblk1**

```

\*\* SDR bus mode with 0x02 bus width is selected\*\*

After completing above steps when I perform read/write operation, I am facing below issue.

_mmc1: Tuning timeout, falling back to fixed sampling clock_  
_usdhci-iw 43c00000.sd\_host\_controller: \_\_mmc\_blk\_ioctl\_cmd: data error -84_  
_ioctl SEND\_EXT\_CSD: Invalid or incomplete multibyte or wide character_  
_Could not read EXT\_CSD from /dev/mmcblk1_

I want to select Bus modes and validate read/write operation with supported bus width individually. How can I implement this?  
Could you please provide your valuable input for the same.

---

<div class="post-metadata">

**Author:** ![Keerti\_01](https://avatars.discourse-cdn.com/v4/letter/k/9fc348/32.png) [@Keerti\_01](https://forums.sandisk.com/u/Keerti_01)\
**Post date:** [October 11, 2021, 3:23am UTC](https://forums.sandisk.com/t/emmc-bus-modes-and-bus-width-selection/222461/2 "2021-10-11T03:23:55Z")

</div>

Hi @Abhishek2,

Please contact the SD Technical Support team for best assistance and troubleshooting:  
[https://kb.sandisk.com/app/ask/](https://kb.sandisk.com/app/ask/)
