Jump to content
LaunchBox Community Forums

Recommended Posts

I'm encountering an issue in Windows 11 using a Dualshock 4 controller via bluetooth (have not tested wired). When opening Big Box, the controller works correctly to navigate initially. However, if the controller has been used by another application Big Box no longer appears to receive any input from it. I can no longer navigate with it, and cannot map the inputs.

Disconnecting and reconnecting the controller resolves the issue, but only until the controller is used in another application. The order does not matter, i.e. if I connect a controller, launch a game in Dolphin, close Dolphin, and open Big Box, the controller does not work; if I connect a controller, open Big Box (controller works), launch a Steam game via Big Box, then close it and return to Big Box, the controller does not work. This issue does not impact any other applications, I can switch between RetroArch, PCSX2, Dolphin, and Steam and they all recognize and use the controller successfully. I haven't noticed any changes in the device description in the device list.

Also, to address some basic things I've already tried:

  • Using a different gamepad: I had access to an old 3rd party USB Xbox360 controller, and it did not experience this issue. However, it's not practical for me to by a full set of new gamepads and configure them for all my other applications (assuming they'd even work)
  • Using another of the same gamepad: This has the exact same issues. Including the same behavior of working until another application uses it. So if the first gamepad stops working, I can connect a second one and use it to launch one game, at which point it will also stop working in Big Box.
  • Toggling controller related settings inside Big Box: I've toggled all three settings (use controllers, use all controllers, problematic controllers) to all of their various options, both before and after the issue arises, with and without restarting Big Box, as well as having two controllers in the non-working state and switching between them as the selected controller (all controllers: off). None of this helps
  • DS4Windows: unfortunately not a good option for me since it breaks controller input for all of my RetroArch cores. RetroArch has an open issue on GitHub about it (#14063), but it doesn't look like it's moving much, although maybe I'll take a swing at it.

After writing all of this, I worry that this should have been a bug ticket rather than a troubleshooting request, but if anyone has ideas I'm happy to give them a shot.

Edited by MrSunshyne
Removing incorrect information from troubleshooting request.
Link to comment
Share on other sites

On further investigation this appears to be a Windows issue, rather than Launch Box specific. After the bug arises no input is detected in the "setup usb game controllers" menu in Windows control panel. Other applications are still able to use the controller, but if Windows has lost track of it that suggest to me that there's a deeper issue at work here.

Link to comment
Share on other sites

Okay, I think I've troubleshot my own issue here, so I'm updating again in case anyone else is encountering it.

The Dualshock 4 controller has two modes when connecting via bluetooth. A basic mode, which it uses by default, and is supported by Windows natively (pretty sure this mode is just dinput), and an enhanced mode that includes access to the gyroscope and other advanced features. The popular controller driver SLD has the capacity to access these enhanced mode features, and many programs that use SDL (or other drivers with full Dualshock 4 support) will switch the controller into enhanced mode. I can confirm Retroarch does this (in the code here), and believe, but have not confirmed, the same behavior in Dolphin, PCSX2, and Steam.

There is an existing feature request https://bitbucket.org/jasondavidcarr/launchbox/issues/7003/better-switch-pro-controller-support to implement SDL2 as the controller driver which would fix this issue (as well as related issues with Switch Pro, Dualsense, and DS5 controllers). If you've encountered a similar issue to this, please go upvote the feature request.

In the meantime I'll see if I can't script something using SDL to run when I exit emulators to grab my PS4 controllers and force them back to dinput mode so big box can use them again. I'll update here if I get it working.

Edited by MrSunshyne
Added details about existing feature request.
  • Like 2
Link to comment
Share on other sites

I also hope this gets seen. No dice on forcing a PS4 or PS5 controller back into dinput mode unfortunately, looks like once they're in enhanced mode the only way to put them back is a reboot. At the very least SDL doesn't support it, and if I'm understanding the docs for the controller correctly, it's impossible, so it looks like the only real fix will be launchbox implementing support.

  • Game On 1
Link to comment
Share on other sites

12 hours ago, MrSunshyne said:

I also hope this gets seen. No dice on forcing a PS4 or PS5 controller back into dinput mode unfortunately, looks like once they're in enhanced mode the only way to put them back is a reboot. At the very least SDL doesn't support it, and if I'm understanding the docs for the controller correctly, it's impossible, so it looks like the only real fix will be launchbox implementing support.

It really seems like a no brainer. I know that Jason working on LB (or is it a team?) is rather limited in how much can be fixed and what can be fixed but it would seem that ensuring controllers work natively without fuss would be a top priority considering the nature of the program. Implementing controller support has been done but they could build upon the "manage controllers" feature, where instead of just adding some information on the type of controller the system uses (joystick, controller etc), we could also associate a physical controller to that system and configure profiles with actual device info so that it would be something that LB would immediately recognize, switch controller profiles and use the chosen input API (Xinput, SDL2, Dinput or even WGinput) that controller works best with, like the Switch Pro, DS4/DUalSense or even the Nintendo Switch Online controllers (which have abysmal support outside of Yuzu, even when ran under SDL2 API). Having something like this would effectively remove the need for DS4Windows (ALL Xinput wrappers technically) as LB would be running in the background, it could be the wrapper itself but only be a wrapper when specifically told to do so, so it would either be a wrapper or run in passthrough mode. Both features exist in the emulation "bubble", like Dolphin has passthrough with the WiiMotes for pure, native WiiMote/Wii Motion+ support, PCSX2 and DuckStation both support DS4 LED passthrough. All of which is SDL2 related, from my understanding. Plus, it would free up resources by eliminating the middle ware Xinput wrappers.

I am not a programmer by any means and I am not saying this like, "all it takes is this", I am more or less spitballing ideas from my understanding of how these middleware apps work along with how emulators work with controller input and fell that it COULD be implemented and doing it under the manage controllers section is the most obvious place and area to build upon.

Edited by LegzRwheelz
Fixing my engrish to talk gooder
Link to comment
Share on other sites

  • 3 months later...

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...