Bluetooth controller stops working when a core is started

Hello,

It’s been a while since I’ve used RetroArch on my Android phone (was actually a different phone back then). It used to work fine in combination with my iPega PG-9017 controller. Now, I am having problems as soon as I start a core.

I have debugged RetroArch with gdb in the past and sent a few pull requests to improve support for this controller, but I wanted to know if it’s something others know about before I went down that path.

Here’s what happens.

  1. I start RetroArch after a fresh install, with my controller turned on and paired to my phone.
  2. I press a button on the controller. RetroArch displays that it has detected the controller in yellow text at the bottom, but the buttons don’t do anything yet.
  3. I can then go into the input settings and bind all the buttons. I then save the autoconfig settings (which I could contribute eventually).
  4. The buttons work in the RetroArch menu.
  5. I start a ROM with any core (I’ve tried SNES9x, FCEUmm, PCSX ReARMed, Genesis Plus GX) and the controller buttons stop doing anything. They don’t work in the game, and if I go back to the quick menu, they still don’t work.
  6. Even if I close the game and go back to the main RetroArch menu, the controller buttons still do nothing.
  7. If I kill and restart RetroArch, the controller buttons work again. But they will only work in the menu until I start a game with any core again (loop to 5)

It’s as if the native code portion of RetroArch was borking up the controller setup for the whole app.

Has anyone else seen this? Any workaround?

Thanks in advance.

Are you using any launchers or just retroarch? Try turning off the autoconfig and map you controller using bind all then exit retroarch cleanly using the exit option, open retroarch again and start a game using the option load and detect core.

No.

Same result. Once in the core, controller no longer works. Even if I go into the Quick menu, controller doesn’t work. If I close RetroArch and restart it, controller works again until I start a core.

Have you tried going to the input settings when you load the core and remap the controller again? Do you have per core config enabled?

The controller just seems to stop being recognized at all – if I go to the Quick menu and back into the input settings and do Input Player 1 Bind All, RetroArch does not react to my button presses, so I have to let all the inputs time out.

No, I do not have per core config enabled. The steps I gave in my first post are the only things I do right after a fresh install of RetroArch, everything else is at the default settings.

So what you’re saying is that you do not see this behavior on your side. It may be because of my type of controller or something else, but I’m not doing anything wrong from what I can see. So I’ll debug on my side when I have a chance to find out what’s going on.

Thanks.

I have the same problem with the same controller

Interesting, thanks for letting me know. I have not yet had a chance to get everything set up to debug this issue, but when I get to it I’ll let you know what I find.

Does the same for me on a wireless xbox 360 controller too

I am having this same problem and noticed the responses here stopped. Was a fix ever found?

Hi Flinky, unfortunately on my side I tried a few times to get set up to debug the issue but didn’t succeed. I think at the time RetroArch only compiled correctly on Linux and I could not connect to my phone through USB in a Linux VritualBox VM… And I didn’t feel like going through the trouble of setting up dual boot so I could boot into Linux natively. I don’t know if anything has changed, I might retry eventually… Or I might give up on this controller and try another one.

Sorry.

Sorry for reviving this topic, I am desperately in need of corroboration for a possible workaround for people facing this exact same issue. If you’re still interested in looking into this issue, please try this: https://forums.libretro.com/t/controller-works-in-menu-stops-working-after-loading-game/26099/6

Let me know if it works for you.

Hi ner0. You’re right, the workaround you mentioned in that thread works for me too! That’s pretty weird. As I said before, I’d like to debug RetroArch and find out what’s going on so we don’t need to do this… But at least now we have a workaround. Thanks!

I’m glad it works for you too, also thanks for the quick feedback. First thing we can already rule out is Bluetooth having any influence or a specific manufacturer, idk if hardware-wise there is anything in common, my gamepad is a cheap Chinese clone of the Genesis controller, apparently the manufacturer uses the same board for a few other clones.

I was thinking of looking into the code myself, but I’m not an experienced coder, unfamiliar with RetroArch inner workings, the problem seems that it could be pretty hard to track down, and it is particular to Android - a platform I’ve never developed for before. Anyway, yesterday I also opened an issue on GitHub and reported this workaround alongside, something which might help narrow down the issue if an experienced dev really dives into it (https://github.com/libretro/RetroArch/issues/10047).

While I’m at it, might as well give a shout to @renejr902, @Spec-Chum, @Finky, who seemed to be having the same issue (at least one with a different controller).

Bump. I use a PS3 encoder board (Xin Mo) and have the same issue. The forementioned ‘workaround’ does not work.

@bietekwiet If you find the time, please leave a comment on the Github issue I opened, it is more likely to attract the devs attention there: https://github.com/libretro/RetroArch/issues/10047

Done! I posted in the Github thread. I hope it helps. I am really happy it is all working now without issue. Can anyone else reproduce the workaround? Otherwise we might be talking different issues here…

I was already suspecting that this wasn’t the same issue from the inconsistency you described across cores/games. It clearly is not the same issue, but glad you got it sorted and reported your workaround.