Help - Search - Members - Calendar
Full Version: Linux Kernel 2.6.14 Breaks Usbnet Xfer From Zaurus
OESF Forums > General Forums > Desktop Operating Systems Issues > Linux Issues
raybert
Howdy,

I recently discovered that Linux Kernel 2.6.14 breaks usbnet transfers from the Zaurus.

Specifically, I was using 2.6.14-1 from the Fedora Core 4 update server with a C860.

The first problem I noticed was that my connection hung when trying to enter a certain directory using samba (while browsing from my PC). Some directories worked fine and some hung.

I next noticed that certain file transfers would hang, regardless of the protocol (I tried scp, ftp, and samba). Some files transferred just fine, others hung.

I eventually determined that any file with a size >= 1458 bytes would hang. Any file with a size smaller than this transferred just fine.

Additionally, I'm assuming that the directory browsing issue is related to the number of entries in the directory and, therefore, the size of the directory contents transfer.

When I rebooted into kernel 2.6.12, everything worked fine again.

I later determined that kernel 2.6.13 is also fine.

I tried google'ing some kernel activity to try and find the cause and found some interesting stuff but nothing conclusive. I noticed that the kernel guys are still mucking around with usbnet: they've been engaged in a massive refactoring of that module since at least 2.6.11 (which I earlier discovered completely broke connectivity with the C860). I noticed one comment regarding the implementation of some sort of "hard mtu" feature which sounded somewhat suspicious to me. I haven't researched this any further though so it may be a red herring.

The latest stable kernel release is 2.6.14-3 (Fedora's latest is 2.6.14-1) so it's possible it's been fixed in -2 or -3 but I haven't been able to try them and I haven't seen any patch that addresses this issue (but I haven't looked really well yet either). The ChangeLogs for -2 and -3 don't mention anything that sounds related.

So, if you're a Linux & Zaurus user, I would recommend that you avoid 2.6.14 and try later versions with caution.

~ray
Stubear
I've been using 2.6.14 on Gentoo for about 2 weeks now and regularily copy about 500Mb to/from the Z daily using usbnet. I haven't had any problems, but I use scp and ssh rather than samba.

Did yuo roll your own kernel or are you using a stock fedora one? I always roll my own, so maybe the fedora crew left out something that needs to be in there.

Stu
rmrfchik
QUOTE(raybert @ Nov 29 2005, 07:40 PM)
Howdy,

I recently discovered that Linux Kernel 2.6.14 breaks usbnet transfers from the Zaurus.

*

I have the same problem on debian 2.6.14. Damn.
raybert
QUOTE(Stubear @ Nov 29 2005, 09:57 PM)
I've been using 2.6.14 on Gentoo for about 2 weeks now and regularily copy about 500Mb to/from the Z daily using usbnet. I haven't had any problems, but I use scp and ssh rather than samba.

Did yuo roll your own kernel or are you using a stock fedora one? I always roll my own, so maybe the fedora crew left out something that needs to be in there.

Stu
*

Stock FC4 kernel. scp (and ftp) failed for me in addition to samba.

It sounds like debian 2.6.14 has the same problem though. So maybe Gentoo left the offending patch out?

~ray
7_feet_up
The problem lies in the usbnet module. Since kernel 2.6.14 the module is split up in several sub-modules. The module needed to talk to your zaurus is now 'cdc_subset' in stead of 'usbnet'. It works perfectly fine after adjusting this.
Hrw
You have to select one option more to get usbnet working with Zaurus.
CODE
config USB_NET_ZAURUS
       tristate "Sharp Zaurus (stock ROMs) and compatible"
       depends on USB_USBNET
       select USB_NET_CDCETHER
       select CRC32
       default y
       help
         Choose this option to support the usb networking links used by
         Zaurus models like the SL-5000D, SL-5500, SL-5600, A-300, B-500.
         This also supports some related device firmware, as used in some
         PDAs from Olympus and some cell phones from Motorola.

         If you install an alternate image, such as the Linux 2.6 based
         versions of OpenZaurus, you should no longer need to support this
         protocol.  Only the "eth-fd" or "net_fd" drivers in these devices
         really need this non-conformant variant of CDC Ethernet (or in
         some cases CDC MDLM) protocol, not "g_ether".

