PS4 Bluetooth controller issue, yes really :)
I have searched the forums and don't see this actual issue.
So I have had the Retropie up and running with no issues for a bit. I have used a USB wired Xbox 360 controller with no issues and have a Logitech keyboard via a USB fob hooked up as well. I decided I wanted to use my PS4 controllers since they are wireless.
I paired one with the built-in Bluetooth module with no issues. I could move around in EmuStation just fine, all buttons works etc. When I launch any emulator game I have(NES, SNES, MAME, PSX) the controller stops working. Even the 360 Wired controller that is in the other port then does nothing in the game. The game sits there and "runs" but I can't start it or control anything. I can't exit the game, nothing on either controller works at the point. If I go back to command line and do a jstest I can see all buttons activating and the axes change in the test, but again nothing is taking place in the game itself. So I then bought a USB Bluetooth FOB, disabled the onboard bluetooth and paired the PS4 controller again. Again works fine in EmuStation, but same problems as above in any game.
Next, I unpair the device and setup ds4drv, pair the PS4 controller again no issues in EmuStation, but not working in the game.
Looking at configs in /opt/retropie/configs/all/retroarch-joypads they all have button assignments etc. I hope I am just missing something easy and can go back to the onboard BT when someone tells me why this is occurring. :)
Thanks in advance
Pi Model or other hardware: Pi 3
Power Supply used: Cana 2.5 amp
RetroPie Version Used : 4.3
Built From: Retropie official retropie-4.3-rpi2_rpi3.img
USB Devices connected: Xbox 360 Controller and Logitech Keyboard
Controller used: Xbox 360 controller and PS4(I wish)
Emulator: All of them
Just to muddy the water OR maybe add some additional information. I just launched a MAME game with the second wired controller with the PS4 controller connected and everything with the wired controller worked fine, meaning it didn't break the wired controller just by being there and paired.
I just started a view MAME and NES games and suddenly the Select and Start buttons on the PS4 controller work, but no other button or stick does anything. I have made no changes though, but for sure I couldn't insert a coin or start a game with the PS4 controller before. I can do that now, but again no other buttons are working. This makes me think config now, but again the retroarch file looks ok to me.
@jankomatic This looks like a messed up configuration. If you're using the USB connection, then there's no bluetooth/wireless configuration issue, they should just work like regular controllers.
For PS4, there's no need for a ds4drv, I've paired and used it via bluetooth without any extra configuration.
And more info.
I start a MAME game, I hit left trigger on the wired controller to go into the config. I edit controls for This Game. I scroll down to the Player 2 section and hit the button to change the first command, I then hit the proper button on the PS4 controller and it takes the input and is correct. meaning I setup the Dpad with all the right things from the PS4 controller for Player 2(not sure why the PS4 is player two at this point). I return to the game, start a two player game with the start button on the PS4 controller(so we know that button works). First player dies, I start second player and the PS4 still does not control it even though we just set it that way in the settings. The wired controller is still controlling it. This is a lot more good information, IMO, but doesn't help me fix it.
Here is the config:
pi@retropie:/opt/retropie/configs/all/retroarch-joypads $ cat Wireless\ Controller.cfg
input_device = "Wireless Controller"
input_driver = "udev"
input_r_y_plus_axis = "+5"
input_l3_btn = "10"
input_r_x_minus_axis = "-2"
input_l_btn = "4"
input_load_state_btn = "4"
input_start_btn = "9"
input_exit_emulator_btn = "9"
input_l_y_minus_axis = "-1"
input_up_btn = "h0up"
input_r_y_minus_axis = "-5"
input_a_btn = "1"
input_b_btn = "2"
input_reset_btn = "2"
input_enable_hotkey_btn = "13"
input_down_btn = "h0down"
input_l_x_plus_axis = "+0"
input_l_y_plus_axis = "+1"
input_r_btn = "5"
input_save_state_btn = "5"
input_r2_btn = "7"
input_r3_btn = "11"
input_right_btn = "h0right"
input_state_slot_increase_btn = "h0right"
input_x_btn = "0"
input_menu_toggle_btn = "0"
input_select_btn = "8"
input_l_x_minus_axis = "-0"
input_y_btn = "3"
input_left_btn = "h0left"
input_state_slot_decrease_btn = "h0left"
input_r_x_plus_axis = "+2"
input_l2_btn = "6"
So there are clearly buttons setup. Currently, no buttons work in the system at all, including start and select that worked just a few minutes ago.
Doing a jstest right now while a game that I can't control is running, I can see all buttons and axes function.
So like I said the PS4 lets me move around in EmuStation just fine, no issues with buttons etc. If I launch Retroarch GUI, the PS4 can't move around in it at all. I have to restart the system to get out of it.