Да, похоже setup пакет всегда 8 байт, а далее идет нужное кол-во DATA пакетов.
Припоминаю, что для чтения данных из EP0 после получения Setup нужно было ждать следующего пакета.
1. The Setup Stage is where the request is sent.
2. The optional Data Stage consists of one or multiple IN or OUT transfers.
3. Status Stage reports the status of the overall request
https://www-user.tu-chemnitz.de/~heh...b4.htm#Control
Да, вот сейчас порылся в старом проекте на кипарисе.
После чтения SETUP пакета я читал wLength, потом ждал, пока в EP0 не наберется нужного кол-ва данных, потом считывал их и отправлял Handshake (ACK).
Вот что в мануале на кипарис написано:
The STATUS stage consists of an empty data packet with the opposite direction of the data stage, or
an IN if there was no data stage. This empty data packet gives the device a chance to ACK, NAK, or
STALL the entire CONTROL transfer.
Т.е. ACK надо отправлять не после получения первого пакета Setup, а после получения всего пакета данных, включая пакеты Data!!!