USB2: umass not detected correctly, axe not transmitting
Hiroharu Tamaru
tamaru at myn.rcast.u-tokyo.ac.jp
Tue Feb 10 23:41:08 PST 2009
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 '?').
2) If I boot from the internal ad0, and plug in this stick it gets detected:
ugen3.2: <JetFlash> at usbus3
umass0: <JetFlash Mass Storage Device, class 0/0, rev 2.00/1.00, addr 2> on usbus3
umass0: SCSI over Bulk-Only; quirks = 0x0100
umass0:0:0:-1: Attached to scbus0
(probe0:umass-sim0:0:0:0): TEST UNIT READY. CDB: 0 0 0 0 0 0
(probe0:umass-sim0:0:0:0): CAM Status: SCSI Status Error
(probe0:umass-sim0:0:0:0): SCSI Status: Check Condition
(probe0:umass-sim0:0:0:0): UNIT ATTENTION asc:28,0
(probe0:umass-sim0:0:0:0): Not ready to ready change, medium may have changed
(probe0:umass-sim0:0:0:0): Retrying Command (per Sense Data)
da0 at umass-sim0 bus 0 target 0 lun 0
da0: <JetFlash Transcend 4GB 8.07> Removable Direct Access SCSI-2 device
da0: 40.000MB/s transfers
da0: 3830MB (7843840 512 byte sectors: 255H 63S/T 488C)
however, it does not give the correct contents when read; it does not
detect the slices and all.
# ls /dev/da0*
/dev/da0
# dd if=/dev/da0 count=1 | hexdump -C
1+0 records in
1+0 records out
00000000 55 53 42 43 24 00 00 00 00 02 00 00 80 00 0a 28 |USBC$..........(|
00000010 00 00 00 00 00 00 00 01 00 00 00 00 00 00 00 c4 |................|
00000020 00 c4 30 37 8a aa 55 00 28 03 4d 00 61 00 73 00 |..07..U.(.M.a.s.|
00000030 73 00 20 00 53 00 74 00 6f 00 72 00 61 00 67 00 |s. .S.t.o.r.a.g.|
00000040 65 00 20 00 44 00 65 00 76 00 69 00 63 00 65 00 |e. .D.e.v.i.c.e.|
00000050 4a 65 74 46 6c 61 73 68 54 72 61 6e 73 63 65 6e |JetFlashTranscen|
00000060 64 20 34 47 42 20 20 20 38 2e 30 31 8a aa 55 00 |d 4GB 8.01..U.|
00000070 00 00 00 00 00 00 00 00 00 00 00 00 00 00 3c c3 |..............<.|
00000080 12 03 38 00 4c 00 4f 00 31 00 4d 00 43 00 42 00 |..8.L.O.1.M.C.B.|
00000090 52 00 3d 00 00 00 00 00 00 00 00 00 00 00 00 00 |R.=.............|
000000a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
*
000000d0 00 00 00 00 68 50 51 49 00 00 00 00 00 00 00 00 |....hPQI........|
000000e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
*
00000160 00 0d 09 51 01 01 21 00 ff ff 01 0d 01 00 18 03 |...Q..!.........|
00000170 08 0c 14 01 01 03 b4 ff 01 00 00 a0 ff 00 07 e7 |................|
00000180 70 54 53 34 47 4a 46 56 33 35 00 00 00 00 00 00 |pTS4GJFV35......|
00000190 ca 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
000001a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
*
512 bytes transferred in 0.000506 secs (1012009 bytes/sec)
00000200
It gives the correct mbr and slice table when the USB1 kernel (GENERIC)
is used, of course.
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
However it cannot transmit packets.
'tcpdump -i ue0 -n' shows traffic, so it can recive packets.
But by watching the wire from another host, no packet leaves this interface.
So, which details should I start reporting with?
Thanks.
Hiroharu
More information about the freebsd-usb
mailing list