{BT Openworld UserGroup FAQ}

An independent FAQ supporting users of the BT Openworld ADSL service

My PC hangs during startup, every 4th (or n-th - it varies) time I start up. Can I fix it?

Graeme Macfarlane

(This is the "Win98 Registry Corruption" bug in the ADSL modem driver software).


Introduction...

The cause of this problem is registry corruption, apparently introduced by the SpeedTouch USB ADSL modem drivers.

For unknown reasons, not all PCs are affected. Many PCs are affected by the registry corruption but appear to tolerate it without further side-effects. Some PCs tolerate it for a short time, but crash on startup when it gets too bad. For some PCs, this is as frequent as every 3-4 reboots.

  • This answer refers to the Alcatel USB SpeedTouch ADSL modem, drivers versions AC02 1.2.2 and 1.3.1 and is specific to Windows98 Second Edition and Windows ME.
  • Possibly, WindowsNT and Windows 2Kmay also be affected, but I haven't checked.
  • The problem has been reported to support@BTopenworld.com, who have assigned it fault ref no 5515706
  • The problem has also been reported direct to adsl.info@alcatel.co.uk, who have acknowledged the fault.

Although discovered in the v1.2.2 drivers, this problem was NOT fixed in v1.3. Alcatel have told me that the problem will be addressed in v1.3.4, which they expect to release around the end of March 2001.

I'm happy to answer questions about all this - you can eMail me at gmacfarlane@bcs.org.uk; I'll gladly try to help where I can, but please understand I can't commit to a rapid response.


Symptoms described in detail...

  1. PC hangs (crashes, and ceases operation) during startup.
  2. Rebooting then invites you to continue in "Safe Mode".
  3. If you then open the control panel "network" applet and remove the "Alcatel SpeedTouch™ USB ADSL PPPoA" network adapter, and reboot, Plug-n-play will reinstall the SpeedTouch USB adapter using s/w already on your hard disk. Your system may then reboot again; startup will be a little slow as the new s/w reconfigures, but then all seems to work OK... for a while.
  4. Some time later (typically 3-4 reboots, perhaps longer), the problem will reappear. You can recover from it in the same way, but it will come back again, regular as clockwork, every 3-4 reboots (the actual number varies depending on your PC).

It is possible that your PC suffers from this fault even if it does not "hang" during startup. Your registry may be corrupted, but in some cases this seems to be tolerated. Your PC may continue working as normal, or you may have other synptoms. You may therefore not even be aware of this problem.

If your PC is behaving oddly, it is probably worth reading the rest of this note and then inspecting your PC to see if the problem is present and at least eliminating this as a possible cause. But, if you are not experiencing further problems, it may not be appropriate to apply my workaround. I'll leave the wisdom of messing with your registry un-necessarily as a matter for your own judgement.

The problem is that the SpeedTouch drivers append new values to the following registry key each time they start up:

      HKEY_LOCAL_MACHINE\Enum\ALCACR\guid\0000\HardwareID
      

This builds into a list of values, which gets longer each time your PC starts up. Sooner or later, it reaches a maximum size, and this causes some PCs to fall over during startup. Other PCs seem to reach a maximum length in this registry key, and then don't append any further entries.

My PC falls over after 4 extra entries on the end of the list. I have received eMail from one chap whose PC had stopped appending at 20 entries, but was otherwise OK. If he removed a couple of entries from the end of the list, his PC tacked new ones on the end during each reboot, until it got back to 20 again. The record is held by someone who reduced the size of his registry file by 6Mb by applying the workaround described below!

Here is an extract from a ".reg" file which I exported from my registry

      [HKEY_LOCAL_MACHINE\Enum\ALCACR\guid\0000]
      "HardwareID"="ALCACR\\{C93AEC0C-808A-11D3-9CE8-0060088D7801},ALCACR\\GUID,
         ALCACR\\{C93AEC0C-808A-11D3-9CE8-0060088D7801},ALCACR\\{C93AEC0C-808A-11D3-9CE8-0060088D7801},
         ALCACR\\{C93AEC0C-808A-11D3-9CE8-0060088D7801}" 
      

Everything after the first list item ("ALCACR\\GUID" onwards) seems to be surplus to requirements.

The single value for "HardwareID" has been turned into an unexpectedly long list of values. Each time your PC starts up, it tacks another entry onto the end of the list. Sooner or later, your PC can't take it any more, and dies. The workaround (its not really a "fix") just sets the list back to a single value, so that it doesn't hurt so much when a new entry gets tacked on the end.

Note:
When I first documented this problem, I thought that the "ALCACR\\GUID" item was required, so that the corrected registry key looked like this:
"HardwareID"="ALCACR\\{C93AEC0C-808A-11D3-9CE8-0060088D7801},ALCACR\\GUID"
Since then, I have discovered that the "ALCACR\\GUID" item appears not to be required, so I have altered the workaround to correct this registry key to a single item, rather than a list of two items. I don't have much evidence whether this is in any sense "better" than the original workaround, but it feels like it is more "accurate", and seems to make more sense given the name of the key ("HardwareID"), which suggests that a single value is expected.
- Graeme Macfarlane, 4-Feb-01


