# [SOLVED] Can't read SD card (no medium found)

## daaaaang

The SD card reader completely works with the install CD from April 21 (2.6.37-gentoo-r4):

```
# uname -a

Linux livecd 2.6.37-gentoo-r4 #1 SMP Thu Apr 21 13:22:25 \

    UTC 2011 x86_64 Intel(R) Core(TM) i3 CPU M 370 @ 2.40GHz \

    GenuineIntel GNU/Linux
```

Here is what dmesg has to say when I insert the card:

```
# dmesg | tail -n 17

usb 1-1.4: new high speed USB device using ehci_hcd and address 6

usb 1-1.4: New USB device found, idVendor=058f, idProduct=6366

usb 1-1.4: New USB device strings: Mfr=1, Product=2, SerialNumber=3

usb 1-1.4: Product: Mass Storage Device

usb 1-1.4: Manufacturer: Generic

usb 1-1.4: SerialNumber: 058F63666433

scsi6 : usb-storage 1-1.4:1.0

scsi 6:0:0:0: Direct-Access     Multiple Card  Reader     1.00 PQ: 0 ANSI: 0

sd 6:0:0:0: Attached scsi generic sg1 type 0

sd 6:0:0:0: [sdb] 3962880 512-byte logical blocks: (2.02 GB/1.88 GiB)

sd 6:0:0:0: [sdb] Write Protect is off

sd 6:0:0:0: [sdb] Mode Sense: 03 00 00 00

sd 6:0:0:0: [sdb] Assuming drive cache: write through

sd 6:0:0:0: [sdb] Assuming drive cache: write through

 sdb: sdb1

sd 6:0:0:0: [sdb] Assuming drive cache: write through

sd 6:0:0:0: [sdb] Attached SCSI removable disk
```

Here is what fdisk has to say about it:

```
# fdisk -l /dev/sdb

Disk /dev/sdb: 2028 MB, 2028994560 bytes

55 heads, 54 sectors/track, 1334 cylinders, total 3962880 sectors

Units = sectors of 1 * 512 = 512 bytes

Sector size (logical/physical): 512 bytes / 512 bytes

I/O size (minimum/optimal): 512 bytes / 512 bytes

Disk identifier: 0x00000000

   Device Boot      Start         End      Blocks   Id  System

/dev/sdb1             251     3962879     1981314+   6  FAT16
```

It mounts and umounts just fine, and the data is not corrupted. Here's what dmesg says when I remove the card:

```
# dmesg | tail -n 1

usb 1-1.4: USB disconnect, address 6
```

This is all great, except it does not happen when I boot from my hard

drive instead:

```
# uname -a

Linux hazel 2.6.39-gentoo #14 SMP PREEMPT Mon May 23 \

    08:10:50 EDT 2011 x86_64 Intel(R) Core(TM) i3 CPU \

    M 370 @ 2.40GHz GenuineIntel GNU/Linux
```

Here's what dmesg has to say about it:

```
# dmesg | tail -n 19

[  393.198642] hub 1-1:1.0: state 7 ports 6 chg 0000 evt 0010

[  393.198912] hub 1-1:1.0: port 4, status 0101, change 0001, 12 Mb/s

[  393.303147] hub 1-1:1.0: debounce: port 4: total 100ms stable 100ms status 0x101

[  393.314099] hub 1-1:1.0: port 4 not reset yet, waiting 10ms

[  393.376004] usb 1-1.4: new high speed USB device number 5 using ehci_hcd

[  393.386979] hub 1-1:1.0: port 4 not reset yet, waiting 10ms

[  393.461658] usb 1-1.4: default language 0x0409

[  393.462448] usb 1-1.4: udev 5, busnum 1, minor = 4

[  393.462454] usb 1-1.4: New USB device found, idVendor=058f, idProduct=6366

[  393.462460] usb 1-1.4: New USB device strings: Mfr=1, Product=2, SerialNumber=3

[  393.462465] usb 1-1.4: Product: Mass Storage Device

[  393.462469] usb 1-1.4: Manufacturer: Generic

[  393.462473] usb 1-1.4: SerialNumber: 058F63666433

[  393.462571] usb 1-1.4: usb_probe_device

[  393.462574] usb 1-1.4: configuration #1 chosen from 1 choice

[  393.462784] usb 1-1.4: adding 1-1.4:1.0 (config #1, interface 0)

[  393.462819] ub 1-1.4:1.0: usb_probe_interface

[  393.462822] ub 1-1.4:1.0: usb_probe_interface - got id

[  394.737464] drivers/usb/core/inode.c: creating file '005'
```

The only device that appears is /dev/uba, but:

```
# fdisk -l /dev/uba

# fdisk /dev/uba

fdisk: unable to open /dev/uba: No medium found
```

In case it isn't obvious, /dev/uba1 never even shows up. Here is the

dmesg when I remove it:

