Ubuntu 16.04 Install - Genuine PS3 Controller Issue



  • Hello all.

    First things first...

    Pi Model: N/A Ubuntu 16.04 on Lenovo ThinkPad T420
    RetroPie Version Used: 4.0 beta 3
    Built From: Source
    USB Devices connected: Genuine PS3 controller
    Controller used: See above
    Error messages received: N/A
    Guide used: https://github.com/retropie/retropie-setup/wiki/RetroPie-Ubuntu-16.04-LTS-x86-Flavor
    File: N/A
    Emulator: N/A
    Attachment of config files: will provide whatever is needed
    How to replicate the problem: basically follow the guide to install RP on Ubuntu and configure input in ES.

    I followed the guide on the Wiki for installing Retropie on Ubuntu 16.04. Actually I tried 16.04.1 Desktop x64, 16.04.1 Desktop x86 and 16.04 Desktop x64. All seems to go well (other than seeing a bunch of purple 'warning' messages while compiling after running the setup script). However, my Ps3 controller is not playing nicely. I have it connected via USB (not even BT yet) and when I start ES (which does find it) and it asks to configure input, I am not getting any response from the d-pad or analog sticks. Only some of the buttons are responding.

    Has anyone seen this behavior? Are there any logs or message outputs I can provide to try and solve?

    I am rebuilding right now for about the 7th time so I will have a fresh install to test. It is running the setup script as I type.

    TIA!

    John



  • So...I tried the same on 14.04.4 and I was able to configure the controller in ES without issue. The only thing I did differently (which I don't know if it is required) was to install the PS3 driver via the setup script. I reimaged with 16.04.1 and I am running the setup script now. I'll try installing the PS3 driver as I did on 14.04 to see if that helps.

    One other note...I was watching very closely but I don't remember seeing all of the 'warning' messages that I was seeing on 16.04 while it was compiling.


  • administrators

    Works here via usb on 16.04 - had to press the PlayStation button before it would work. (I then pressed and held that button - as it seems to not allow configuration when holding X)

    This is unrelated to RetroPie - as on Ubuntu you don't need to use the PS3 driver that retropie-setup uses on the RPI. RetroPie doesn't manage joysticks - the underlying OS does.



  • @BuZz Thanks BuZz.

    I'm building again now and will stay away from the PS3 driver in the script as it is not needed (which was my initial understanding also). I'll document all steps I performed just to make sure I didn't miss anything.

    1. Default install of Desktop 16.04.1 x64
      a. Unchecked both download updates and third party software
      b. wipe entire disk and install Ubuntu
      c. username = name = retropie, username = retropie, computer name = retropie, and auto-login checked
    2. From local terminal:
      a. sudo apt-get update
      b. sudo apt-get install openssh-server
    3. Disable screen lock
    4. From remote terminal (putty):
      a. sudo apt-get upgrade
      b. sudo apt-get install -y git dialog
      c. git clone --depth=1 https://github.com/RetroPie/RetroPie-Setup.git
      d. cd RetroPie-Setup
      e. sudo ./retropie_setup.sh
      f. From script GUI:
      i. Manage Packages
      ii. Quick Install
      iii. Back
      iv. Exit
      g. sudo reboot (for good measure)
    5. Plug in USB cable and attach controller (all lights on controller flashing)
      a. Press the PS button on the controller and all lights go out
      b. Unplug and Plug controller back in and light #1 goes solid
    6. Start ES via the RetroPie icon (is this OK or should I start via emulationstation in a terminal?)
    7. ES shows 1 GAMEPAD DETECTED
      a. Hold down the PS button and nothing happens
      b. Release PS button and hold it down again and now the controller is recognized as PS3 (I guess this is where you said you had to push the PS button once)
      c. Continue with configuring input...

    ...And I am still having issues. I push UP on the d-pad and it registers as BUTTON 4. I push DOWN on the d-pad and it registers as BUTTON 6. When I try and push LEFT on the d-pad I get no response. In fact, I get no response from any of the controls.

    I tried 2 different USB cables and 2 different genuine PS3 controllers. Same result each time. I'm completely stumped.



  • Weirdness. I F4'd ES and went back in and it wanted me to configure the controller again naturally since I didn't save my last config. This time it let me get all the way through the config, however, some buttons would come back as NOT DEFINED after I pushed the appropriate button, or, I would actually get ALREADY TAKEN when I know it wasn't (like right analog stick right). This is what my resulting es_input.cfg looked like:

    <?xml version="1.0"?>
    <inputList>
      <inputAction type="onfinish">
        <command>/opt/retropie/supplementary/emulationstation/scripts/inputconfiguration.sh</command>
      </inputAction>
      <inputConfig type="joystick" deviceName="Sony PLAYSTATION(R)3 Controller">
        <input name="pageup" type="button" id="10" value="1"/>
        <input name="start" type="button" id="3" value="1"/>
        <input name="up" type="button" id="4" value="1"/>
        <input name="a" type="button" id="14" value="1"/>
        <input name="down" type="button" id="6" value="1"/>
        <input name="right" type="button" id="5" value="1"/>
        <input name="select" type="button" id="0" value="1"/>
        <input name="left" type="button" id="7" value="1"/>
      </inputConfig>
    </inputList>


  • I'm going to find another machine to test on. Maybe 16.04 doesn't like the hardware (i.e USB controller on the T420).


  • administrators

    Have you tried it via bluetooth to see if it behaves better ? It must be due to some kernel changes (or some incompatibility with sdl2). I had some problems configuring some buttons also, I wonder if it's related to the accelerometer that acts as 3 inputs or the SDL2 update (which had some problems on the rpi which we had to patch).



  • @BuZz I really didn't even bother to try since I never got a physical connection to work properly. I give that a shot later. I'm also going to give Mint 18 a whirl.

    Right now I am reverting back to a stock 14.04.4 just to doublecheck that everything does indeed work as it did the first time.


  • administrators

    I was able to configure it in ES. I had to configure it on a flat surface to stop the accelerometer interfering. Try this

    edit ~/.emulationtation/es_temporaryinput.cfg with

    <?xml version="1.0"?>
    <inputList>
    	<inputConfig type="joystick" deviceName="Sony PLAYSTATION(R)3 Controller" deviceGUID="030000004c0500006802000011010000">
    		<input name="a" type="button" id="13" value="1" />
    		<input name="b" type="button" id="14" value="1" />
    		<input name="down" type="button" id="6" value="1" />
    		<input name="left" type="button" id="7" value="1" />
    		<input name="leftanalogdown" type="axis" id="1" value="1" />
    		<input name="leftanalogleft" type="axis" id="0" value="-1" />
    		<input name="leftanalogright" type="axis" id="0" value="1" />
    		<input name="leftanalogup" type="axis" id="1" value="-1" />
    		<input name="leftshoulder" type="button" id="10" value="1" />
    		<input name="leftthumb" type="button" id="1" value="1" />
    		<input name="lefttrigger" type="button" id="8" value="1" />
    		<input name="right" type="button" id="5" value="1" />
    		<input name="rightanalogdown" type="axis" id="3" value="1" />
    		<input name="rightanalogleft" type="axis" id="2" value="-1" />
    		<input name="rightanalogright" type="axis" id="2" value="1" />
    		<input name="rightanalogup" type="axis" id="3" value="-1" />
    		<input name="rightshoulder" type="button" id="11" value="1" />
    		<input name="rightthumb" type="button" id="2" value="1" />
    		<input name="righttrigger" type="button" id="9" value="1" />
    		<input name="select" type="button" id="0" value="1" />
    		<input name="start" type="button" id="3" value="1" />
    		<input name="up" type="button" id="4" value="1" />
    		<input name="x" type="button" id="12" value="1" />
    		<input name="y" type="button" id="15" value="1" />
    	</inputConfig>
    </inputList>
    

    then run /opt/retropie/supplementary/emulationstation/scripts/inputconfiguration.sh



  • @BuZz Ahhhh! That makes sense. Time to put 16.04 back on. :)

    I'll report back in a bit.

    John



  • @BuZz said in Ubuntu 16.04 Install - Genuine PS3 Controller Issue:

    I was able to configure it in ES. I had to configure it on a flat surface to stop the accelerometer interfering. Try this

    edit ~/.emulationtation/es_temporaryinput.cfg with

    <?xml version="1.0"?>
    <inputList>
    	<inputConfig type="joystick" deviceName="Sony PLAYSTATION(R)3 Controller" deviceGUID="030000004c0500006802000011010000">
    		<input name="a" type="button" id="13" value="1" />
    		<input name="b" type="button" id="14" value="1" />
    		<input name="down" type="button" id="6" value="1" />
    		<input name="left" type="button" id="7" value="1" />
    		<input name="leftanalogdown" type="axis" id="1" value="1" />
    		<input name="leftanalogleft" type="axis" id="0" value="-1" />
    		<input name="leftanalogright" type="axis" id="0" value="1" />
    		<input name="leftanalogup" type="axis" id="1" value="-1" />
    		<input name="leftshoulder" type="button" id="10" value="1" />
    		<input name="leftthumb" type="button" id="1" value="1" />
    		<input name="lefttrigger" type="button" id="8" value="1" />
    		<input name="right" type="button" id="5" value="1" />
    		<input name="rightanalogdown" type="axis" id="3" value="1" />
    		<input name="rightanalogleft" type="axis" id="2" value="-1" />
    		<input name="rightanalogright" type="axis" id="2" value="1" />
    		<input name="rightanalogup" type="axis" id="3" value="-1" />
    		<input name="rightshoulder" type="button" id="11" value="1" />
    		<input name="rightthumb" type="button" id="2" value="1" />
    		<input name="righttrigger" type="button" id="9" value="1" />
    		<input name="select" type="button" id="0" value="1" />
    		<input name="start" type="button" id="3" value="1" />
    		<input name="up" type="button" id="4" value="1" />
    		<input name="x" type="button" id="12" value="1" />
    		<input name="y" type="button" id="15" value="1" />
    	</inputConfig>
    </inputList>
    

    then run /opt/retropie/supplementary/emulationstation/scripts/inputconfiguration.sh

    Thank for providing this. It worked a treat for the wired connection. FYI...since you asked, BT shows the same exact behavior.

    However, I think I am just going to stick with 14.04.



  • OK...couldn't help but play some more to see if I could get the PS3 controller to behave with 16.04. I did a dist-upgrade hoping that maybe a newer kernel would help...nope.

    I then thought to myself...

    I only ever really tested the controller in ES. So, I fired up Retroarch from the menu item under Retropie and to my surprise, I was able to completely configure controls without a single issue. What is stranger (at least to me), this seems to have set all of the input controls correctly for ES. Is this by design? Does ES gleem it's controls from RA if it done there? I have no other explanation as I have NEVER been able to completely make it through an input config for ES (other than using the KB).

    I'm going to burn it all down and start over. This time I won't even attempt an ES input config for the controller...KB only. I'll then going into RA and config input for player 1 and see if that has any impact on the ES controller input config.

    Here is how my es_input.cfg looks now...

    <?xml version="1.0"?>
    <inputList>
      <inputAction type="onfinish">
        <command>/opt/retropie/supplementary/emulationstation/scripts/inputconfiguration.sh</command>
      </inputAction>
      <inputConfig type="keyboard" deviceName="Keyboard">
        <input name="pageup" type="key" id="1073741899" value="1"/>
        <input name="start" type="key" id="13" value="1"/>
        <input name="up" type="key" id="1073741906" value="1"/>
        <input name="a" type="key" id="97" value="1"/>
        <input name="b" type="key" id="98" value="1"/>
        <input name="down" type="key" id="1073741905" value="1"/>
        <input name="pagedown" type="key" id="1073741902" value="1"/>
        <input name="right" type="key" id="1073741903" value="1"/>
        <input name="select" type="key" id="9" value="1"/>
        <input name="left" type="key" id="1073741904" value="1"/>
      </inputConfig>
      <inputConfig type="joystick" deviceName="PLAYSTATION(R)3 Controller">
        <input name="start" type="button" id="3" value="1"/>
        <input name="up" type="button" id="4" value="1"/>
        <input name="a" type="button" id="14" value="1"/>
        <input name="b" type="button" id="13" value="1"/>
        <input name="down" type="button" id="6" value="1"/>
        <input name="pagedown" type="button" id="12" value="1"/>
        <input name="right" type="button" id="5" value="1"/>
        <input name="select" type="button" id="0" value="1"/>
        <input name="left" type="button" id="7" value="1"/>
      </inputConfig>
    </inputList>


  • i have the same issue with a gasia ps3 clone!


  • Global Moderator

    It is a sdl2.0.4 bug which we patched for raspbian https://github.com/RetroPie/SDL-mirror/commit/57fc057a74168974d7db52e6c8ae4bee9b764930

    There is no SDL 2.0.4 patch for ubuntu.



  • Hi,
    thanks.
    i got the sdl source and did the change, but i dont know how to change the retropie script to build emulstation using the "patched" install (it download the regular packages)
    regards,



  • Hi,
    i could "fix" it coping a good es_input.cfg file (from my pi setup), but it works only for emulstation.
    is there a way i can do the trick for retroarch?
    best regrds,



  • Hello all,

    I am doing this off of memory, sorry if the directions are a little vague. I will update as soon as I can.

    If you go to the Retropie_setup then Manage Packages and look for the bluetooth driver (I think it is under optional packages). Install the ps3 package if you have not already done so.

    Then start RetroPie and navigate to the "Retropie System" with your keyboard.

    In there you will see a Bluetooth option. Click that and navigate to connect PS3 controller.

    Make sure that it is connected (you will see it on your screen as Ubuntu will recognize it), still try to connect it and it will tell you to enter "000" to confirm. Obviously you cannot do that, so just exit out at that point.

    Restart RetoPie and your PS3 Dualshock controller should show when you press the "A" button as usual, but when asked to enter the correct buttons you should have no problem entering them.

    Again, I will update with a more detailed process when I am able.

    Thanks.



  • was this issue ever officially fixed? Still having the same issue here.



  • I also have this issue in Ubuntu 16.04.
    The (genuine) PS3 gamepad can be found in Ubuntu & ES, but I can't map the buttons which are all messed up or not working at all.
    During the ES input configuration, via USB or Bt, the buttons, D-pad or analog joysticks are not reacting.
    When I plug in my cheap BigBen USB PS3 clone, all the issues are gone and the gamepad is working like it should.

    Is there a Linux distro without this annoying issue?



  • Oh well... don't ask me why or how, but I installed the xbox drivers then uninstalled them after a reboot.
    Re-installed the PS3 drivers after that and put on the gamepad.
    The pad was immediately connected via Bt, but like always, only the D-pad UP was working.
    I went to the input config page, without any hope, but this time, the pad was responding just like it should, and the gamepad is now operational.

    I was battling during a few evenings to get it working, it's quite frustrating to not know how it has been fixed at the end, although I'm glad it is of course.

    Why so much mystery around the PS3 gamepad?


Log in to reply
 

Looks like your connection to RetroPie Forum was lost, please wait while we try to reconnect.