USB2: umass not detected correctly, axe not transmitting

Hiroharu Tamaru tamaru at myn.rcast.u-tokyo.ac.jp
Wed Feb 11 06:19:28 PST 2009


Hi, Hans

I'm back with test results.

At Wed, 11 Feb 2009 09:54:36 +0100, Hans Petter Selasky wrote:
> 
> Hi,
> 
> On Wednesday 11 February 2009, Hiroharu Tamaru wrote:
> > Hi,
> >
> > I have an Atom Z530 semi-embedded system and tried the new USB2 stack.
> > I found some oddities and decided to report here.
> >
> > It is running 8.0-CURRENT as of yesterday, and I have GENERIC and USB2
> > kernels to test with.  I am testing with two usb devices:
> >
> > umass0: <JetFlash Mass Storage Device, class 0/0, rev 2.00/1.00, addr 2> on
> > usbus3 axe0: <ASIX Electronics AX88178, rev 2.00/0.01, addr 3> on usbus3
> >
> > First about the USB memory stick:
> >
> > 1) I setup a bootable USB memory stick, and this system
> >    boots off umass da0 if I have the old USB1 kernel.
> >    However, with USB2 kernel, it does not detect da0 at its final stage,
> >    and fails to find the root filesystem.
> >    I mean that the 'da0 at umass-sim0 bus 0 target 0 lun 0' message is not
> >    shown, and it is not listed in the kernel detected list of disks at
> >    'mountroot>' prompt (shown by typing '?').
> 
> This is a known issue, see:
> 
> http://wiki.freebsd.org/USB

This worked very well.  Thanks.
I assume it will be committed to the tree sometime near
in the future, right?

> > 2) If I boot from the internal ad0, and plug in this stick it gets
> > detected:
> >
> >
> >   however, it does not give the correct contents when read; it does not
> >   detect the slices and all.
> >
> 
> Could you repeat the same "cat" operation with UMASS debugging turned on?
> 
> sysctl hw.usb2.umass.debug=-1

I'm not sure why, but now I cannot reproduce this any more.
The patched (as above) kernel detects da0 correctly,
And the original kernel (that gave that symptom multiple times before
I wrote the original mail) also gives the correct result now..
Strange, but since I'm fine now, I leave it for now.
I will be back with the results if it happens again.
Thanks for the help.

> > Next about the ethernet device:
> >
> >   This device is detected correctly.
> >
> > ugen3.3: <ASIX Electronics> at usbus3
> > axe0: <ASIX Electronics AX88178, rev 2.00/0.01, addr 3> on usbus3
> > axe0: PHYADDR 0xe0:0x18
> > miibus0: <MII bus> on axe0
> > ciphy0: <Cicada VSC8211 10/100/1000TX PHY> PHY 24 on miibus0
> > ciphy0:  10baseT, 10baseT-FDX, 100baseTX, 100baseTX-FDX, 1000baseT,
> > 1000baseT-FDX, auto ue0: <USB Ethernet> on axe0
> > ue0: Ethernet address: 00:90:cc:xx:xx:xx
> > ue0: link state changed to DOWN
> > ue0: link state changed to UP
> >
> > # ifconfg ue0
> > ue0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
> >         ether 00:90:cc:xx:xx:xx
> >         inet 0.0.0.0 netmask 0xff000000 broadcast 255.255.255.255
> >         media: Ethernet autoselect (100baseTX <full-duplex>)
> >         status: active
> 
> Turn on debugging:
> 
> sysctl hw.usb2.axe.debug=15
> 
> And repeat test.

  with hw.usb2.axe.debug=15, I have:

ugen3.3: <ASIX Electronics> at usbus3 (disconnected)
pid 3244 (dhclient), uid 65: exited on signal 11
ugen3.3: <ASIX Electronics> at usbus3
axe0: <ASIX Electronics AX88178, rev 2.00/0.01, addr 3> on usbus3
axe0: PHYADDR 0xe0:0x18
miibus0: <MII bus> on axe0
ciphy0: <Cicada VSC8211 10/100/1000TX PHY> PHY 24 on miibus0
ciphy0:  10baseT, 10baseT-FDX, 100baseTX, 100baseTX-FDX, 1000baseT, 1000baseT-FDX, auto
ue0: <USB Ethernet> on axe0
ue0: Ethernet address: 00:90:cc:f7:bc:2e
ue0: link state changed to DOWN
ue0: link state changed to UP

  and when dhclient runs ifconfig, I get

axe_bulk_read_callback:796: bulk read error, USB_ERR_CANCELLED
axe_bulk_write_callback:823: transfer complete

  and then for every DCHP request packet sent I get

axe_bulk_write_callback:823: transfer complete

  and that's all.

If I manually setup an address and run tcpdump -i ue0 -n,
I can see the traffic on wire as before.
I get no console messages meanwhile.

If I try to ping an address from this machine,
I see arp request on tcpdump result on this machine, but not on the
receiving machine: the out going packet is not on the wire.
I get one of this message for every arp packet sent:

axe_bulk_write_callback:823: transfer complete

If I try to ping this machine from another,
I see arp request and arp reply on the tcpdump on this side,
but I only see arp request on the other side, again.

So everything is consistent that it is receiving packets but not sending.

The hardware is a PLANEX GU-1000T ethernet adapter.

What can I do now?

> --HPS

Hiroharu


More information about the freebsd-usb mailing list