Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

8bitdo SN30 Pro+ controller issues on macos #12126

Closed
maia-s opened this issue Jan 29, 2025 · 7 comments
Closed

8bitdo SN30 Pro+ controller issues on macos #12126

maia-s opened this issue Jan 29, 2025 · 7 comments
Assignees
Milestone

Comments

@maia-s
Copy link
Contributor

maia-s commented Jan 29, 2025

I'm using an 8bitdo SN30 Pro+ controller on macos with the testcontroller app. These are all wireless bluetooth mode

In PS4 mode, all the buttons and axes are mapped correctly, but pressing the left trigger rumbles the right side of the controller and vice versa.

2025-01-29 23:06:39.183 testcontroller[1022:10344] +[IMKClient subclass]: chose IMKClient_Modern
2025-01-29 23:06:39.183 testcontroller[1022:10344] +[IMKInputSession subclass]: chose IMKInputSession_Modern
2025-01-29 23:06:50.912 testcontroller[1022:10344] Added HIDAPI device 'PS4 Controller' VID 0x054c, PID 0x05c4, bluetooth 1, version 256, serial E4:17:D8:24:D6:B5, interface -1, interface_class 0, interface_subclass 0, interface_protocol 0, usage page 0x0001, usage 0x0005, path = DevSrvsID:4294973009, driver = SDL_JOYSTICK_HIDAPI_PS4 (ENABLED)
2025-01-29 23:06:50.913 testcontroller[1022:10344] Gamepad 4 added
2025-01-29 23:06:50.913 testcontroller[1022:10344] Opened gamepad PS4 Controller, guid 05008fe54c050000c405000000016800, DevSrvsID:4294973009
2025-01-29 23:06:50.913 testcontroller[1022:10344] Rumble supported
2025-01-29 23:06:50.913 testcontroller[1022:10344] Player index: 0
2025-01-29 23:06:50.913 testcontroller[1022:10344] Enabling accelerometer at 250.00 Hz
2025-01-29 23:06:50.942 testcontroller[1022:10344] Enabling gyro at 250.00 Hz
2025-01-29 23:06:50.942 testcontroller[1022:10344] Mapping: 05008fe54c050000c405000000016800,*,a:b0,b:b1,back:b4,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b5,leftshoulder:b9,leftstick:b7,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a2,righty:a3,start:b6,x:b2,y:b3,touchpad:b11,crc:e58f,platform:macOS,

In 8bitdo mode, there's no rumble and the X/Y and A/B buttons are swapped

2025-01-29 23:18:28.737 testcontroller[1022:10344] Added HIDAPI device '8BitDo SN30 Pro+' VID 0x2dc8, PID 0x6102, bluetooth 1, version 256, serial E4:17:D8:24:0D:6E, interface -1, interface_class 0, interface_subclass 0, interface_protocol 0, usage page 0x0001, usage 0x0005, path = DevSrvsID:4294975033, driver = NONE (DISABLED)
2025-01-29 23:18:28.810 testcontroller[1022:10344] Gamepad 8 added
2025-01-29 23:18:28.810 testcontroller[1022:10344] Opened gamepad 8BitDo SN30 Pro+, guid 0500003eac050000040000003b8a6d04
2025-01-29 23:18:28.810 testcontroller[1022:10344] Player index: 0
2025-01-29 23:18:28.810 testcontroller[1022:10344] Mapping: 0500003eac050000040000003b8a6d04,8BitDo SN30 Pro+,a:b0,b:b1,x:b5,y:b6,back:b4,guide:b2,start:b3,leftstick:b12,rightstick:b15,leftshoulder:b11,rightshoulder:b14,dpup:b10,dpdown:b7,dpleft:b8,dpright:b9,leftx:a0,lefty:a1~,rightx:a2,righty:a3~,lefttrigger:b13,righttrigger:b16,crc:3e00,platform:macOS,

In Switch mode, the left stick starts stuck up/left and the right stick starts stuck down/right. The sticks work after moving them in a circle. Everything's mapped correctly but both triggers rumble on both sides and a bit weaker than in PS4 mode (may be a limitation of this mode?)

2025-01-29 23:24:36.861 testcontroller[1022:10344] Added HIDAPI device 'Nintendo Switch Pro Controller' VID 0x057e, PID 0x2009, bluetooth 1, version 1, serial e4-17-d8-24-29-63, interface -1, interface_class 0, interface_subclass 0, interface_protocol 0, usage page 0x0001, usage 0x0005, path = DevSrvsID:4294975332, driver = SDL_JOYSTICK_HIDAPI_SWITCH (ENABLED)
2025-01-29 23:24:37.387 testcontroller[1022:10344] Gamepad 11 added
2025-01-29 23:24:37.387 testcontroller[1022:10344] Opened gamepad Nintendo Switch Pro Controller, guid 0500d71f7e0500000920000001006803, DevSrvsID:4294975332
2025-01-29 23:24:37.387 testcontroller[1022:10344] Has player LED
2025-01-29 23:24:37.387 testcontroller[1022:10344] Rumble supported
2025-01-29 23:24:37.387 testcontroller[1022:10344] Player index: 0
2025-01-29 23:24:37.387 testcontroller[1022:10344] Enabling accelerometer at 200.00 Hz
2025-01-29 23:24:37.684 testcontroller[1022:10344] Enabling gyro at 200.00 Hz
2025-01-29 23:24:37.684 testcontroller[1022:10344] Mapping: 0500d71f7e0500000920000001006803,*,a:b0,b:b1,back:b4,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b5,leftshoulder:b9,leftstick:b7,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a2,righty:a3,start:b6,x:b2,y:b3,misc1:b11,crc:1fd7,platform:macOS,

In Xbox mode, everything works and is mapped correctly, including rumble

@maia-s maia-s changed the title 8bitdo controller issues on macos 8bitdo SN30 Pro+ controller issues on macos Jan 29, 2025
@maia-s
Copy link
Contributor Author

maia-s commented Jan 29, 2025

Wired mode works almost the same, except the rumble isn't swapped in PS4 mode and the axes don't start stuck in switch mode. In 8bitdo mode A/B and X/Y are still swapped

@maia-s
Copy link
Contributor Author

maia-s commented Jan 29, 2025

The testcontroller app stopped responding after I tested the wired modes

@slouken slouken added this to the 3.2.2 milestone Jan 29, 2025
@maia-s
Copy link
Contributor Author

maia-s commented Jan 29, 2025

Also, the accelerometer and gyro show as available in PS4 mode but stay at 0. They seem to work in Switch mode. According to 8bitdo, only Switch mode has motion controls.

@maia-s
Copy link
Contributor Author

maia-s commented Jan 30, 2025

I made a mapping to fix the swapped face buttons in 8bitdo mode. It's the same mapping for bluetooth and wired.

0500003eac050000040000003b8a6d04,8BitDo SN30 Pro+,crc:3e00,platform:macOS,a:b1,b:b0,back:b4,dpdown:b7,dpleft:b8,dpright:b9,dpup:b10,guide:b2,leftshoulder:b11,leftstick:b12,lefttrigger:b13,leftx:a0,lefty:a1~,rightshoulder:b14,rightstick:b15,righttrigger:b16,rightx:a2,righty:a3~,start:b3,x:b6,y:b5,

I'd make a PR, but I'm not sure how to add this to the gamepad db. All the ids for macos end in 0000, and this one doesn't. It looks different from the other 8bitdo ids in general, too

I don't know how to fix the flipped rumble in PS4 mode.

As a side note, I had to use testcontroller to make this mapping, because Steam says there's no gamepad detected and won't let me map it. (It works in the other modes)

@slouken slouken modified the milestones: 3.2.2, 3.2.4, 3.2.6 Feb 2, 2025
@maia-s
Copy link
Contributor Author

maia-s commented Feb 18, 2025

In switch mode, the accelerometer and gyro inputs appear to be swapped, too

@slouken slouken self-assigned this Feb 22, 2025
@slouken
Copy link
Collaborator

slouken commented Feb 26, 2025

Okay, I took a look at this.

Wired:
Switch mode: It's working fine for me, gyro and accelerometer are correct, I added a fix for stick calibration.
PS4 mode: Everything is mapped correctly and rumble works. The controller doesn't send sensor inputs in PS4 mode.
DInput mode: I added a mapping to fix swapped buttons. The controller doesn't rumble in DInput mode.

Bluetooth:
Switch mode: It's working fine for me, gyro and accelerometer are correct, I added a fix for stick calibration.
PS4 mode: Everything is mapped correctly. The controller doesn't send sensor inputs in PS4 mode. Rumble is swapped as you noted, this appears to be a bug in the controller firmware.
DInput mode: I added a mapping to fix swapped buttons. The controller doesn't rumble in DInput mode.

slouken added a commit to slouken/SDL that referenced this issue Feb 26, 2025
This mapping is for Android mode (Start + B at startup)
Fixes libsdl-org#12126
@slouken
Copy link
Collaborator

slouken commented Feb 26, 2025

With the stick calibration fix and DInput mode mapping, I think we've fixed everything that can be done in SDL.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants