The Windows 7 SP1 USB Driver Bug (what it is and how to fix it)

Discussion in 'Windows 7' started by Enigma256, Feb 6, 2011.

  1. Libra

    Libra MDL Novice

    Mar 1, 2011
    3
    0
    0
    Thank you so very much. I'm very happy to hear that since I've never copied and executed a batch file before.

    It's wonderful how you're helping everyone with this.

    Sincerely, Libra
     
  2. wyrman

    wyrman MDL Member

    Nov 21, 2007
    244
    1
    10
    I put Pendrive in System32 and copied and pasted the batch file in CMD. Had no luck. Said to put in a elevated command prompt.
    I guess some help would be nice

    Thanks
     
  3. Myrrh

    Myrrh MDL Expert

    Nov 26, 2008
    1,511
    627
    60
    "Elevated" = "Run as administrator"

    as in, find the command prompt, right click, choose "run as administrator" and then attempt what you are trying to do.
     
    Stop hovering to collapse... Click to collapse... Hover to expand... Click to expand...
  4. wyrman

    wyrman MDL Member

    Nov 21, 2007
    244
    1
    10
    #64 wyrman, Mar 2, 2011
    Last edited: Mar 2, 2011
    When I try to do that I copy the entire file but it won't show up in CMD. Just the echo part.

    EDIT: I cheated. Did it the delete the controller way. Oh well I'm up to speed now.
     
  5. MikeRepairs

    MikeRepairs MDL Novice

    Mar 4, 2011
    3
    2
    0
    #65 MikeRepairs, Mar 4, 2011
    Last edited by a moderator: Apr 20, 2017
    I made a version improvement to the batch file.
    This one checks that the OS is actually Win 7 and SP1
    And it also performs the date check on the 3 files (usbehci.sys usbport.sys winusb.sys)
    allowing you to exit the program if they are already up to date.

    Just put the two pendmove files in the same folder as you run this batch file from
    pendmove32.exe
    pendmove64.exe

    Code:
    @echo off
    echo WIN7 POST SP1 USB BUG FIX:
    echo.
    echo Checking compatibility for Win7 SP1:
    echo.
    Set K_="HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion"
    Set P_=Windows 7
    Reg query %K_% /v ProductName|Find "%P_%">Nul 2>&1&&(
      echo %P_% is installed, continuing ... )||(
      echo %P_% is not installed!, quitting ...
      goto end
      )
    
    Set K_="HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion"
    Set P_=Service Pack 1
    Reg query %K_% /v CSDversion|Find "%P_%">Nul 2>&1&&(
      echo %P_% is installed, continuing ... )||(
      echo %P_% is not installed!, quitting ...
      goto end
      )
      
    echo.
    echo Make sure you ran this from an elevated command prompt!
    echo Right click - "Run as administrator"
    pause
    
    echo
    cd %systemroot%\system32\drivers 
    dir usbehci.sys usbport.sys winusb.sys 
    
    REM back to this DIR
    CD /D "%~dp0"
    
    echo.
    echo --- TEST RESULTS: ---
    echo.
    echo If any of the files are dated July 2009 instead of November 2010, 
    echo then you are affected.
    echo.
    echo To fix press any key. 
    echo To quit press the "x" button on this window.
    pause  
    
    if ["%PROCESSOR_ARCHITECTURE%"] == ["x86"]  ( 
      SET PENDMOVE="%CD%\pendmove32.exe"
      goto x86-32
    )
    if ["%PROCESSOR_ARCHITECTURE%"] == ["AMD64"] (
      SET PENDMOVE="%CD%\pendmove64.exe"
      goto x86-64
    )
    
    echo Invalid PROCESSOR_ARCHITECTURE!
    goto end
    
    :x86-32
    echo 32 bit system
    set SourceRoot=%SystemRoot%\winsxs\x86_usbport.inf_31bf3856ad364e35_6.1.7601.17514_none_bfc9c95e61cfba61
    set SourceRoot2=%SystemRoot%\winsxs\x86_winusb.inf_31bf3856ad364e35_6.1.7601.17514_none_f9fc4e7173e3735c
    goto start
    
    :x86-64
    echo 64 bit system
    set SourceRoot=%SystemRoot%\winsxs\amd64_usbport.inf_31bf3856ad364e35_6.1.7601.17514_none_1be864e21a2d2b97
    set SourceRoot2=%SystemRoot%\winsxs\amd64_winusb.inf_31bf3856ad364e35_6.1.7601.17514_none_561ae9f52c40e492
    goto start
    
    :start
    pushd %SystemRoot%\System32\drivers
    
    copy %SourceRoot%\usbehci.sys usbehci.sys.new
    %PENDMOVE% usbehci.sys.new usbehci.sys
    
    copy %SourceRoot%\usbport.sys usbport.sys.new
    %PENDMOVE% usbport.sys.new usbport.sys
    
    if exist winusb.sys (
        copy %SourceRoot2%\winusb.sys winusb.sys.new
        %PENDMOVE% winusb.sys.new winusb.sys
    )
    
    popd
    echo Now you need to reboot.(if you have signature issues, reboot twice)
    
    :end
    pause
    
    Enigma256, sorry I was not able to send as a private message, I just registered and it would not let me. if you want to put this in your 1st post, please do.
    Mike Challis
     
  6. BrunoReX

    BrunoReX MDL Novice

    Aug 15, 2007
    12
    2
    0
    I put it inside of folder with spaces, so I had to change it a little.

     
  7. MikeRepairs

    MikeRepairs MDL Novice

    Mar 4, 2011
    3
    2
    0
    Ok, thanks. I edited the code in my post.
     
  8. Enigma256

    Enigma256 MDL Senior Member

    Jan 17, 2011
    357
    309
    10
  9. MikeRepairs

    MikeRepairs MDL Novice

    Mar 4, 2011
    3
    2
    0
    I just tested the 7601usbfix.exe on a 64bit Dell system after installing SP1 and it works.
    I did have to reboot twice before all 3 files were recognized as fully replaced.
     
  10. Squall-Leonhart

    Squall-Leonhart MDL Member

    Jul 23, 2009
    165
    39
    10
    #70 Squall-Leonhart, Mar 6, 2011
    Last edited: Mar 6, 2011
    i think i know why the drivers are reported wrong by devmgr

    the .sys files have a corresponding .mui file (usbport.sys.mui) which is still SP0 (not updated by SP1).
    these .mui files are loaded along with the actual driver file, and prevents active swapping, and are not updated with SP1 (the file in the actual SP1 repo folder is still based on SP0).
    Since the .mui file overrides the .sys files internal resources, the old version is displayed instead.

    USBEhci.sys does not have an mui file.

    Edit

    Verified this is the case. bthport is also reporting a SP1 version in file properties and SP0 version in devmgr, the mui has not been updated for SP1 and still reads 16385.

    lol, i wonder if downloading and installing the english language pack would do it.....
     
  11. MSOFT

    MSOFT MDL Novice

    Mar 6, 2011
    9
    0
    0
    Just thougt i'd add, I used the sp1 installer and it updated all my usb drivers. (I just checked after reading your post) I suggest people check before they do this.


    :rolleyes:
     
  12. Libra

    Libra MDL Novice

    Mar 1, 2011
    3
    0
    0
    Thank you and Kliu for the 760l usbfix. I just used it and my two old usb files are now current. This is very much appreciated.

    Sincerely,Libra
     
  13. Enigma256

    Enigma256 MDL Senior Member

    Jan 17, 2011
    357
    309
    10
    As noted in the first post, it seems that some hardware configurations are immune to the problem (but since people like you who do have this immunity never say anything useful, like, for example, what chipset their motherboard uses, there's no way to tell what sorts of hardware configurations are immune).

    And as noted on the 7601usbfix tool's webpage, the tool will check your USB file versions, and it will not do anything if it finds that your driver files are already up-to-date. So there's no harm in running it. Of course, you can still manually check yourself if you want, but the worst that can happen is that you spend an extra 30 seconds downloading and running a 6.5KB file and have it tell you that no changes are needed.
     
  14. Reign_Of_Freedom

    Reign_Of_Freedom MDL Expert

    Aug 1, 2009
    1,247
    467
    60
    I would also like to add, if you just recently updated to SP1 and it's still the old version post some basic specs as Enigma suggested.
     
  15. Squall-Leonhart

    Squall-Leonhart MDL Member

    Jul 23, 2009
    165
    39
    10
    does Windows6.1-KB2459268-x64.msu have any impact on this issue?
     
  16. Josh Cell

    Josh Cell MDL Developer

    Jan 8, 2011
    3,515
    7,170
    120
    thanks, the batch solved the problem...
     
    Stop hovering to collapse... Click to collapse... Hover to expand... Click to expand...
  17. kt81

    kt81 MDL Novice

    Jan 11, 2011
    6
    0
    0
    thanks for the simple tool.
    updated to all the 3 USB files to the latest version with it.
    :worthy:
     
  18. James Bond 007

    James Bond 007 MDL Junior Member

    Nov 16, 2010
    62
    32
    0
    Just come across this and thanks for the useful information. I have some questions though.

    I just checked one of my systems running the Simplified Chinese version of Windows 7 x64. SP1 was installed via the file installer downloaded from Microsoft. I did a directory listing of the usb*.sys files in the drivers folder and I saw that apart from the affected files (I did not see a winusb.sys file) there were several more files which are dated July 2009 instead of November 2010.

    So I would like to ask:
    1) Do you or any other people know the list of USB related files that were updated by SP1?
    2) For those files not updated and not mentioned in this thread, is it normal for them not to be updated by SP1?
    3) I am using non-English versions of Windows 7. Can the tool mentioned here find and fix the problem? If not, and if I want to fix it, do I have to use the "Easy but messy" solution?
     
  19. Enigma256

    Enigma256 MDL Senior Member

    Jan 17, 2011
    357
    309
    10
    #79 Enigma256, Mar 8, 2011
    Last edited: Mar 8, 2011
    (OP)
    I assume what you are really trying to ask is, "are there other files affected by this?" And the answer to that is "no". I have done a comparison of an integrated SP1 vs. an exe-updated SP1, and these are the only files affected. There are a lot of USB-related files that are not supposed to be updated (so yes, it's normal for files not mentioned in this thread to have a 2009 date).

    The tool works for all languages, all editions (even 2008 R2) of 6.1.7601.

    (Well, except for Itanium, but do Itanium machines even have USB? :p)

    I have no idea. Someone wanna try it?

    That makes a lot of sense, since the whole point of the MUI is the replace the PE's resources, and that's exactly where the version info is stored. I haven't checked, but I'd expect the language packs to follow the same model as the main system files themselves: they are updated only if there was a change, so I would expect the vast majority of them to remain as 7600.
     
  20. James Bond 007

    James Bond 007 MDL Junior Member

    Nov 16, 2010
    62
    32
    0
    Thank you for your answer.

    One thing I felt I should mention : if you use HAL7600 to activate Windows 7, the build number will revert to 6.1.7600 (even though it still says Service Pack 1) and the tool won't work.