Question: How can I check the health of eMMC with linux?

It seems that smartctl can’t handle it:

root@om:~# smartctl -a /dev/mmcblk0smartctl 6.5 2016-01-24 r4214 [x86_64-linux-4.4.0-63-generic] (local build)Copyright (C) 2002-16, Bruce Allen, Christian Franke, www.smartmontools.org/dev/mmcblk0: Unable to detect device typePlease specify device type with the -d option.Use smartctl -h to get a usage summary

I guess no type matches eMMC. I see these types with smartctl -h:

-d TYPE, –device=TYPE Specify device type to one of: ata, scsi, sat[,auto][,N][+TYPE], usbcypress[,X], usbjmicron[,p][,x][,N], usbsunplus, marvell, areca,N/E, 3ware,N, hpt,L/M/N, megaraid,N, aacraid,H,L,ID, cciss,N, auto, test

If you are curious, here is the logbook of my odyssey: https://github.com/guettli/linux-on-emmc/blob/master/README.rst

Answer: You probably want to use the “mmc” utility from mmc-utils (https://packages.debian.org/stretch/mmc-utils). I have, however, not yet seen a write and/or bad block counter.

# mmc extcsd read /dev/mmcblk1============================================= ?Extended CSD rev 1.7 (MMC 5.0)=============================================Card Supported Command sets [S_CMD_SET: 0x01]HPI Features [HPI_FEATURE: 0x01]: implementation based on CMD13Background operations support [BKOPS_SUPPORT: 0x01]Max Packet Read Cmd [MAX_PACKED_READS: 0x3f]Max Packet Write Cmd [MAX_PACKED_WRITES: 0x3f]Data TAG support [DATA_TAG_SUPPORT: 0x01]Data TAG Unit Size [TAG_UNIT_SIZE: 0x03]Tag Resources Size [TAG_RES_SIZE: 0x03]Context Management Capabilities [CONTEXT_CAPABILITIES: 0x05]Large Unit Size [LARGE_UNIT_SIZE_M1: 0x00]Extended partition attribute support [EXT_SUPPORT: 0x03]Generic CMD6 Timer [GENERIC_CMD6_TIME: 0x19]Power off notification [POWER_OFF_LONG_TIME: 0x19]Cache Size [CACHE_SIZE] is 4096 KiBBackground operations status [BKOPS_STATUS: 0x00]1st Initialisation Time after programmed sector [INI_TIMEOUT_AP: 0x50]Power class for 52MHz, DDR at 3.6V [PWR_CL_DDR_52_360: 0x00]Power class for 52MHz, DDR at 1.95V [PWR_CL_DDR_52_195: 0xdd]Power class for 200MHz at 3.6V [PWR_CL_200_360: 0xdd]Power class for 200MHz, at 1.95V [PWR_CL_200_195: 0x00]Minimum Performance for 8bit at 52MHz in DDR mode: [MIN_PERF_DDR_W_8_52: 0x00] [MIN_PERF_DDR_R_8_52: 0x00]TRIM Multiplier [TRIM_MULT: 0x03]Secure Feature support [SEC_FEATURE_SUPPORT: 0x55]Boot Information [BOOT_INFO: 0x07] Device supports alternative boot method Device supports dual data rate during boot Device supports high speed timing during bootBoot partition size [BOOT_SIZE_MULTI: 0x20]Access size [ACC_SIZE: 0x08]High-capacity erase unit size [HC_ERASE_GRP_SIZE: 0x01] i.e. 512 KiBHigh-capacity erase timeout [ERASE_TIMEOUT_MULT: 0x03]Reliable write sector count [REL_WR_SEC_C: 0x01]High-capacity W protect group size [HC_WP_GRP_SIZE: 0x10] i.e. 8192 KiBSleep current (VCC) [S_C_VCC: 0x08]Sleep current (VCCQ) [S_C_VCCQ: 0x07]Sleep/awake timeout [S_A_TIMEOUT: 0x12]Sector Count [SEC_COUNT: 0x00e90000] Device is block-addressedMinimum Write Performance for 8bit: [MIN_PERF_W_8_52: 0x0a] [MIN_PERF_R_8_52: 0x0a] [MIN_PERF_W_8_26_4_52: 0x0a] [MIN_PERF_R_8_26_4_52: 0x0a]Minimum Write Performance for 4bit: [MIN_PERF_W_4_26: 0x0a] [MIN_PERF_R_4_26: 0x0a]Power classes registers: [PWR_CL_26_360: 0x00] [PWR_CL_52_360: 0x00] [PWR_CL_26_195: 0xdd] [PWR_CL_52_195: 0xdd]Partition switching timing [PARTITION_SWITCH_TIME: 0x03]Out-of-interrupt busy timing [OUT_OF_INTERRUPT_TIME: 0x05]I/O Driver Strength [DRIVER_STRENGTH: 0x1f]Card Type [CARD_TYPE: 0x57] HS200 Single Data Rate eMMC @200MHz 1.8VI/O HS Dual Data Rate eMMC @52MHz 1.8V or 3VI/O HS eMMC @52MHz – at rated device voltage(s) HS eMMC @26MHz – at rated device voltage(s)CSD structure version [CSD_STRUCTURE: 0x02]Command set [CMD_SET: 0x00]Command set revision [CMD_SET_REV: 0x00]Power class [POWER_CLASS: 0x0d]High-speed interface timing [HS_TIMING: 0x02]Erased memory content [ERASED_MEM_CONT: 0x00]Boot configuration bytes [PARTITION_CONFIG: 0x00] Not boot enable No access to boot partitionBoot config protection [BOOT_CONFIG_PROT: 0x00]Boot bus Conditions [BOOT_BUS_CONDITIONS: 0x00]High-density erase group definition [ERASE_GROUP_DEF: 0x01]Boot write protection status registers [BOOT_WP_STATUS]: 0x00Boot Area Write protection [BOOT_WP]: 0x00 Power ro locking: possible Permanent ro locking: possible ro lock status: not lockedUser area write protection register [USER_WP]: 0x00FW configuration [FW_CONFIG]: 0x00RPMB Size [RPMB_SIZE_MULT]: 0x20Write reliability setting register [WR_REL_SET]: 0x1f user area: the device protects existing data if a power failure occurs during a write operation partition 1: the device protects existing data if a power failure occurs during a write operation partition 2: the device protects existing data if a power failure occurs during a write operation partition 3: the device protects existing data if a power failure occurs during a write operation partition 4: the device protects existing data if a power failure occurs during a write operationWrite reliability parameter register [WR_REL_PARAM]: 0x05 Device supports writing EXT_CSD_WR_REL_SET Device supports the enhanced def. of reliable writeEnable background operations handshake [BKOPS_EN]: 0x00H/W reset function [RST_N_FUNCTION]: 0x00HPI management [HPI_MGMT]: 0x01Partitioning Support [PARTITIONING_SUPPORT]: 0x07 Device support partitioning feature Device can have enhanced tech.Max Enhanced Area Size [MAX_ENH_SIZE_MULT]: 0x000124 i.e. 2392064 KiBPartitions attribute [PARTITIONS_ATTRIBUTE]: 0x00Partitioning Setting [PARTITION_SETTING_COMPLETED]: 0x00 Device partition setting NOT completeGeneral Purpose Partition Size [GP_SIZE_MULT_4]: 0x000000 [GP_SIZE_MULT_3]: 0x000000 [GP_SIZE_MULT_2]: 0x000000 [GP_SIZE_MULT_1]: 0x000000Enhanced User Data Area Size [ENH_SIZE_MULT]: 0x000000 i.e. 0 KiBEnhanced User Data Start Address [ENH_START_ADDR]: 0x000000 i.e. 0 bytes offsetBad Block Management mode [SEC_BAD_BLK_MGMNT]: 0x00Periodic Wake-up [PERIODIC_WAKEUP]: 0x00Program CID/CSD in DDR mode support [PROGRAM_CID_CSD_DDR_SUPPORT]: 0x01Vendor Specific Fields [VENDOR_SPECIFIC_FIELD[127]]: 0x00Vendor Specific Fields [VENDOR_SPECIFIC_FIELD[126]]: 0x00Vendor Specific Fields [VENDOR_SPECIFIC_FIELD[125]]: 0x00Vendor Specific Fields [VENDOR_SPECIFIC_FIELD[124]]: 0x00Vendor Specific Fields [VENDOR_SPECIFIC_FIELD[123]]: 0x00Vendor Specific Fields [VENDOR_SPECIFIC_FIELD[122]]: 0x00Vendor Specific Fields [VENDOR_SPECIFIC_FIELD[121]]: 0x00Vendor Specific Fields [VENDOR_SPECIFIC_FIELD[120]]: 0x02Vendor Specific Fields [VENDOR_SPECIFIC_FIELD[119]]: 0x00Vendor Specific Fields [VENDOR_SPECIFIC_FIELD[118]]: 0x00Vendor Specific Fields [VENDOR_SPECIFIC_FIELD[117]]: 0x00Vendor Specific Fields [VENDOR_SPECIFIC_FIELD[116]]: 0x00Vendor Specific Fields [VENDOR_SPECIFIC_FIELD[115]]: 0x00Vendor Specific Fields [VENDOR_SPECIFIC_FIELD[114]]: 0x00Vendor Specific Fields [VENDOR_SPECIFIC_FIELD[113]]: 0x00Vendor Specific Fields [VENDOR_SPECIFIC_FIELD[112]]: 0x00Vendor Specific Fields [VENDOR_SPECIFIC_FIELD[111]]: 0x00Vendor Specific Fields [VENDOR_SPECIFIC_FIELD[110]]: 0x00Vendor Specific Fields [VENDOR_SPECIFIC_FIELD[109]]: 0x00Vendor Specific Fields [VENDOR_SPECIFIC_FIELD[108]]: 0x00Vendor Specific Fields [VENDOR_SPECIFIC_FIELD[107]]: 0x00Vendor Specific Fields [VENDOR_SPECIFIC_FIELD[106]]: 0x00Vendor Specific Fields [VENDOR_SPECIFIC_FIELD[105]]: 0x00Vendor Specific Fields [VENDOR_SPECIFIC_FIELD[104]]: 0x00Vendor Specific Fields [VENDOR_SPECIFIC_FIELD[103]]: 0x00Vendor Specific Fields [VENDOR_SPECIFIC_FIELD[102]]: 0x00Vendor Specific Fields [VENDOR_SPECIFIC_FIELD[101]]: 0x00Vendor Specific Fields [VENDOR_SPECIFIC_FIELD[100]]: 0x00Vendor Specific Fields [VENDOR_SPECIFIC_FIELD[99]]: 0x00Vendor Specific Fields [VENDOR_SPECIFIC_FIELD[98]]: 0x00Vendor Specific Fields [VENDOR_SPECIFIC_FIELD[97]]: 0x00Vendor Specific Fields [VENDOR_SPECIFIC_FIELD[96]]: 0x00Vendor Specific Fields [VENDOR_SPECIFIC_FIELD[95]]: 0x02Vendor Specific Fields [VENDOR_SPECIFIC_FIELD[94]]: 0x01Vendor Specific Fields [VENDOR_SPECIFIC_FIELD[93]]: 0x04Vendor Specific Fields [VENDOR_SPECIFIC_FIELD[92]]: 0x00Vendor Specific Fields [VENDOR_SPECIFIC_FIELD[91]]: 0x00Vendor Specific Fields [VENDOR_SPECIFIC_FIELD[90]]: 0x00Vendor Specific Fields [VENDOR_SPECIFIC_FIELD[89]]: 0x00Vendor Specific Fields [VENDOR_SPECIFIC_FIELD[88]]: 0x00Vendor Specific Fields [VENDOR_SPECIFIC_FIELD[87]]: 0x00Vendor Specific Fields [VENDOR_SPECIFIC_FIELD[86]]: 0x00Vendor Specific Fields [VENDOR_SPECIFIC_FIELD[85]]: 0x03Vendor Specific Fields [VENDOR_SPECIFIC_FIELD[84]]: 0x00Vendor Specific Fields [VENDOR_SPECIFIC_FIELD[83]]: 0x00Vendor Specific Fields [VENDOR_SPECIFIC_FIELD[82]]: 0x00Vendor Specific Fields [VENDOR_SPECIFIC_FIELD[81]]: 0x00Vendor Specific Fields [VENDOR_SPECIFIC_FIELD[80]]: 0x00Vendor Specific Fields [VENDOR_SPECIFIC_FIELD[79]]: 0x00Vendor Specific Fields [VENDOR_SPECIFIC_FIELD[78]]: 0x00Vendor Specific Fields [VENDOR_SPECIFIC_FIELD[77]]: 0x00Vendor Specific Fields [VENDOR_SPECIFIC_FIELD[76]]: 0x00Vendor Specific Fields [VENDOR_SPECIFIC_FIELD[75]]: 0x00Vendor Specific Fields [VENDOR_SPECIFIC_FIELD[74]]: 0x00Vendor Specific Fields [VENDOR_SPECIFIC_FIELD[73]]: 0x00Vendor Specific Fields [VENDOR_SPECIFIC_FIELD[72]]: 0x00Vendor Specific Fields [VENDOR_SPECIFIC_FIELD[71]]: 0x00Vendor Specific Fields [VENDOR_SPECIFIC_FIELD[70]]: 0x00Vendor Specific Fields [VENDOR_SPECIFIC_FIELD[69]]: 0x00Vendor Specific Fields [VENDOR_SPECIFIC_FIELD[68]]: 0x00Vendor Specific Fields [VENDOR_SPECIFIC_FIELD[67]]: 0x00Vendor Specific Fields [VENDOR_SPECIFIC_FIELD[66]]: 0x00Vendor Specific Fields [VENDOR_SPECIFIC_FIELD[65]]: 0x00Vendor Specific Fields [VENDOR_SPECIFIC_FIELD[64]]: 0x00Native sector size [NATIVE_SECTOR_SIZE]: 0x00Sector size emulation [USE_NATIVE_SECTOR]: 0x00Sector size [DATA_SECTOR_SIZE]: 0x001st initialization after disabling sector size emulation [INI_TIMEOUT_EMU]: 0x0aClass 6 commands control [CLASS_6_CTRL]: 0x00Number of addressed group to be Released[DYNCAP_NEEDED]: 0x00Exception events control [EXCEPTION_EVENTS_CTRL]: 0x0000Exception events status[EXCEPTION_EVENTS_STATUS]: 0x0000Extended Partitions Attribute [EXT_PARTITIONS_ATTRIBUTE]: 0x0000Context configuration [CONTEXT_CONF[51]]: 0x00Context configuration [CONTEXT_CONF[50]]: 0x00Context configuration [CONTEXT_CONF[49]]: 0x00Context configuration [CONTEXT_CONF[48]]: 0x00Context configuration [CONTEXT_CONF[47]]: 0x00Context configuration [CONTEXT_CONF[46]]: 0x00Context configuration [CONTEXT_CONF[45]]: 0x00Context configuration [CONTEXT_CONF[44]]: 0x00Context configuration [CONTEXT_CONF[43]]: 0x00Context configuration [CONTEXT_CONF[42]]: 0x00Context configuration [CONTEXT_CONF[41]]: 0x00Context configuration [CONTEXT_CONF[40]]: 0x00Context configuration [CONTEXT_CONF[39]]: 0x00Context configuration [CONTEXT_CONF[38]]: 0x00Context configuration [CONTEXT_CONF[37]]: 0x00Packed command status [PACKED_COMMAND_STATUS]: 0x00Packed command failure index [PACKED_FAILURE_INDEX]: 0x00Power Off Notification [POWER_OFF_NOTIFICATION]: 0x01Control to turn the Cache ON/OFF [CACHE_CTRL]: 0x01eMMC Firmware Version: 002122 ?AS