The SD card reader is built into a ThinkPad T550 (20CJ-S01P00). It is running Arch Linux. When I insert a 128GB Extreme Pro SDXC (full size), it mounts nicely. However, when I insert a 128GB High Endurance microSDXC, that is not detected. Both cards were formatted in a Sony ZV-1 camera.
I also tried another microSD adapter, and I tried another non-Sandisk microSD card. Neither option works. It seems that the reader in this ThinkPad just cannot read microSDXC cards in an adapter.
Shouldn’t a microSDXC card in an adapter be equivalent to an SDXC card? Or is there some subtle difference?
For technical details, have a look at the kernel ring buffer, where I added some comments (Before… / After…):
[ 3553.027428] Before inserting Sandisk Extreme Pro 128GB
[ 3557.887173] mmc0: cannot verify signal voltage switch
[ 3558.279925] mmc0: error -110 reading general info of SD ext reg
[ 3558.279947] mmc0: error -110 whilst initialising SD card
[ 3559.055169] mmc0: cannot verify signal voltage switch
[ 3559.166906] mmc0: error -22 reading PERF func of ext reg
[ 3559.166918] mmc0: error -22 parsing SD ext reg
[ 3559.166941] mmc0: error -22 whilst initialising SD card
[ 3559.937355] mmc0: cannot verify signal voltage switch
[ 3560.049835] mmc0: new UHS-I speed SDR104 SDXC card at address aaaa
[ 3560.050226] mmcblk0: mmc0:aaaa SR128 119 GiB
[ 3560.051641] mmcblk0: p1
[ 3569.857809] After inserting Sandisk Extreme Pro 128GB
[ 3587.199384] After unmounting Sandisk Extreme Pro 128GB
[ 3610.383914] mmc0: card aaaa removed
[ 3624.295387] wlp3s0: disconnect from AP 7c:10:c9:a6:c4:51 for new auth to c8:7f:54:b9:fa:35
[ 3624.349178] wlp3s0: authenticate with c8:7f:54:b9:fa:35 (local address=60:57:18:e9:36:8f)
[ 3624.350265] wlp3s0: send auth to c8:7f:54:b9:fa:35 (try 1/3)
[ 3624.352016] wlp3s0: authenticated
[ 3624.355477] wlp3s0: associate with c8:7f:54:b9:fa:35 (try 1/3)
[ 3624.356783] wlp3s0: RX ReassocResp from c8:7f:54:b9:fa:35 (capab=0x1011 status=0 aid=33)
[ 3624.358968] wlp3s0: associated
[ 3624.390621] wlp3s0: Limiting TX power to 30 (30 - 0) dBm as advertised by c8:7f:54:b9:fa:35
[ 3625.740164] After physically ejecting Sandisk Extreme Pro 128GB
[ 3660.060995] Before inserting Sandisk High Endurance 128GB microSD
[ 3667.922242] mmc0: cannot verify signal voltage switch
[ 3668.026753] mmc0: tuning execution failed: -22
[ 3668.026774] mmc0: error -22 whilst initialising SD card
[ 3668.852453] mmc0: cannot verify signal voltage switch
[ 3668.955819] mmc0: tuning execution failed: -22
[ 3668.955829] mmc0: error -22 whilst initialising SD card
[ 3669.770292] mmc0: cannot verify signal voltage switch
[ 3669.875773] mmc0: tuning execution failed: -22
[ 3669.875817] mmc0: error -22 whilst initialising SD card
[ 3702.622935] After inserting Sandisk High Endurance 128GB microSD
[ 3739.860493] After physically ejecting Sandisk High Endurance 128GB microSD
Thank you for the suggestion, but the format is not the issue. The card does not even show up as a block device (lsblk). We now got a full sized Ultra card of the same size (128GB), and that – like all the other full size SD cards that I tested – just works. I formatted it with Ext4.
To the card reader, apparently a microSD card in an adapter appears different to a full-size SD card. I just wonder in what way.
Could be the machine card reader is too old for modern SDHC class cards. Linux, OSX and Windows all can read exFAT so I recommend using the standard and use a USB reader which evidently reads the modern SDHC class cards.
SDHC cards would be too small. I tried with SDXC and microSDXC. SDXC works, while microSDXC in an adapter doesn’t. This is independent of the file system.
I just would like to understand why there is the difference. It might be an electrical issue.
A full microSD card inside of an adapter is not the same as a full size SD Card inside of a SD card reader slot. Yes the cards are different, designed for different purposes, but it sounds like your reader is not capable of seeing a microSD card inside of an adapter. So, (1) Ditch the Adapter (2) get a USB-C Reader with a microSD card slot (3) attach to your computer USB-C port, (4) insert the microSD card into the microSD card slot, and if your system supports it outside of the default SD Card slot, the microSD card should mount even if EXT4.
I suggest test the High Endurance microSD card in another slot or reader using a USB microSD reader (not the built-in SD slot).
Also check kernel logs (dmesg) for errors – you already captured logs showing failure to complete voltage tuning. That’s solid evidence of hardware-level incompatibility.
Yes, it looks like hardware level incompatibility. I just wonder in what way microSDXC cards look different to the reader than SDXC cards. That’s for an electrical engineer to tell.
Hey @feklee,
You’ve already done a great job testing and analyzing this. Everyone here has rightly pointed out it’s likely a hardware-level issue with how the T550’s SD reader handles microSDXC via adapters. Your logs with tuning/voltage errors back that up.
Just to reinforce what’s been said: the cleanest workaround here is using a USB microSD reader (not adapter-based) via one of the USB 3.0 ports. It avoids compatibility quirks with the built-in slot and should work reliably.