Please do not post a support request without first reading and following the advice in https://retropie.org.uk/forum/topic/3/read-this-first

My Bluetooth controller works inside the menu, but I have to reconnect it for games



  • I used this tutorial to pair my XBox One controller with RetroPie:

    And it works perfectly fine in the menu. When I start a game(NES, SNES, GB, GBC, GBA, Megadrive) I get the message "100: Xbox Wireless Controller configured in port #0." Despite this, no inputs are registered. I can press any button and see no reaction.

    However, when I turn my controller off and on again, the controller also works inside the game - until I start a new game. Basically, I need to restart my controller for every game. If I use a micro-usb cable, everything works fine without restarting. Does anybody know, how to fix this?

    My Build:
    Raspberry Pi 3B+
    Official Raspberry Pi Power Supply
    RetroPie 4.4
    Built From Pre made SD Image on RetroPie website
    Controller used: XBox One Controller (Wireless)
    Default Emulators

    I have also installed a power button with a LED according to this guide:



  • Ok, I've found another way to "fix" the freezing. While I was in the game I restarted bluetooth with:

    sudo invoke-rc.d bluetooth restart

    After this the controller worked fine again. Is there a way to automatically execute this line after I booted a emulator?


  • Global Moderator



  • @mitu
    Doesn't work unfortunatly. The command is executed before the emulator actually starts. I need it to be executed while the emulator is running. I tried using sleep 10s to delay the bluetooth-restart. However, apparently the emulator waits until the entire script is executed before it starts. Right now, I am trying to use the runcommand-onstart.sh to execute another script asynchronously:

    runcommand-onstart.sh:

    ./bt.sh &
    

    bt.sh:

    sleep 10s
    sudo invoke-rc.d bluetooth restart
    

    When I execute runcommand-onstart.sh from my SSH-client, it executes bt.sh. However, it isn't executed by starting the emulator...



  • @mitu
    I finally got it to work. My runcommand-onstart.sh now looks like this:

    bluetooth()
    {
    sleep 5s
    sudo invoke-rc.d bluetooth restart
    }
    
    bluetooth &
    

    This solution may not be very elegant, but is a good-enough workaround for now. Thank you for your tip on onstart. Without it I wouldn't be able to fix this problem. And as a side effect I have learned something about the shell.



  • I looked at it again, because I was not happy with this solution. Looks like the only thing I had to do, was to reconfigure the controller within RetroArch. Now it works like a charm without this stupid script I wrote. I feel a bit stupid for trying this overcomlicated fix, when the real solution was so simple.



  • @wihaedud

    Hi. What did you reconfigure in RetroArch to solve your XBox One Controller problem? I think I have the same problem.



Contributions to the project are always appreciated, so if you would like to support us with a donation you can do so here.

Hosting provided by Mythic-Beasts. See the Hosting Information page for more information.