USB intermittently not working - requires restart - what to try next?

The USB ports on my MacBoook Pro13 stop working after a while (new devices aren't recognized by the OS, already plugged in devices don't work any longer, the behavior is the same for all USB devices and both USB ports). Doing a restart fixes the problems for a while (about a day of use). The way I'm usually working, the Mac goes to sleep a few times during the time it works. I've tried the standard procedures of resetting PRAM and repairing disc permissions without success.

I'm not sure how long I've been having this problem, it might be related to updating to Mountain Lion or some version change in VMWare Fusion (and no, the USB hardware is not available there, either). As the problem is not occurring directly after a reboot, I'm assuming it is not Hardware-related. Still I'd like to avoid a complete re-install.

What can I do to further diagnose and fix the problem?

UPDATE: Thanks for the suggestions. I wasn't able to try all of them .. interestingly, my USB has been working for more than a week now, and I'm not sure what changed. (Maybe I'm using VMWare in a different way, maybe it has to do with the way I use my MacBook.) So I haven't been able to verify that any of the changes solve my problem (which makes awarding the bounty a bit tricky). I'll update the question when I have new information - but hopefully my USB continues to work!


Solution 1:

The first step in diagnosing the problem is to create a user account and see if it happens for that user. If it still happens, it's probably hardware but could still be software. To verify it is not, then remove any software that installs Kernel extensions (VMWare does this, as well as USBOverdrive, SteerMouse, etc…) and see if it still happens.

The fastest route is probably taking it to the genius bar, even if the machine is out of warranty. They have tools that aren't released to the public that go much deeper than any commercially available hardware diagnostics software.

Solution 2:

I advise you to check for any USB misbehaviour.

All the hereunder commands will have to be run from a Terminal or an xterm window.

  1. Log analysis:

    grep USB /var/log/kernel.log
    

    look for events closely related in time with your USB hub getting deaf.

  2. Deeper USB behaviour analysis. 1st create a working directory:

    mkdir ~/USB.bug
    
  3. When your system freshly started, run the following command:

    kextstat | grep USB >~/USB.bug/kext.start
    

    This will be a reference to compare your living Kernel behaviour to later.

  4. Next, after having used all your usual softwares having any relation with your USB connection, do a first check:

    kextstat | grep USB >~/USB.bug/kext.run
    
  5. Finally, when your USB port is deaf, type:

    kextstat | grep USB >~/USB.bug/kext.bad
    
  6. Compare:

    cd ~/USB.bug
    diff kext.start kext.run
    diff kext.run kext.bad
    

    Please include results of this hunt start.