Howdy all.
<boringintroduction>
As you probably haven't noticed, I've been AWOL for the past half-year. No, I didn't perish in 9/11 and yes, I still spread the winmodem gospel. I'm taking a super intensive two-year Software Engineering program at the BC Institute of Technology in Vancouver. It covers programming methods in the major languages, database design, system architecture, OS, the whole shabang. The workload is breathtaking -- easily twice as bad as my undergrad at UBC -- but the material is current and highly practical.
I wanted something that would allow me to branch away from my PC consulting and sales business, and give me the clout to earn a higher salary in a more secure position. I love building and selling fast, stable systems for people, but the profit margin stinks and the only real money comes from network consulting and repair service, which can fluctuate. At least I know that as long as people are still building computers, they'll need somebody to build the software.
That's why you haven't been seeing marathon threads on winmodems, partitioning, SCSI vs IDE, AMD vs Intel, and all the rest of it. But I'm on spring break this week so I thought I'd give AnandTech another whirl for old times' sake. I like the evolution of the forums and I hope everybody appreciates Anand's sincere effort to keep this as open a place as possible. Given its user base and lucrative trading boards, he could have easily slapped a mandatory subscription on us and cashed in. I'm sure the thought occurred to him when banner ad revenues took a nose dive. So let's remember what a great place this is -- the only PC computing forum on the planet that faithfully balances newbie tolerance and geekish enthusiasm.
Here the post might begin to interest you. It's my collected wisdom on helping Windows survive a motherboard upgrade.
</boringintroduction>
Upgradability in PC hardware has become a virtual oxymoron. During the last three generations of CPU design, clock speeds and architecture improved so quickly that, by the time a PC truly needed a processor upgrade, it also needed a new motherboard to run that processor. (And that new motherboard usually necessitated a new type of RAM, perhaps a new power supply, and certainly a new hard drive and video card to ease the new bottlenecks created by the faster processor.)
Motherboards are undoubtedly the most difficult component to upgrade. In the rush to ensure CPU, RAM, and front-side bus compatibility, many users forget the most difficult part of the job: the Windows part. Anyone who's booted up a Windows box for the first time after a motherboard swap knows the pain and tedium it entails -- a long and arduous procession of cheery "Add New Hardware" dialogs for hardware that rarely gets added, a steady stream of blue screens from baffled VXD drivers, and a My Computer that seems to be content to show just your C drive, nothing else. Even though most of your add-in cards remain the same, the new motherboard is bound to assign them slightly different resources (IRQ's, DMA's, etc.) which will confuse Windows and trick it into detecting a bazillion different devices you already had.
A clean wipe of the hard drive and full OS installation with fresh drivers and patches is undoubtedly the best solution. In fact, most competent IT professionals recommend such a procedure at least once a year regardless of upgrades, simply because of the malformed stubs that accumulate in the Windows Registry and the annoying TSR programs that pile up from unintended downloads. But there are times when a complete wipe is not feasible, due to large amounts of sensitive data or lack of original program CD's. In these cases we're made hostage to Windows' atrocious plug and play code.
The holy grail of preparing Windows for a motherboard swap is to expunge any and all information about the PC's current hardware. That means uninstalling drivers, pruning registry entries, unloading VXD's, deleting INF's, and stopping TSR's. You want as close to a clean slate as possible the first time Windows boots and detects the new hardware. It's a big, messy job, and in my experience, it's rarely done without a hitch.
Here are some steps you can take to minimize the madness:
Abstractly, the procedure is:
1) Download (but don't install) the very latest drivers from the manufacturers of your new hardware; prepare the Windows CD.
2) Uninstall your current drivers.
3) Delete registry references to hardware or drivers.
4) Delete remaining driver files.
5) Examine all startup programs (software that loads when Windows loads) and eliminate those related to current hardware.
6) Install the new hardware, reboot, and pray.
Now let's get into the details on each step:
1) Don't even think about physically installing your new stuff until you've downloaded the drivers to your hard drive. In all cases, you should favor the "reference drivers" from the maker of the component's chip-set, as opposed to the custom (read: outdated and buggy) drivers from the manufacturer. This applies to everything: motherboards, video cards, even winmodems (especially winmodems 😉). And please, don't ever, ever, use the drivers that came on the CD. They were outdated before the glue dried on the label.
2) Many major driver packages have a user-friendly uninstallation program, accessible through either a group on the Start Menu, or the Add/Remove Programs section of Control Panel. Uninstall anything related to AGP, IDE, video, sound, or other hardware. Whenever possible, do NOT reboot between uninstallation of each driver. This can cause Windows to redetect and install them again, putting you back where you started.
3) The Windows Registry maintains a putrid, disorganized record of nearly every hardware component currently or formerly installed in your PC. (Studying the Registry leads to one of two logical conclusions: either the Windows programmers were dumber than snot, or Microsoft deliberately complicated the Registry to dissuade competition.)
Your first peek into the Registry's hardware information is through good old Device Manager. This is best used when Windows is booted in Safe Mode (consult the manual on how to do that in your particular version of Windows.) Basically, you want to remove as many devices as possible before the computer hangs up or forces you to reboot. If you are given the option to reboot, never do so until all the devices are removed.
If Windows was a robust operating system, clearing the devices in Device Manager would actually. . . clear the devices! Alas, there is more to do. The Registry keeps your hardware information in a few different places. Luckily, Windows is usually smart enough to rebuild these parts of the Registry if they are removed or corrupted. That is our objective. When Windows rebuilds these sections, it will have a much cleaner slate to detect the new hardware.
The following information is by no means exhaustive or even completely accurate. Microsoft, in their infinite wisdom, publishes no formal documentation of the Registry. What little we know about this tome is gleaned from long hours sifting through its pedantic lines of jumbled spaghetti. If anyone is aware of other "pressure points" in the Registry, please email me, as I'd love to discuss them.
Note: A "key" is registry terminology for a folder that can contain values and other keys. A "value" is a little piece of information in the registry that is given a name and a bit of data.
Start > Run, "regedit", OK.
In Windows 2000/XP:
Change the following values:
In HKEY_LOCAL_MACHINE\SYSTEM\Select, set Current, Default, and LastKnownGood to 1. Set Failed to 0. This tells Windows to only be interested in your #1 control set.
Delete all keys and values UNDERNEATH these keys:
HKEY_LOCAL_MACHINE\SYSTEM\ControlSet002 . . . HKEY_LOCAL_MACHINE\SYSTEM\ControlSet999 (if there). Don't delete ControlSet001.
HKEY_LOCAL_MACHINE\HARDWARE\ACPI\DSDT
HKEY_LOCAL_MACHINE\HARDWARE\ACPI\FACS
HKEY_LOCAL_MACHINE\HARDWARE\ACPI\FADT
HKEY_LOCAL_MACHINE\HARDWARE\ACPI\RSDT
HKEY_LOCAL_MACHINE\HARDWARE\DESCRIPTION\System
HKEY_LOCAL_MACHINE\HARDWARE\DEVICEMAP
HKEY_LOCAL_MACHINE\HARDWARE\RESOURCEMAP\Hardware Abstraction Layer\ACPI Compatible Eisa/Isa HAL
HKEY_LOCAL_MACHINE\HARDWARE\RESOURCEMAP\PnP Manager\PnpManager
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Arbiters
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Biosinfo
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\DeviceClasses
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Network\{4D36E972-E325-11CE-BFC1-08002BE10318}\{CC474C34-503B-400C-B93F-A606B5170ABB}\Connection\PnpInstanceID (set value to zero)
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum
HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\Arbiters
HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\Biosinfo
HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\Class
HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\DeviceClasses
HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\Network\{4D36E972-E325-11CE-BFC1-08002BE10318}\{CC474C34-503B-400C-B93F-A606B5170ABB}\Connection\PnpInstanceID (set value to zero)
HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Enum
In Windows 95/98/ME:
The procedure is similar, but the registry keys are found in different places, and may be consolidated together. Delete all keys and values UNDERNEATH these keys:
HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\VxD
HKEY_LOCAL_MACHINE\Enum
4) Even after removing devices from Device Manager and a thorough hatchet job on the Registry, driver files will remain. Don't worry too much about this as these files are largely disassociated from the operating system now, and they amount to little in terms of storage. There are some, however, that can still haunt you from beyond the grave. These are the files found in the INF folder under your Windows folder.
INF files are like the table of contents for a driver package. They tell Windows what files will be installed, where to reference them in the registry, and what the default device settings should be. They also contain specific PnP vendor ID's that identify exactly which hardware they're intended for. When Windows is "building a driver information database", all it's doing is reading through every INF file in the INF folder. Then, if it detects a PnP device that matches with a known vendor ID in one of the INF's, it installs whatever driver files the INF tells it to.
When you install a new device, its driver's INF file is copied to the INF folder. You want to purge these. Some of the INF's, however, are part of Windows' default device support, and shouldn't be removed.
In Windows 2000/XP, view a list of the INF files sorted by Modified date. The vast majority will have the same date (7-12-1999 or 14-12-2001 for Service Pack 2). Those that do not match these dates are most likely new driver files and therefore safe to delete. Also, everything in the INF\CATALOG folder should die.
In Windows 95/98/ME, it's easy: kill everything in the INF\OTHER. That's where new INF's get dumped.
5) Many drivers install "helpful" applications like status monitors and toolbars that start up along with Windows. Besides being grossly annoying in general, they can also cause problems during a motherboard swap. You should turn off any startup programs related to your current hardware.
In Windows 2000/XP: Start > Run, "regedit", OK. The following keys contain references to startup programs:
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run
HKEY_USERS\.DEFAULT\Software\Microsoft\Windows\CurrentVersion\Run (and any other users under HK_USERS)
Delete any value that looks related to any of your hardware devices. Look for manufacturer names like ATi, VIA, etc.
In Windows 95/98/ME: Start > Run, "msconfig", OK. Click the Startup tab, and un-check any hardware-related startup programs.
6) When first booting after installing your new hardware, the best advice is to "go with the flow". Just sit back and let Windows detect what it wants. You'll get really bored of hitting "Next >" but after about fifteen minutes and three reboots, most of your devices should be detected.
Now it's time to install any drivers Windows missed. The most important are motherboard chipset packages like VIA's 4-in-1, Intel's INF Updater, SiS's AGP drivers, etc. Then video, network, sound, and others, in that general order. Obviously Internet access is an immediate priority for tech support in the event of a problem 😉
Misc. Notes:
- There are rumors of a "sysprep" program from either Microsoft or a third party that is intended to automate some, but not all, of these tasks. I have not been able to locate a copy.
- Reportedly, Windows 2000 Setup can be tricked into doing this stuff for you. The idea is to run Windows Setup from the CD and select "upgrade current version of Windows". Then, wait for the first reboot and turn off the computer. Install your new motherboard and power up. Windows 2000 reportedly detects your hardware from a clean slate. I have not attempted this.
Remember, Windows stinks. And it's all Microsoft's fault. A more robust OS could easily divorce itself from its PC's hardware, and respond maturely to a motherboard swap. Even with all your best efforts, you may be forced to simply give up, back up your data, and wipe your hard drive to start from scratch. Don't see this as a failure, just a learning experience. Keep close watch on your time. If you spend more than three or four hours struggling with Windows, it's time to wipe.
Modus
<boringintroduction>
As you probably haven't noticed, I've been AWOL for the past half-year. No, I didn't perish in 9/11 and yes, I still spread the winmodem gospel. I'm taking a super intensive two-year Software Engineering program at the BC Institute of Technology in Vancouver. It covers programming methods in the major languages, database design, system architecture, OS, the whole shabang. The workload is breathtaking -- easily twice as bad as my undergrad at UBC -- but the material is current and highly practical.
I wanted something that would allow me to branch away from my PC consulting and sales business, and give me the clout to earn a higher salary in a more secure position. I love building and selling fast, stable systems for people, but the profit margin stinks and the only real money comes from network consulting and repair service, which can fluctuate. At least I know that as long as people are still building computers, they'll need somebody to build the software.
That's why you haven't been seeing marathon threads on winmodems, partitioning, SCSI vs IDE, AMD vs Intel, and all the rest of it. But I'm on spring break this week so I thought I'd give AnandTech another whirl for old times' sake. I like the evolution of the forums and I hope everybody appreciates Anand's sincere effort to keep this as open a place as possible. Given its user base and lucrative trading boards, he could have easily slapped a mandatory subscription on us and cashed in. I'm sure the thought occurred to him when banner ad revenues took a nose dive. So let's remember what a great place this is -- the only PC computing forum on the planet that faithfully balances newbie tolerance and geekish enthusiasm.
Here the post might begin to interest you. It's my collected wisdom on helping Windows survive a motherboard upgrade.
</boringintroduction>
Upgradability in PC hardware has become a virtual oxymoron. During the last three generations of CPU design, clock speeds and architecture improved so quickly that, by the time a PC truly needed a processor upgrade, it also needed a new motherboard to run that processor. (And that new motherboard usually necessitated a new type of RAM, perhaps a new power supply, and certainly a new hard drive and video card to ease the new bottlenecks created by the faster processor.)
Motherboards are undoubtedly the most difficult component to upgrade. In the rush to ensure CPU, RAM, and front-side bus compatibility, many users forget the most difficult part of the job: the Windows part. Anyone who's booted up a Windows box for the first time after a motherboard swap knows the pain and tedium it entails -- a long and arduous procession of cheery "Add New Hardware" dialogs for hardware that rarely gets added, a steady stream of blue screens from baffled VXD drivers, and a My Computer that seems to be content to show just your C drive, nothing else. Even though most of your add-in cards remain the same, the new motherboard is bound to assign them slightly different resources (IRQ's, DMA's, etc.) which will confuse Windows and trick it into detecting a bazillion different devices you already had.
A clean wipe of the hard drive and full OS installation with fresh drivers and patches is undoubtedly the best solution. In fact, most competent IT professionals recommend such a procedure at least once a year regardless of upgrades, simply because of the malformed stubs that accumulate in the Windows Registry and the annoying TSR programs that pile up from unintended downloads. But there are times when a complete wipe is not feasible, due to large amounts of sensitive data or lack of original program CD's. In these cases we're made hostage to Windows' atrocious plug and play code.
The holy grail of preparing Windows for a motherboard swap is to expunge any and all information about the PC's current hardware. That means uninstalling drivers, pruning registry entries, unloading VXD's, deleting INF's, and stopping TSR's. You want as close to a clean slate as possible the first time Windows boots and detects the new hardware. It's a big, messy job, and in my experience, it's rarely done without a hitch.
Here are some steps you can take to minimize the madness:
Abstractly, the procedure is:
1) Download (but don't install) the very latest drivers from the manufacturers of your new hardware; prepare the Windows CD.
2) Uninstall your current drivers.
3) Delete registry references to hardware or drivers.
4) Delete remaining driver files.
5) Examine all startup programs (software that loads when Windows loads) and eliminate those related to current hardware.
6) Install the new hardware, reboot, and pray.
Now let's get into the details on each step:
1) Don't even think about physically installing your new stuff until you've downloaded the drivers to your hard drive. In all cases, you should favor the "reference drivers" from the maker of the component's chip-set, as opposed to the custom (read: outdated and buggy) drivers from the manufacturer. This applies to everything: motherboards, video cards, even winmodems (especially winmodems 😉). And please, don't ever, ever, use the drivers that came on the CD. They were outdated before the glue dried on the label.
2) Many major driver packages have a user-friendly uninstallation program, accessible through either a group on the Start Menu, or the Add/Remove Programs section of Control Panel. Uninstall anything related to AGP, IDE, video, sound, or other hardware. Whenever possible, do NOT reboot between uninstallation of each driver. This can cause Windows to redetect and install them again, putting you back where you started.
3) The Windows Registry maintains a putrid, disorganized record of nearly every hardware component currently or formerly installed in your PC. (Studying the Registry leads to one of two logical conclusions: either the Windows programmers were dumber than snot, or Microsoft deliberately complicated the Registry to dissuade competition.)
Your first peek into the Registry's hardware information is through good old Device Manager. This is best used when Windows is booted in Safe Mode (consult the manual on how to do that in your particular version of Windows.) Basically, you want to remove as many devices as possible before the computer hangs up or forces you to reboot. If you are given the option to reboot, never do so until all the devices are removed.
If Windows was a robust operating system, clearing the devices in Device Manager would actually. . . clear the devices! Alas, there is more to do. The Registry keeps your hardware information in a few different places. Luckily, Windows is usually smart enough to rebuild these parts of the Registry if they are removed or corrupted. That is our objective. When Windows rebuilds these sections, it will have a much cleaner slate to detect the new hardware.
The following information is by no means exhaustive or even completely accurate. Microsoft, in their infinite wisdom, publishes no formal documentation of the Registry. What little we know about this tome is gleaned from long hours sifting through its pedantic lines of jumbled spaghetti. If anyone is aware of other "pressure points" in the Registry, please email me, as I'd love to discuss them.
Note: A "key" is registry terminology for a folder that can contain values and other keys. A "value" is a little piece of information in the registry that is given a name and a bit of data.
Start > Run, "regedit", OK.
In Windows 2000/XP:
Change the following values:
In HKEY_LOCAL_MACHINE\SYSTEM\Select, set Current, Default, and LastKnownGood to 1. Set Failed to 0. This tells Windows to only be interested in your #1 control set.
Delete all keys and values UNDERNEATH these keys:
HKEY_LOCAL_MACHINE\SYSTEM\ControlSet002 . . . HKEY_LOCAL_MACHINE\SYSTEM\ControlSet999 (if there). Don't delete ControlSet001.
HKEY_LOCAL_MACHINE\HARDWARE\ACPI\DSDT
HKEY_LOCAL_MACHINE\HARDWARE\ACPI\FACS
HKEY_LOCAL_MACHINE\HARDWARE\ACPI\FADT
HKEY_LOCAL_MACHINE\HARDWARE\ACPI\RSDT
HKEY_LOCAL_MACHINE\HARDWARE\DESCRIPTION\System
HKEY_LOCAL_MACHINE\HARDWARE\DEVICEMAP
HKEY_LOCAL_MACHINE\HARDWARE\RESOURCEMAP\Hardware Abstraction Layer\ACPI Compatible Eisa/Isa HAL
HKEY_LOCAL_MACHINE\HARDWARE\RESOURCEMAP\PnP Manager\PnpManager
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Arbiters
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Biosinfo
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\DeviceClasses
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Network\{4D36E972-E325-11CE-BFC1-08002BE10318}\{CC474C34-503B-400C-B93F-A606B5170ABB}\Connection\PnpInstanceID (set value to zero)
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum
HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\Arbiters
HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\Biosinfo
HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\Class
HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\DeviceClasses
HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\Network\{4D36E972-E325-11CE-BFC1-08002BE10318}\{CC474C34-503B-400C-B93F-A606B5170ABB}\Connection\PnpInstanceID (set value to zero)
HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Enum
In Windows 95/98/ME:
The procedure is similar, but the registry keys are found in different places, and may be consolidated together. Delete all keys and values UNDERNEATH these keys:
HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\VxD
HKEY_LOCAL_MACHINE\Enum
4) Even after removing devices from Device Manager and a thorough hatchet job on the Registry, driver files will remain. Don't worry too much about this as these files are largely disassociated from the operating system now, and they amount to little in terms of storage. There are some, however, that can still haunt you from beyond the grave. These are the files found in the INF folder under your Windows folder.
INF files are like the table of contents for a driver package. They tell Windows what files will be installed, where to reference them in the registry, and what the default device settings should be. They also contain specific PnP vendor ID's that identify exactly which hardware they're intended for. When Windows is "building a driver information database", all it's doing is reading through every INF file in the INF folder. Then, if it detects a PnP device that matches with a known vendor ID in one of the INF's, it installs whatever driver files the INF tells it to.
When you install a new device, its driver's INF file is copied to the INF folder. You want to purge these. Some of the INF's, however, are part of Windows' default device support, and shouldn't be removed.
In Windows 2000/XP, view a list of the INF files sorted by Modified date. The vast majority will have the same date (7-12-1999 or 14-12-2001 for Service Pack 2). Those that do not match these dates are most likely new driver files and therefore safe to delete. Also, everything in the INF\CATALOG folder should die.
In Windows 95/98/ME, it's easy: kill everything in the INF\OTHER. That's where new INF's get dumped.
5) Many drivers install "helpful" applications like status monitors and toolbars that start up along with Windows. Besides being grossly annoying in general, they can also cause problems during a motherboard swap. You should turn off any startup programs related to your current hardware.
In Windows 2000/XP: Start > Run, "regedit", OK. The following keys contain references to startup programs:
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run
HKEY_USERS\.DEFAULT\Software\Microsoft\Windows\CurrentVersion\Run (and any other users under HK_USERS)
Delete any value that looks related to any of your hardware devices. Look for manufacturer names like ATi, VIA, etc.
In Windows 95/98/ME: Start > Run, "msconfig", OK. Click the Startup tab, and un-check any hardware-related startup programs.
6) When first booting after installing your new hardware, the best advice is to "go with the flow". Just sit back and let Windows detect what it wants. You'll get really bored of hitting "Next >" but after about fifteen minutes and three reboots, most of your devices should be detected.
Now it's time to install any drivers Windows missed. The most important are motherboard chipset packages like VIA's 4-in-1, Intel's INF Updater, SiS's AGP drivers, etc. Then video, network, sound, and others, in that general order. Obviously Internet access is an immediate priority for tech support in the event of a problem 😉
Misc. Notes:
- There are rumors of a "sysprep" program from either Microsoft or a third party that is intended to automate some, but not all, of these tasks. I have not been able to locate a copy.
- Reportedly, Windows 2000 Setup can be tricked into doing this stuff for you. The idea is to run Windows Setup from the CD and select "upgrade current version of Windows". Then, wait for the first reboot and turn off the computer. Install your new motherboard and power up. Windows 2000 reportedly detects your hardware from a clean slate. I have not attempted this.
Remember, Windows stinks. And it's all Microsoft's fault. A more robust OS could easily divorce itself from its PC's hardware, and respond maturely to a motherboard swap. Even with all your best efforts, you may be forced to simply give up, back up your data, and wipe your hard drive to start from scratch. Don't see this as a failure, just a learning experience. Keep close watch on your time. If you spend more than three or four hours struggling with Windows, it's time to wipe.
Modus