Hi, I have a USB SDHC card reader whose partition table is not read, and device node not created, when plugged into my Gentoo Linux computer. I posted about this a year or two ago but was never able to get it working, until I recently made an accidental discovery:
If I let a VMWare WinXP take control of the USB device, on the same physical linux machine as above, the card reader mounts normally in the virtual WinXP. Then, if I release the USB device from VMware, Linux takes control of the device back and can read the partition table and creates the device node normally. After that everything works fine, I can copy files to/from etc. and everything seems normal. I hope some usb/udev/something guru here can give me a pointer on where to begin tracking down the cause of this. Thanks. :) When I plug in the card reader, dmesg tells me this: [1637793.709415] usb 2-4: new high speed USB device using ehci_hcd and address 22 [1637793.826139] usb 2-4: New USB device found, idVendor=090c, idProduct=6000 [1637793.826142] usb 2-4: New USB device strings: Mfr=1, Product=2, SerialNumber=3 [1637793.826145] usb 2-4: Product: SM331AB CARD-READER [1637793.826146] usb 2-4: Manufacturer: Silicon Motion,Inc. [1637793.826148] usb 2-4: SerialNumber: 12345678901234567890 [1637793.826356] scsi38 : usb-storage 2-4:1.0 [1637799.870068] scsi 38:0:0:0: Direct-Access 6000 PQ: 0 ANSI: 0 CCS [1637799.870187] sd 38:0:0:0: Attached scsi generic sg8 type 0 [1637799.871735] sd 38:0:0:0: [sdg] 62748672 512-byte logical blocks: (32.1 GB/29.9 GiB) [1637799.872307] sd 38:0:0:0: [sdg] Write Protect is off [1637799.872309] sd 38:0:0:0: [sdg] Mode Sense: 4b 00 00 08 [1637799.872310] sd 38:0:0:0: [sdg] Assuming drive cache: write through [1637799.874301] sd 38:0:0:0: [sdg] Assuming drive cache: write through [1637799.874303] sdg: [1637800.005993] sd 38:0:0:0: [sdg] Result: hostbyte=0x00 driverbyte=0x08 [1637800.005996] sd 38:0:0:0: [sdg] Sense Key : 0x5 [current] [1637800.005998] sd 38:0:0:0: [sdg] ASC=0x21 ASCQ=0x0 [1637800.006000] sd 38:0:0:0: [sdg] CDB: cdb[0]=0x28: 28 00 00 00 00 00 00 00 08 00 [1637800.006004] end_request: I/O error, dev sdg, sector 0 [1637800.006006] Buffer I/O error on device sdg, logical block 0 [1637800.006881] ldm_validate_partition_table(): Disk read failed. [1637800.006883] unable to read partition table [1637800.008115] sd 38:0:0:0: [sdg] Assuming drive cache: write through [1637800.008117] sd 38:0:0:0: [sdg] Attached SCSI removable disk Despite dmesg saying unable to read partition table, fdisk -l /dev/sdg shows me the partition anyway: Disk /dev/sdg: 32.1 GB, 32127320064 bytes 236 heads, 42 sectors/track, 6330 cylinders, total 62748672 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/sdg1 8192 62748671 31370240 c W95 FAT32 (LBA) When I let VMware Workstation virtual WinXP session claim the USB device, it shows me this in dmesg when I plug it in: [1639461.856033] usb 2-4: new high speed USB device using ehci_hcd and address 23 [1639461.972673] usb 2-4: New USB device found, idVendor=090c, idProduct=6000 [1639461.972676] usb 2-4: New USB device strings: Mfr=1, Product=2, SerialNumber=3 [1639461.972679] usb 2-4: Product: SM331AB CARD-READER [1639461.972680] usb 2-4: Manufacturer: Silicon Motion,Inc. [1639461.972682] usb 2-4: SerialNumber: 12345678901234567890 [1639461.972956] scsi39 : usb-storage 2-4:1.0 [1639462.343346] usb 2-4: reset high speed USB device using ehci_hcd and address 23 [1639462.459687] scsi40 : usb-storage 2-4:1.0 [1639462.607973] usb 2-4: reset high speed USB device using ehci_hcd and address 23 [1639462.826673] usb 2-4: usbfs: interface 0 claimed by usb-storage while 'vmware-vmx' sets config #1 [1639462.826721] usb 2-4: usbfs: interface 0 claimed by usb-storage while 'vmware-vmx' sets config #1 And when I release the USB device from VMWare back to Linux, dmesg shows this: [1639859.353550] scsi41 : usb-storage 2-4:1.0 [1639864.347499] scsi 41:0:0:0: Direct-Access 6000 PQ: 0 ANSI: 0 CCS [1639864.347616] sd 41:0:0:0: Attached scsi generic sg8 type 0 [1639864.348239] sd 41:0:0:0: [sdg] 62748672 512-byte logical blocks: (32.1 GB/29.9 GiB) [1639864.348757] sd 41:0:0:0: [sdg] Write Protect is off [1639864.348759] sd 41:0:0:0: [sdg] Mode Sense: 4b 00 00 08 [1639864.348761] sd 41:0:0:0: [sdg] Assuming drive cache: write through [1639864.350737] sd 41:0:0:0: [sdg] Assuming drive cache: write through [1639864.350740] sdg: sdg1 [1639864.354864] sd 41:0:0:0: [sdg] Assuming drive cache: write through [1639864.354866] sd 41:0:0:0: [sdg] Attached SCSI removable disk >From this point the card reader works normally in Linux until I unplug it. Every time I plug it in I must use the above stated virtual WinXP workaround in order to use it. The lsusb -v of this device: Bus 002 Device 023: ID 090c:6000 Feiya Technology Corp. Device Descriptor: bLength 18 bDescriptorType 1 bcdUSB 2.00 bDeviceClass 0 (Defined at Interface level) bDeviceSubClass 0 bDeviceProtocol 0 bMaxPacketSize0 64 idVendor 0x090c Feiya Technology Corp. idProduct 0x6000 bcdDevice 1.00 iManufacturer 1 iProduct 2 iSerial 3 bNumConfigurations 1 Configuration Descriptor: bLength 9 bDescriptorType 2 wTotalLength 32 bNumInterfaces 1 bConfigurationValue 1 iConfiguration 0 bmAttributes 0x80 (Bus Powered) MaxPower 500mA Interface Descriptor: bLength 9 bDescriptorType 4 bInterfaceNumber 0 bAlternateSetting 0 bNumEndpoints 2 bInterfaceClass 8 Mass Storage bInterfaceSubClass 6 SCSI bInterfaceProtocol 80 Bulk (Zip) iInterface 0 Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0x81 EP 1 IN bmAttributes 2 Transfer Type Bulk Synch Type None Usage Type Data wMaxPacketSize 0x0200 1x 512 bytes bInterval 255 Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0x02 EP 2 OUT bmAttributes 2 Transfer Type Bulk Synch Type None Usage Type Data wMaxPacketSize 0x0200 1x 512 bytes bInterval 255 >From /proc/bus/usb/devices: T: Bus=02 Lev=01 Prnt=01 Port=03 Cnt=01 Dev#= 23 Spd=480 MxCh= 0 D: Ver= 2.00 Cls=00(>ifc ) Sub=00 Prot=00 MxPS=64 #Cfgs= 1 P: Vendor=090c ProdID=6000 Rev= 1.00 S: Manufacturer=Silicon Motion,Inc. S: Product=SM331AB CARD-READER S: SerialNumber=12345678901234567890 C:* #Ifs= 1 Cfg#= 1 Atr=80 MxPwr=500mA I:* If#= 0 Alt= 0 #EPs= 2 Cls=08(stor.) Sub=06 Prot=50 Driver=usb-storage E: Ad=81(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms E: Ad=02(O) Atr=02(Bulk) MxPS= 512 Ivl=31875us