Another quick status update for today:
Tried fiddling with xpad
a little further, no luck, back to WinUSB I guess.
Now...WinUSB is proving to be much more successful! I tweaked the example WinUSB application a little more today and achieved two useful things:
- Successfully queried the device for end-points and was relieved to discover that the two end-points I collected in my USB packet sniffing with DMS were the exact same and only end-points reported by the device. Nothing hiding it seems
- Was able to successfully send the Controller Init/Keepalive packet. This is a small 5-byte packet. Interestingly, according to the
xpad
source these 5 bytes should be0x05 0x20 0x00 0x01 0x00
but based on the packet sniffing for the Atrox what I should be sending is0x05 0x20 0x08 0x01 0x05
. Maybe another difference between the Atrox (and maybe all XBO arcade sticks?) and normal XBO controllers? Time will tell...anyways, I was able to send the latter packet version to the device and keep it alive and connected for a minute (at which point the for-execute-sleep loop in my code ended) which is great!
Overall, I'm really pleased with the quick progress I've made with WinUSB. Many thanks to @nefarius for suggesting the ZaDig + WinUSB route, it's proving very fruitful!