Ticket #1279 (closed defect: fixed)

Opened 7 years ago

Last modified 6 years ago

RNDIS no longer works with Windows -- regression

Reported by: cwixon@… Owned by: openmoko-kernel@…
Priority: high Milestone:
Component: kernel Version: 2007.2
Severity: normal Keywords:
Cc: buglog@… Blocked By:
Blocking: Estimated Completion (week):
HasPatchForReview: PatchReviewResult:
Reproducible:

Description

The USB RNDIS network connection worked fine with 2.6.22.5, but fails to connect
on 2.6.24. In the Windows XP Device Manager the RNDIS device shows up when the
Neo is plugged in, but the device status message says "This device cannot start
(Code 10)" and the dreaded yellow exclamation point appears on the device entry.

If I recall correctly, this is the same symptom that occurred in older kernel
versions (before 2.6.22), so it's possible this is simply a regression to past
behavior in the kernel. But I can't confirm that, as XP doesn't provide much
information.

It doesn't seem to matter if I ifdown/ifup on the Neo, or reboot the Neo while
connected, or anything along those lines.

I had gotten spoiled being able to scp files to/from my Neo when going between
my home machine (Ubuntu 7.10) and my desktop at work (Windows XP).

The USB net connection still works fine on my Ubuntu system, incidentally. This
appears to be Windows-specific.

Attachments

rndis.patch (390 bytes) - added by mwester@… 6 years ago.
drivers/usb/gadget/ether.c patch to fix RNDIS problem with Windows

Change History

comment:1 Changed 7 years ago by cwixon@…

Additional info: my current kernel version is 2.6.24+svnr4154-r4165-r3

comment:2 Changed 7 years ago by werner@…

Oh dear, a Windows interoperability problem. One quick check, does it help
if you unplug and then reinsert the USB cable ? (Doesn't matter at which
end.)

  • Werner

comment:3 Changed 7 years ago by graeme@…

RNDIS has been broken for PXA for many kernel versions, maybe this breakage
extends to all arms.

comment:4 Changed 7 years ago by yjtmpgk@…

rndismp.sys 5.2.3790.3959 (srv03_sp2_rtm.070216-1710)
usb8023.sys 5.2.3790.3959 (srv03_sp2_rtm.070216-1710)

i try the new version of the Drivers in the Windows XP Home
but it's still not work

comment:5 Changed 7 years ago by cwixon@…

No, unfortunately, plugging/unplugging, rebooting, ifdown/ifup, etc. on the Neo
side don't have any effect.

I can be a bit more precise:

Unplugging the cable makes the RNDIS entry in Windows Device Manager disappear
(as you'd expect), and when you plug it back in, it reappears (but is still
broken). So Windows does SEE it, but it can't make the connection.

But ifdown/ifup does nothing whatsoever, so far as I can tell.

Unplugging the cable and plugging it into a different USB port on the host
causes the device to be enumerated differently, but otherwise no difference
(still broken).

Graeme: I know the PXA 27x RNDIS has been broken with Windows for a long time,
but I recall Richard Purdie had patches to fix that problem (for example, on the
iPAQ hx4700). I can't say whether that (or something similar) is the problem
here, but I CAN say that with the Neo, at least:

Windows RNDIS did *not* work with kernels before 2.6.22

It *did* work on 2.6.22

It's failing again on 2.6.24.

So perhaps there is a patch that fell out at some point going from .22 to .24.
Where in the 2.6.20-21-22 transition it was first added, or what patch it might
be, I can't say.

comment:6 Changed 7 years ago by me@…

Tell windows to reinstall the driver.
It's probably showing up as that yellow interrogation mark...
and if you don't tell it to reinstall the driver it'll always be that way. At
least give windows the opportunity to reparse its drivers list.

Maybe this could help. You could also enable usb debugging (on neo, of course)
and see what's happening.

comment:7 Changed 6 years ago by cwixon@…

Installing and reinstalling the Windows driver doesn't help -- trust me, I have
been down that road *many* times before. I think it's broken.

And it's still broken as of kernel 2.6.24+svnr4194-r4165-r4.

comment:8 Changed 6 years ago by werner@…

Thanks the the plug/unplug testing ! Unfortunately, that's about as far as
my skills for fixing Windows problems go. I hope that someone who is familiar
with this system can help with this issue further.

  • Werner

comment:9 Changed 6 years ago by cwixon@…

I took a quick look at the kernel patches, defconfigs, and bitbake recipes with
respect to UDC and RNDIS in both kernel 2.6.22.5 (which worked) and 2.6.24
(which doesn't.)

Unfortunately I don't see any difference that would account for the problem.
But I'm not a kernel guy, so my analysis was pretty superficial, and I haven't
yet looked at what might have changed in the kernel outside of our patches.

comment:10 Changed 6 years ago by cwixon@…

This bug continues to cause problems for me, and I'm hoping someone can take a
look at it.

I am willing to perform whatever USB debugging is suggested, bearing in mind
that the lack of USB network functionality means I can't easily SSH in, and
would have to use the onscreen keyboard to do the debugging, which in turn is
hampered by #1270.

I could probably set up a BT connection if necessary.

comment:11 Changed 6 years ago by mwester@…

This is a kernel bug affecting all platforms, introduced in some code cleanup in
2.6.23. Patch will be posted as soon as I test it.

Changed 6 years ago by mwester@…

drivers/usb/gadget/ether.c patch to fix RNDIS problem with Windows

comment:12 Changed 6 years ago by andy@…

Nice work finding that out mwester!

I added it to the "andy" and "stable" branches in git.

comment:13 Changed 6 years ago by cwixon@…

Excellent, good to hear. I'll build & test it tonight or this weekend.

comment:14 Changed 6 years ago by cwixon@…

  • Status changed from new to closed
  • Resolution set to fixed

Confirmed WORKING on kernel-2.6.24 - 1:2.6.24+git20080415-r0

Thanks, mwester and andy, for the efforts.

Note: See TracTickets for help on using tickets.