It's in:
- Device drivers
 - USB support
   - USB Network Adapters
     - Multi-purpose USB Networking Framework
       - Sharp Zaurus (stock ROMs) and compatible
rmrfchik
QUOTE(7_feet_up @ Dec 1 2005, 12:45 AM)
The problem lies in the usbnet module. Since kernel 2.6.14 the module is split up in several sub-modules. The module needed to talk to your zaurus is now 'cdc_subset' in stead of 'usbnet'. It works perfectly fine after adjusting this.
*

I rmmod zaurus, cdc_ether and usbnet and then modprobe cdc_subset. The problem remain.
raybert
QUOTE(7_feet_up @ Nov 30 2005, 04:45 PM)
The problem lies in the usbnet module. Since kernel 2.6.14 the module is split up in several sub-modules. The module needed to talk to your zaurus is now 'cdc_subset' in stead of 'usbnet'. It works perfectly fine after adjusting this.
*

A minor point but: If I'm not mistaken, the usbnet split happened in 2.6.11 or earlier. 2.6.11 completely broke usbnet connectivity with C860s (specifically) as a result of these changes. (This was fixed by 2.6.12.)

~ray
raybert
QUOTE(Hrw @ Dec 1 2005, 06:11 AM)
You have to select one option more to get usbnet working with Zaurus.
*

Fedora has always maintained support for the Zaurus by setting all of the applicable kernel configs, so I'd be surprised if they missed any new ones (although, anything's possible). I'm running 2.6.12 here at work and it's kernel config includes:

CONFIG_USB_ZAURUS=y
CONFIG_USB_CDCETHER=y
CONFIG_USB_USBNET=m

I'll check 2.6.14 later...

~ray
7_feet_up
QUOTE(rmrfchik @ Dec 1 2005, 01:15 PM)
QUOTE(7_feet_up @ Dec 1 2005, 12:45 AM)
The problem lies in the usbnet module. Since kernel 2.6.14 the module is split up in several sub-modules. The module needed to talk to your zaurus is now 'cdc_subset' in stead of 'usbnet'. It works perfectly fine after adjusting this.
*

I rmmod zaurus, cdc_ether and usbnet and then modprobe cdc_subset. The problem remain.
*


Your signature says you use Debian. If you use stock kernels in stead of custom ones, try linux-image-2.6.14-2, since 2.6.14-1 didn't work out of the box.
raybert
As promised, these are the config options in FC4, 2.6.12-1.1637:

CONFIG_USB_USBNET=m
CONFIG_USB_NET_ZAURUS=m
CONFIG_USB_NET_CDCETHER=m

I think that CONFIG_USB_NET_ZAURUS was the one that Hrw was concerned with and it is there.

Since my last post, Fedora has posted an updated release of 2.6.14 (2.6.14-1.1644). The announcement only mentions security updates. I'll install and try it a little later and post my results.

~ray
richb01906
QUOTE(7_feet_up @ Nov 30 2005, 04:45 PM)
The problem lies in the usbnet module. Since kernel 2.6.14 the module is split up in several sub-modules. The module needed to talk to your zaurus is now 'cdc_subset' in stead of 'usbnet'. It works perfectly fine after adjusting this.
*


Hello,

I've tried the module manipulation but my zaurus still stalls on scp. My zaurus module shows its using cdc_ether, from I read here, I need to get it to use cdc_subset? How do I do that? Can someone recommend a build change to "adjust" this?

Thanks,
anunakin
QUOTE(richb01906 @ Dec 19 2005, 08:31 PM)
QUOTE(7_feet_up @ Nov 30 2005, 04:45 PM)
The problem lies in the usbnet module. Since kernel 2.6.14 the module is split up in several sub-modules. The module needed to talk to your zaurus is now 'cdc_subset' in stead of 'usbnet'. It works perfectly fine after adjusting this.
*


Hello,

I've tried the module manipulation but my zaurus still stalls on scp. My zaurus module shows its using cdc_ether, from I read here, I need to get it to use cdc_subset? How do I do that? Can someone recommend a build change to "adjust" this?

Thanks,
*



You need do this:
CODE
$rmmod zaurus cdc_ether usbnet
$modprobe cdc_subset


I using Gentoo 2.6.14 (2.6.14-gentoo-r5) and my copnection stalls too.... and cdc_subset dont works too!
I'm go try 2.6.15
raybert
Hi,

Has anyone managed to find a solution to this?

