It's Pi all the way down...

by

I mentioned in my last post on this topic that fake SD cards have been an issue in the past.

Buy from well-known outlets, not minor vendors on whatever variant of flea-bay you frequent. Just because it’s on Amazon, doesn’t mean it’s not a knock-off; check the actual seller.

For that post, I also purchased a variety of SD cards of various models for testing purposes, some from Amazon. I also stated…

I haven’t had any issues for the last few years, but during them I’ve stuck to buying strictly from either SanDisk or Samsung […]

Guess how that’s going!

Another One Bites the Dust

Another month rolls by, and another Ubuntu release rolls off the production line. In this case it was Noble’s .2 release (24.04.2).

At each release, we go through a round of so-called “ISO tests” [1]. This invariably involves grabbing a handful of SD cards, flashing the release candidate image to them, booting them on various models of Pi model and running through a battery of tests. Once a board has passed or failed, pull the card, reflash, bung it in another board, rinse and repeat.

This means the life of an SD card in my possession boils down to one of two possibilities:

  • If it’s lucky, it gets stuck in a “long running” Pi serving something in my house. This means 24x7 duty for many years, but usually relatively light duty.
  • If it’s unlucky, it goes in the drawer and for much of the year it stays there. But, before each release, it’ll get hauled out and for a few days be brutally tortured with tens of gigabytes written to it over and over again.

If I have a card fail on me, it’s inevitably during a release. This time was no different, and I had a fancy gold-coloured “SanDisk Extreme” die. Rather than one of the usual failure modes (fails to read entirely, or silently ignores writes), this one wrote the candidate image happily but then reported tons of I/O errors during boot. A little odd, but not unprecedented.

What was strange was that this card was barely more than 1½ years old. This is an unusually short life-span, in my experience. Brutal though I am to these test cards, they usually last 4 or more years. There was no time to investigate during the release, so I tossed it in the “dead cards” drawer and moved on. However, the release is now done, and I’ve taken another look.

Aaaa!

When you insert an SD card into a Pi, if you’re watching the kernel log (and I often am in some window) you’ll typically see something like the following appear:

[344239.702588] mmc0: cannot verify signal voltage switch
[344239.771565] mmc0: new ultra high speed SDR104 SDHC card at address 59b4
[344239.771898] mmcblk0: mmc0:59b4 USD00 29.5 GiB
[344239.773131]  mmcblk0: p1 p2
[344239.773418] mmcblk0: mmc0:59b4 USD00 29.5 GiB

What does all this mean?

mmc0: cannot verify signal voltage switch
Basically noise; just a warning that the signal voltage was switched but we can’t be sure it was successful (hardware limitation).
mmc0: new ultra high speed SDR104 SDHC card at address 59b4
The interface has noticed a new ultra high speed (ooooh!) card which supports SDR104 signalling at “address 59b4”. Typically an interface only has a single card slot, but technically it can support several. This is the “address” of the card within that interface.
mmcblk0: mmc0:59b4 USD00 29.5 GiB
Mostly a repeat of the prior information. This says the kernel’s created a new “mmcblk0” device representing the card with address “59b4” on the “mmc0” interface, and it’s about 29.5GB in capacity…
mmcblk0: p1 p2
… and it’s got two partitions.

Incidentally, the above is from a Raspberry Pi branded SD card. Let’s see what the broken SanDisk Extreme reports:

[341496.190074] mmc0: cannot verify signal voltage switch
[341496.266122] mmc0: new ultra high speed SDR104 SDXC card at address aaaa
[341496.266891] mmcblk0: mmc0:aaaa SN64G 59.5 GiB
[341496.268624]  mmcblk0: p1 p2
[341496.269098] mmcblk0: mmc0:aaaa SN64G 59.5 GiB (quirks 0x00004000)

Huh. That “aaaa” address looks a bit odd.

This may be complete coincidence, but having come across fakes in the past, sometimes dodgy cards have “suspicious” (read: low entropy) fields in their registers. Serial numbers filled with zeros and the like. Querying other things (CID, manufacturers ID, etc) under /sys/block/mmcblk0/device yields nothing terribly suspicious here, but nonetheless, this feels a little odd so let’s dig a bit further.

Rather than throwing my dead cards in the bin, in recent years I’ve taken to keeping them in a drawer. Most still have some function, and I wondered if I could spot any patterns in their failure modes.

In the drawer I’ve got a “SanDisk Ultra” card (this is their “bog standard” range with grey rather than gold colouring on the case) which failed a year ago after a suspiciously short life-span. What does it report on insertion?

[341732.375548] mmc0: cannot verify signal voltage switch
[341732.448272] mmc0: new ultra high speed SDR104 SDHC card at address aaaa
[341732.448560] mmcblk0: mmc0:aaaa SD32G 29.7 GiB
[341732.450888]  mmcblk0: p1 p2
[341732.451108] mmcblk0: mmc0:aaaa SD32G 29.7 GiB (quirks 0x00004000)

Hmm. Another “aaaa”. Still, maybe that’s just the address that SanDisk cards use generally? Let’s try another SanDisk Ultra branded card which has so far worked reliably:

[345859.140220] mmc0: cannot verify signal voltage switch
[345859.209840] mmc0: new ultra high speed SDR104 SDXC card at address 59b4
[345859.210384] mmcblk0: mmc0:59b4 SD64G 59.4 GiB
[345859.212228]  mmcblk0: p1 p2
[345859.212795] mmcblk0: mmc0:59b4 SD64G 59.4 GiB (quirks 0x00004000)

So, the “aaaa” address appears common to two cards both purportedly from SanDisk, both of which failed suspiciously early.

Aaaamazon

Being more curious now I went and dug out my order history to see when and where these were purchased. I’m not 100% certain of which batch the 32GB “Ultra” card came in. However, I can say with confidence that both were purchased from Amazon, both from the “SanDisk Store” on there, and at least 6 months elapsed between the purchase of the 32GB “Ultra” card (latest February 2023) and the 64GB “Extreme” card (July 2023).

What to do?

Well, not much. It’s another fake from Amazon (which more and more resembles an online tat-store in my experience). Still, I figured in the interests of being a conscientious consumer, I should leave a review cautioning others that even buying from the official “SanDisk Store” is not a cast-iron guarantee of quality. I spent 5 minutes throwing together a quick précis of the above (“aaaa reported by kernel”, “substantially shorter lifespan than other SanDisk cards”, etc. etc.)

And I would’ve left it at that. But for the email that just arrived…

Please edit and resubmit your review

Hello Dave Jones, We could not post your review because it does not meet our community guidelines. Please edit and resubmit your review. Before you do, make sure it meets all of our guidelines.

Intriguing. I wonder which “community guidelines” I’ve violated. Unfortunately, while they’ve linked to their guidelines (which are pretty much as one would expect) they haven’t specified which one I violated, and the review is apparently gone. So I’ve no clue.

Naturally, this leaves me feeling less-than-confident in the positively stellar review ratings alongside this product.

Though, again, hilariously skewed reviews are hardly a new feature of Amazon either. More importantly: can I still stand by my former advice? Probably not.

eBay, Amazon, Alibaba, whoever. If it’s a large marketplace, I’ve had fakes from it (certainly from the aforementioned big three). Ideally, buy from your local electronics vendor (Pimoroni or The Pi Hut for me) but failing that, look for the larger vendors on the big marketplaces.

[1]ISO because this used to be limited to ISO CD images. Though we still make ISO images for various platforms, we’re just testing raw disk images for the Pi.