Tue Jun 12 08:15:49 EDT 2012
So on the wire things go wrong after SetAddr. The device does seem to
receive the address.
address @ .
But UADDR isn't correct.
UADDR @ .
That's actually a bug in tethered.ss because the correct value 4D is
visible on the dump:
F60 00 00 00 00 00 00 00 00
F68 08 00 00 9F 04 20 4D 14
So UADDR is set, but device doesn't reply. Maybe it should only be
I see the value of address changes.. Data corruption? Might be the
vector table. Or something more subtle. Do variable addresses clash
when defined in modules? Doesn't seem so..
OK, problem is missing "UIR TRNIF low".
But this probably means there is no transaction.IN handler for the
SETUP packets? I'm confused..
Next error: for the initial addr==0 GetDescriptor there is
SETUP,IN,OUT but for the subsequent GetDescriptor to the new address,
the OUT phase is missing, and DataCenter (Beagle USB sniffer software)
doesn't see it as a GetDescriptor transaction.
Questions: if there is supposed to be an OUT, why isn't this visible
in the sniffer?
Aha, the IN phase in SETUP is DATA0, not DATA1 as in the successful
Correct should be:
Get Device Descriptor:
Looks like I'm just toggling from the Set Address IN reply, but I
EDIT: Refactored a bit, now I get different errors. Stall on OUT
phase of first GetDescriptor call.
0 OUT/DATA0 \ make room for next SETUP request on EP0