In my Raspberry Pi 3 setup, all (buttons and thumbsticks) work correctly in:
- Retropie 4.3
- recalbox v4.0.0-beta5
X, O and Square buttons do not register button presses in:
- Retropie 4.4+
- recalbox 6.1.1+ (and probably older versions)
This is the adapter I’m using:
-=============================
Mcbazel PlayStation 2 Controller to USB Adapter for PC or Playstation 3 Converter Cable for Sony DualShock PS2 PS3 Controllers (NOT compatible with Dancing Mat Guitar Hero)
When working properly, the USB adapter shows up as:
Joystick Name: 'Sony PLAYSTATION(R)3 Controller' Joystick GUID: 030000004c0500006802000011010000
Where broken, the sdl2-jstest output shows only 13 (0-12) button codes; the GUID also changes slightly (more below).
recalbox 6.1.1 output:
-=============================
sdl2-jstest -l
Found 1 joystick(s)Joystick Name: ‘Sony PLAYSTATION(R)3 Controller’
Joystick Path: ‘/dev/input/event1’
Joystick GUID: 030000004c0500006802000011810000
Joystick Number: 0
Number of Axes: 6
Number of Buttons: 13
Number of Hats: 0
Number of Balls: 0
GameController:
Name: ‘PS3 Controller’
Mapping: ‘030000004c0500006802000011810000,PS3 Controller,a:b0,b:b1,back:b8,dpdown:b14,dpleft:b15,dpright:b16,dpup:b13,guide:b10,leftshoulder:b4,leftstick:b11,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b12,righttrigger:a5,rightx:a3,righty:a4,start:b9,x:b3,y:b2,’
Axis code 0: 0
Axis code 1: 1
Axis code 2: 2
Axis code 3: 3
Axis code 4: 4
Axis code 5: 5
Button code 0: 307
Button code 1: 310
Button code 2: 311
Button code 3: 312
Button code 4: 313
Button code 5: 314
Button code 6: 315
Button code 7: 317
Button code 8: 318
Button code 9: 544
Button code 10: 545
Button code 11: 546
Button code 12: 547
And when I run “sdl2-jstest -t 0”, the three mentioned buttons do not show any input when pressed, but if I press another button like the right trigger, I see this message:
“INFO: The key you just pressed is not recognized by SDL. To help get this fixed, please report this to the SDL forums/mailing list https://discourse.libsdl.org/ EVDEV KeyCode 313”
However, in recalbox 7.1.0, I do not see the “not recognized” message, yet the three buttons still do nothing.
Compare to working recalbox v4 output:
-=============================
sdl2-jstest -l
Found 1 joystick(s)Joystick Name: ‘Sony PLAYSTATION(R)3 Controller’
Joystick Path: ‘/dev/input/event0’
Joystick GUID: 030000004c0500006802000011010000
Joystick Number: 0
Number of Axes: 4
Number of Buttons: 19
Number of Hats: 0
Number of Balls: 0
GameController:
Name: ‘PS3 Controller’
Mapping: ‘030000004c0500006802000011010000,PS3 Controller,a:b14,b:b13,back:b0,dpdown:b6,dpleft:b7,dpright:b5,dpup:b4,guide:b16,leftshoulder:b10,leftstick:b1,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b11,rightstick:b2,righttrigger:b9,rightx:a2,righty:a3,start:b3,x:b15,y:b12,’
Axis code 0: 0
Axis code 1: 1
Axis code 2: 2
Axis code 3: 5
Button code 0: 288
Button code 1: 289
Button code 2: 290
Button code 3: 291
Button code 4: 292
Button code 5: 293
Button code 6: 294
Button code 7: 295
Button code 8: 296
Button code 9: 297
Button code 10: 298
Button code 11: 299
Button code 12: 300
Button code 13: 301
Button code 14: 302
Button code 15: 303
Button code 16: 704
Button code 17: 705
Button code 18: 706
Both the number of axes and buttons in the above two outputs differ. I also don’t understand why any PS[1,2,3] (even non dual shock) gamepad would ever report less than 14 total buttons.
SDL2 inferred version info (can’t figure out how to list the SDL2 versions explicitly):
-==================================
Broken in Retropie 4.4. From the release notes:
Version 4.4: (April 14, 2018)
SDL2 - updated to 2.0.8
Version 4.3
(No SDL changes mentioned but at least 2.0.5, inferred from the 4.2 notes below)
Version 4.2: (March 19, 2017)
SDL2 updated to 2.0.5.
-Our patched SDL2 is now used on the PC version of RetroPie, which should resolve an issue with ps3 controller mapping.
Recalbox 4.0.0 beta 5:
(Used SDL2 2.0.3 or lower, inferred from the 4.1.0 notes below)
[4.1.0] - 2017-10-13 (Closest match I can find in release notes)
-bumped SDL to 2.0.4
I can see the Mapping GUIDs are different (off by one digit) as well as the button order, but I don’t know how that works:
-==================================
Working GUID (…1181…):
Mapping: ‘030000004c0500006802000011810000,PS3 Controller,a:b0,b:b1,back:b8,dpdown:b14,dpleft:b15,dpright:b16,dpup:b13,guide:b10,leftshoulder:b4,leftstick:b11,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b12,righttrigger:a5,rightx:a3,righty:a4,start:b9,x:b3,y:b2,’
Broken GUID (…1101…):
Mapping: ‘030000004c0500006802000011010000,PS3 Controller,a:b14,b:b13,back:b0,dpdown:b6,dpleft:b7,dpright:b5,dpup:b4,guide:b16,leftshoulder:b10,leftstick:b1,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b11,rightstick:b2,righttrigger:b9,rightx:a2,righty:a3,start:b3,x:b15,y:b12,’
I’m willing to do more testing to help figure out how to fix.