I decided to reuse a 32 GB MicroSD card from 2013, which was only written to three to four times. Many existing files are damaged due to logical errors from bitrot/bit fading from years of little power-on time, which is a normal phenomenon amongst flash storage. But such non-physical errors should not affect the flash storage's ability to write new data.
However, the memory card effectively write-protected itself.
If I add any new files or make changes, it first appears successful (possibly due to caching). But when I remount, all changes are gone.
If I edit anything in a Hex editor and save, it appears to have saved successfully. But when I reload, my changes are gone! This means that the card has write-protected itself.
When I search about this phenomenon online, I just find users having read-only access due to issus with the file system. But in my case, any writing is denied.
I tried it with several card readers and computers. Same result. And cameras fail writing new photos/videos onto it, despite free space.
The only clue I could find is this forum post [archive / short] by user AnthonyNYC on the now-defunct CNet forums:
If it's old the flash memory probably wore out and can't be re-written anymore. That is what I read is suppose to happen to SSD drives also when the amount of write cycles is used up, they lock up and can't be written to anymore but you can continue to read from them forever (or until it breaks).
It's actually comforting to know when the flash chips finally wear out that you just don't lose your data, right?
You just can't change it any more, that's all.So you really got your monies worth to wear out the chip write cycles. It's something I suspect people will hear more of as the drives all start to age. You are one of the first I guess, lol.
HappyI could be wrong of course, but that would be my guess as to why you can't format or write to the chips anymore.
They all have a limited amount of writes before they wear out and become permanently locked in the last position.
I hope that makes sense and helped.
-Anthony
So does the firmware deny write access because it detects the storage is worn down? But my memory card was not worn down. The errors are just logical ones, and technically, the card should still be fully functional.
Is there any way to unlock write access again?
Let's try replacing "the memory is worn down" with "the built-in controller sensed that the memory is worn out or some other potential error, like checksums mismatch or similar", if it helps.
This behaviour happens from time to time on both SD (or micro SD) cards and on USB sticks, it can be attributed to a sort of "failsafe" mechanism, basically the controller understands (rightfully or not) that *something* is not exactly *as it shoudl be* and changes access to "read-only".
In theory (and IF you can find the actual controller used AND you can find a way to access it) it is possible to reset that kind of error, but (at least for SD cards) getting to identify the chip and finding the tools/methods needed to access it is impossible or nearly impossible.
A known, old, article about the matter:
https://www.bunniestudios.com/blog/?p=3554
jaclaz
Thanks much, Jaclaz!
This behaviour happens from time to time on both SD (or micro SD) cards and on USB sticks, it can be attributed to a sort of "failsafe" mechanism, basically the controller understands (rightfully or not) that *something* is not exactly *as it shoudl be* and changes access to "read-only".
On a different MicroSD card (SanDisk 128 GB), I have noticed another behaviour: Individual sectors may become write-protected by the firmware, rather than the whole device.
If a block is unreadable, it completely denies read access (in IsoBuster's HEX viewer, it appears as error 05 / 21 / 00, which usually means "logical block address out of range" in SCSi). whereas many other memory cards and USB sticks just return damaged data, making measuring latency the only way of guessing damaged sectors.
And strangely, some unreadable blocks appear readable in a multi-block transfer, but not in a single-block transfer.
But when I try modifying usually unreadable blocks that loaded successfully for once, the HEX editor returns an error. In comparison, the write protected MicroSD card in the original post appears to be writeable, but changes are not applied, and are gone after re-insertion.