I have two Android smartphones that can provide their internet connection to a computer over USB via the RNDIS (Remote Network Device Interface Specification) protocol. I also have two computers dual-booting Windows 7 Ultimate and some flavor of Linux (one of them has Fedora 17, the other has Ubuntu 12.04).
When I connect either smartphone to either computer and the computer is running Windows, I have to wait about 90 seconds before I can use my internet connection after enabling tethering from the phone.
When I connect either smartphone to either computer and the computer is running Linux, I have to wait about 2.5 seconds before I can use my Internet connection.
My question is, why is there such a ridiculously long delay on Windows?
On Windows, it says "Identifying..." on the adapter for about 60 seconds, then says "Limited Or No Access", then if I keep refreshing my browser, EVENTUALLY it will let me browse. After that it's OK.
On Linux, it connects instantly, just like plugging in an ethernet cable. Boom, done.
I don't think it's hardware related because I have two phones from different manufacturers (Motorola and HTC) running two different versions of Android (2.3.6 and 4.0.4). On the computer side, I have a Lenovo ThinkPad T530 and a hand-made desktop. I've actually tried it on two separate hand-built desktops; one a Nehalem system and one Ivy Bridge. As far as I can tell, they have absolutely nothing to do with one another.
Things I've tried to improve the performance on Windows:
CLEAN install of Windows. Absolutely nothing except base drivers, SP1 and critical updates. No VPN software, no security software, no virtualization software, no custom netfilt drivers whatsoever except those drivers absolutely required to tether to the phone.
Unchecking all but TCP/IPv4 in the network connection properties (so unchecking QoS, Client for Microsoft Networks, Link-Layer Topology, etc.
Setting static IP and static DNS servers.
None of this helps at all. I simply cannot navigate anywhere on the computer until about 90 seconds after enabling tethering on the phone, and the problem ONLY occurs on Windows. On Linux it's fine.
Pretty stumped about this. For what it's worth my RNDIS driver is version 6.1.7600.16385 and the name is "Remote NDIS based Internet Sharing Device" followed usually by a number like #2, #9, etc. I'm using a genuine copy of Windows in all cases and I've tried both an OEM buildout of Windows from Lenovo (on the ThinkPad) as well as a clean Microsoft install from the retail CD on my desktops.
Answer
I was experiencing an issue where a certain game (XCOM 2) would experience 3-5 seconds of freezing followed by about 0.5 seconds of running normally, repeatedly, in a loop, starting at the part where the main menu is doing 3d rendering of the opening scene. The intro videos render fine. Obviously, playing the game at a rate of 0.5 seconds of gameplay every 5 seconds is unplayable.
I eventually narrowed this down to only occur when my USB Verizon Hotspot (Jetpack) was plugged in. So I thought that I could either play XCOM 2 with no Internet, or plug in my Internet and not play XCOM 2. Since this is my primary Internet connection, I had no alternative. Funny that this problem re-emerged years after I asked this question on SU.
Except that the problem was actually due to a driver misconfiguration! USB hotspots (including Android smartphones tethered over USB) expose themselves to the OS through a protocol called Remote NDIS. NDIS has gone through various version releases from Windows XP, Vista, 7, 8, and Windows 10. The biggest NDIS change was from version 5.x to version 6.x.
Somehow, when I plugged in my Jetpack, Windows 10 (64-bit) installed the NDIS version 5.x drivers for my Jetpack, even though the version 6.x drivers are also available to the system. This actually causes a whole host of severe problems with applications such as the built-in Control Panel applet "Network Connections", which takes a very long time to load, but some people never use that app so they'd have no idea that it's a problem. I have never seen this pose a problem to games, though.
The NDIS version 6 drivers have been around since Windows Vista, so it's a real head-scratcher as to why the OS initializes it with NDIS version 5.x instead of 6. However, when following this manual procedure to force it to load the NDIS 6.x driver, my problem with XCOM 2 went away completely. Everything runs great now!
The detailed steps to fix this problem are located here: http://forum.xda-developers.com/android/general/fix-usb-tethering-lags-freezes-windows-t3039183
In short, what you need to do is Update Driver on your Remote NDIS device, then manually pick a driver on your computer, then select the vendor as Microsoft and the driver as "USB RNDIS6". This will update your driver and bump your Internet connection. After that, XCOM 2 will run smoothly.
If the procedure I just described doesn't work, head over to the XDA forums I linked to above and there are some other alternative ways to obtain and install an NDIS 6 version of the Remote NDIS driver.
Kudos to @DenisNikolaenko who posted the solution in January 2015 but I didn't see his comment until just now.
No comments:
Post a Comment