-
Notifications
You must be signed in to change notification settings - Fork 97
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
max_packet_size_ep0 < 32 bytes does not work #344
Comments
The following FaceDancer code can be used to reproduce the bug.
Please note that this FaceDancer pullrequest is required to reproduce the bug The outcome you can see in the analyser is like: |
I forgotten to mention, than when setting |
Hey! Thanks for the report! @Qyriad would you be up for taking a look at this? |
Did some further investigations by now:
|
The Problem is, that the USB_TD_DTD_TOKEN_STATUS_ACTIVE will not be cleared if the I assume this is a bug in the LPC hardware because:
@Qyriad: any idea for a workaround? |
This might be a case for expiring packets before they're marked non-active. They're currently at least expired and cleaned up when the next SETUP comes through; but perhaps there's another condition we could use for expiry? Do we know if the interrupt-on-complete still fires? |
Actually the But I saw that Hope you are OK with that... |
Fixed with #353. |
When simulating a device with a max_packet_size_ep0 of 8 or 16 Bytes (32/64 Bytes work) replying to the 4th request will fail. In fact I do not know if it is definitiely the 4th request, but I did not find any other commonality (like number of transactions or timing).
I tested on Windows where the 3rd request is "GetDescriptor CONFIGURATION" which is processed correctly. The 4th request ("GetDescriptor STRING iSerialNumber") is received correctly and FaceDancer transmits the correct answer via GreatDancerApp.send_on_endpoint().
But the firmware does not transfer the answer (any NAKs are transferred) while
GreatDancerApp.send_on_endpoint()
returns without error.important: To make FaceDancer work with max_packet_size_ep0 < 64 this buggy line has to be fixed to
self.backend.connect(self, self.max_packet_size_ep0)
The text was updated successfully, but these errors were encountered: