In the above post you mentioned the following:
"I noticed that before re-enumeration, the FX2 sets EP1 OUT as having a max packet size of 512."
- This should not be the case. The EP1 endpoint is a 64 byte endpoint.
So your descriptor of the EP1 endpoint should be as follows:
;; Endpoint Descriptor
db DSCR_ENDPNT_LEN ;; Descriptor length
db DSCR_ENDPNT ;; Descriptor type
db 01H ;; Endpoint number, and direction
db ET_BULK ;; Endpoint type
db 40H ;; Maximun packet size (LSB)
db 00H ;; Max packect size (MSB)
db 00H ;; Polling interval
Notice above that Max packet Size is 0x0040H
So, please make sure that the MaxPacket size is reported correctly as 64 and not as 512
Let me know if it is already done this way.