RetroArch isn't mapping the GamePad buttons correctly - RetroPie 4.4
-
Hey guys,
I'm using a generic Bluetooth controller that used to work in RetroPie 3.7. I've successfully paired and configured the controller but when I go to actually play a game it seems that the buttons aren't correctly mapped to the game. They do work correctly in EmulationStation.
Looking through a verbose output of runcommand.log I see the following:
[libretro INFO] Frontend supports RGB565 - will use that instead of XRGB1555. [INFO] Environ PERFORMANCE_LEVEL: 7. [INFO] Loading content file: /home/pi/RetroPie/roms/snes/Castlevania - Dracula X.smc. [INFO] Did not find a valid content patch. [INFO] CRC32: 0x7c4887e1 . [INFO] Environ SET_INPUT_DESCRIPTORS: [INFO] RetroPad, User 1, Button "B (bottom)" => "B" [INFO] RetroPad, User 1, Button "Y (left)" => "Y" [INFO] RetroPad, User 1, Button "Select" => "Select" [INFO] RetroPad, User 1, Button "Start" => "Start" [INFO] RetroPad, User 1, Button "D-Pad Up" => "D-Pad Up" [INFO] RetroPad, User 1, Button "D-Pad Down" => "D-Pad Down" [INFO] RetroPad, User 1, Button "D-Pad Left" => "D-Pad Left" [INFO] RetroPad, User 1, Button "D-Pad Right" => "D-Pad Right" [INFO] RetroPad, User 1, Button "A (right)" => "A" [INFO] RetroPad, User 1, Button "X (up)" => "X" [INFO] RetroPad, User 1, Button "L" => "L" [INFO] RetroPad, User 1, Button "R" => "R"
Hardware configuration is below:
Pi Model or other hardware: 2 B+
Power Supply used: USB
RetroPie Version Used : 4.4
Built From: Official image - retropie-4.4-rpi2_rpi3.img - Upgraded after install using built in scripts -
Please post the complete log on pastebin.com. Did you configre your controller in Emulationstation, using the Input configuration ?
-
Sure thing... https://pastebin.com/GYaCLxKH
And yes I used the input configuration process within EmulationStation and it works great within EmulationStation's UI. I believe the problem lies with RetroArch somewhere.
-
@ANamelessDrake Can you try to unplug your keyboard - it's detected as P1.
-
It's completely unplugged. Is there a way I can force it to rescan the dev bus?
-
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.
-
@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 ?
-
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.
-
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)
-
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?
-
can you show the output of evtest
-
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 ------------
-
just type evtest by iteslf
-
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).
-
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 byjstest
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.
-
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?
-
@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
andsdl2
( I think default isudev
, which is what you're using right now). -
@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?
-
@ANamelessDrake One last idea - use Xboxdrv to simulate an Xbox compatible driver and 'hide' the original device.
-
@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
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.