Solution: Windows XP SP2 (and lower) problem with USB tethering
This is the product of about 20 hours of accumulated testing and research but I'm going to do my best to keep it brief and leave out all the garbage you don't care about.
If you have Windows XP SP2 (or a lower service pack or no service pack) chances are good that the native USB tethering in Froyo isn't going to work for you (on that machine) without some help.
Initially the problem manifests itself as the XP machine asking for drivers when the Tether option is enabled on the connected phone. The answer to that has been documented (PDF archive) already -- use tetherxp.inf (alternate link) to tell XP how to use the driver files (that it already has) for the tether. The problem is - unless you've installed a device at some point whose drivers included an updated set of Remote NDIS (RNDIS) drivers, this will fail on XP SP2 and lower. It will appear to work up until the end of the driver installation whereupon the New Hardware Wizard will report "The device cannot start. (Code 10)".
The reason SP3 does not have this problem (unless something has overwritten the RNDIS drivers with old ones) is that the drivers that are built into SP3 are updated and support the functionality/device.
The 4 files involved are (note that the first two files start with the letter R followed by the letter N -- but with some fonts it looks like a lower case M):
Windows XP SP2 comes with version 5.1.2600.2180 of these files.
There are three primary ways to fix this -- which you choose depends upon your particular situation. Note that after each method I give you the version number of the files it will install. The version number doesn't really matter -- they all work -- I just give you the version number so you have a way to see if your system has the expected files (if you care).
"Upgrade" your XP to SP3:
I say "upgrade" because if I recall correctly Microsoft made a bunch of changes between SP2 and SP3 that caused many folks problems and were generally not well received. If you don't have an aversion to installing SP3 this should solve the problem and get you a bunch of other hotfixes in the process. If you have already done the tetherxp.inf process (above) and it failed with "device cannot start", you shouldn't have to do anything else after installing SP3 -- it should just work. I have not installed SP3 to test this so that is conjecture based upon my understanding of what's going on here and the other tests I've done.
The above gives you version 5.1.2600.5512 of the RNDIS files.
- OR -
Install Microsoft Hotfix KB959765:
This hotfix is intended to fix a problem that has nothing whatsoever to do with our problem other than that the RNDIS drivers are involved. I hunted high and low for a Microsoft hotfix that replaced only the RNDIS drivers (and nothing else), was compatible with XP SP2, and that contained drivers which were new enough to support the device. This alone took several hours and I was rewarded for my diligence. I wanted an official hotfix so people would have the comfort of it being something from Microsoft rather than just "here, put these files in". Unlike some hotfixes, you have to "request" this one by clicking on the "View and request hotfix downloads" link at the top of this page. You provide your email address and you have the hotfix in your inbox in less than a minute.
In case Microsoft ever stops giving it out, I have also uploaded the file to RapidShare. Since it is an EXE I would expect most folks will want to get it directly from MicroSoft so they can be assured of it's integrity. The file is digitally signed, so you can see that it is a genuine Microsoft file, but if you get it directly from them then there no doubt.
On both machines I installed this on a reboot was required (suggested) by the installer at the end. Also, I looked in the C:\windows\$NtUninstallKB959765$ directory and confirmed that the only files that are replaced are the 4 ".sys" files listed above. Can't get much more targeted than that.
If you've previously done the tetherxp.inf process (above) and it failed with "device cannot start", you shouldn't have to do anything else after installing this hotfix (other than reboot).
This option is the method I ultimately used (after backing out all of the other test methods that I used up to this point) to fix my laptop to be able to tether.
The above gives you version 5.1.2600.3483 of the RNDIS files.
- OR -
Use a Custom Compiled RNDIS Driver Set:
Anthony2oo5 over at xda-developers.com was apparently working on this same problem quite some time back and compiled his own RNDIS drivers for XP from newer code (link1 link2). His drivers do work and do solve the problem, but depending upon what you've already done to your machine along the way, the procedure for implementing them must be followed precisely or it will not work. Also he has only created the rndismpx.sys and usb8023x.sys files and not the rndismp.sys and usb8023.sys files (which are normally the exact same size but have different contents when you do a binary compare). Whether or not having a "matched set" is important I do not know. For those who want to go this route, the procedure below should work for you -- it did for me (although ultimately I backed it out and went with KB959765 once I found it).
- Download Remote_NDIS_based_Internet_Sharing_Device.zip from one of the links above and save to your XP machine.
- Unzip the files somewhere you can find them easily when you need them.
- Attach your phone to your computer. The “Add New Hardware” wizard will start and tell you it is going to help you find software for a “Motorola A855” (in the case of a Droid by Motorola).
- Choose “Install from a list or specific location (Advanced)”.
- On the “Installation Options” screen, choose “Don’t search. I will choose the driver to install.”
- In the “Hardware Type” dialog, it doesn’t really matter what you choose. If “Android Phone” or "Network Adapter" is in the list, then go ahead and choose it. Just to see if it mattered I chose “Batteries” and it still worked just fine. All you want is to get to a “Have Disk” button. Click Next after choosing the type.
- In the “Select a device driver you want to install for this hardware” dialog it should be telling you “(Unable to find any drivers for this device)”. Even if it is telling you it found one, don’t choose it. Just click “Have Disk”.
- In the “Install from Disk” dialog, click “Browse” and browse to the folder where you expanded the Remote_NDIS_based_Internet_Sharing_Device.zip file.
- Choose the “netrndis.inf” file and click “Open”.
- In the “Select a device driver you want to install for this hardware” dialog you should have a single choice – “Remote NDIS based Internet Sharing Device”. Ensure that is selected and click “Next”.
- You will be warned that the software you are installing has not passed Windows Logo testing. Click “Continue Anyway”.
- The “Completing the Found New Hardware Wizard” dialog should appear telling you that it has “finished installing the software for: Remote NDIS based Internet Sharing Device”. If it says it installed software for anything other than that you probably messed up a step. If it does say that, your tether is already active and your computer has probably already picked up an IP address by the time you have finished reading this step.
The above gives you version 6.0.6001.18000 of only rndismpx.sys and usb8023x.sys. I'm sure that version number was the version number of the build that the source was taken from when he compiled them.
That should do it. So much for keeping it brief. If anybody is struggling with this, and the above doesn't fix it - let me know. I did a lot of beating on this and may be able to help.