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:
You just happen to have gotten unlucky
Others are experiencing it, but haven’t been discussing it yet
Something in the logistics such that you receive multiple members of the same bad batch
Something unique to your context that doesn’t apply to most other users
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.
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:
You generate a transaction from Sparrow and copy it to the card
It loads fine on the mk4 and you sign it
You load the signed transaction into Sparrow and broadcast it
–something goes wrong after this step, card is silently corrupted, nothing visibly wrong yet–
Then in the future:
You generate a transaction from Sparrow and copy it to the card
You try to load it on the mk4, and it doesn’t find the PSBT
Then you reformat the card, and in the future:
You generate a transaction from Sparrow and copy it to the card
It loads fine on the mk4 and you sign it
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.
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):
Reformat the chip in Windows (to rule out any variables)
Create a transaction in Sparrow on Linux
Unmount the chip through the UI
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.
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).
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