1
Джойстики и прочие манипуляторы / DualShock 3 — заряд только после полной инициализации?
« : 27 Март 2026, 13:26:28 »
Чуть дальше глянул общение на том порту, где заряд не начинается, это тот комп где заряд только с одного порта идет (SPC стоит, Win10).
Здесь уже есть:
PID SETUP
Address=0x04 Endpoint=0x00
DATA0
байты:
0x80 0x06 0x00 0x01 0x00 0x00 0x12 0x00
Это стандартный USB-запрос:
bmRequestType = 0x80
bRequest = 0x06 → GET_DESCRIPTOR
wValue = 0x0100 → Device Descriptor
wIndex = 0x0000
wLength = 0x0012 → 18 байт
То есть хост уже обращается к устройству по адресу 0x04, и enumeration явно зашёл дальше, чем "совсем не стартовал". Дальше ACK, потом IN Address=0x04 Endpoint=0x00 и в ответ: NAK, NAK, NAK
Т.е. хост отправил SETUP stage запроса GET_DESCRIPTOR, устройство этот SETUP приняло (ACK),
а потом хост пытается забрать data stage через IN на EP0. И вот тут устройство вместо данных отвечает NAK. По сути запрос начат, но устройство не отдаёт данные на стадии чтения ответа.
потом в конце записи (вторая картинка) уже STALL, т.е. если NAK это "я сейчас не готов, попробуй позже", то STALL - "этот запрос/стадия для меня некорректна или я не могу её обработать"
Что может отличаться между USB-портами/контроллерами, из-за чего один и тот же DS3 на одном порту успешно проходит control sequence, а на другом уходит в NAK/STALL????
формально устройство определяется в системе в обоих случаях, но до рабочего состояния доходит только на одном порту.
Судя по логам, одного факта enumeration недостаточно — критично именно успешное завершение control-инициализации. Хотелось бы понять, что именно в поведении хоста это определяет.
Здесь уже есть:
PID SETUP
Address=0x04 Endpoint=0x00
DATA0
байты:
0x80 0x06 0x00 0x01 0x00 0x00 0x12 0x00
Это стандартный USB-запрос:
bmRequestType = 0x80
bRequest = 0x06 → GET_DESCRIPTOR
wValue = 0x0100 → Device Descriptor
wIndex = 0x0000
wLength = 0x0012 → 18 байт
То есть хост уже обращается к устройству по адресу 0x04, и enumeration явно зашёл дальше, чем "совсем не стартовал". Дальше ACK, потом IN Address=0x04 Endpoint=0x00 и в ответ: NAK, NAK, NAK
Т.е. хост отправил SETUP stage запроса GET_DESCRIPTOR, устройство этот SETUP приняло (ACK),
а потом хост пытается забрать data stage через IN на EP0. И вот тут устройство вместо данных отвечает NAK. По сути запрос начат, но устройство не отдаёт данные на стадии чтения ответа.
потом в конце записи (вторая картинка) уже STALL, т.е. если NAK это "я сейчас не готов, попробуй позже", то STALL - "этот запрос/стадия для меня некорректна или я не могу её обработать"
Что может отличаться между USB-портами/контроллерами, из-за чего один и тот же DS3 на одном порту успешно проходит control sequence, а на другом уходит в NAK/STALL????
формально устройство определяется в системе в обоих случаях, но до рабочего состояния доходит только на одном порту.
Судя по логам, одного факта enumeration недостаточно — критично именно успешное завершение control-инициализации. Хотелось бы понять, что именно в поведении хоста это определяет.
.