I have a few controllers to play with, many OEM some power A, and have been able to make them all work.
None of them need the init string to send packets, they all do this automatically with my host.
when I send the init
uint8_t init_packet[] = {0x05,0x20,0x00,0x01,0x00};
HID->sendBulk(init_packet, sizeof(init_packet));
many of the controllers turn on the LED. I think the one that does not, is my permanent wired USB controller. For the other controllers they all respond to LED commands
i.e
uint8_t report[7] = {0x0a,0x20,0x04,0x03,0x00,0x09,0x14};//start blink
HID->sendBulk(init_packet, sizeof(init_packet));
and I can do all types of LED configs. but I want to rumble, and I know the motors work because on init, they all do a motor test. but no matter what I try the motors will not activate on commands.
Here is one way I tried it.
uint8_t report[11] = {0};
report[0] =0x09; // header
report[1] =0x00; //
report[2] =0x00; //
report[3] =0x00; // short rumble
report[4] =0x00; // Mode
report[5] =0x04; // motor mask
report[6] =0x00; // L motor
report[7] =0x00; // L motor trigger
report[8] =0x20; // R motor trigger
report[9] =0x00; // R motor
report[10] =0x80; // Duration
HID->sendBulk(report, sizeof(report));
and here is another
uint8_t report[13] = {0};
report[0] =0x09; // header
report[1] =0x00; //
report[2] =counter; // <-- AI suggested this but I tried without as well
report[3] =0x08; // short rumble
report[4] =0x00; // Mode
report[5] =0x0F; // motor mask
report[6] =constLevel;
report[7] =constLevel;
report[8] =constLevel;
report[9] =constLevel;
report[10] =0x80;
report[11] =0;
report[12] =0xeb;
HID->sendBulk(init_packet, sizeof(init_packet));
I'm sure there is something I'm missing but not sure what it could be. I did experiment with motors and masks, but nothing tickles this thing. An yone have a thought?
I have a few controllers to play with, many OEM some power A, and have been able to make them all work.
None of them need the init string to send packets, they all do this automatically with my host.
when I send the init
uint8_t init_packet[] = {0x05,0x20,0x00,0x01,0x00};
HID->sendBulk(init_packet, sizeof(init_packet));
many of the controllers turn on the LED. I think the one that does not, is my permanent wired USB controller. For the other controllers they all respond to LED commands
i.e
uint8_t report[7] = {0x0a,0x20,0x04,0x03,0x00,0x09,0x14};//start blink
HID->sendBulk(init_packet, sizeof(init_packet));
and I can do all types of LED configs. but I want to rumble, and I know the motors work because on init, they all do a motor test. but no matter what I try the motors will not activate on commands.
Here is one way I tried it.
and here is another
I'm sure there is something I'm missing but not sure what it could be. I did experiment with motors and masks, but nothing tickles this thing. An yone have a thought?