Coldcard MK4 microSD failure – works at first, then progressively stops reading cards (2 devices)

I’m trying to see if anyone else has experienced this, or if this is a known edge case.

I’ve now had two Coldcard MK4 units show the same microSD failure pattern.

What happens:

  • MK4 works normally at first.
  • PSBT signing via microSD works for several transactions.
  • Then, suddenly, the MK4 can’t find PSBT files on the card.
  • After that, the problem gets worse:
    • The MK4 fails the microSD part of the device self-test
    • It can’t format cards
    • Even microSD cards that previously worked stop working on that device

This happened on my original MK4 and again on a replacement MK4.

Cards tested:

  • Multiple brand-new and known-good microSD cards
  • 8 GB and 32 GB
  • FAT32, MBR
  • Nothing exotic

Linux workflow (in case it matters):

  • Linux laptop with built-in SD card slot
  • microSD → SD adapter → laptop
  • Save PSBT file to the microSD drive
  • Right-click → Unmount
  • Wait for popup: “Filesystem has been disconnected”
  • Remove SD adapter, take out microSD
  • Insert microSD into MK4
    No unsafe removal, no write caching left active.

Why this seems odd:

  • Cards work initially, then stop
  • Failure is progressive
  • Same behavior across two MK4 units
  • Once triggered, there’s no obvious recovery path

This doesn’t feel like a simple “picky card” issue, because the cards do work at first.

I don’t have a MK4 myself, so I’ll let anyone else who has experience with them reply. I have the Q and haven’t seen this problem with it (though TBH I don’t do a lot of base layer transactions-- I mostly accumulate). From the description, my first thought is a mechanical issue (such as poorly soldered microSD card socket, or a design flaw that doesn’t properly manage the stress of the insert/remove action).

I thought that too, but what are the odds of both devices (the one I bought and the one they sent later to replace the first one) having the same problem when nobody else seems to have the problem?

Not that it helps at all, but it is worth noting that your question (what are the odds) applies whatever the issue turns out to be. Brainstorming a few possible answers to the question:

  1. You just happen to have gotten unlucky
  2. Others are experiencing it, but haven’t been discussing it yet
  3. Something in the logistics such that you receive multiple members of the same bad batch
  4. Something unique to your context that doesn’t apply to most other users

I had one of the coldcard “industriai” sd cards fail - used a less expensive one which has been ok.

I think I figured it out.

According to ChatGPT, the procedure I follow (below) adds invisible data to the sd card, and that might be breaking the MK4.

  • Right-click → Unmount
  • Wait for popup: “Filesystem has been disconnected”

When I format the card again in a Windows PC, now it works with MK4.

However, my Sparrow wallet is in a Linux PC. So I have to use a specific code to eject the card in the terminal (not using the file manager). Using the file manager did work for a while before so we shall see. I will update.

Hmm, your workflow you mentioned earlier looks correct though:

  • Save PSBT file to the microSD drive
  • Right-click → Unmount
  • Wait for popup: “Filesystem has been disconnected”

When you load the file up in Sparrow again (after writing the signed transaction on the MK4) do you also do the right-click unmount step at the end?

The process I use on my Q (from Linux Mint 22.2 host machine):

  • Insert microSD into adapter
  • Plug adapter into PC
  • Ignore the File Browser window that pops up
  • In Sparrow, save the PSBT to the microSD
  • In File Browser, click the icon to unmount
  • Wait for safe-to-remove message
  • Unplug the adapter
  • Move the microSD to the Q
  • Sign the transaction
  • Power off the Q
  • Move the microSD back to the adapter
  • Plug the adapter into the PC
  • Ignore the File Browser window that pops up
  • In Sparrow, load the signed transaciton and broadcast it
  • In File Browser, delete the files
  • In File Browser, delete the trash/recovery folder that gets created
  • In File Browser, click the icon to unmount
  • Wait for safe-to-remove message
  • Unplug the adapter

