RetroPie forum home
    • Recent
    • Tags
    • Popular
    • Home
    • Docs
    • Register
    • Login
    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

    Dualshock controllers on 4.4 with 3B+

    Scheduled Pinned Locked Moved Help and Support
    controllerdualshock3b+4.4
    61 Posts 20 Posters 24.4k 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.
    • R
      rsn8887
      last edited by

      I don’t know. I selected the update option in the Retropie setup menu, then it asked me if I want to update from binary or source. I selected binary. I am not sure if that did a kernel or OS update?

      Is there a special, separate, option to update kernel and OS

      mituM 1 Reply Last reply Reply Quote 0
      • mituM
        mitu Global Moderator @rsn8887
        last edited by

        @rsn8887 said in Dualshock controllers on 4.4 with 3B+:

        Is there a special, separate, option to update kernel and OS

        When you choose to - globally - update, there's a prompt if you Want to upgrade the underlying OS packages and the kernel. But that doesn't happen when you upgrade just one package - or the RetroPie script itself.

        R 1 Reply Last reply Reply Quote 0
        • R
          rsn8887 @mitu
          last edited by rsn8887

          @mitu I am pretty sure I selected yes there but I don’t remember that question coming up. I did not just update one single package that is for sure.

          What do you mean by -globally update? I selected some option like “update all packages” I didn’t see a global update option in the Retropie setup menu.

          mituM 1 Reply Last reply Reply Quote 0
          • mituM
            mitu Global Moderator @rsn8887
            last edited by mitu

            @rsn8887 When I say global update, I'm referring to the Update option in the global script menu.

            Global update

            When you select it, the RetroPie setup script is updated first, some post-update hooks are executed, then - before the packages are updated - there is a prompt to update the OS

            OS Update

            Regardless of your choice in this setup, all installed packages are subsequently updated (from binary).

            1 Reply Last reply Reply Quote 0
            • R
              rsn8887
              last edited by

              Yes I chose that option, I must have pressed yes to the kernel question, but don't remember doing it.

              1 Reply Last reply Reply Quote 0
              • R
                rsn8887
                last edited by rsn8887

                Nevermind I had accidentally removed the second dongle.

                So it is still completely broken both using internal Bluetooth, external BT dongle or official Sony DS4 dongle. The problem is that a single DS4 controller shows up as two controllers, and one of those detected controllers reacts only to motion controls, e.g. tilting the controller.

                And yes it is still broken both for the Sony DS4 dongle, as well as when using the regular Bluetooth pairing.

                Even worse: some emulators such as AdvanceMAME react to BOTH joy1 (tilt/motion controls) and joy2 (regular buttons etc) when trying to map controls inside the emulator, and there’s no way to turn that off that I know off.

                1 Reply Last reply Reply Quote 1
                • A
                  arturochu
                  last edited by

                  any fix on this?

                  1 Reply Last reply Reply Quote 0
                  • R
                    rsn8887
                    last edited by rsn8887

                    I wonder if a rule along the lines of the ones here
                    https://github.com/denilsonsa/udev-joystick-blacklist

                    could be used to disable the erroneous additional controllers that are linked to motion controls?

                    Maybe adding a file named /etc/udev/rules.d/51-these-are-not-joysticks-rm.ruleswith the content

                    SUBSYSTEM=="input", ATTRS{idVendor}=="054c", ATTRS{idProduct}=="0268", NAME=="Sony PLAYSTATION(R)3 Controller Motion Sensors", ENV{ID_INPUT_JOYSTICK}=="?*", ENV{ID_INPUT_JOYSTICK}=""
                    
                    SUBSYSTEM=="input", ATTRS{idVendor}=="054c", ATTRS{idProduct}=="0268", NAME=="Sony PLAYSTATION(R)3 Controller Motion Sensors", KERNEL=="js[0-9]*", RUN+="/bin/rm %E{DEVNAME}", ENV{ID_INPUT_JOYSTICK}=""
                    

                    Would help for DS3, and maybe adding two similar lines for DS4, with the correct names and ids might fix this problem. I don't know the names and ids for DS4 at the moment.

                    mituM 1 Reply Last reply Reply Quote 0
                    • mituM
                      mitu Global Moderator @rsn8887
                      last edited by

                      @rsn8887 I don't think they're not erroneus, the choice was deliberate to make them like this. The onus lies in the input processing libraries - like SDL - to make use of them.

                      1 Reply Last reply Reply Quote 0
                      • R
                        rsn8887
                        last edited by

                        Maybe in some distant future SDL and all the emulators will find some approach for correct use of the motion controls. But for now, I think the best approach is just to disable them altogether. The nice thing about these rules is that they can be commented out very easily.

                        mituM 1 Reply Last reply Reply Quote 0
                        • mituM
                          mitu Global Moderator @rsn8887
                          last edited by

                          @rsn8887 I agree, it's a quick fix that's easy to implement (maybe toggled on/off).

                          1 Reply Last reply Reply Quote 0
                          • R
                            rsn8887
                            last edited by rsn8887

                            EDIT: The instructions below don't work. See the latest post in this thread for the correct instructions.

                            I did some reading and I think the fix involves creating a new file, named
                            /etc/udev/rules.d/81-disable-DS3-and-DS4-motion-controls.rules

                            with content

                            #disable DS3 motion controls
                            SUBSYSTEM=="input", ATTRS{idVendor}=="054c", ATTRS{idProduct}=="0268", NAME=="Sony PLAYSTATION(R)3 Controller Motion Sensors", ENV{ID_INPUT_JOYSTICK}=="?*", ENV{ID_INPUT_JOYSTICK}=""
                            
                            SUBSYSTEM=="input", ATTRS{idVendor}=="054c", ATTRS{idProduct}=="0268", NAME=="Sony PLAYSTATION(R)3 Controller Motion Sensors", KERNEL=="js[0-9]*", RUN+="/bin/rm %E{DEVNAME}", ENV{ID_INPUT_JOYSTICK}=""
                            
                            #disable DS4 motion controls
                            SUBSYSTEM=="input", ATTRS{idVendor}=="XXXX", ATTRS{idProduct}=="YYYY", NAME=="ZZZZ", ENV{ID_INPUT_JOYSTICK}=="?*", ENV{ID_INPUT_JOYSTICK}=""
                            
                            SUBSYSTEM=="input", ATTRS{idVendor}=="XXXX", ATTRS{idProduct}=="YYYY", NAME=="ZZZZ", KERNEL=="js[0-9]*", RUN+="/bin/rm %E{DEVNAME}", ENV{ID_INPUT_JOYSTICK}=""
                            

                            Where XXXX, YYYY, and ZZZZ are the as-of-yet-unknown strings idVendor, idProduct, and name of the motion control device linked to a DS4 Controller. These variables could be determined if someone with a DS4 connected could run cat /proc/bus/input/devices and post the output here. More lines might be neccessary if the DS4 Controller strings change depending on whether it is connected via BT, USB cable or Sony dongle.

                            The idVendor and idProduct parts might even be removed, and we might only match the name.

                            I suppose the file should have root permissions (?).

                            I have a hunch this might work but haven't tested it.

                            Further reading:
                            https://hackaday.com/2009/09/18/how-to-write-udev-rules/
                            and
                            https://github.com/denilsonsa/udev-joystick-blacklist

                            mituM 1 Reply Last reply Reply Quote 1
                            • mituM
                              mitu Global Moderator @rsn8887
                              last edited by

                              @rsn8887 Here's a DS4 connected via bluetooth

                              I: Bus=0005 Vendor=054c Product=09cc Version=8100
                              N: Name="Wireless Controller Touchpad"
                              P: Phys=00:1a:7d:da:71:09
                              S: Sysfs=/devices/platform/soc/3f980000.usb/usb1/1-1/1-1.2/1-1.2:1.0/bluetooth/hci0/hci0:71/0005:054C:09CC.0002/input/input2
                              U: Uniq=dc:0c:2d:86:41:f6
                              H: Handlers=event0 
                              B: PROP=5
                              B: EV=b
                              B: KEY=2420 0 10000 0 0 0 0 0 0 0 0
                              B: ABS=2608000 0
                              
                              I: Bus=0005 Vendor=054c Product=09cc Version=8100
                              N: Name="Wireless Controller Motion Sensors"
                              P: Phys=00:1a:7d:da:71:09
                              S: Sysfs=/devices/platform/soc/3f980000.usb/usb1/1-1/1-1.2/1-1.2:1.0/bluetooth/hci0/hci0:71/0005:054C:09CC.0002/input/input3
                              U: Uniq=dc:0c:2d:86:41:f6
                              H: Handlers=event1 
                              B: PROP=40
                              B: EV=19
                              B: ABS=3f
                              B: MSC=20
                              
                              I: Bus=0005 Vendor=054c Product=09cc Version=8100
                              N: Name="Wireless Controller"
                              P: Phys=00:1a:7d:da:71:09
                              S: Sysfs=/devices/platform/soc/3f980000.usb/usb1/1-1/1-1.2/1-1.2:1.0/bluetooth/hci0/hci0:71/0005:054C:09CC.0002/input/input1
                              U: Uniq=dc:0c:2d:86:41:f6
                              H: Handlers=js0 event2 
                              B: PROP=0
                              B: EV=20001b
                              B: KEY=7fdb0000 0 0 0 0 0 0 0 0 0
                              B: ABS=3003f
                              B: MSC=10
                              B: FF=1 7030000 0 0
                              
                              1 Reply Last reply Reply Quote 0
                              • R
                                rsn8887
                                last edited by rsn8887

                                Perfect thanks, so my solution would be this, completely untested so far:

                                • ssh into your RetroPie

                                • enter

                                sudo nano /etc/udev/rules.d/51-disable-DS3-and-DS4-motion-controls.rules
                                
                                • paste the following the editor
                                #disable DS3 motion controls
                                SUBSYSTEM=="input", ATTRS{idVendor}=="054c", ATTRS{idProduct}=="0268", NAME=="Sony PLAYSTATION(R)3 Controller Motion Sensors", ENV{ID_INPUT_JOYSTICK}=="?*", ENV{ID_INPUT_JOYSTICK}=""
                                
                                SUBSYSTEM=="input", ATTRS{idVendor}=="054c", ATTRS{idProduct}=="0268", NAME=="Sony PLAYSTATION(R)3 Controller Motion Sensors", KERNEL=="js[0-9]*", RUN+="/bin/rm %E{DEVNAME}", ENV{ID_INPUT_JOYSTICK}=""
                                
                                #disable DS4 motion controls
                                SUBSYSTEM=="input", ATTRS{idVendor}=="054c", ATTRS{idProduct}=="09cc", NAME=="Wireless Controller Motion Sensors", ENV{ID_INPUT_JOYSTICK}=="?*", ENV{ID_INPUT_JOYSTICK}=""
                                
                                SUBSYSTEM=="input", ATTRS{idVendor}=="054c", ATTRS{idProduct}=="09cc", NAME=="Wireless Controller Motion Sensors", KERNEL=="js[0-9]*", RUN+="/bin/rm %E{DEVNAME}", ENV{ID_INPUT_JOYSTICK}=""
                                
                                • Hit CTRL-x and y to save

                                • reboot and see if motion controls are disabled

                                It probably requires some tweaking still, but something along these lines should work.

                                I am confused that the Name is "Wireless Controller" and not Dualshock 4 or some such. Maybe a bug in the Linux Kernel?

                                mituM D 2 Replies Last reply Reply Quote 0
                                • mituM
                                  mitu Global Moderator @rsn8887
                                  last edited by mitu

                                  This post is deleted!
                                  1 Reply Last reply Reply Quote 0
                                  • edmaul69E
                                    edmaul69
                                    last edited by

                                    So question, on 4.4 am i the only one that had to assign the hotkey to the ps button? Even though the config shows select as the hotkey it would not work. I had to make the ps button the hotkey for it to work.

                                    hooperreH UDb23U 2 Replies Last reply Reply Quote 0
                                    • hooperreH
                                      hooperre @edmaul69
                                      last edited by

                                      @edmaul69 Mine works as select :\

                                      4B ~ RPi PSU 5.1V / 3.0A ~ 32GB SanDisk microSD ~ 128GB USB

                                      edmaul69E 1 Reply Last reply Reply Quote 0
                                      • edmaul69E
                                        edmaul69 @hooperre
                                        last edited by

                                        @hooperre yeah it was the wirdest thing.

                                        1 Reply Last reply Reply Quote 0
                                        • D
                                          darkblaster77 @rsn8887
                                          last edited by

                                          @rsn8887
                                          Tried it with 2 x DS4 controllers. It doesn't work.

                                          Did anyone manage to get this working?

                                          1 Reply Last reply Reply Quote 0
                                          • R
                                            rsn8887
                                            last edited by rsn8887

                                            Thanks but “it doesn’t work” is a pretty useless bug report. I should say I haven’t gotten around to testing this. You might have to check the device name strings of your controllers and make sure the script lines match those strings exactly. You can get a printout of the strings by running ‘cat /proc/bus/input/devices’ from the shell while your DS4 controllers are connected.

                                            It could also be something else.

                                            D 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.