logo       
Bookmark and Share

iPAQ h5555 & USB gadget g_ether: workaround: msg#00016

handhelds.linux.kernel

Subject: iPAQ h5555 & USB gadget g_ether: workaround

Hi all,

I am intentionally cross-posting this because it provides users
with a workaround and the advice from kernel hackers is needed
to fix it properly.

The problem is that with kernel 2.4.19 on iPAQ h5555 (and similar)
USB networking with Windows via the backported USB gadget g_ether
module fails: as far as I know, Windows never sees the device even
though the g_ether module is loaded. The expected behaviour is that
Windows recognizes an NDIS compatible device; this is how it works for
me with my 3970.

The workaround found by Herb Goldman is that after loading the old
usb-eth module once and then switching to g_ether, Windows sees
the iPAQ and networking works. His full report is below,
including a comparison of the kernel log.

I suspect that on iPAQ h5555 the USB gadget code omits some kind
of required hardware initialization which the old USB code does,
but this is pure guesswork. If someone has an idea what the relevant
difference could be, then I offer to investigate by compiling
and testing with my iPAQ 3970 and I suppose Herb would be able to
check whether the changes help with his iPAQ 5555.

-------- Forwarded Message --------
From: Herb Goldman
To:
Patrick Ohly
Subject: Re: IPAQ h5555 & USB

[...]

What I've found is that it's necessary to first load usb-eth, (which autoloads
pxausb_core)
Windows then sees the USB, but only as an unknown USB device.
You then unload usb-eth (pxausb) and Windows sees the unknown USB device go
away.
Then load g_ether (autoloading pxa2xx_udc) and Windows brings the networking
right up.

I was following these instructions, and with the usb-eth pkg uninstalled, was
getting nowhere.
http://www.handhelds.org/moin/moin.cgi/WindowsXpUsbNetworkHowTo
I was then flipping between the usb-eth and g_ether for comparison purposes,
and I stumbled into making it work, and eventually isolated the predictable
behavior.

This is the 'logread' output of cleanly booted functioning system.

For comparison purposes, when usb-eth is not preloaded/unloaded, the lines with
"--" prefixes are missing.
(Also, the line prefixed with the "++" is substituted by this one: Dec 10
18:29:06 h3900 user.debug kernel: udc: udccr
01 = ude)

--Dec 10 18:22:27 h3900 user.warn kernel: soft_connect_hook: enable=0
GPDR=1ebfb GPLR=1c1c89a GAFR=a0000000
--Dec 10 18:22:27 h3900 user.warn kernel: PXA USB Controller Core Initialized
--Dec 10 18:22:27 h3900 user.warn kernel: usbctl: usb-eth registered.
--Dec 10 18:22:27 h3900 user.warn kernel: soft_connect_hook: enable=1
GPDR=1ebff GPLR=1c1c89e GAFR=a0000000
--Dec 10 18:22:27 h3900 user.info kernel: USB Function Ethernet Driver Interface
--Dec 10 18:22:27 h3900 user.debug kernel: usb-eth: suspended.
--Dec 10 18:22:27 h3900 user.warn kernel: usb-eth: device configured, go go go.
--Dec 10 18:22:27 h3900 user.warn kernel: usbep0: setup begin: zero-length OUT?
--Dec 10 18:22:28 h3900 user.notice net.agent[1536]: register event not handled
--Dec 10 18:22:28 h3900 user.warn kernel: usb-eth: device configured, go go go.
--Dec 10 18:22:28 h3900 user.warn kernel: usbep0: setup begin: zero-length OUT?
--Dec 10 18:22:28 h3900 user.warn kernel: usb-eth: device configured, go go go.
--Dec 10 18:22:29 h3900 user.warn kernel: usbep0: setup begin: zero-length OUT?
--Dec 10 18:22:29 h3900 user.debug kernel: usb-eth: suspended.
--Dec 10 18:22:44 h3900 user.warn kernel: soft_connect_hook: enable=0
GPDR=1ebfb GPLR=1c1c89e GAFR=a0000000
--Dec 10 18:22:44 h3900 user.warn kernel: usbctl: usb-eth closed.
--Dec 10 18:22:44 h3900 user.warn kernel: Unloading PXA USB Controller
--Dec 10 18:22:44 h3900 user.warn kernel: soft_connect_hook: enable=0
GPDR=1ebfb GPLR=1c1c89a GAFR=a0000000
--Dec 10 18:22:44 h3900 user.notice net.agent[1826]: unregister event not
handled
Dec 10 18:23:10 h3900 user.info kernel: pxa2xx_udc: version 5-Jan-2004
Dec 10 18:23:10 h3900 user.debug kernel: pxa2xx_udc: IRQ 3 (pio only)
Dec 10 18:23:10 h3900 user.info kernel: usb0: Ethernet Gadget, version: Equinox
2004
Dec 10 18:23:10 h3900 user.info kernel: usb0: using pxa2xx_udc, OUT ep2out-bulk
IN ep1in-bulk STATUS ep6in-bulk
Dec 10 18:23:10 h3900 user.info kernel: usb0: MAC 8e:0a:67:89:bc:ea
Dec 10 18:23:10 h3900 user.info kernel: usb0: HOST MAC 92:69:1c:5e:73:5b
Dec 10 18:23:10 h3900 user.info kernel: usb0: RNDIS ready
Dec 10 18:23:10 h3900 user.debug kernel: udc: registered gadget driver 'ether'
--Dec 10 18:23:10 h3900 user.info kernel: udc: USB reset
Dec 10 18:23:10 h3900 user.info kernel: pxa2xx_udc: can't check host connect
Dec 10 18:23:10 h3900 user.debug kernel: udc: host EP0_IDLE, uicr FF.FE, usir
00.00, ufnr 40.BB
++Dec 10 18:23:10 h3900 user.debug kernel: udc: udccr 03 = uda ude
Dec 10 18:23:10 h3900 user.debug kernel: udc: udccfr 04 = acm
Dec 10 18:23:10 h3900 user.debug kernel: udc: ep0 driver 'ether'
Dec 10 18:23:10 h3900 user.debug kernel: udc: udccs0 EP0_IDLE 00 =
Dec 10 18:23:10 h3900 user.debug kernel: udc: ep0 IN 0/0, OUT 0/0
--Dec 10 18:23:10 h3900 user.info kernel: udc: USB reset
--Dec 10 18:23:10 h3900 user.info kernel: udc: USB reset
--Dec 10 18:23:10 h3900 user.info kernel: usb0: full speed config #2: 100 mA,
Ethernet Gadget, using RNDIS
--Dec 10 18:23:21 h3900 user.debug kernel: usb0: no IPv6 routers present

Let me know if there's anything more I can assist with.


_______________________________________________
The Familiar Linux Distribution
Familiar mailing list
Familiar@xxxxxxxxxxxxx
https://handhelds.org/mailman/listinfo/familiar
irc://irc.freenode.net #familiar



<Prev in Thread] Current Thread [Next in Thread>
Google Custom Search

News | Mail Home | sitemap | FAQ | advertise