Hi Daniel
> Most of your packets are consist of standard MSD query. However, there
> are patterns that I don't recognize. These packets have no CBW/CSW
> signature. Either it's a corrupted command or part of the data from last
> MSD query (but I don't think it is).
>
> down 25.875: 00 00 00 00 7f 20 00 00
> up 25.875: 70 00 02 00 00 00 00 0a
> down 25.891: 00 00 00 00 00 00 00 0a
> up 25.891: 70 00 02 00 00 00 00 0a
> down 25.906: 70 00 02 00 00 00 00 0a
> up 25.906: 70 00 02 00 00 00 00 0a
As you'll see below, these happen quite often. Interesting, this could
be some kind of polling then.
> The only command that's allowed in MSD bulk endpoint is just CBW/CSW.
> Other commands (including MSD class specific command) should be
> delivered through default/control pipe. That is if the device strictly
> following the USB standard (and if my memory about USB standard is still
> intact =D ).
Ok, so I group the commands (by the first 4 bytes):
$ grep -o " 00000000: .. .. .. .." usbsnoop.log | sort | uniq -c
280 00000000: 00 00 00 00
132 00000000: 00 80 00 00
1 00000000: 04 03 09 04
2 00000000: 09 02 20 00
1 00000000: 12 01 00 02
1 00000000: 1c 03 32 00
4 00000000: 30 00 38 00
4 00000000: 40 a4 55 80
1436 00000000: 55 53 42 43
714 00000000: 55 53 42 53
176 00000000: 70 00 02 00
4 00000000: 70 00 05 00
1 00000000: 80 06 00 01
2 00000000: 80 06 00 02
2 00000000: 80 06 00 03
2 00000000: 80 06 05 03
4 00000000: 81 07 b9 b7
1 00000000: a1 fe 00 00
If I understand corrrectly I can now rule out all of the "55 53 42 43"
and "55 53 42 53" commands as they are CBW/CSW commands for the mass
storage class. I'm getting closer.
This doesn't show which pipe the command was sent through though. So I
try to figure out what pipes are being used:
$ grep PipeHandle usbsnoop.log | sort | uniq -c
1 Interface[0]: Pipes[0] : PipeHandle = 0x822d380c
1 Interface[0]: Pipes[1] : PipeHandle = 0x822d382c
1 Interface: Pipes[0] : PipeHandle = 0x82289974
1 Interface: Pipes[1] : PipeHandle = 0x82289994
64 PipeHandle = 82289974 [endpoint 0x00000081]
2716 PipeHandle = 82289974 [endpoint 0x00000081]
1428 PipeHandle = 82289994 [endpoint 0x00000002]
8 PipeHandle = 823a0cb0
$ grep -n "PipeHandle = 823a0cb0" usbsnoop.log
25: PipeHandle = 823a0cb0
48: PipeHandle = 823a0cb0
70: PipeHandle = 823a0cb0
93: PipeHandle = 823a0cb0
115: PipeHandle = 823a0cb0
137: PipeHandle = 823a0cb0
159: PipeHandle = 823a0cb0
276: PipeHandle = 823a0cb0
$ wc -l usbsnoop.log
45558 usbsnoop.log
As you can see, the control pipe (endpoint 0) is only used 8 times in
the very beginning. The whole log used here covers about 14s of
communication between host and device. The last command through the
control pipe happens ~400ms after plugging in the device.
Thanks for your valuable input so far and let me know if you recognize
anything interesting in the posted output.
Thanks a lot,
Chris
--
echo mailto: NOSPAM !#$.'<*>'|sed 's. ..'|tr "<*> !#:2" o...@fr33z3
--
To unsubscribe from this list: send an email with
"unsubscribe kernelnewbies" to [email protected]
Please read the FAQ at http://kernelnewbies.org/FAQ