[Fascinate Android Development] GizmoDroid:
This problem popped up with DL09 too. (see Adrynalyne's test kernels attempting to fix it).

With my phone, most everything related to USB is intermittently buggy (I haven't noticed one ROM being any better than another). When it fails, it never seems to follow a pattern. Then, when it starts working again, I can't pinpoint what I did for sure. Sometimes it starts working without me doing anything.

[SIZE=+0]Problem[/SIZE]

I usually try to leave Settings -> Applications -> Development -> "USB debugging" turned on so that I can adb over usb without changing settings every time. However, sporadically, usb mounting just stops working right. My computer will install the USB mass storage device, but the sd card won't be mounted. When this happens, sometimes it will stop recognizing the ADB device and will instead report an "Unrecognized Device" in the Device Manager of Windows (I've seen these problems with an android tablet too I own too). Sometimes, it will actually mount the SD card, but when I click on the drive in "My Computer", my computer with lock up with "An error was detected on device \Device\Harddisk1\D during a paging operation" being reported in the Event Viewer.

As buggy as mounting is while the phone is fully booted up, it's even more buggy in CWM, since the upgrade to Froyo. It might be related to the same reason why it's buggy in the OS too, or it might be because CWM still hasn't been fully debugged for Froyo.

[SIZE=+0]Work-Around[/SIZE]

I've found the best success rate is to leave "USB debugging" turned off. Then, in Settings -> USB Settings, choose "Ask on connection". This adds one more annoying pop-up when you plug your phone in, but I've had a higher success rate (placebo? :confused:).

So here is my procedure, in painfully drawn-out, unnecessary detail:

Make sure the phone is fully awake and not busy

Plug the usb cable into the phone and computer

Wait as long as it takes before both the computer and phone are done recognizing each other (about ~5-25 seconds depending on your computer's speed)

After everything is at idle again, select "Mass Storage" from the pop-up (if you don't have a pop-up, double check to make sure you selected "Ask on connection")

You should see the "USB connected - Phone connected to computer[...]" pop-up

Wait again until phone and computer reach idle (~2-10 seconds)

Hit the button that says "Connect USB storage".

Hit "OK" to the warning

At this point, after your phone and computer get done doing their thing, you should see a virtual cd-rom drive and a usb mass storage device in your "My Computer." If everything went smoothly, you will be able to access the SD card from the USB mass storage device. The CD-ROM drive will probably say something like "Please insert a disk".

If you see your SD-card contents in the virtual CD-ROM drive but the USB mass storage is empty, your SD-Card it is mounted as a virtual CD-ROM, you won't be able to modify the SD card contents in any way (Read-only). Double check to make sure you selected "Mass storage" instead of "Media Player" when you plugged the USB cable in (or check in the Settings -> USB Settings). If you selected "Mass storage" but you are still seeing the SD card in the CD-ROM drive, then you have run into the nice little bug that keeps coming up.

[SIZE=+0]Troubleshooting[/SIZE]

I haven't found a definitive pattern to the cause or the solution yet. Maybe it's kernel or driver related and out of our hands. However, here are some things that sometimes work:

Fully power down both the computer and phone, then start all over again

Boot the phone while the USB cable is connected to the PC

Try changing to a new USB port on the computer, a new cable, or a different computer (don't forget to do a hard reboot on your phone between each try)

Going to investigate more thoroughly sometime soon. I know there is some goodies related to the Mass storage/Media player settings in the HiddenMenu.apk (Though, here be dragons, as the saying goes). Looks like there are some errors to investigate in the logcat too, so that might contain the key. Hopefully someone else has already figured it out in the time that it took me to type this ridiculously long post.