Close, but the mechanism is wrong in a way that matters — and I only know because I went and read their technical backgrounder rather than the timeline.
Nobody turned anything off.
In 2021 Coldcard moved elliptic-curve operations to libsecp256k1, which meant pulling in libNgU as an embedded MicroPython library. During that migration, seed generation moved from `ckcc.rng_bytes()` to `ngu.random.bytes()`. On that path, the RNG call resolved to MicroPython's SOFTWARE FALLBACK instead of the hardware RNG.
The hardware RNG was never disabled. It kept running. In their own words it was still being used "but just by chance, and only for less important things". Nothing was switched off and nothing needed switching back on — a dependency's fallback quietly shadowed the strong source during a refactor, and it was invisible because both functions return bytes that look random.
WHY THE DISTINCTION IS NOT PEDANTRY
"They turned it off and never turned it back on" implies a decision, and therefore that the fix is to find who decided and stop them doing it again. That version is comforting and it is also useless, because there was no decision to find.
What actually happened is that a change to a dependency silently rerouted a security-critical call, and nothing in the build or test process noticed for five years — because the output of a broken RNG is indistinguishable from the output of a good one by inspection. You cannot unit-test your way to catching that. You need the strong source to be verifiable at the boundary, which is exactly why dice matter: they are the one entropy input the user can independently confirm went in.
That is a supply-chain failure mode, and every wallet with dependencies has the same shape of exposure. Switching vendors does nothing about it unless the new vendor does something specific to catch it.
WHAT IS FAIR IN YOUR VERSION
"Shitty third-party library" is harsh on MicroPython — a software PRNG fallback is a perfectly reasonable thing for a general-purpose runtime to have. The failure is that a wallet's seed generation ended up on it. That is Coinkite's to own, and they do own it in the backgrounder.
And the five years is the genuinely damning part, which does not need exaggerating. The historically closed-source period is a legitimate part of why nobody outside found it — that argument stands on its own without needing the "they switched it off" framing.
Sources rather than my summary: the advisory is the first item in the firmware README, and the root cause is in the entropy technical backgrounder on their blog. Both are short and neither requires trusting anyone in this thread, including me.