Re: USB 2.0 All-in-1 card reader can't switch cards without unplugging

Jamie wrote:
On Jan 22, 11:45 pm, Paul <nos...@xxxxxxxxxx> wrote:
Jamie wrote:
On Jan 22, 5:31 pm, Paul <nos...@xxxxxxxxxx> wrote:
Jamie wrote:
I have a generic usb 2.0 all-in-1 card reader. When I plug it in, only
1 drive letter shows up. On other ones I've used a drive letter shows
up for each slot. Anyway, it works when I plug a card in a slot, but
will not work when I change cards. It still shows the old information
as if the original card is still inserted. The only way I can get it
to read another card is to unplug and replug in the card reader.
Additional info:
-When card reader is plugged in, 1 drive shows up. The access light
doesn't come on.
-When a card is inserted, the access light comes on.
-It remains on, even after the card is removed. And the contents are
still displayed in Windows Explorer.
-If I eject it. It ejects the whole reader.
-The only way I can get it to read a new card is to unplug and replug
the card reader.
-It is using Windows XP drivers. It didn't come with any disk and says
plug in play.
Any help will be greatly appreciated. If there's a more appropriate
group I should post in, please let me know.
Thanks in advance.
You could try the procedure here, to unmount a partition. Maybe
that would work to make the system forget your old (flash based) card ?
This was written for a Mac. There is no command button on a PC.
As for tracing down the issue with the hardware, I'd be looking for
means to identify who makes it, and whether there are already
recognized issues with it. While the product may be generic and
lack labels, the chip inside could be used to make other similar
branded products.
The chips are listed (an unofficial list), on web pages like this one.
Using a utility like UVCView, can get the VID (vendor ID) and PID (product ID).
There are likely other hardware utilities that can do the same thing, but
with less fuss. (If you boot a Linux LiveCD, try "lsusb" for example,
while the device is plugged in.)
I couldn't find UVCView. Mine looks just like 'Gear Head CR4200 23-
in-1 Card Reader' except for the color.
The usb.ids method isn't foolproof. Some hardware devices support the
ability to change the identity of the device. That's done, so each
(branded) product made, can have a unique identity for driver installation
purposes. But it can also be used to hide who really makes the chip,
and makes it harder to find a solution to any problems that arise.
Some hardware families are worse for this than others. All it takes
is an external 2K EEPROM, to give a chip like that, a new identity
and register settings.
OK, try this one :-) I even tested it. diskmgmt.msc, click partition,
"Change drive letters and paths", click Remove button. My partition is
gone. I can also add it back with the Add button.

That method appears to dismount it, because when I look in Explorer,
it is no longer shown.

For some reason, even though I use Windows as a search term, the
Macintosh article appears at the top of the search results. The link
I posted this time, is from further down the page.

I wish I could test the idea while using a card reader, but
I don't even own one of those. What I would have liked to do,
is find out what driver files it lists in Device Manager, then
track down the INF file that mentions those files in the Windows
INF folder. But without a hardware sample, I've got nothing to work


OK, I did that. The driver is USBSTOR.sys

The contents of USBSTOR.inf is:
USBSTOR.SvcDesc = "USB Mass Storage Driver"

Thank you,

So the card reader is USB storage class, and one of the vid/pid entries
in the file, corresponds to your USB chip.

If you look in setupapi.log file, you can see when the OS loads a driver
for a piece of hardware.

This is a chunk of C:\WINDOWS\setupapi.log from my machine, when my external
USB hard drive enclosure is detected. (This is the closest device I've got,
to doing things the same way as your hardware.) You can see a VID and PID here.

[2011/09/30 07:48:39 1012.3 Driver Install]
#-019 Searching for hardware ID(s): usb\vid_04b4&pid_6830&rev_0001,usb\vid_04b4&pid_6830
#-018 Searching for compatible ID(s): usb\class_08&subclass_06&prot_50,usb\class_08&subclass_06,usb\class_08
#-198 Command line processed: C:\WINDOWS\system32\services.exe
#I022 Found "USB\VID_04B4&PID_6830" in C:\WINDOWS\inf\oem27.inf; Device: "Cypress AT2LP Manufacturing Driver"; Driver: "Cypress AT2LP Manufacturing Driver"; Provider: "Cypress"; Mfg: "Cypress"; Section name: "CyUsb".
#I087 Driver node not trusted, rank changed from 0x00000001 to 0x00008001.
#I023 Actual install section: [CyUsb.NT]. Rank: 0x00008001. Effective driver date: 01/01/1601.
#I393 Modified INF cache "C:\WINDOWS\inf\INFCACHE.1".
#I022 Found "USB\Class_08&SubClass_06&Prot_50" in C:\WINDOWS\inf\usbstor.inf; Device: "USB Mass Storage Device"; Driver: "USB Mass Storage Device"; Provider: "Microsoft"; Mfg: "Compatible USB storage device"; Section name: "USBSTOR_BULK".
#I023 Actual install section: [USBSTOR_BULK.NT]. Rank: 0x00002000. Effective driver date: 07/01/2001.
#-166 Device install function: DIF_SELECTBESTCOMPATDRV.
#I063 Selected driver installs from section [USBSTOR_BULK] in "c:\windows\inf\usbstor.inf".

From that, I can get the VID and PID, vid_04b4&pid_6830. I would expect
your card reader has a unique usb.ids and from that, perhaps you can figure out
what additional stuff is added to make it work.

You notice in my example, there is a reference to oem27.inf . When a third party INF file
is added, Windows changes the name of the file. But if you open the file with Notepad,
sometimes the real name of the file is shown. The actual file was "CyUSB.inf", Windows
changed that to oem27.inf and copied it to C:\WINDOWS\inf. It might have something
to do with preventing naming collisions.

"Installation INF for the Cypress Generic USB Driver for Windows 2000/XP"

That particular one happened on my machine, after Seagate Seatools damaged
the config information on my external USB driver. And the entries in setupapi.log
are from when I repaired it by reflashing the config info (using a repair procedure
from Cypress). Part of that, was using a Cypress driver until the flash was
finished. Then it reverts to usb storage class.

I don't think any thing dramatic has happened to your device, but using the setupapi.log
file, you can get info similar to the hints you might get by using UVCView or the
Linux "lsusb" program. UVCView or lsusb give the VID and PID numbers. But the setupapi.log
file will also record the info. Once you have identified the device, via the VID and
PID, you can start Googling for similar reports of your symptoms, and see whether
anyone uncovered an easy solution.


There are procedures for clearing out the USB stack, but I wouldn't do that unless
absolutely necessary. I'd do a backup before trying it, just in case.

For example, RenewUSB.bat uses "devcon" to interact with Device Manager,
and in this case, clean out all USB entries. The OS then rediscovers the
hardware and the stack is rebuilt. "devcon", the program that does the
work, is downloadable from Microsoft. Open the renewusb.bat file with
Notepad, for comments on where to download it.


A manual method of doing the same thing, is described here.

"WinXP and 2000 - Removing USB devices in Safe Mode will force the OS to
refresh the USB driver stack and may cause a shift in IRQ assignment."

That's a solution you can try, if identifying the device and researching
its quirks doesn't lead anywhere. Sometimes misbehavior is related to
corruption (or confusion caused by devices that lack serial numbers perhaps).


Relevant Pages