(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...
- PC hangs (crashes, and ceases operation) during startup.
- Rebooting then invites you to continue in "Safe Mode".
- 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.
- 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:
- Start...run...regedit
- Click on the "+" sign to the left of the HKEY_LOCAL_MACHINE folder in
the left-hand frame of the window
- Click on the "+" sign to the left of the ENUM folder in the left-hand
frame of the window
- Click on the "+" sign to the left of the ALCACR folder in the left-hand
frame of the window
- Click on the "+" sign to the left of the "guid" folder in the left-hand
frame of the window
- 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.
- 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:
- Click the "Save" button then get out of the registry editor; close this
window without changing anything.
- 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"=""
- 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}"
- 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
- Now, create a shortcut in your startup group. Right-click on the
"Start" button and choose "explore".
- Open the Programs... Startup... folder
- 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"):
- Click "Next", call it whatever you like, and click "Finish".
- 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).
|