Closed M4rkoV2 closed 7 months ago
For controllers that are not supported and that I don't have in my invetory is:
(details here: https://bit.ly/bluepad32-help )
For this particular case, the cost of the controller + shipping is $6 (US dollars). If you are Ok with it, let me know and I'll send you my paypal account.
I'm ok with it. Send me paypal.
Is it possible to Serial Print raw info of the button?
Paypal: https://www.paypal.com/paypalme/RicardoQuesada
From Arduino IDE, you cannot print the raw packet.
But if you use "Arduino + ESP-IDF" you can add a printf_hexdump(report, report_len);
somewhere here to see the raw data:
https://github.com/ricardoquesada/bluepad32/blob/main/src/components/bluepad32/parser/uni_hid_parser.c#L14
Controller should arrive in ~2 weeks.
What's interesting is that this device reports itself as a keyboard... wondering if Bluepad32 should honor that and treat it as keyboard, or as a gamepad.
Since it has a sort of Dpad, I'd guess that Bluepad32 should override that and treat it as gamepad.
Events generated by
array up:
02 07 06 70 03 F4 03 01 00
Keyboard: page: 0x000d, usage: 0x0042, value=0x1
Keyboard: page: 0x000d, usage: 0x0032, value=0x1
Keyboard: page: 0x000d, usage: 0x0051, value=0x6
Keyboard: page: 0x0001, usage: 0x0030, value=0x370
Keyboard: page: 0x0001, usage: 0x0031, value=0x3f4
Keyboard: page: 0x000d, usage: 0x0054, value=0x1
02 07 06 70 03 4C 04 01 00
Keyboard: page: 0x000d, usage: 0x0042, value=0x1
Keyboard: page: 0x000d, usage: 0x0032, value=0x1
Keyboard: page: 0x000d, usage: 0x0051, value=0x6
Keyboard: page: 0x0001, usage: 0x0030, value=0x370
Keyboard: page: 0x0001, usage: 0x0031, value=0x44c
Keyboard: page: 0x000d, usage: 0x0054, value=0x1
02 07 06 70 03 78 05 01 00
Keyboard: page: 0x000d, usage: 0x0042, value=0x1
Keyboard: page: 0x000d, usage: 0x0032, value=0x1
Keyboard: page: 0x000d, usage: 0x0051, value=0x6
Keyboard: page: 0x0001, usage: 0x0030, value=0x370
Keyboard: page: 0x0001, usage: 0x0031, value=0x578
Keyboard: page: 0x000d, usage: 0x0054, value=0x1
02 07 06 70 03 A4 06 01 00
Keyboard: page: 0x000d, usage: 0x0042, value=0x1
Keyboard: page: 0x000d, usage: 0x0032, value=0x1
Keyboard: page: 0x000d, usage: 0x0051, value=0x6
Keyboard: page: 0x0001, usage: 0x0030, value=0x370
Keyboard: page: 0x0001, usage: 0x0031, value=0x6a4
Keyboard: page: 0x000d, usage: 0x0054, value=0x1
02 07 06 70 03 D0 07 01 00
Keyboard: page: 0x000d, usage: 0x0042, value=0x1
Keyboard: page: 0x000d, usage: 0x0032, value=0x1
Keyboard: page: 0x000d, usage: 0x0051, value=0x6
Keyboard: page: 0x0001, usage: 0x0030, value=0x370
Keyboard: page: 0x0001, usage: 0x0031, value=0x7d0
Keyboard: page: 0x000d, usage: 0x0054, value=0x1
02 07 06 70 03 FC 08 01 00
Keyboard: page: 0x000d, usage: 0x0042, value=0x1
Keyboard: page: 0x000d, usage: 0x0032, value=0x1
Keyboard: page: 0x000d, usage: 0x0051, value=0x6
Keyboard: page: 0x0001, usage: 0x0030, value=0x370
Keyboard: page: 0x0001, usage: 0x0031, value=0x8fc
Keyboard: page: 0x000d, usage: 0x0054, value=0x1
02 07 06 70 03 28 0A 01 00
Keyboard: page: 0x000d, usage: 0x0042, value=0x1
Keyboard: page: 0x000d, usage: 0x0032, value=0x1
Keyboard: page: 0x000d, usage: 0x0051, value=0x6
Keyboard: page: 0x0001, usage: 0x0030, value=0x370
Keyboard: page: 0x0001, usage: 0x0031, value=0xa28
Keyboard: page: 0x000d, usage: 0x0054, value=0x1
02 07 06 70 03 54 0B 01 00
Keyboard: page: 0x000d, usage: 0x0042, value=0x1
Keyboard: page: 0x000d, usage: 0x0032, value=0x1
Keyboard: page: 0x000d, usage: 0x0051, value=0x6
Keyboard: page: 0x0001, usage: 0x0030, value=0x370
Keyboard: page: 0x0001, usage: 0x0031, value=0xb54
Keyboard: page: 0x000d, usage: 0x0054, value=0x1
02 07 06 70 03 80 0C 01 00
Keyboard: page: 0x000d, usage: 0x0042, value=0x1
Keyboard: page: 0x000d, usage: 0x0032, value=0x1
Keyboard: page: 0x000d, usage: 0x0051, value=0x6
Keyboard: page: 0x0001, usage: 0x0030, value=0x370
Keyboard: page: 0x0001, usage: 0x0031, value=0xc80
Keyboard: page: 0x000d, usage: 0x0054, value=0x1
02 00 06 70 03 AC 0D 00 00
Keyboard: page: 0x000d, usage: 0x0042, value=0x0
Keyboard: page: 0x000d, usage: 0x0032, value=0x0
Keyboard: page: 0x000d, usage: 0x0051, value=0x6
Keyboard: page: 0x0001, usage: 0x0030, value=0x370
Keyboard: page: 0x0001, usage: 0x0031, value=0xdac
Keyboard: page: 0x000d, usage: 0x0054, value=0x0
Arrow down:
02 07 06 70 03 FC 08 01 00
Keyboard: page: 0x000d, usage: 0x0042, value=0x1
Keyboard: page: 0x000d, usage: 0x0032, value=0x1
Keyboard: page: 0x000d, usage: 0x0051, value=0x6
Keyboard: page: 0x0001, usage: 0x0030, value=0x370
Keyboard: page: 0x0001, usage: 0x0031, value=0x8fc
Keyboard: page: 0x000d, usage: 0x0054, value=0x1
02 07 06 70 03 D0 07 01 00
Keyboard: page: 0x000d, usage: 0x0042, value=0x1
Keyboard: page: 0x000d, usage: 0x0032, value=0x1
Keyboard: page: 0x000d, usage: 0x0051, value=0x6
Keyboard: page: 0x0001, usage: 0x0030, value=0x370
Keyboard: page: 0x0001, usage: 0x0031, value=0x7d0
Keyboard: page: 0x000d, usage: 0x0054, value=0x1
02 07 06 70 03 A4 06 01 00
Keyboard: page: 0x000d, usage: 0x0042, value=0x1
Keyboard: page: 0x000d, usage: 0x0032, value=0x1
Keyboard: page: 0x000d, usage: 0x0051, value=0x6
Keyboard: page: 0x0001, usage: 0x0030, value=0x370
Keyboard: page: 0x0001, usage: 0x0031, value=0x6a4
Keyboard: page: 0x000d, usage: 0x0054, value=0x1
02 07 06 70 03 78 05 01 00
Keyboard: page: 0x000d, usage: 0x0042, value=0x1
Keyboard: page: 0x000d, usage: 0x0032, value=0x1
Keyboard: page: 0x000d, usage: 0x0051, value=0x6
Keyboard: page: 0x0001, usage: 0x0030, value=0x370
Keyboard: page: 0x0001, usage: 0x0031, value=0x578
Keyboard: page: 0x000d, usage: 0x0054, value=0x1
02 07 06 70 03 4C 04 01 00
Keyboard: page: 0x000d, usage: 0x0042, value=0x1
Keyboard: page: 0x000d, usage: 0x0032, value=0x1
Keyboard: page: 0x000d, usage: 0x0051, value=0x6
Keyboard: page: 0x0001, usage: 0x0030, value=0x370
Keyboard: page: 0x0001, usage: 0x0031, value=0x44c
Keyboard: page: 0x000d, usage: 0x0054, value=0x1
02 07 06 70 03 20 03 01 00
Keyboard: page: 0x000d, usage: 0x0042, value=0x1
Keyboard: page: 0x000d, usage: 0x0032, value=0x1
Keyboard: page: 0x000d, usage: 0x0051, value=0x6
Keyboard: page: 0x0001, usage: 0x0030, value=0x370
Keyboard: page: 0x0001, usage: 0x0031, value=0x320
Keyboard: page: 0x000d, usage: 0x0054, value=0x1
02 07 06 70 03 F4 01 01 00
Keyboard: page: 0x000d, usage: 0x0042, value=0x1
Keyboard: page: 0x000d, usage: 0x0032, value=0x1
Keyboard: page: 0x000d, usage: 0x0051, value=0x6
Keyboard: page: 0x0001, usage: 0x0030, value=0x370
Keyboard: page: 0x0001, usage: 0x0031, value=0x1f4
Keyboard: page: 0x000d, usage: 0x0054, value=0x1
02 00 06 70 03 C8 00 00 00
Keyboard: page: 0x000d, usage: 0x0042, value=0x0
Keyboard: page: 0x000d, usage: 0x0032, value=0x0
Keyboard: page: 0x000d, usage: 0x0051, value=0x6
Keyboard: page: 0x0001, usage: 0x0030, value=0x370
Keyboard: page: 0x0001, usage: 0x0031, value=0xc8
Keyboard: page: 0x000d, usage: 0x0054, value=0x0
left:
02 07 04 B4 01 70 0A 01 00
Keyboard: page: 0x000d, usage: 0x0042, value=0x1
Keyboard: page: 0x000d, usage: 0x0032, value=0x1
Keyboard: page: 0x000d, usage: 0x0051, value=0x4
Keyboard: page: 0x0001, usage: 0x0030, value=0x1b4
Keyboard: page: 0x0001, usage: 0x0031, value=0xa70
Keyboard: page: 0x000d, usage: 0x0054, value=0x1
02 07 04 E2 02 70 0A 01 00
Keyboard: page: 0x000d, usage: 0x0042, value=0x1
Keyboard: page: 0x000d, usage: 0x0032, value=0x1
Keyboard: page: 0x000d, usage: 0x0051, value=0x4
Keyboard: page: 0x0001, usage: 0x0030, value=0x2e2
Keyboard: page: 0x0001, usage: 0x0031, value=0xa70
Keyboard: page: 0x000d, usage: 0x0054, value=0x1
02 07 04 0E 03 70 0A 01 00
Keyboard: page: 0x000d, usage: 0x0042, value=0x1
Keyboard: page: 0x000d, usage: 0x0032, value=0x1
Keyboard: page: 0x000d, usage: 0x0051, value=0x4
Keyboard: page: 0x0001, usage: 0x0030, value=0x30e
Keyboard: page: 0x0001, usage: 0x0031, value=0xa70
Keyboard: page: 0x000d, usage: 0x0054, value=0x1
02 07 04 3A 04 70 0A 01 00
Keyboard: page: 0x000d, usage: 0x0042, value=0x1
Keyboard: page: 0x000d, usage: 0x0032, value=0x1
Keyboard: page: 0x000d, usage: 0x0051, value=0x4
Keyboard: page: 0x0001, usage: 0x0030, value=0x43a
Keyboard: page: 0x0001, usage: 0x0031, value=0xa70
Keyboard: page: 0x000d, usage: 0x0054, value=0x1
02 07 04 66 06 70 0A 01 00
Keyboard: page: 0x000d, usage: 0x0042, value=0x1
Keyboard: page: 0x000d, usage: 0x0032, value=0x1
Keyboard: page: 0x000d, usage: 0x0051, value=0x4
Keyboard: page: 0x0001, usage: 0x0030, value=0x666
Keyboard: page: 0x0001, usage: 0x0031, value=0xa70
Keyboard: page: 0x000d, usage: 0x0054, value=0x1
02 07 04 92 08 70 0A 01 00
Keyboard: page: 0x000d, usage: 0x0042, value=0x1
Keyboard: page: 0x000d, usage: 0x0032, value=0x1
Keyboard: page: 0x000d, usage: 0x0051, value=0x4
Keyboard: page: 0x0001, usage: 0x0030, value=0x892
Keyboard: page: 0x0001, usage: 0x0031, value=0xa70
Keyboard: page: 0x000d, usage: 0x0054, value=0x1
02 07 04 BE 09 70 0A 01 00
Keyboard: page: 0x000d, usage: 0x0042, value=0x1
Keyboard: page: 0x000d, usage: 0x0032, value=0x1
Keyboard: page: 0x000d, usage: 0x0051, value=0x4
Keyboard: page: 0x0001, usage: 0x0030, value=0x9be
Keyboard: page: 0x0001, usage: 0x0031, value=0xa70
Keyboard: page: 0x000d, usage: 0x0054, value=0x1
02 07 04 EA 0A 70 0A 01 00
Keyboard: page: 0x000d, usage: 0x0042, value=0x1
Keyboard: page: 0x000d, usage: 0x0032, value=0x1
Keyboard: page: 0x000d, usage: 0x0051, value=0x4
Keyboard: page: 0x0001, usage: 0x0030, value=0xaea
Keyboard: page: 0x0001, usage: 0x0031, value=0xa70
Keyboard: page: 0x000d, usage: 0x0054, value=0x1
02 00 04 16 0A 70 0A 00 00
Keyboard: page: 0x000d, usage: 0x0042, value=0x0
Keyboard: page: 0x000d, usage: 0x0032, value=0x0
Keyboard: page: 0x000d, usage: 0x0051, value=0x4
Keyboard: page: 0x0001, usage: 0x0030, value=0xa16
Keyboard: page: 0x0001, usage: 0x0031, value=0xa70
Keyboard: page: 0x000d, usage: 0x0054, value=0x0
right:
02 07 04 55 06 70 0A 01 00
Keyboard: page: 0x000d, usage: 0x0042, value=0x1
Keyboard: page: 0x000d, usage: 0x0032, value=0x1
Keyboard: page: 0x000d, usage: 0x0051, value=0x4
Keyboard: page: 0x0001, usage: 0x0030, value=0x655
Keyboard: page: 0x0001, usage: 0x0031, value=0xa70
Keyboard: page: 0x000d, usage: 0x0054, value=0x1
02 07 04 6C 05 70 0A 01 00
Keyboard: page: 0x000d, usage: 0x0042, value=0x1
Keyboard: page: 0x000d, usage: 0x0032, value=0x1
Keyboard: page: 0x000d, usage: 0x0051, value=0x4
Keyboard: page: 0x0001, usage: 0x0030, value=0x56c
Keyboard: page: 0x0001, usage: 0x0031, value=0xa70
Keyboard: page: 0x000d, usage: 0x0054, value=0x1
02 07 04 40 04 70 0A 01 00
Keyboard: page: 0x000d, usage: 0x0042, value=0x1
Keyboard: page: 0x000d, usage: 0x0032, value=0x1
Keyboard: page: 0x000d, usage: 0x0051, value=0x4
Keyboard: page: 0x0001, usage: 0x0030, value=0x440
Keyboard: page: 0x0001, usage: 0x0031, value=0xa70
Keyboard: page: 0x000d, usage: 0x0054, value=0x1
02 07 04 14 03 70 0A 01 00
Keyboard: page: 0x000d, usage: 0x0042, value=0x1
Keyboard: page: 0x000d, usage: 0x0032, value=0x1
Keyboard: page: 0x000d, usage: 0x0051, value=0x4
Keyboard: page: 0x0001, usage: 0x0030, value=0x314
Keyboard: page: 0x0001, usage: 0x0031, value=0xa70
Keyboard: page: 0x000d, usage: 0x0054, value=0x1
02 07 04 E8 02 70 0A 01 00
Keyboard: page: 0x000d, usage: 0x0042, value=0x1
Keyboard: page: 0x000d, usage: 0x0032, value=0x1
Keyboard: page: 0x000d, usage: 0x0051, value=0x4
Keyboard: page: 0x0001, usage: 0x0030, value=0x2e8
Keyboard: page: 0x0001, usage: 0x0031, value=0xa70
Keyboard: page: 0x000d, usage: 0x0054, value=0x1
02 07 04 BC 01 70 0A 01 00
Keyboard: page: 0x000d, usage: 0x0042, value=0x1
Keyboard: page: 0x000d, usage: 0x0032, value=0x1
Keyboard: page: 0x000d, usage: 0x0051, value=0x4
Keyboard: page: 0x0001, usage: 0x0030, value=0x1bc
Keyboard: page: 0x0001, usage: 0x0031, value=0xa70
Keyboard: page: 0x000d, usage: 0x0054, value=0x1
02 07 04 79 00 70 0A 01 00
Keyboard: page: 0x000d, usage: 0x0042, value=0x1
Keyboard: page: 0x000d, usage: 0x0032, value=0x1
Keyboard: page: 0x000d, usage: 0x0051, value=0x4
Keyboard: page: 0x0001, usage: 0x0030, value=0x79
Keyboard: page: 0x0001, usage: 0x0031, value=0xa70
Keyboard: page: 0x000d, usage: 0x0054, value=0x1
02 00 04 9C 00 70 0A 00 00
Keyboard: page: 0x000d, usage: 0x0042, value=0x0
Keyboard: page: 0x000d, usage: 0x0032, value=0x0
Keyboard: page: 0x000d, usage: 0x0051, value=0x4
Keyboard: page: 0x0001, usage: 0x0030, value=0x9c
Keyboard: page: 0x0001, usage: 0x0031, value=0xa70
Keyboard: page: 0x000d, usage: 0x0054, value=0x0
middle:
02 07 06 70 03 FC 08 01 00
Keyboard: page: 0x000d, usage: 0x0042, value=0x1
Keyboard: page: 0x000d, usage: 0x0032, value=0x1
Keyboard: page: 0x000d, usage: 0x0051, value=0x6
Keyboard: page: 0x0001, usage: 0x0030, value=0x370
Keyboard: page: 0x0001, usage: 0x0031, value=0x8fc
Keyboard: page: 0x000d, usage: 0x0054, value=0x1
02 00 06 70 03 FC 08 00 00
Keyboard: page: 0x000d, usage: 0x0042, value=0x0
Keyboard: page: 0x000d, usage: 0x0032, value=0x0
Keyboard: page: 0x000d, usage: 0x0051, value=0x6
Keyboard: page: 0x0001, usage: 0x0030, value=0x370
Keyboard: page: 0x0001, usage: 0x0031, value=0x8fc
Keyboard: page: 0x000d, usage: 0x0054, value=0x0
02 00 06 70 03 FC 08 00 00
Keyboard: page: 0x000d, usage: 0x0042, value=0x0
Keyboard: page: 0x000d, usage: 0x0032, value=0x0
Keyboard: page: 0x000d, usage: 0x0051, value=0x6
Keyboard: page: 0x0001, usage: 0x0030, value=0x370
Keyboard: page: 0x0001, usage: 0x0031, value=0x8fc
Keyboard: page: 0x000d, usage: 0x0054, value=0x0
long up:
03 02 00 00
Keyboard: page: 0x000c, usage: 0x00ea, value=0x0
Keyboard: page: 0x000c, usage: 0x00e9, value=0x1
Keyboard: page: 0x000c, usage: 0x0030, value=0x0
Keyboard: page: 0x000c, usage: 0x01ae, value=0x0
Keyboard: page: 0x000c, usage: 0x0223, value=0x0
03 00 00 00
Keyboard: page: 0x000c, usage: 0x00ea, value=0x0
Keyboard: page: 0x000c, usage: 0x00e9, value=0x0
Keyboard: page: 0x000c, usage: 0x0030, value=0x0
Keyboard: page: 0x000c, usage: 0x01ae, value=0x0
Keyboard: page: 0x000c, usage: 0x0223, value=0x0
long down:
03 01 00 00
Keyboard: page: 0x000c, usage: 0x00ea, value=0x1
Keyboard: page: 0x000c, usage: 0x00e9, value=0x0
Keyboard: page: 0x000c, usage: 0x0030, value=0x0
Keyboard: page: 0x000c, usage: 0x01ae, value=0x0
Keyboard: page: 0x000c, usage: 0x0223, value=0x0
03 00 00 00
Keyboard: page: 0x000c, usage: 0x00ea, value=0x0
Keyboard: page: 0x000c, usage: 0x00e9, value=0x0
Keyboard: page: 0x000c, usage: 0x0030, value=0x0
Keyboard: page: 0x000c, usage: 0x01ae, value=0x0
Keyboard: page: 0x000c, usage: 0x0223, value=0x0
long left:
03 10 00 00
Keyboard: page: 0x000c, usage: 0x00ea, value=0x0
Keyboard: page: 0x000c, usage: 0x00e9, value=0x0
Keyboard: page: 0x000c, usage: 0x0030, value=0x0
Keyboard: page: 0x000c, usage: 0x01ae, value=0x0
Keyboard: page: 0x000c, usage: 0x0223, value=0x1
03 00 00 00
Keyboard: page: 0x000c, usage: 0x00ea, value=0x0
Keyboard: page: 0x000c, usage: 0x00e9, value=0x0
Keyboard: page: 0x000c, usage: 0x0030, value=0x0
Keyboard: page: 0x000c, usage: 0x01ae, value=0x0
Keyboard: page: 0x000c, usage: 0x0223, value=0x0
long rigth:
03 04 00 00
Keyboard: page: 0x000c, usage: 0x00ea, value=0x0
Keyboard: page: 0x000c, usage: 0x00e9, value=0x0
Keyboard: page: 0x000c, usage: 0x0030, value=0x1
Keyboard: page: 0x000c, usage: 0x01ae, value=0x0
Keyboard: page: 0x000c, usage: 0x0223, value=0x0
03 00 00 00
Keyboard: page: 0x000c, usage: 0x00ea, value=0x0
Keyboard: page: 0x000c, usage: 0x00e9, value=0x0
Keyboard: page: 0x000c, usage: 0x0030, value=0x0
Keyboard: page: 0x000c, usage: 0x01ae, value=0x0
Keyboard: page: 0x000c, usage: 0x0223, value=0x0
long center:
03 01 00 00
Keyboard: page: 0x000c, usage: 0x00ea, value=0x1
Keyboard: page: 0x000c, usage: 0x00e9, value=0x0
Keyboard: page: 0x000c, usage: 0x0030, value=0x0
Keyboard: page: 0x000c, usage: 0x01ae, value=0x0
Keyboard: page: 0x000c, usage: 0x0223, value=0x0
03 00 00 00
Keyboard: page: 0x000c, usage: 0x00ea, value=0x0
Keyboard: page: 0x000c, usage: 0x00e9, value=0x0
Keyboard: page: 0x000c, usage: 0x0030, value=0x0
Keyboard: page: 0x000c, usage: 0x01ae, value=0x0
Keyboard: page: 0x000c, usage: 0x0223, value=0x0
"long center" and "long down" appear to be the same.
Each button generates a lot of events since it is simulating a mouse movement... at least that was my impression of connecting it to an Android phone
Fixed.
The JX-05 controller is not a good controller to control generic devices. It injects multiple packets per button to simulate mouse events on Android (iOS too I guess).
So, it does NOT translate ok as a regular d-pad.
That being said, since the JX-05 impersonates itself as a keyboard, I'm converting the "mouse" packets into cursor key events.
So:
also, since it injects multiple packets per button, latency is not that great.
In any case, support for it is complete, even though I wouldn't recommend using this controller... works for very basic use cases, and that's it.
Thank you. Do I need to update Arduino library for this to work for me? because i did it and I still only get "idx=0" event
@M4rkoV2 you should be able to see the new events with latest arduino... but remember it is recognized as a keyboard.
Your code should be here: https://github.com/ricardoquesada/esp-idf-arduino-bluepad32-template/blob/main/main/sketch.cpp#L100
I guess I need to add code that shows how to parse it when it is a keyboard
@M4rkoV2 actually the example already has some code that shows how to use it. See:
https://github.com/ricardoquesada/esp-idf-arduino-bluepad32-template/blob/main/main/sketch.cpp#L176
The controller emits spacebar, and arrows.
I have THIS bluetooth remote controller with 5 buttons that I would like connect with bluepad32.
I was able to connect it fast, but output is same (idx=0) for all keys. Can support for this controller be added?