Some time ago I wrote the following reply:
I bought 96 x 4GB MicroSD cards for a personal project. This project requires a number of memory devices to store a very small amount of data ( ~ 2 Kbyte) and initially I obtained a number of MicroSD cards (128 Mbyte and 256 Mbyte) via Ebay from sources in China. While testing my code I experienced problems with these V1 specification layer cards and with some V2 specification layer cards (see “Physical Layer Simplified Specification”, link below). I decided to get some “small” branded cards to find that the average price for a 4 GByte card was about €4 each but there was one for 96 x 4 GB MicroSD of the same brand for €75 which I ordered. While testing with some of these cards I had a large number of cards giving problems so I wrote a simple, crude, program in Micropython to test the the cards using a Pico1. This program showed that the cards are rebranded and come from several sources, giving the impression that these were bought in several lots on the spot market. The contents of the CID (Card Identification) register on many of the failing cards shows that these cards do not come from the manufacturer shown on the case/packaging.
SD Association specification documents
The problem is that the cards fail with an SPI clock speed above 20 Khz and can not accommodate the 12 Mhz clock speed used on the Pico.
With some effort I used the zenodante PicoCalc-micropython-driver to create an PicoCalc UF2 file for the Pico/Pico2 (*) so that the PicoCalc can be used as device to test the suitability of (Micro-SD) cards. This test varies the clock speed in a few steps from 1 Khz to 12 Mhz while trying to create a test file on the internal SD interface giving a FAILED or PASSED result. If FAILED the line above will show at what speed the card failed.