The suggested "modprobe cdc_subset" solution doesn't work for me. Furthermore, from reading cdc_subset.c, it does not support the non-standard Zaurus framing, therefore it appears to me that it is not intended for the Zaurus and is NOT the solution for Sharp-ROM-based Zauriis (is it perhaps needed for OZ or others who have done away wth Sharp's non-standard implementation?).

I just realized that I forgot to follow-up on my earlier post about testing 2.6.14-1.1644 -- it didn't work. I'm now running 2.6.15-1.1831 and it fails also. I've been avoiding the problem by sticking with the last release that worked (2.6.13-1.1532) but I think I now need to update because of a mouse driver problem, so this issue has now been pushed back to the top of my queue.

I've been google'ing like crazy and I can find plenty of references to the 2.6.14 usbnet work but I can't (so far) find anything that addresses this problem. Someone out there must have solved this, no???

~ray
pgas
try this:

On the Z:
# ifconfig usbd0 mtu 576

(from http://www.oesf.org/forums/index.php?showtopic=15583
according to this http://www.oesf.org/forums/index.php?showtopic=17006
it should be ok)
raybert
pgas,

Thanks for the pointer; I missed those threads. It works for me also.

It's not permanent though. I was able to make it permanent by tweaking some of the /etc/hotplug scripts.

These are the changes I made, in case anyone wants to know:

/etc/hotplug/usbdnet.conf: add the line:
CODE
MTU=576

/etc/hotplug/net.agent: Look for the 'ifconfig' line under the "register)" and "usbd0)" cases (line ~74):
CODE
ifconfig usbd0 $IP netmask $NETMASK

Change to:
CODE
if [ -n "$MTU" ]; then SETMTU="mtu $MTU"; fi
ifconfig usbd0 $IP netmask $NETMASK $SETMTU

If you'd rather just hard-code it, you can just tack "mtu 576" onto the "ifconfig" line in net.agent.

------

This solution begs a couple of questions though:

1. WHY is this needed? The Z has worked fine with its default MTU of 1500 for ages.

2. Will the smaller MTU result in slower transfers?

Perhaps I'll try to dig up the code for the "hard MTU" patch that I wrote about earlier; it seems even more likely to be the culprit now...

~ray
raybert
FYI: The above solution also seems to work if applied on the PC-side. Apparently, the fix works so long as you apply the MTU=576 to either side of the connection.

Those of us running Fedora/Red Hat or distros derived from them probably have a /etc/sysconfig/network-scripts/ifcfg-usb0 script to set-up the Z's usbnet connection. I added MTU=576 to mine (after disabling my edits, described above, from the Z) and transfers don't hang.

This strikes me as a "better" solution. IMO, the problem lies in Linux 2.6.14+ (and sounds like a bug to me) and so the fix should reside there as well.

~ray
hvontres
QUOTE(raybert @ Feb 20 2006, 03:08 PM)
FYI: The above solution also seems to work if applied on the PC-side.  Apparently, the fix works so long as you apply the MTU=576 to either side of the connection.

Those of us running Fedora/Red Hat or distros derived from them probably have a /etc/sysconfig/network-scripts/ifcfg-usb0 script to set-up the Z's usbnet connection.  I added MTU=576 to mine (after disabling my edits, described above, from the Z) and transfers don't hang.

This strikes me as a "better" solution.  IMO, the problem lies in Linux 2.6.14+ (and sounds like a bug to me) and so the fix should reside there as well.

~ray
*


Has anyone heard of a fix for this? I am trying to NAT my Z on FC4 and it seems I also need to set the MTU on my wireless card to 576 to get it to work....sad.gif


Thanks,

Henry
raybert
QUOTE(hvontres @ Mar 29 2006, 11:56 AM)
Has anyone heard of a fix for this? I am trying to NAT my Z on FC4 and it seems I also need to set the MTU on my wireless card to 576 to get it to work....sad.gif

Thanks,

Henry
*

I haven't, but I haven't been looking either. I haven't had a problem since installing the fix and I haven't had time to research it more. I recently upgraded to 2.6.15-1.1833_FC4 with no trouble.

I thought this problem only effected usbnet though; I don't know why your wireless card is effected. (I haven't used mine in a while; perhaps I'll have to check it.)

~ray
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Invision Power Board © 2001-2014 Invision Power Services, Inc.