The Workaround...

There is a simple workaround: THIS IS NOT A "FIX", just a workaround. When new drivers which fix this are released, you should remove this workaround.

This is not a warranted solution; you mess with your registry at your own peril.

The workaround creates a shortcut in your "Startup" folder which will slam a correction into your registry every time the PC starts up. When your PC reboots next time, the registry key won't already be "too" long, and it will manage to start up OK. Sure, the drivers will tack another bogus entry onto the end of the list, but that will be overwritten again when the shortcut in your "startup" folder runs.

Not everyone is familiar with the registry editor, so here are more detailed instructions for how to inspect the damaged registry key, how to create the "repair" file, and how to set up the shortcut in your Startup folder:

  1. Start...run...regedit
  2. Click on the "+" sign to the left of the HKEY_LOCAL_MACHINE folder in the left-hand frame of the window
  3. Click on the "+" sign to the left of the ENUM folder in the left-hand frame of the window
  4. Click on the "+" sign to the left of the ALCACR folder in the left-hand frame of the window
  5. Click on the "+" sign to the left of the "guid" folder in the left-hand frame of the window
  6. Click on the folder 0000 (the folder itself, not the "+" sign which expands it. The key which interests us is "HardwareID" in the right-hand pane of the window.
  7. From the drop-down menu at the top of the window, select Registry... Export Registry File... Make sure the "Export range" is set to "Selected Branch" (radio button), and type in a suitable file name. For example, see attached screenshot:

    {Image Specprob4fig1.gif}

  8. Click the "Save" button then get out of the registry editor; close this window without changing anything.
  9. Now you can use Notepad to look at the file that you just created. If you open it with Notepad, the contents will look something like this (but probably not exactly the same):
          REGEDIT4
          [HKEY_LOCAL_MACHINE\Enum\ALCACR\guid\0000]
          "CRLowerDeviceId"="USB\\VID_06B9&PID_4061\\0090D00C4D48"
          "CRUpperDeviceId"="ALCACR\\guid\\0000"
          "DeviceDesc"="Alcatel SpeedTouch(tm) USB ADSL PPPoA"
          "CRGuid"="{C93AEC0C-808A-11d3-9CE8-0060088D7801}"
          "Capabilities"=hex:14,00,00,00
          "HardwareID"="ALCACR\\{C93AEC0C-808A-11D3-9CE8-0060088D7801},ALCACR\\GUID,
             ALCACR\\{C93AEC0C-808A-11D3-9CE8-0060088D7801},ALCACR\\{C93AEC0C-808A-11D3-9CE8-0060088D7801},
             ALCACR\\{C93AEC0C-808A-11D3-9CE8-0060088D7801},"
          "ClassGUID"="{4d36e972-e325-11ce-bfc1-08002be10318}"
          "Class"="Net"
          "Driver"="Net\\0004"
          "CompatibleIDs"="ALCACR\\{c93aec0c-808a-11d3-9CE8-0060088D7801}"
          "Mfg"="Alcatel"
          "ConfigFlags"=hex:10,00,00,00
          
          [HKEY_LOCAL_MACHINE\Enum\ALCACR\guid\0000\LogConfig]
          "0000"=hex:00,04,00,00,00,30,00,00,00,00,00,00
          
          [HKEY_LOCAL_MACHINE\Enum\ALCACR\guid\0000\Bindings]
          "NDISWAN\\0002"=""
          
  10. Now, delete stuff so until it ends up looking like the example below. The text on the "HardwareID" line will probably be slightly different to my example, and (if you are suffering the problems I describe), will be a list of several values. If its not, stop right now, because you are not suffering from the same problem... Assuming it is, delete the "ALCACR\\GUID" item and all the surplus others, and don't lose the closing quotation marks. You should end up with something like this:
          REGEDIT4
          [HKEY_LOCAL_MACHINE\Enum\ALCACR\guid\0000]
          "HardwareID"="ALCACR\\{C93AEC0C-808A-11D3-9CE8-0060088D7801}"
          
  11. This is, I think, the correct value for this registry key. Save this file and exit from Notepad. Although I can't be absolutely certain, I think the "magic numbers" between the {brackets} are the same for everyone. If yours matches the example above, I have already prepared a registry file called "patch.reg", which you can download by clicking here
  12. Now, create a shortcut in your startup group. Right-click on the "Start" button and choose "explore".
  13. Open the Programs... Startup... folder
  14. Right-click in the folder, and select New... Shortcut...
    Create a new shortcut with a command-line which references the file you created moments ago, thus (in the example below, it is called "c:\patch.reg"):

    {Image Specprob4fig2.gif}

  15. Click "Next", call it whatever you like, and click "Finish".
  16. Close any other windows that happen to be open.

Now, you're all set. If you click on Start...Programs...Startup... you can run this shortcut. It won't appear to do anything, but it will have quickly and silently repaired your registry, ready for the next startup, and from now on it will automatically run every time Windows starts up. If you launch it and it seems not to have done anything, it is safe to launch it a second time (that is, it doesn't matter how many times you click on it).