uSD card wear indicator/s.m.a.r.t


I am using micro SD cards through the (most excellent) SDFat library. I would like to be able to determine if a uSD is approaching the end of its life. Supposedly this can be done through reading its S.M.A.R.T. register. Can this be done through the SDFat library? I poked around and I didn’t see this ability (or something else that could indicate wear).

Some of the uSD manufacturers I spoke to require an NDA to release their secret sauce (code) to be able to do this - needless to see that I don’t want to be locked in and still have hopes that there is a more generic/general way of obtaining a uSD’s status.

This is not a problem specific to the particle platform obviously but I am hoping anyone here has experience with these things.


bump; no pointers anyone?


@joost, I dug around and can’t find anything for reading SMART data off a uSD except for PCs with specialized software. Not all uSD support SMART or have dummy SMART data it seems. So the short answer is you are stuck with developing your own solution unfortunately.


@peekay123, thanks for your reply. I am not even sure if it is SMART data I should attempt to read or some other data. The SDFat library does not provide a ‘bad block/page’ count either. I got some special uSD cards to use that track statistics over a period of time - that will give us an indication what sort of industrial strength card I need but still not a wear indicator of sorts.

So nobody (or few) are using uSD cards in their solution in the field I guess. Folks use EEPROM/FLASH/FRAM? uSD is hard to beat price/performance wise…

Thanks again, I am grasping at any info at this point…


@joost, for large storage, uSD is great but it still suffers from mechanical constraints which is not desirable in industrial applications. Thus the reason why folks go with eeprom or flash. I am using a 128Mb (16MB) flash on a device coupled with SPIFFS to handle wear leveling while providing a file system. However, anything above 64MB becomes tricky for SPIFFS. Another thing is SPIFFS doesn’t (yet) handle bad blocks. If you are writing so much to the device that wear leveling is an issue then perhaps you need to rethink the problem!


@peekay123. My application uses bursts with a bunch of data going to disk but it wont fill up a typically sized uSD. (Say 500M data on a 8G card), All that dat gets purged after analysis. Additionally the FW continuously writes small bits thoughout the day. I can stand to lose 50% of the uSD without a problem but i need to know that that happened so i can theough out an appropirate alarm.

I think the uSD is the right choice for my app, i simply want to be in control of its lifecycle. The card can be secured mechanically so it does not pop out during shipping. There is no vibration to speak of during normal operation and no corrosive environment so i am ok with the mechanical interface. Having said that though, I continue to look for totally on pcb storage that can hold the data and isnfast enough so we have less fiddly bits that can go wrong in manufacturing.

Anyway, i will need to let google do some more resaerch ;). Thanks for your comments and perspective!