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

    RetroArch isn't mapping the GamePad buttons correctly - RetroPie 4.4

    Scheduled Pinned Locked Moved Help and Support
    retroarchgamepadretropie 4.4
    29 Posts 3 Posters 2.7k 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.
    • A
      ANamelessDrake
      last edited by

      Also I think it's marking the GamePad as a keyboard device not a joystick. That's why it's showing up as a keyboard attached.

      Not sure if that's the problem or not though.

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

        @ANamelessDrake said in RetroArch isn't mapping the GamePad buttons correctly - RetroPie 4.4:

        It's completely unplugged. Is there a way I can force it to rescan the dev bus?

        There's no need for that. Maybe your gamepad is acting also like a keyboard, but the thing is there are 2 joysticks being detected, based on the log.

        What buttons are mis-matched in your controller configuration ?

        1 Reply Last reply Reply Quote 0
        • A
          ANamelessDrake
          last edited by

          The d-pad seems to be mapped correctly. Literally everything else seems to be incorrect.

          Nothing else is attached or paired with the system so I can't figure out why it's detecting two input devices.

          1 Reply Last reply Reply Quote 0
          • A
            ANamelessDrake
            last edited by

            root@retropie:~# lshw -short
            H/W path  Device  Class          Description
            ============================================
                              system         Raspberry Pi 2 Model B Rev 1.1
            /0                bus            Motherboard
            /0/0              processor      cpu
            /0/1              processor      cpu
            /0/2              processor      cpu
            /0/3              processor      cpu
            /0/4              memory         748MiB System memory
            /1        usb1    bus            DWC OTG Controller
            /1/1              bus            SMC9514 Hub
            /1/1/1            generic        SMSC9512/9514 Fast Ethernet Adapter
            /1/1/3            communication  Bluetooth Dongle (HCI mode)
            /1/1/5            generic        802.11n WLAN Adapter
            /2        wlan0   network        Wireless interface
            /3        eth0    network        Ethernet interface
            
            
            root@retropie:~# hwinfo --short
            cpu:                                                            
                                   CPU
                                   CPU
                                   CPU
                                   CPU
            keyboard:
              /dev/input/event0    Gamepad
            network:
              eth0                 Standard Microsystems SMSC9512/9514 Fast Ethernet Adapter
              wlan0                Edimax EW-7811Un 802.11n Wireless Adapter [Realtek RTL8188CUS]
            network interface:
              eth0                 Ethernet network interface
              wlan0                WLAN network interface
              lo                   Loopback network interface
            disk:
              /dev/ram11           Disk
              /dev/ram2            Disk
              /dev/ram0            Disk
              /dev/ram9            Disk
              /dev/ram7            Disk
              /dev/ram14           Disk
              /dev/ram5            Disk
              /dev/ram12           Disk
              /dev/ram3            Disk
              /dev/ram10           Disk
              /dev/ram1            Disk
              /dev/ram8            Disk
              /dev/ram15           Disk
              /dev/ram6            Disk
              /dev/mmcblk0         Disk
              /dev/ram13           Disk
              /dev/ram4            Disk
            partition:
              /dev/mmcblk0p1       Partition
              /dev/mmcblk0p2       Partition
            usb controller:
                                   ARM USB 0
            hub:
                                   Linux Foundation 2.0 root hub
                                   Standard Microsystems SMC9514 Hub
            memory:
                                   Main Memory
            bluetooth:
                                   Cambridge Silicon Radio Bluetooth Dongle (HCI mode)
            
            
            1 Reply Last reply Reply Quote 0
            • A
              ANamelessDrake
              last edited by

              What's weird is that the hardware is being detected by udev and mapping it to /dev/input/event0 but it's also creating a joystick device.

              ls /dev/input/
              event0	js0  mice  mouse0
              

              I don't know how to fix it yet but this is likely the problem.

              jstest responds as we would expect for /dev/input/js0 but not for /dev/input/event0

              I have a feeling that RetroArch is detecting the device as the system is "/dev/input/event0" but I have no evidence of that yet.

              Any ideas?

              1 Reply Last reply Reply Quote 0
              • G
                grant2258 Banned
                last edited by

                can you show the output of evtest

                1 Reply Last reply Reply Quote 0
                • A
                  ANamelessDrake
                  last edited by

                  Sure thing!

                  evtest /dev/input/event0
                  Input driver version is 1.0.1
                  Input device ID: bus 0x5 vendor 0x1949 product 0x402 version 0x11b
                  Input device name: "Gamepad"
                  Supported events:
                    Event type 0 (EV_SYN)
                    Event type 1 (EV_KEY)
                      Event code 1 (KEY_ESC)
                      Event code 2 (KEY_1)
                      Event code 3 (KEY_2)
                      Event code 4 (KEY_3)
                      Event code 5 (KEY_4)
                      Event code 6 (KEY_5)
                      Event code 7 (KEY_6)
                      Event code 8 (KEY_7)
                      Event code 9 (KEY_8)
                      Event code 10 (KEY_9)
                      Event code 11 (KEY_0)
                      Event code 12 (KEY_MINUS)
                      Event code 13 (KEY_EQUAL)
                      Event code 14 (KEY_BACKSPACE)
                      Event code 15 (KEY_TAB)
                      Event code 16 (KEY_Q)
                      Event code 17 (KEY_W)
                      Event code 18 (KEY_E)
                      Event code 19 (KEY_R)
                      Event code 20 (KEY_T)
                      Event code 21 (KEY_Y)
                      Event code 22 (KEY_U)
                      Event code 23 (KEY_I)
                      Event code 24 (KEY_O)
                      Event code 25 (KEY_P)
                      Event code 26 (KEY_LEFTBRACE)
                      Event code 27 (KEY_RIGHTBRACE)
                      Event code 28 (KEY_ENTER)
                      Event code 29 (KEY_LEFTCTRL)
                      Event code 30 (KEY_A)
                      Event code 31 (KEY_S)
                      Event code 32 (KEY_D)
                      Event code 33 (KEY_F)
                      Event code 34 (KEY_G)
                      Event code 35 (KEY_H)
                      Event code 36 (KEY_J)
                      Event code 37 (KEY_K)
                      Event code 38 (KEY_L)
                      Event code 39 (KEY_SEMICOLON)
                      Event code 40 (KEY_APOSTROPHE)
                      Event code 41 (KEY_GRAVE)
                      Event code 42 (KEY_LEFTSHIFT)
                      Event code 43 (KEY_BACKSLASH)
                      Event code 44 (KEY_Z)
                      Event code 45 (KEY_X)
                      Event code 46 (KEY_C)
                      Event code 47 (KEY_V)
                      Event code 48 (KEY_B)
                      Event code 49 (KEY_N)
                      Event code 50 (KEY_M)
                      Event code 51 (KEY_COMMA)
                      Event code 52 (KEY_DOT)
                      Event code 53 (KEY_SLASH)
                      Event code 54 (KEY_RIGHTSHIFT)
                      Event code 55 (KEY_KPASTERISK)
                      Event code 56 (KEY_LEFTALT)
                      Event code 57 (KEY_SPACE)
                      Event code 58 (KEY_CAPSLOCK)
                      Event code 59 (KEY_F1)
                      Event code 60 (KEY_F2)
                      Event code 61 (KEY_F3)
                      Event code 62 (KEY_F4)
                      Event code 63 (KEY_F5)
                      Event code 64 (KEY_F6)
                      Event code 65 (KEY_F7)
                      Event code 66 (KEY_F8)
                      Event code 67 (KEY_F9)
                      Event code 68 (KEY_F10)
                      Event code 69 (KEY_NUMLOCK)
                      Event code 70 (KEY_SCROLLLOCK)
                      Event code 71 (KEY_KP7)
                      Event code 72 (KEY_KP8)
                      Event code 73 (KEY_KP9)
                      Event code 74 (KEY_KPMINUS)
                      Event code 75 (KEY_KP4)
                      Event code 76 (KEY_KP5)
                      Event code 77 (KEY_KP6)
                      Event code 78 (KEY_KPPLUS)
                      Event code 79 (KEY_KP1)
                      Event code 80 (KEY_KP2)
                      Event code 81 (KEY_KP3)
                      Event code 82 (KEY_KP0)
                      Event code 83 (KEY_KPDOT)
                      Event code 85 (KEY_ZENKAKUHANKAKU)
                      Event code 86 (KEY_102ND)
                      Event code 87 (KEY_F11)
                      Event code 88 (KEY_F12)
                      Event code 89 (KEY_RO)
                      Event code 90 (KEY_KATAKANA)
                      Event code 91 (KEY_HIRAGANA)
                      Event code 92 (KEY_HENKAN)
                      Event code 93 (KEY_KATAKANAHIRAGANA)
                      Event code 94 (KEY_MUHENKAN)
                      Event code 95 (KEY_KPJPCOMMA)
                      Event code 96 (KEY_KPENTER)
                      Event code 97 (KEY_RIGHTCTRL)
                      Event code 98 (KEY_KPSLASH)
                      Event code 99 (KEY_SYSRQ)
                      Event code 100 (KEY_RIGHTALT)
                      Event code 102 (KEY_HOME)
                      Event code 103 (KEY_UP)
                      Event code 104 (KEY_PAGEUP)
                      Event code 105 (KEY_LEFT)
                      Event code 106 (KEY_RIGHT)
                      Event code 107 (KEY_END)
                      Event code 108 (KEY_DOWN)
                      Event code 109 (KEY_PAGEDOWN)
                      Event code 110 (KEY_INSERT)
                      Event code 111 (KEY_DELETE)
                      Event code 113 (KEY_MUTE)
                      Event code 114 (KEY_VOLUMEDOWN)
                      Event code 115 (KEY_VOLUMEUP)
                      Event code 116 (KEY_POWER)
                      Event code 117 (KEY_KPEQUAL)
                      Event code 119 (KEY_PAUSE)
                      Event code 121 (KEY_KPCOMMA)
                      Event code 122 (KEY_HANGUEL)
                      Event code 123 (KEY_HANJA)
                      Event code 124 (KEY_YEN)
                      Event code 125 (KEY_LEFTMETA)
                      Event code 126 (KEY_RIGHTMETA)
                      Event code 127 (KEY_COMPOSE)
                      Event code 128 (KEY_STOP)
                      Event code 129 (KEY_AGAIN)
                      Event code 130 (KEY_PROPS)
                      Event code 131 (KEY_UNDO)
                      Event code 132 (KEY_FRONT)
                      Event code 133 (KEY_COPY)
                      Event code 134 (KEY_OPEN)
                      Event code 135 (KEY_PASTE)
                      Event code 136 (KEY_FIND)
                      Event code 137 (KEY_CUT)
                      Event code 138 (KEY_HELP)
                      Event code 139 (KEY_MENU)
                      Event code 140 (KEY_CALC)
                      Event code 142 (KEY_SLEEP)
                      Event code 144 (KEY_FILE)
                      Event code 150 (KEY_WWW)
                      Event code 152 (KEY_SCREENLOCK)
                      Event code 155 (KEY_MAIL)
                      Event code 158 (KEY_BACK)
                      Event code 159 (KEY_FORWARD)
                      Event code 161 (KEY_EJECTCD)
                      Event code 163 (KEY_NEXTSONG)
                      Event code 164 (KEY_PLAYPAUSE)
                      Event code 165 (KEY_PREVIOUSSONG)
                      Event code 166 (KEY_STOPCD)
                      Event code 171 (KEY_CONFIG)
                      Event code 172 (KEY_HOMEPAGE)
                      Event code 173 (KEY_REFRESH)
                      Event code 176 (KEY_EDIT)
                      Event code 177 (KEY_SCROLLUP)
                      Event code 178 (KEY_SCROLLDOWN)
                      Event code 179 (KEY_KPLEFTPAREN)
                      Event code 180 (KEY_KPRIGHTPAREN)
                      Event code 183 (KEY_F13)
                      Event code 184 (KEY_F14)
                      Event code 185 (KEY_F15)
                      Event code 186 (KEY_F16)
                      Event code 187 (KEY_F17)
                      Event code 188 (KEY_F18)
                      Event code 189 (KEY_F19)
                      Event code 190 (KEY_F20)
                      Event code 191 (KEY_F21)
                      Event code 192 (KEY_F22)
                      Event code 193 (KEY_F23)
                      Event code 194 (KEY_F24)
                      Event code 207 (KEY_PLAY)
                      Event code 217 (KEY_SEARCH)
                      Event code 240 (KEY_UNKNOWN)
                      Event code 272 (BTN_LEFT)
                      Event code 273 (BTN_RIGHT)
                      Event code 274 (BTN_MIDDLE)
                      Event code 304 (BTN_SOUTH)
                      Event code 305 (BTN_EAST)
                      Event code 306 (BTN_C)
                      Event code 307 (BTN_NORTH)
                      Event code 308 (BTN_WEST)
                      Event code 309 (BTN_Z)
                      Event code 310 (BTN_TL)
                      Event code 311 (BTN_TR)
                      Event code 312 (BTN_TL2)
                      Event code 313 (BTN_TR2)
                      Event code 314 (BTN_SELECT)
                      Event code 315 (BTN_START)
                      Event code 316 (BTN_MODE)
                      Event code 317 (BTN_THUMBL)
                      Event code 318 (BTN_THUMBR)
                      Event code 319 (?)
                      Event code 581 (KEY_SCREENSAVER)
                    Event type 2 (EV_REL)
                      Event code 0 (REL_X)
                      Event code 1 (REL_Y)
                      Event code 8 (REL_WHEEL)
                    Event type 3 (EV_ABS)
                      Event code 0 (ABS_X)
                        Value    128
                        Min        0
                        Max      255
                        Flat      15
                      Event code 1 (ABS_Y)
                        Value    128
                        Min        0
                        Max      255
                        Flat      15
                      Event code 2 (ABS_Z)
                        Value    128
                        Min        0
                        Max      255
                        Flat      15
                      Event code 5 (ABS_RZ)
                        Value    128
                        Min        0
                        Max      255
                        Flat      15
                      Event code 16 (ABS_HAT0X)
                        Value      0
                        Min       -1
                        Max        1
                      Event code 17 (ABS_HAT0Y)
                        Value      0
                        Min       -1
                        Max        1
                    Event type 4 (EV_MSC)
                      Event code 4 (MSC_SCAN)
                    Event type 17 (EV_LED)
                      Event code 0 (LED_NUML) state 0
                      Event code 1 (LED_CAPSL) state 0
                      Event code 2 (LED_SCROLLL) state 0
                      Event code 3 (LED_COMPOSE) state 0
                      Event code 4 (LED_KANA) state 0
                  Key repeat handling:
                    Repeat type 20 (EV_REP)
                      Repeat code 0 (REP_DELAY)
                        Value    250
                      Repeat code 1 (REP_PERIOD)
                        Value     33
                  Properties:
                  Testing ... (interrupt to exit)
                  Event: time 1555798015.740419, type 4 (EV_MSC), code 4 (MSC_SCAN), value 90002
                  Event: time 1555798015.740419, type 1 (EV_KEY), code 305 (BTN_EAST), value 1
                  Event: time 1555798015.740419, -------------- SYN_REPORT ------------
                  Event: time 1555798015.985428, type 4 (EV_MSC), code 4 (MSC_SCAN), value 90002
                  Event: time 1555798015.985428, type 1 (EV_KEY), code 305 (BTN_EAST), value 0
                  Event: time 1555798015.985428, -------------- SYN_REPORT ------------
                  
                  1 Reply Last reply Reply Quote 0
                  • G
                    grant2258 Banned
                    last edited by

                    just type evtest by iteslf

                    1 Reply Last reply Reply Quote 0
                    • A
                      ANamelessDrake
                      last edited by

                      That produces an error.

                      evtest 
                      No device specified, trying to scan all of /dev/input/event*
                      USAGE:
                       Capture mode:
                         evtest [--grab] /dev/input/eventX
                           --grab  grab the device for exclusive access
                      
                       Query mode: (check exit code)
                         evtest --query /dev/input/eventX <type> <value>
                      
                      <type> is one of: EV_KEY, EV_SW, EV_LED, EV_SND
                      <value> can either be a numerical value, or the textual name of the
                      key/switch/LED/sound being queried (e.g. SW_DOCK).
                      
                      1 Reply Last reply Reply Quote 0
                      • mituM
                        mitu Global Moderator
                        last edited by mitu

                        Based on the evtest output, it looks like the device is registering a keyboard, mouse and joystick inputs. Looks like an Android gamepad.
                        Since the auto-configuration doesn't work, I'd take the manual configuration route and create the mappings manually in the .cfg file (see https://retropie.org.uk/docs/RetroArch-Configuration/#autoconfigurations). Your configuration file is in /home/pi/.config/retroarch/autoconfig/Gamepad.cfg - you should add there the keycodes as reported by jstest when testing your controller.

                        EDIT: or maybe the gamepad has a 'mode' switch that turns on a PC compatible connection mode - you could try to use that.

                        A 1 Reply Last reply Reply Quote 0
                        • A
                          ANamelessDrake
                          last edited by

                          I'll give that a try but I'd prefer to disable it on the system itself.

                          Fortunately I have a backup image of my last working version of RetroPie (3.8 I believe) and since I rarely logged into it interactively I have a fairly small bash history to look through. It seems I changed the driver for this device in the past to sd12. That doesn't seem to do anything now though.

                          Can you tell me if that's still a valid driver for devices? Maybe there's another package I can try to install.

                          Also I found this post (second answer) which describes a solution that involves modifying X11 configs: https://askubuntu.com/questions/632026/how-can-i-stop-my-controller-from-moving-my-mouse

                          Does the X11 that's shipped with Debian (rasberian) Stretch still use these config files?

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

                            @ANamelessDrake said in RetroArch isn't mapping the GamePad buttons correctly - RetroPie 4.4:

                            Does the X11 that's shipped with Debian (rasberian) Stretch still use these config files?

                            RetroPie doesn't use Raspbian, so that solution doesn't apply. Other input drivers available are hid and sdl2 ( I think default is udev, which is what you're using right now).

                            1 Reply Last reply Reply Quote 0
                            • A
                              ANamelessDrake @mitu
                              last edited by

                              @mitu I just tried to manually configure the inputs (/home/pi/.config/retroarch/autoconfig/Gamepad.cfg) but they seem to be correct.

                              Any other ideas?

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

                                @ANamelessDrake One last idea - use Xboxdrv to simulate an Xbox compatible driver and 'hide' the original device.

                                A 1 Reply Last reply Reply Quote 0
                                • A
                                  ANamelessDrake @mitu
                                  last edited by

                                  @mitu said in RetroArch isn't mapping the GamePad buttons correctly - RetroPie 4.4:

                                  @ANamelessDrake One last idea - use Xboxdrv to simulate an Xbox compatible driver and 'hide' the original device.

                                  Okay I'll give that a shot and report back if that did the trick or not. One quick note is the documentation seems to be a bit dated. Installing the driver via the EmulationStation GUI wasn't possiable (at least it wasn't in the menu option location documented) so I ended up installing it via the command line.

                                  sudo apt-get install xboxdrv

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

                                    @ANamelessDrake The xboxdrv driver can be installed from the RetroPie setup packages - it's in the drivers section.

                                    1 Reply Last reply Reply Quote 0
                                    • A
                                      ANamelessDrake
                                      last edited by

                                      I'm very sad to report, after trying tons of different things, I simply could not get this controller to work in RetroPi 4.4.

                                      Unless anyone has any other ideas I'm going to restore my 3.8 image. :-(

                                      Either way I do appreciate all the help!

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

                                        I'm curious how does this work on the 3.8 image - what's the input_driver used in RetroArch and if there are any other configurations you applied to make the controller work.

                                        1 Reply Last reply Reply Quote 0
                                        • A
                                          ANamelessDrake
                                          last edited by

                                          Currently the driver used in RetroArch is set to udev. Changing the driver doesn't seem to change the behaviour of the controller.

                                          Previously it was set to sdl2 which seemed to do the trick.

                                          I built the previous version quite some time ago so sadly I don't remember everything I did but like I said previously the bash history on the box was fairly small. It seems like all I had to do to get it work was create a udev rule (which I had to do again here in 4.4) and change the driver over to sdl2.

                                          Since 3.8, it seems a major OS update was required. I suspect that Debian 9.8 (the current version of Debian) has made changes in how it handles hardware via udev since Debian 8.0 (the previous version used) .

                                          I'm an automation specialist with limited experience writing hardware drivers so unfortunately I'm kinda at a loss as to where to go from here.

                                          1 Reply Last reply Reply Quote 0
                                          • A
                                            ANamelessDrake
                                            last edited by

                                            I just checked my other fourm posts I made here and it seems like I had this same issue previously but changing the driver did the trick.

                                            See the original post about this topic I made back in 2016: https://retropie.org.uk/forum/topic/2097/controller-does-not-work-in-games/7

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