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

    Different controllers using the same configuration file

    Scheduled Pinned Locked Moved Help and Support
    controllerconfigs
    20 Posts 4 Posters 1.8k 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.
    • langestL
      langest
      last edited by

      Doesn't seem to work. :/ They work in ES but not in a rom. I guess it could be that the A and B buttons just happens to match whatever is loaded so it doesn't really mean anything.

      pi@retropie:/opt/retropie/configs/all/retroarch-joypads $ cat SnesGamepad.cfg 
      input_device = "USB Gamepad "
      input_driver = "udev"
      input_vendor_id = 79
      input_product_id = 11
      
      input_l_btn = "4"
      ...
      input_menu_toggle_btn = "1"
      
      pi@retropie:/opt/retropie/configs/all/retroarch-joypads $ cat Playstation2Gamepad.cfg 
      input_device = "USB Gamepad "
      input_driver = "udev"
      input_vendor_id = 810
      input_product_id = 3
      
      input_r_y_plus_axis = "+2"
      ...
      input_r_x_plus_axis = "+3"
      
      1 Reply Last reply Reply Quote 0
      • mituM
        mitu Global Moderator
        last edited by

        Can you try running a game with verbose logging through the Runcommand and then check /dev/shm/runcommand.log to see how the gamepads are detected ?

        1 Reply Last reply Reply Quote 0
        • langestL
          langest
          last edited by

          https://pastebin.com/6H2X79gi
          I looks like it is detected.

          I also noticed that when I reconfigure one of the controllers it moves the vendorid deviceid configs to a .cfg.bak file. So at least it has found the files.

          1 Reply Last reply Reply Quote 0
          • langestL
            langest
            last edited by

            I think I solved it, I will post an update with the steps later when I have verified so that others that run into the same problem can fix it.

            1 Reply Last reply Reply Quote 0
            • langestL
              langest
              last edited by

              The snes controller works fine but the PS2 does not.
              The problem seems to be that is loads the snes config for both of the controllers.

              [INFO] [udev]: Plugged pad: Generic X-Box pad (3853:220) on port #0.
              [INFO] [udev]: Pad #0 (/dev/input/event2) supports force feedback.
              [INFO] [udev]: Pad #0 (/dev/input/event2) supports 16 force feedback effects.
              [INFO] [Autoconf]: 4 profiles found.
              [INFO] [autoconf]: selected configuration: /home/pi/.config/retroarch/autoconfig/Generic X-Box pad.cfg
              [INFO] [udev]: Plugged pad: USB Gamepad  (2064:3) on port #1.
              [INFO] [udev]: Pad #1 (/dev/input/event0) supports 0 force feedback effects.
              [INFO] [Autoconf]: 4 profiles found.
              [INFO] [autoconf]: selected configuration: /home/pi/.config/retroarch/autoconfig/SnesGamepad.cfg
              [INFO] [udev]: Plugged pad: USB Gamepad  (121:17) on port #2.
              [INFO] [udev]: Pad #2 (/dev/input/event3) supports 0 force feedback effects.
              [INFO] [Autoconf]: 4 profiles found.
              [INFO] [autoconf]: selected configuration: /home/pi/.config/retroarch/autoconfig/SnesGamepad.cfg
              [INFO] [udev]: Plugged pad: usb gamepad            (2064:58625) on port #3.
              [INFO] [udev]: Pad #3 (/dev/input/event1) supports 0 force feedback effects.
              [INFO] [Autoconf]: 4 profiles found.
              [INFO] [autoconf]: selected configuration: /home/pi/.config/retroarch/autoconfig/Playstation2Gamepad.cfg
              

              The model_id and vendor_id seems to be different than shown on lsusb as well.

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

                The log shows the PS2 profile being picked for one of the gamepads though:

                [INFO] [udev]: Plugged pad: usb gamepad            (2064:58625) on port #3.
                [INFO] [udev]: Pad #3 (/dev/input/event1) supports 0 force feedback effects.
                [INFO] [Autoconf]: 4 profiles found.
                [INFO] [autoconf]: selected configuration: /home/pi/.config/retroarch/autoconfig/Playstation2Gamepad.cfg
                

                The VID:PID in the .cfg files have been generated by the ES input configuration or you added them yourself ?

                BuZzB 1 Reply Last reply Reply Quote 0
                • langestL
                  langest
                  last edited by langest

                  When launching snes it looks like this:

                  [INFO] [udev]: Plugged pad: Generic X-Box pad (3853:220) on port #0.
                  [INFO] [udev]: Pad #0 (/dev/input/event2) supports force feedback.
                  [INFO] [udev]: Pad #0 (/dev/input/event2) supports 16 force feedback effects.
                  [INFO] [Autoconf]: 4 profiles found.
                  [INFO] [autoconf]: selected configuration: /home/pi/.config/retroarch/autoconfig/Generic X-Box pad.cfg
                  [INFO] [udev]: Plugged pad: USB Gamepad  (2064:3) on port #1.
                  [INFO] [udev]: Pad #1 (/dev/input/event0) supports 0 force feedback effects.
                  [INFO] [Autoconf]: 4 profiles found.
                  [INFO] [autoconf]: selected configuration: /home/pi/.config/retroarch/autoconfig/SnesGamepad.cfg
                  [INFO] [udev]: Plugged pad: USB Gamepad  (121:17) on port #2.
                  [INFO] [udev]: Pad #2 (/dev/input/event3) supports 0 force feedback effects.
                  [INFO] [Autoconf]: 4 profiles found.
                  [INFO] [autoconf]: selected configuration: /home/pi/.config/retroarch/autoconfig/SnesGamepad.cfg
                  [INFO] [udev]: Plugged pad: usb gamepad            (2064:58625) on port #3.
                  [INFO] [udev]: Pad #3 (/dev/input/event1) supports 0 force feedback effects.
                  [INFO] [Autoconf]: 4 profiles found.
                  [INFO] [autoconf]: selected configuration: /home/pi/.config/retroarch/autoconfig/usb gamepad           .cfg
                  

                  And the previous one you commented on is when running psx emulator.

                  I have configured the order of the pads in the setup script config/tools->configedit->config basic->snes/psx. There it shows that the PS2 controller is pad#1 and that snes is pad#2. Pad #3 is my generic nes controller.
                  So for some reason it loads the PS2 config for the wrong pad on psx and double snes config on snes.

                  Edit: I added the ids myself

                  1 Reply Last reply Reply Quote 0
                  • BuZzB
                    BuZz administrators @mitu
                    last edited by

                    @mitu said in Different controllers using the same configuration file:

                    The VID:PID in the .cfg files have been generated by the ES input configuration or you added them yourself ?

                    the autoconfiguration doesn't handle devices with the same name, nor the vid/pid - those have to be done manually.

                    To help us help you - please make sure you read the sticky topics before posting - https://retropie.org.uk/forum/topic/3/read-this-first

                    1 Reply Last reply Reply Quote 1
                    • langestL
                      langest
                      last edited by

                      An other strange thing is that they seem to work fine in ES. They only load incorrect config when starting emulation.

                      1 Reply Last reply Reply Quote 0
                      • langestL
                        langest
                        last edited by

                        I found a solution.
                        Not the prettiest one, but it works.
                        Since the vid:pid was not enough to identify the controllers I found that you can also use input_device_display_name to identify a controller.
                        As it happens it does not work for my PS2 controller but it works for the Snes controller. Thus I configured the Snes controller with the display name and use the default options to match the PS2 controller.

                        I hope that makes sense in case someone runs into the same problem and finds this thread. :)

                        Thank you for the help mitu!

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

                          I thought that - taking into account what @buzz said, you could pick the VID:PID from the RetroArch output and configure them into the .cfg files instead of the ones generated by Emulationstation autoconfiguration. I was rather curious to see if that would work.
                          I'm glad you found a solution, maybe you'd care to experiment a little bit more to satisfy my curiousity :).

                          1 Reply Last reply Reply Quote 0
                          • langestL
                            langest
                            last edited by

                            I tried it and still, for some reason, it didn't work.

                            1 Reply Last reply Reply Quote 1
                            • langestL
                              langest
                              last edited by

                              I had the same issue again with the RPi4.

                              I managed to solve it by using the VID:PID.
                              The tricky part was to identify which of the controllers had which pid in the retroarch menu since both are identified as USB Controller. This is not the same vid:pid shown by lsusb(!).
                              Then I put the pid:vid at the top of the config files.
                              So I tried one way and it didn't work, so I tried the other and now both controllers work.

                              Note to myself:
                              PS2 controller has

                              input_vendor_id = 2064                                                                                                                                                                                            
                              input_product_id = 3
                              

                              SNES controller has

                              input_vendor_id = 121                                                                                                                                                                                             
                              input_product_id = 17
                              
                              1 Reply Last reply Reply Quote 0
                              • mituM
                                mitu Global Moderator
                                last edited by

                                @langest said in Different controllers using the same configuration file:

                                This is not the same vid:pid shown by lsusb(!).

                                They kind of are, since lsusb shows the hex (base 16) values:

                                0079:11 (base 16) = 121:17 (base 10)
                                810:3 (base 16) = 2064:3 (base 10)

                                Ref: http://www.binaryhexconverter.com/hex-to-decimal-converter.

                                1 Reply Last reply Reply Quote 1
                                • langestL
                                  langest
                                  last edited by

                                  Alright, I see. But how can you tell if you don't know? The numbers are not prefixed with 0x and the man page doesn't give you any hints.

                                  1 Reply Last reply Reply Quote 0
                                  • X
                                    XeroOmega
                                    last edited by XeroOmega

                                    I'm having the same issue,
                                    i have 4 controllers, 2 nes(clone)(usb), 2 genesis(8bitdo)(usb wifi dongle).
                                    they share the same name,"USB Gamepad ", vendor 0079, product 0011.
                                    They both use "USB Gamepad .cfg"
                                    I've been trying to get around this for a while now.

                                    (8bitdo m30 2.4g)
                                    cat /proc/bus/input/devices
                                    I: Bus=0003 Vendor=0079 Product=0011 Version=0110
                                    N: Name="USB Gamepad "
                                    P: Phys=usb-0000:01:00.0-1.4.3/input0
                                    S: Sysfs=/devices/platform/scb/fd500000.pcie/pci0000:00/0000:00:00.0/0000:01:00.0/usb1/1-1/1-1.4/1-1.4.3/1-1.4.3:1.0/0003:0079:0011.0003/input/input2
                                    U: Uniq=
                                    H: Handlers=js1 event1
                                    B: PROP=0
                                    B: EV=1b
                                    B: KEY=3ff 0 0 0 0 0 0 0 0 0
                                    B: ABS=3
                                    B: MSC=10

                                    (generic usb nes controller clone)
                                    I: Bus=0003 Vendor=0079 Product=0011 Version=0110
                                    N: Name="USB Gamepad "
                                    P: Phys=usb-0000:01:00.0-1.4.4/input0
                                    S: Sysfs=/devices/platform/scb/fd500000.pcie/pci0000:00/0000:00:00.0/0000:01:00.0/usb1/1-1/1-1.4/1-1.4.4/1-1.4.4:1.0/0003:0079:0011.0005/input/input4
                                    U: Uniq=
                                    H: Handlers=js2 event2
                                    B: PROP=0
                                    B: EV=1b
                                    B: KEY=3ff 0 0 0 0 0 0 0 0 0
                                    B: ABS=3
                                    B: MSC=10

                                    (8bitdo m30 2.4g)
                                    udevadm info -q all -n /dev/input/event[1]
                                    P: /devices/platform/scb/fd500000.pcie/pci0000:00/0000:00:00.0/0000:01:00.0/usb1/1-1/1-1.4/1-1.4.3/1-1.4.3:1.0/0003:0079:0011.0003/input/input2/event1
                                    N: input/event1
                                    L: 0
                                    S: input/by-id/usb-0079_USB_Gamepad-event-joystick
                                    S: input/by-path/platform-fd500000.pcie-pci-0000:01:00.0-usb-0:1.4.3:1.0-event-joystick
                                    E: DEVPATH=/devices/platform/scb/fd500000.pcie/pci0000:00/0000:00:00.0/0000:01:00.0/usb1/1-1/1-1.4/1-1.4.3/1-1.4.3:1.0/0003:0079:0011.0003/input/input2/event1
                                    E: DEVNAME=/dev/input/event1
                                    E: MAJOR=13
                                    E: MINOR=65
                                    E: SUBSYSTEM=input
                                    E: USEC_INITIALIZED=5712528
                                    E: ID_INPUT=1
                                    E: ID_INPUT_JOYSTICK=1
                                    E: ID_VENDOR=0079
                                    E: ID_VENDOR_ENC=0079
                                    E: ID_VENDOR_ID=0079
                                    E: ID_MODEL=USB_Gamepad
                                    E: ID_MODEL_ENC=USB\x20Gamepad\x20
                                    E: ID_MODEL_ID=0011
                                    E: ID_REVISION=0105
                                    E: ID_SERIAL=0079_USB_Gamepad
                                    E: ID_TYPE=hid
                                    E: ID_BUS=usb
                                    E: ID_USB_INTERFACES=:030000:
                                    E: ID_USB_INTERFACE_NUM=00
                                    E: ID_USB_DRIVER=usbhid
                                    E: ID_PATH=platform-fd500000.pcie-pci-0000:01:00.0-usb-0:1.4.3:1.0
                                    E: ID_PATH_TAG=platform-fd500000_pcie-pci-0000_01_00_0-usb-0_1_4_3_1_0
                                    E: ID_FOR_SEAT=input-platform-fd500000_pcie-pci-0000_01_00_0-usb-0_1_4_3_1_0
                                    E: LIBINPUT_DEVICE_GROUP=3/79/11:usb-0000:01:00.0-1.4
                                    E: DEVLINKS=/dev/input/by-id/usb-0079_USB_Gamepad-event-joystick /dev/input/by-path/platform-fd500000.pcie-pci-0000:01:00.0-usb-0:1.4.3:1.0-event-joystick
                                    E: TAGS=:uaccess:seat:

                                    (generic usb nes controller clone)
                                    udevadm info -q all -n /dev/input/event[2]
                                    P: /devices/platform/scb/fd500000.pcie/pci0000:00/0000:00:00.0/0000:01:00.0/usb1/1-1/1-1.4/1-1.4.4/1-1.4.4:1.0/0003:0079:0011.0005/input/input4/event2
                                    N: input/event2
                                    L: 0
                                    S: input/by-id/usb-0079_USB_Gamepad-event-joystick
                                    S: input/by-path/platform-fd500000.pcie-pci-0000:01:00.0-usb-0:1.4.4:1.0-event-joystick
                                    E: DEVPATH=/devices/platform/scb/fd500000.pcie/pci0000:00/0000:00:00.0/0000:01:00.0/usb1/1-1/1-1.4/1-1.4.4/1-1.4.4:1.0/0003:0079:0011.0005/input/input4/event2
                                    E: DEVNAME=/dev/input/event2
                                    E: MAJOR=13
                                    E: MINOR=66
                                    E: SUBSYSTEM=input
                                    E: USEC_INITIALIZED=93696483560
                                    E: ID_INPUT=1
                                    E: ID_INPUT_JOYSTICK=1
                                    E: ID_VENDOR=0079
                                    E: ID_VENDOR_ENC=0079
                                    E: ID_VENDOR_ID=0079
                                    E: ID_MODEL=USB_Gamepad
                                    E: ID_MODEL_ENC=USB\x20Gamepad\x20
                                    E: ID_MODEL_ID=0011
                                    E: ID_REVISION=0106
                                    E: ID_SERIAL=0079_USB_Gamepad
                                    E: ID_TYPE=hid
                                    E: ID_BUS=usb
                                    E: ID_USB_INTERFACES=:030000:
                                    E: ID_USB_INTERFACE_NUM=00
                                    E: ID_USB_DRIVER=usbhid
                                    E: ID_PATH=platform-fd500000.pcie-pci-0000:01:00.0-usb-0:1.4.4:1.0
                                    E: ID_PATH_TAG=platform-fd500000_pcie-pci-0000_01_00_0-usb-0_1_4_4_1_0
                                    E: ID_FOR_SEAT=input-platform-fd500000_pcie-pci-0000_01_00_0-usb-0_1_4_4_1_0
                                    E: LIBINPUT_DEVICE_GROUP=3/79/11:usb-0000:01:00.0-1.4
                                    E: DEVLINKS=/dev/input/by-id/usb-0079_USB_Gamepad-event-joystick /dev/input/by-path/platform-fd500000.pcie-pci-0000:01:00.0-usb-0:1.4.4:1.0-event-joystick
                                    E: TAGS=:seat:uaccess:

                                    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.