Failure to recognize SD card inserted at runtime

I am running the Ubuntu 14.04.3 image from Dec 11, 2015, on a Beaglebone Black, with updated packages and updated kernel. System details below. When I insert an SD card with 2 Linux partitions (and formatted ext4 filesystems) on it after boot, it fails to be recognized. The following message appears in syslog:

Jan 25 11:01:52 hostname kernel: [47672.809891] mmc0: card never left busy state
Jan 25 11:01:52 hostname kernel: [47672.814264] mmc0: error -110 whilst initialising SD card

The odd thing is that first this is the same card onto which I wrote and then booted the downloaded image. I later flashed the card to the eMMC. So I can boot from the card successfully (which presumably means the kernel supports it), but when booting into the same kernel and rootfs from the eMMC, it’s reported as failing to initialize. Also, I can insert the card perfectly fine into a BBB running Debian Wheezy with kernel 3.8.13-bone79 booted from the eMMC - the kernel recognizes it, udisks-daemon fires, partitions get mounted etc, all without any errors. So I’m rather confident that the card is fine.

Anyone got any ideas what I might be missing?


System details: starting image bone-ubuntu-14.04.3-console-armhf-2015-12-11-2gb.img

ubuntu@hostname:~$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 14.04.3 LTS
Release: 14.04
Codename: trusty
ubuntu@hostname:~$ uname -a
Linux hostname 4.1.15-ti-r40 #1 SMP PREEMPT Fri Jan 8 09:45:11 UTC 2016 armv7l armv7l armv7l GNU/Linux

Any chance someone has an idea what might be going wrong here? I’d be happy to reformat the card or take other destructive measures, but right now the device for the card is not even showing up under /dev when the card is inserted.

Is it that the 4.1.15-ti-r40 kernel doesn’t support hot-plugging of uSD cards? If so, anything I can do to change that? And I’m not sure how to boot into the eMMC when the card is inserted in at boot. (The system will boot into the SD card if inserted.)


If you don’t have another SD card to try and can lose these contents, its worth trying a reformat to a single partition, although Ubuntu generally seems very good at handling multi-partition SD cards.

I have hot plugged an SD card into Debian 7.9 (image 2015-11-12) same as you have done, (the card I used to flash with) and it worked, although it didn’t automount. I see in your first post you said your card worked on a Debian 3.8 kernel, so I’d suspect it may be a kernel version issue or something wrong with the udev rules for your Ubuntu (sorry, I’m no help with these).

Just as I about to hit “POST” it occurred to me the flasher may have cloned the image to the eMMC so the card may have the same UUID as the eMMC which might mess up the udev rules. Try blkid on your BBB to get the UUID of the eMMC and do it with the SD card in another system to see if they are the same.

Thanks, good ideas. I checked the UUIDs as you suggested and they are different. I then went ahead and hot-plugged another card I had with only a single partition. Lo and behold, this time it worked (mostly, see below).

I now also noticed on the board running Debian that the card with the two ext4 partitions on it lacked a label for the second partition (it got auto-mounted under /media but using its UUID, not label). So I used e2label to give that partition a label, too. Then hot-plugged it into the board running the 4.1.15-ti-r40 kernel under Ubuntu, which before would give the error with this card, and lo and behold it now worked (mostly, see below).

I wish I had re-tested the card just before doing this so it was clearer that all partitions having labels was really the only change. It’s a bit hard to believe that this would make the difference between the kernel succeeding or failing to initialize the card device. But other than a week of time having passed, I don’t know what else could have possibly changed. I also don’t have time right now to go back and recreate a card with 2 partitions one of which unlabeled (or is there a way to erase a label from a partition? tune2fs and e2label only talk about setting the label.).

By “worked mostly” I mean that the kernel properly recognizes the card and creates the block devices for both the card and the partitions on the card. Also, the symlinks under /dev/disk/by-id/ and /dev/disk/by-label are created (by udev rules, I believe?). What doesn’t happen on the Ubuntu/4.1.15-ti-r40 board but does on the Debian/3.8.13-bone79 board is that the partitions get auto mounted under /media/. But I can now see and figure out what’s missing on the Ubuntu-running board, and at least right now for me that part isn’t so important.