Tuesday, 7 July 2009

XP slow to boot and cracked sound

I have been having problems with xp being very slow to boot and the sound stuttering for a while. Not being able to find a solution I was doing a reinstallation of XP every few months. Turns out it was a DMA issue.
The solution was to use the quick fix from http://winhlp.com/node/10
I will include a copy of the file in the comments.

Instructions on use:
open notepad, cut and past the selected text. Save as yourfile.vbs making sure you deselect the TXT option and set it to ALL. Run the script and after a while you will get a popup asking you to reboot. Reboot :-)

2 comments:

  1. ' Visual Basic Script program to reset the DMA status of all ATA drives

    ' Copyright © 2006 Hans-Georg Michna

    ' Version 2007-04-04

    ' Works in Windows XP, probably also in Windows 2000 and NT.
    ' Does no harm if Windows version is incompatible.

    If MsgBox("This program will now reset the DMA status of all ATA drives with Windows drivers." _
    & vbNewline & "Windows will redetect the status after the next reboot, therefore this procedure" _
    & vbNewline & "should be harmless.", _
    vbOkCancel, "Program start message") _
    = vbOk Then

    RegPath = "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\{4D36E96A-E325-11CE-BFC1-08002BE10318}\"
    ValueName1Master = "MasterIdDataChecksum"
    ValueName1Slave = "SlaveIdDataChecksum"
    ValueName2Master = "UserMasterDeviceTimingModeAllowed"
    ValueName2Slave = "UserSlaveDeviceTimingModeAllowed"
    ValueName3 = "ResetErrorCountersOnSuccess"
    MessageText = "The following ATA channels have been reset:"
    MessageTextLen0 = Len(MessageText)
    ConsecutiveMisses = 0
    Set WshShell = WScript.CreateObject("WScript.Shell")

    For i = 0 to 999
    RegSubPath = Right("000" & i, 4) & "\"

    ' Master

    Err.Clear
    On Error Resume Next
    WshShell.RegRead RegPath & RegSubPath & ValueName1Master
    errMaster = Err.Number
    On Error Goto 0
    If errMaster = 0 Then
    On Error Resume Next
    WshShell.RegDelete RegPath & RegSubPath & ValueName1Master
    WshShell.RegDelete RegPath & RegSubPath & ValueName2Master
    On Error Goto 0
    MessageText = MessageText & vbNewLine & "Master"
    End If

    ' Slave

    Err.Clear
    On Error Resume Next
    WshShell.RegRead RegPath & RegSubPath & ValueName1Slave
    errSlave = Err.Number
    On Error Goto 0
    If errSlave = 0 Then
    On Error Resume Next
    WshShell.RegDelete RegPath & RegSubPath & ValueName1Slave
    WshShell.RegDelete RegPath & RegSubPath & ValueName2Slave
    On Error Goto 0
    If errMaster = 0 Then
    MessageText = MessageText & " and "
    Else
    MessageText = MessageText & vbNewLine
    End If
    MessageText = MessageText & "Slave"
    End If

    If errMaster = 0 Or errSlave = 0 Then
    On Error Resume Next
    WshShell.RegWrite RegPath & RegSubPath & ValueName3, 1, "REG_DWORD"
    On Error Goto 0
    ChannelName = "unnamed channel " & Left(RegSubPath, 4)
    On Error Resume Next
    ChannelName = WshShell.RegRead(RegPath & RegSubPath & "DriverDesc")
    On Error Goto 0
    MessageText = MessageText & " of " & ChannelName & ";"
    ConsecutiveMisses = 0
    Else
    ConsecutiveMisses = ConsecutiveMisses + 1
    If ConsecutiveMisses >= 32 Then Exit For ' Don't search unnecessarily long.
    End If
    Next ' i

    If Len(MessageText) <= MessageTextLen0 Then
    MessageText = "No resettable ATA channels with Windows drivers found. Nothing changed."
    Else
    MessageText = MessageText & vbNewline _
    & "Please reboot now to reset and redetect the DMA status."
    End If

    MsgBox MessageText, vbOkOnly, "Program finished normally"

    End If ' MsgBox(...) = vbOk

    ' End of Visual Basic Script program

    ReplyDelete
  2. I just found this issue takes place some time after alcohol 120 has been installed!

    My laptop is the HP Pavillion dv8000 with 1 internal HDDs.

    ReplyDelete