It always failed when I plugged in the microsd card (with a fresh psbt file) into the MK4. In other words, I follow all the steps you listed (although the Linux message I see is “Filesystem has been disconnected”) as below.

  • Insert microSD into adapter
  • Plug adapter into PC
  • Ignore the File Browser window that pops up
  • In Sparrow, save the PSBT to the microSD
  • In File Browser, click the icon to unmount
  • Wait for safe-to-remove message
  • Unplug the adapter
  • Move the microSD to my MK4

Then it fails.

As I said, it is working for now ever since I reformatted the sd card in a Windows PC and using the CLI, “udiskctl unmount -b /dev/sdcard” I can live with that if that was the fix.

Yes, I was curious about the second part (when you then insert the microSD card in your computer to broadcast the signed transaction) to see if there were any potential causes there. Do you delete the transaction files before removing it? (this would create a recovery/trash folder that maybe causes the next time to fail at the step you mentioned). Do you also unmount? (if not, this could lead to corrupted filesystem that maybe causes the next time to fail at the step you mentioned).

My MK4 couldn’t find any psbt file that is in the microsd card. I do not delete anything before saving the psbt to the microsd card. Yes I do unmount and wait for the message “Filesystem has been disconnected.”

I meant when it does work (and you could find the PSBT file, and you did sign the transation), what steps do you do for the second part? Do you delete the files after broadcasting the transaction (and if so, do you then also delete the recovery/trash folder that gets created)? And do you click the option to unmount the drive before removing it?

Here’s the hypothesis that I am suggesting to explain the failure:

  1. You generate a transaction from Sparrow and copy it to the card
  2. It loads fine on the mk4 and you sign it
  3. You load the signed transaction into Sparrow and broadcast it
  4. –something goes wrong after this step, card is silently corrupted, nothing visibly wrong yet–

Then in the future:

  1. You generate a transaction from Sparrow and copy it to the card
  2. You try to load it on the mk4, and it doesn’t find the PSBT

Then you reformat the card, and in the future:

  1. You generate a transaction from Sparrow and copy it to the card
  2. It loads fine on the mk4 and you sign it
  3. You load the signed transaction into Sparrow and broadcast it

After broadcasting the transaction, I didn’t delete any files. Also, I’ve been religiously unmount and confirm the disconnect before removing the sd card.

1 Like

Cool. I think the AI is wrong (unmounting should be all you need to do, and shouldn’t matter if you do it from the UI or from the terminal). At least you know reformatting fixes the problem when it happens.

If you want to test that theory (though it may not be worth the effort if you don’t do transactions that often anyway):

  1. Reformat the chip in Windows (to rule out any variables)
  2. Create a transaction in Sparrow on Linux
  3. Unmount the chip through the UI
  4. Plug the chip into the mk4

If the problem happens, then my theory is wrong and the AI wins. If the problem doesn’t happen, then the issue isn’t what the AI predicted.

BTW, if the AI turns out to be wrong, you can also reformat the chip in Linux (install gparted if you want a graphical UI for that). Typically you will format it as FAT32 (unless it is very large, then exFAT).

Well, the problem is that I did exactly that before and it worked for a while then failed later even though I didn’t make any changes to my procedure. The problem could be something accumulative or instability thing that doesn’t always happen even when the situations are the same.

This proves the AI wrong, though, doesn’t it? (assuming I understood what you said the AI predicted). If Linux adds extra files, then it would do it always, not sometimes.

Yeah I guess. I will keep using the CLI and see what happens. Thanks, Paul.

Ok. I would be curious though (if you don’t mind taking the extra time) if the next transaction you do, you first reformat the chip again in Windows, then in Linux after saving the PSBT, unmount through the UI rather than the terminal, to see if the problem is there. I really do not think you need to be unmounting from the terminal (I highly doubt the issue is related to unmounting – something else is causing the data corruption).

Will do. I will let you know.

1 Like

I think I finally figured it out. Those “coincidences” that made it work then not work was all red herring. I tried unmounting from the file manager and once again it stopped working. Then I remembered what made it suddenly work recently – a different USB outlet. After I used a different power outlet, even the same card that failed before are working now. Slap myself silly :blush:

1 Like