Like it makes assumptions about the device other than ‘this is just a set of blocks on flash memory’ and actually needs things on the disk at a file system level to be a certain way for it to work properly?
The wear leveling algorithms are usually written to assume you're using FAT32 as the filesystem and certain parameters of it, but those assumptions are optimisations for wear and speed, not requirements --- AFAIK the last time I looked at this stuff in any deep detail, they weren't so crazy as to try to read the block content to determine the layout/filesystem, but those were still the days when 100k SLC was the norm and 10k MLC met with reliability skepticism.
The race for capacity means flash endurance has taken a steep nosedive with things like TLC/QLC, so if anything it's not really the firmware that's crap, it's the flash itself --- and the firmware is increasingly trying to compensate for it. For the cheapest USB/SD I think the firmware is actually stored in reserved areas of the flash itself, so any corruption has a much higher chance of rendering the device unusable.
The wear leveling algorithms are usually written to assume you're using FAT32 as the filesystem and certain parameters of it, but those assumptions are optimisations for wear and speed, not requirements --- AFAIK the last time I looked at this stuff in any deep detail, they weren't so crazy as to try to read the block content to determine the layout/filesystem, but those were still the days when 100k SLC was the norm and 10k MLC met with reliability skepticism.
The race for capacity means flash endurance has taken a steep nosedive with things like TLC/QLC, so if anything it's not really the firmware that's crap, it's the flash itself --- and the firmware is increasingly trying to compensate for it. For the cheapest USB/SD I think the firmware is actually stored in reserved areas of the flash itself, so any corruption has a much higher chance of rendering the device unusable.