```
# dmesg | tail -n 7

[ 1720.604265] hub 1-1:1.0: state 7 ports 6 chg 0000 evt 0010

[ 1720.604675] hub 1-1:1.0: port 4, status 0100, change 0001, 12 Mb/s

[ 1720.604801] usb 1-1.4: USB disconnect, device number 5

[ 1720.604807] usb 1-1.4: unregistering device

[ 1720.604812] usb 1-1.4: unregistering interface 1-1.4:1.0

[ 1720.609300] usb 1-1.4: usb_disable_device nuking all URBs

[ 1720.713260] hub 1-1:1.0: debounce: port 4: total 100ms stable 100ms status 0x100
```

And, of course, /dev/uba disappears.

In anticipation of questions about the kernel, here are a few pieces of my kernel:

```
SCSI device support  --->

< > RAID Transport Class

-*- SCSI device support

< > SCSI target support

[*] legacy /proc/scsi/ support

    *** SCSI support type (disk, tape, CD-ROM) ***

<*> SCSI disk support

< > SCSI tape support

< > SCSI OnStream SC-x0 tape support

<*> SCSI CDROM support

[*]   Enable vendor-specific extensions (for SCSI CDROM)

<*> SCSI generic support

< > SCSI media changer support

[*] Probe all LUNs on each SCSI device

[*] Verbose SCSI error reporting (kernel size +=12K)

[ ] SCSI logging facility

[*] Asynchronous SCSI scanning

    SCSI Transports  --->

[ ] SCSI low-level drivers  --->

< > SCSI Device Handlers  --->

< > OSD-Initiator library

[*] USB support  --->

<*>   USB Mass Storage support

[*]     USB Mass Storage verbose debug

<M>     Realtek Card Reader support

<M>     Datafab Compact Flash Reader support

<M>     Freecom USB/ATAPI Bridge support

<M>     ISD-200 USB/ATA Bridge support

<M>     USBAT/USBAT02-based storage support

<M>     SanDisk SDDR-09 (and other SmartMedia, including DPCM) support

<M>     SanDisk SDDR-55 SmartMedia support

<M>     Lexar Jumpshot Compact Flash Reader

<M>     Olympus MAUSB-10/Fuji DPC-R1 support

<M>     Support OneTouch Button on Maxtor Hard Drives

<M>     Support for Rio Karma music player

<M>     SAT emulation on Cypress USB/ATA Bridge with ATACB

<M>     USB ENE card reader support

<*>   USB Attached SCSI

<*> MMC/SD/SDIO card support  --->

[*]   MMC debugging

[ ]   Assume MMC/SD cards are non-removable (DANGEROUS)

[ ]   MMC host clock gating (EXPERIMENTAL)

      *** MMC/SD/SDIO Card Drivers ***

<*>   MMC block device driver

(8)     Number of minors per block device

[*]     Use bounce buffer for simple hosts

< >   SDIO UART/GPS class support

< >   MMC host test driver

      *** MMC/SD/SDIO Host Controller Drivers ***

<M>   Secure Digital Host Controller Interface support

<M>   SDHCI support on PCI bus

[ ]     Ricoh MMC Controller Disabler  (EXPERIMENTAL)

<M>   SDHCI support on the platform specific bus

<M>   Winbond W83L51xD SD/MMC Card Interface support

<M>   TI Flash Media MMC/SD Interface support  (EXPERIMENTAL)

<M>   ENE CB710 MMC/SD Interface support

<M>   VIA SD/MMC Card Reader Driver

<M>   USB SD Host Controller (USHC) support

<*> Sony MemoryStick card support (EXPERIMENTAL)  --->

[*]   MemoryStick debugging

      *** MemoryStick drivers ***

[ ]   Allow unsafe resume (DANGEROUS)

<M>   MemoryStick Pro block device driver

      *** MemoryStick Host Controller Drivers ***

<M>   TI Flash Media MemoryStick Interface support  (EXPERIMENTAL)

<M>   JMicron JMB38X MemoryStick interface support (EXPERIMENTAL)

<M>   Ricoh R5C592 MemoryStick interface support (EXPERIMENTAL)
```

Any ideas?

Thanks for reading; let me know if there's anything I missed!

Matt

[edit -- added "SOLVED"]Last edited by daaaaang on Fri May 27, 2011 9:50 pm; edited 1 time in total

----------

## BradN

Does this problem also occur with, for example, usb flash drives, or usb hard drives? (testing one or the other should be enough)

----------

## daaaaang

No -- both work fine in all three USB ports (two USB 2 ports and one USB 3).

If it means anything, USB drives also appear as /dev/ubx.

----------

## BradN

Figured it out:  You're using an alternate USB mass storage driver that doesn't support certain things.

Turn it off inside Device Drivers > Block Devices

```
CONFIG_BLK_DEV_UB:

  │ This driver supports certain USB attached storage devices

  │ such as flash keys.

  │ If you enable this driver, it is recommended to avoid conflicts

  │ with usb-storage by enabling USB_LIBUSUAL.  

  │ If unsure, say N.

  │ Symbol: BLK_DEV_UB [=n]

  │ Type  : tristate

  │ Prompt: Low Performance USB Block driver

  │   Defined at drivers/block/Kconfig:328

  │   Depends on: BLK_DEV [=y] && USB [=y]

  │   Location:

  │     -> Device Drivers

  │       -> Block devices (BLK_DEV [=y])
```

----------

## daaaaang

That was completely it. Thank you Brad!

----------

