13

Is there a way to find out the media wearout level on an android device? I have a tablet that is acting weird and slow, so I wonder if the internal storage is still ok: it is the Nvidia Sheild (renamed Tegra K1 later on) and probably has eMMC since it's quite old.

I know that a SSD is not the same as a phone storage chip. I read about eMMC and UFS and I am interested about wearout on both generations of storage!

https://www.dignited.com/23879/emmc-or-ufs-mobile-phone-storage/
https://www.digitaltrends.com/mobile/what-is-ufs-3-0-storage/

Here's a link to Unix/Linux SE for more info about media wearout:
https://unix.stackexchange.com/questions/106678/how-to-check-the-life-left-in-ssd-or-the-mediums-wear-level

I know that one way to estimate the storage wear is to run a storage benchmark app, but I am interested about storage wearout.

Thanks!

0

1 Answer 1

13

SMART was originally designed for ATA devices and extended to SCSI and PCIe/NVMe later to cover almost the whole range of HDDs/SSDs. Trying to send SMART commands to eMMC, e.g. using smartctl would throw error: Unable to detect device type. Please specify device type with the -d option.

Unlike SATA or SAS, eMMC communicates over parallel links and has a different command set. One of these commands (CMD8) dumps the Extended CSD (Card Specific Data) register which holds card's internal information and device capabilities including Life Time Estimation and Pre EOL (End of Life) Estimation. EXT_CSD register can be read (requires root) using mmc tool from mmc-utils:

~# mmc extcsd read /dev/block/mmcblk0 | grep -E 'LIFE|EOL'
eMMC Life Time Estimation A [EXT_CSD_DEVICE_LIFE_TIME_EST_TYP_A]: 0x03
eMMC Life Time Estimation B [EXT_CSD_DEVICE_LIFE_TIME_EST_TYP_B]: 0x03
eMMC Pre EOL information [EXT_CSD_PRE_EOL_INFO]: 0x01

* 0x03 indicates health status is estimated between 20% and 30% of the device lifespan.
* 0x01 indicates Normal pre-EOL status.

Depending on your MMC driver, the above information is also available through sysfs interfaces:

~# cat /sys/devices/soc/7824900.sdhci/mmc_host/mmc0/mmc0:0001/{life_time,pre_eol_info}
0x03 0x03
01

* Path may differ depending on eMMC vendor.

Another option is to read ECSD register from debugfs:

~# cat /sys/kernel/debug/mmc0/mmc0:0001/ext_csd

But parsing ECSD raw output is an extra job.

For UFS part I'm not sure at the moment if the health/wear estimation is available through HCI Capabilities Registers or not. Also unlike eMMC, UFS operates over a serial communication link and supports a subset of SCSI commands. So it might be providing SMART (or SMART-like) monitoring system. Someone else may update the answer if some authentic source of information is available.


REFERENCES:

4
  • Wow thanks for the detailed answer about eMMC storage! I assume that these commands are only available on a rooted device... Commented May 19, 2020 at 22:14
  • @ForeverLearning yes definitely. Without root files in /dev and /sys aren't accessible. Commented May 19, 2020 at 22:54
  • 3
    It still boggles my mind that there exists a predictable, measurable failure mode that at some point on millions of devices cause them to essentially brick, and yet there is no way to actually measure it because (presumably) it's assumed that nobody is going to keep their devices long enough for it to matter. (planned obsolescence ftl)
    – Michael
    Commented Jan 15, 2022 at 1:27
  • ext4 has (fs-level) lifetime write stats which is shown by tune2fs -l. Maybe f2fs has something similar as well but I'm not sure: lkml.iu.edu/hypermail/linux/kernel/1602.2/03846.html
    – Chris Chen
    Commented Aug 15, 2023 at 9:07

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .