RetroPie forum home
    • Recent
    • Tags
    • Popular
    • Home
    • Docs
    • Register
    • Login

    Sony DualShock 3 - call for testers: "sixaxis" script module

    Scheduled Pinned Locked Moved Ideas and Development
    sixaxisdriverbeta
    208 Posts 24 Posters 34.9k Views
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • H
      hhromic
      last edited by

      @psyke83 @Silent my PR was accepted upstream now (that was fast). So it should work fine alongside the sixaxis timeout helper ;)

      P 1 Reply Last reply Reply Quote 0
      • P
        psyke83 Global Moderator @hhromic
        last edited by psyke83

        I've made some important changes to increase the reliability of pairing, added some configuration menu options so that it's easier to enable support for third-party controllers and added support for a user-configurable timeout.

        The timeout can be edited from the scriptmodule configuration menu, but if you prefer, you can just edit the /opt/retropie/configs/all/sixaxis_timeout.cfg file directly (or over the samba share).

        I'm still not happy with the reliability of first-time pairing of controllers, so that's the last issue that needs to be fixed before merging, I think.

        @hhromic said in Sony DualShock 3 - call for testers: "sixaxis" script module:

        @psyke83 @Silent my PR was accepted upstream now (that was fast). So it should work fine alongside the sixaxis timeout helper ;)

        Great to hear! Thanks for helping to improve things for everyone.

        S 1 Reply Last reply Reply Quote 0
        • S
          Silent @psyke83
          last edited by

          @psyke83 Sounds good! I take it there is no need to re-pair again to make use of those? I may still want to do that to gauge whether it's more user friendly now, though.

          P 1 Reply Last reply Reply Quote 0
          • P
            psyke83 Global Moderator @Silent
            last edited by

            @Silent said in Sony DualShock 3 - call for testers: "sixaxis" script module:

            @psyke83 Sounds good! I take it there is no need to re-pair again to make use of those? I may still want to do that to gauge whether it's more user friendly now, though.

            The changes were related to improving the pairing experience, so it would make sense to go out of your way and remove / pair the device again to help test the changes.

            Some further fixes have been merged into master and the PR has been updated again. I'm fairly comfortable to now recommend this to be merged, but some feedback would be appreciated.

            edge3000E 1 Reply Last reply Reply Quote 1
            • edge3000E
              edge3000 @psyke83
              last edited by

              @psyke83 I just updated to your latest sixaxis PR to do some pairing tests!

              Pairing tests:

              wired (player 1 LED on): Register, Searching.., unplug, PSbutton, wait for player 1 LED, plug in, choose bluetooth device "PLAYSTATION(R)3" = SUCCESS
              unplug, controller turns off, PSbutton, player 1 LED then controller shuts off again, PSbutton, player 1 LED stays on.
              Device now shows as Sony PLAYSTATION(R)3 and is paired OK

              wired (4 LEDs flashing): all actions same as previous = SUCCESS

              controller off (no LEDS): Register, Searching.., PLUG IN, PSbutton, wait for player 1 LED, then repeat the normal steps = SUCCESS

              controller off (no LEDS): Register, Searching.., PLUG IN, then repeat the normal steps = SUCCESS

              My Observations:

              The new popup Searching.. message is much more clear and now only takes a few seconds to finish. It assumes that the wire is already connected before you start.

              When you first connect the controller it is considered wired and is named PLAYSTATION(R)3. After you first pair it and get the SUCCESS message - you disconnect the wire and press PS button, then the controller immediately shuts off and changes its name to Sony PLAYSTATION(R)3 and will now work wirelessly next time you turn it on.

              If I have a controller connected wirelessly as player 1 and try to pair a 2nd controller, it will turn off the first controller at the moment where I plug the cable back in to controller 2. At this point I get a Unable to Authenticate message for controller 2. When I unplug controller 2 it stays on wirelessly, with old style wired button mappings (down on the dpad becomes A or B). If I turn it off and back on it does not reconnect wirelessly. All the while controller 2 stays registered as "PLAYSTATION(R)3".

              I removed the device from the list and tried pairing again and it worked. Basically the only way to pair multiple controllers in a row is to go through the entire process up to the point it stays on wirelessly, then hold PS button to shut it off before even starting to pair another controller.

              1 Reply Last reply Reply Quote 0
              • P
                psyke83 Global Moderator
                last edited by psyke83

                The PR has finally been merged. For those of you that were testing, it's sufficient to return to the latest master branch and re-install the sixaxis scriptmodule to avail of the latest changes. Thank you all for the assistance -- and of course, if new issues arise, report them here.

                @edge3000

                Your feedback was very helpful; the issue you experienced when pairing multiple controllers is now fixed. Of note, you seemed to be inferring an extra step in the on-screen instructions (i.e. waiting for the LED player slot to be assigned after pressing the PS button). Doing that will definitely lead you to trouble in the current version of the Bluetooth script; simply replug the cable immediately after pressing the PS button.

                You will still see the paired controller (and any other connected Bluetooth devices) turn itself off after first pairing; this is happening because it's necessary to stop and restart the Bluetooth stack when renaming the profile. This is a transient hack that will not be needed in future distro versions (or even today, if you have the newer BlueZ version installed via custombluez).

                edge3000E 2 Replies Last reply Reply Quote 2
                • edge3000E
                  edge3000 @psyke83
                  last edited by

                  @psyke83 Awesome news, thanks for all your work on this!

                  Yeah I wasn't sure if waiting for the LED player slot light was necessary so I just tried as many variations as I could and tried to break things.

                  I'm happy to go back to master, now I will start the fun of remapping all my buttons that I've been putting off for so long lol

                  After that my next step is trying out the new Kodi, Steam Link and Moonlight streaming.

                  1 Reply Last reply Reply Quote 0
                  • edge3000E
                    edge3000 @psyke83
                    last edited by

                    @psyke83 I went back to master, updated the RetroPie-Setup script to 4.4.8, installed sixaxis. Removed my old pairings from Bluetooth setup. Paired 7 dualshock 3 controllers - all worked fine and the pairing process was better again thanks to your changes.

                    However there is 1 minor issue I am having - the first time I boot up and turn on a controller - it lights up player1 LED on the controller then immediately turns off the LED - but the controller is still on and working as player1! Further controllers paired get their proper LEDs of player2, player3 etc

                    As a test I installed custombluez and rebooted, and now the LEDs work fine again! Not sure what is different in custombluez that would fix it other than the newer bluez version? All my tests are on official controllers so I didn't think I would need it.

                    P 1 Reply Last reply Reply Quote 0
                    • P
                      psyke83 Global Moderator @edge3000
                      last edited by psyke83

                      @edge3000 said in Sony DualShock 3 - call for testers: "sixaxis" script module:

                      -Setup script to 4.4.8, installed sixaxis. Removed my old pairings from Bluetooth setup. Paired 7 dualshock 3 controllers - all worked fine and the pairing process was better again thanks to your changes.
                      However there is 1 minor issue I am having - the first time I boot up and turn on a controller - it lights up player1 LED on the controller then immediately turns off the LED - but the controller is still on and working as player1! Further controllers paired get their proper LEDs of player2, player3 etc
                      As a test I installed custombluez and rebooted, and now the LEDs work fine again! Not sure what is different in custombluez that would fix it other than the newer bluez version? All my tests are on official controllers so I didn't think I would need it.

                      You're running on stretch, right? I encountered this issue when I was first testing the hid-sony driver, but I think the issue was isolated to the older BlueZ version in Raspbian jessie. Unfortunately, I can't seem to reproduce the issue on my installation now; I've tried several times to reboot the Pi, and the first pairing doesn't trigger the issue.

                      Did you install any software to manipulate LEDs for other devices? The hid-sony is different to ps3controller in that it exposes userspace-controllable LEDs to /sys/class/leds. If for any reason you have background processes manipulating these, it would affect the controller.

                      If the issue is simply that you're running jessie, I highly recommend that you upgrade to stretch. Aside from the LED issue, the timeout functionality won't work (jessie is missing the tool needed to configure the axis deadzones; without calibration, the OS will think that there's constant movement on the analog sticks).

                      edge3000E 1 Reply Last reply Reply Quote 0
                      • S
                        Silent
                        last edited by

                        Speaking of LEDs, I just noticed something while playing on Pi and when my controller discharged. I was able to resume my gameplay seamlessly by plugging the pad to Pi's USB port. However, seems that unlike on PS3, there is no visual indicator that the pad is charging/has finished charging.

                        Is making LEDs blink slowly while charging (iirc that's what happens on PS3) an option?

                        P 1 Reply Last reply Reply Quote 0
                        • P
                          psyke83 Global Moderator @Silent
                          last edited by psyke83

                          @Silent said in Sony DualShock 3 - call for testers: "sixaxis" script module:

                          Speaking of LEDs, I just noticed something while playing on Pi and when my controller discharged. I was able to resume my gameplay seamlessly by plugging the pad to Pi's USB port. However, seems that unlike on PS3, there is no visual indicator that the pad is charging/has finished charging.

                          Is making LEDs blink slowly while charging (iirc that's what happens on PS3) an option?

                          Short answer is no.

                          Long answer is... theoretically, you could do it.

                          When you connect a controller (either via USB or BT), userspace exposes some useful information:

                          • /sys/class/power_supply/sony_controller_battery_(your_mac_here)/ exposes the battery capacity (0-100%, but can only show a rough level rounded to the nearest 25% increment) and status (Charging or Discharging).
                            */sys/class/leds/(bus address)::sony{1-4} allows you to check and manipulate each LED (on or off) individually.

                          If you really wanted, you could write a userspace tool to manage the LEDs; but I think you could only turn the LEDs on or off, so you'd need to have a process running that constantly manipulates the LEDs in order to emulate the charging pattern. It doesn't seem like it would be a practical solution IMO.

                          1 Reply Last reply Reply Quote 0
                          • P
                            psyke83 Global Moderator
                            last edited by psyke83

                            @Silent

                            Hmm.... or maybe I'm mistaken and it is possible.
                            Looking at one of my controllers:

                            $ cat /sys/class/leds/0005:054C:0268.0007::sony1/trigger
                            [none] rc-feedback kbd-scrolllock kbd-numlock kbd-capslock kbd-kanalock kbd-shiftlock kbd-altgrlock kbd-ctrllock kbd-altlock kbd-shiftllock kbd-shiftrlock kbd-ctrlllock kbd-ctrlrlock timer oneshot heartbeat backlight gpio cpu cpu0 cpu1 cpu2 cpu3 default-on input panic mmc0 rfkill-any rfkill0 sony_controller_battery_e0:ae:5e:61:3e:c8-charging-or-full sony_controller_battery_e0:ae:5e:61:3e:c8-charging sony_controller_battery_e0:ae:5e:61:3e:c8-full sony_controller_battery_e0:ae:5e:61:3e:c8-charging-blink-full-solid
                            

                            It looks like you can echo one of those option to the node and it might modify the behavior of the LEDs (it's set to none right now). I don't have a USB cable to test at the moment but perhaps you might want to experiment.

                            S 1 Reply Last reply Reply Quote 0
                            • S
                              Silent @psyke83
                              last edited by Silent

                              @psyke83 Sounds good! However, I'm not proficient enough to know what do you mean by "node" in this context - I can test it of course, but I may need specific instructions =)

                              EDIT:
                              I just realized half a second after submitting this reply... it's this very file in /leds/, right?

                              EDIT2:
                              I also assume this does not make any semi-permanent changes to the pad itself, does it?

                              EDIT3:
                              FYI my "Status" value for DS3's power supply says "Full", so there's at least three of them, not two.

                              P 1 Reply Last reply Reply Quote 0
                              • P
                                psyke83 Global Moderator @Silent
                                last edited by psyke83

                                @Silent

                                It should be temporary...

                                Try this command:

                                sudo bash -c "echo mmc0 > /sys/class/leds/*::sony4/trigger"
                                

                                This will configure your controller's fourth LED to blink on mmc0 (internal SD card) access - just like the Pi's actual dedicated disk activity LED.

                                Of course, this isn't what you want, but the other options (such as charging-blink-full-solid) theoretically might work.

                                1 Reply Last reply Reply Quote 0
                                • P
                                  psyke83 Global Moderator
                                  last edited by psyke83

                                  Good news and bad news...

                                  The good: it's fairly easy to configure the LEDs to use the "blink on charge, solid on full". Here's the change that would do it: https://github.com/RetroPie/sixaxis/compare/master...psyke83:charge_blink

                                  The bad: it doesn't seem to work as expected. My controllers still show a solid light even when the controller is in the Charging state. Perhaps it evaluates when to blink the leds based not on the charging state but battery level, and controller reports 100% capacity despite it not being fully charged, due to the limitation of the firmware? I don't know. I'll try discharging my controllers below 100% to see...

                                  1 Reply Last reply Reply Quote 0
                                  • edge3000E
                                    edge3000 @psyke83
                                    last edited by

                                    @psyke83 I am running on Stretch and I believe everything was up to date (at least to the point before I started testing the PR). Only noticed this problem between your last version of the sixaxis PR and when I went back to master.

                                    I had uninstalled sixaxis before going back to master, then updated retropie_setup script, then installed sixaxis. I did not have any controller related drivers installed at that time other than xpad when I installed sixaxis.

                                    At that time I removed all paired controllers and paired them over again. They did their initial shutoffs where the the bluetooth restarts, but then on reboot I noticed pairing the first controller would not light the LED anymore.

                                    Thats when I installed custombluez and the problem went away.

                                    1 Reply Last reply Reply Quote 0
                                    • S
                                      snock
                                      last edited by

                                      I have a compatible Shanhan controller. How do I configure it in ES? I only managed it with cable ... When connecting it with bluetooh, it identifies it (mac included) but it does not appear as connected. How can I configure it later in ES? I have only configured it by cable.

                                      I have always used the sf30 pro and it was set up in bluetoth, and add it in ES.

                                      usb 1-1.2: new full-speed USB device number 12 using dwc_otg
                                      [  934.988452] usb 1-1.2: New USB device found, idVendor=054c, idProduct=0268
                                      [  934.988462] usb 1-1.2: New USB device strings: Mfr=1, Product=2, SerialNumber=0
                                      [  934.988466] usb 1-1.2: Product: PS3 GamePad
                                      [  934.988469] usb 1-1.2: Manufacturer: SHANWAN
                                      [  934.997089] input: SHANWAN PS3 GamePad Motion Sensors as /devices/platform/soc/3f980000.usb/usb1/1-1/1-1.2/1-1.2:1.0/0003:054C:0268.0009/input/input15
                                      [  935.063914] input: SHANWAN PS3 GamePad as /devices/platform/soc/3f980000.usb/usb1/1-1/1-1.2/1-1.2:1.0/0003:054C:0268.0009/input/input14
                                      [  935.064307] sony 0003:054C:0268.0009: input,hiddev96,hidraw2: USB HID v81.10 Joystick [SHANWAN PS3 GamePad] on usb-3f980000.usb-1.2/input0
                                      [  935.843765] usb 1-1.2: reset full-speed USB device number 12 using dwc_otg
                                      [  961.144707] usb 1-1.2: USB disconnect, device number 12
                                      
                                      mituM 1 Reply Last reply Reply Quote 0
                                      • mituM
                                        mitu Global Moderator @snock
                                        last edited by

                                        @snock Have you tried the step from the Docs to register/pair your controller ? In ES, you need to go to Input Configuration to configure the new controller, after you have paired it.

                                        S 1 Reply Last reply Reply Quote 0
                                        • S
                                          snock @mitu
                                          last edited by

                                          @mitu I connect it by bluetooth and then in ES when trying to configure it does not detect it ... it only does it by cable. to connect it I connect the cable about 10 sec, I disconnect and pulse PS.

                                          P 1 Reply Last reply Reply Quote 0
                                          • P
                                            psyke83 Global Moderator @snock
                                            last edited by psyke83

                                            @snock said in Sony DualShock 3 - call for testers: "sixaxis" script module:

                                            @mitu I connect it by bluetooth and then in ES when trying to configure it does not detect it ... it only does it by cable. to connect it I connect the cable about 10 sec, I disconnect and pulse PS.

                                            Did you make sure to enable third-party support? This will upgrade BlueZ to 5.50.

                                            You can check some stuff by opening a bluetoothctl terminal:

                                            bluetoothctl
                                            

                                            While in the bluetooth terminal, check:

                                            • version (should report 5.50):
                                            [bluetooth]# version
                                            Version 5.50
                                            
                                            • info of DS3 controller. Example:
                                            [bluetooth]# devices
                                            Device E0:AE:5E:61:3E:C8 Sony PLAYSTATION(R)3 Controller
                                            [bluetooth]# info E0:AE:5E:XX:XX:XX
                                            Device E0:AE:5E:XX:XX:XX (public)
                                            	Name: Sony PLAYSTATION(R)3 Controller
                                            	Alias: Sony PLAYSTATION(R)3 Controller
                                            	Class: 0x00000508
                                            	Icon: input-gaming
                                            	Paired: no
                                            	Trusted: yes
                                            	Blocked: no
                                            	Connected: no
                                            	LegacyPairing: no
                                            	UUID: Human Interface Device... (00001124-0000-1000-8000-00805f9b34fb)
                                            	UUID: PnP Information           (00001200-0000-1000-8000-00805f9b34fb)
                                            	Modalias: usb:v054Cp0268d0100
                                            

                                            If the controller profile exists and shows Trusted: yes, the controller should be capable of pairing, but you may need to remap the controller again (as the device name will be different to your USB connection).

                                            S 1 Reply Last reply Reply Quote 0
                                            • First post
                                              Last post

                                            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.