Homepage Forums RetroPie Project Controller Configuration in RetroPie How to get Xin-Mo Dual Arcade Working with retropie! Easy guide:-)

Viewing 35 posts - 1 through 35 (of 61 total)
  • Author
  • #114316

    Probably you are in the same situation as I was, pulling your hair because you can’t get the Xin-mo to work properly. And it is nearly impossible to find a easy to follow guide how to get it working. So when I got my Xin-mo working with all the emulators I decided to write this guide. Enjoy!

    This is the setup I got:
    Pi Model: Raspberry Pi 2
    RetroPie Version Used: 3.3.1 Magnet link: magnet:?xt=urn:btih:6656bf7bd104930039f4eb81399976ebd297b8fe
    Built From: SD Image
    USB Devices connected: Xin-Mo (http://www.xin-mo.com/?page_id=34)
    Bought the Xin-mo with arcade buttons here: http://www.ultracabs.co.uk/usb-interface–standard-joystick-set-109-p.asp

    I have tested the Xin-mo with the following: MAME, FBA, Playstation, SNES, NES, SMS, SMD, Game boy, Game boy Advance, Doom.

    If you are used to installing Retropie you can skip several steps.

    Step 1: Connect the cables from the arcade buttons to the Xin-mo as shown in the attached picture. Else you will get player 1 as player 2 and vice versa. (Choose PS3 mode and not PC)

    Step 2: Download and Write your RetroPie image to a SD-card.

    Step 3: Insert the SD-card with RetroPie 3.x in your raspberry Pi, connect it to your network with a RJ-45 cable or wifi and boot it up.

    Step 4: Go to the “RetroPie” menu and select : “raspberry Pi configuration tool raspi-config”. Then click: “Expand filesystem”. Reboot. (Not needed in newer RetroPie)

    Step 5: Login to the terminal and set a root password, type: sudo passwd root and choose a password. For example: User: Root Password: raspberry

    Step 6: Download this custom kernel (It will fix the problem with the joysticks messing with each other): custom_kernel_1.20150818-1.tar.gz

    (Newer kernel, use this if you install 3.6: custom_kernel_1.20160128-1.tar.gz
    (Thanks to feederchain for the kernels).

    Step 7: Don’t unpack the file just place it somewhere on the SD-card, in /home/ for example. (I used filezilla for transferring the file from my computer to the Pi) (Do this as ROOT!)

    Step 8: Run these commands from the terminal on the Raspberry Pi or using SSH:
    cd /home/ (This is the place you placed your file, so here I used /home/)
    tar -xf custom_kernel_1.20150818-1.tar.gz (This command unpacks the file)
    cd custom_kernel_1.20150818-1
    sudo ./install.sh (This will install the custom kernel)

    After this the Raspberry Pi should reboot.

    Step 9: Now we are going to modify the cmdline.txt so we get two controllers showing up instead of one.
    SSH or terminal again:
    cd /boot/
    sudo nano cmdline.txt

    Add the following content after a space at the end of the first line: usbhid.quirks=0x16c0:0x05e1:0x040

    Press CTRL + X and type “Y” for yes, so it saves the file.

    Step 10: Now you can register your buttons in EmulatorStation, but just register the left controller (Player 1). Now you should be able to navigate and press buttons.

    Step 11: Go in to the RetroArch configuration and navigate to “input”, change the buttons you want for Player 1 and 2 for the Xin-mo. Then go to hotkeys menu and select what buttons you want for quitting a game, saving etc.

    RetroPie—>Configure RetroArch/Launch RetroArch RGUI—–>Settings—->Input—->”Input Hotkey Binds” and “input User 1/2/3 etc Binds”

    Step 12: Change the driver for the Xin-mo from sdl2 to udev.

    Step 13: Go back to the main menu in RetroArch and save the config as a new file. (For me it didn’t work just to save the old file) Quit RetroArch setup.

    Step 14: Navigate to the config file (using filezilla e.g.) in /opt/retropie/configs/all/ rename the file retroarch.cfg to retroarch.cfg.old, and rename the file you just created to retroarch.cfg. Reboot RetroPie.

    Step 15: If you are using MAME you have to start a game and press TAB and edit the controls in there as well.

    Step 16: DONE! Now both players should work in all the games, so you can play Street Fighter II or Tekken 3 with a friend. Enjoy!

    (In Emulatorstation the right controller have some issues, but the left controllers is enough for navigating. And both is working in the games.)

    Here is FileZilla

    Here is Win32diskimager For Writing or create a backup of RetroPie (Windows)

    Here is Pi Copier and Pi Filler if you are using Mac OSX

    [attachment file=”114317″]


    Awesome guide ! Thank you.
    Do you think that works on raspberry pi B+ ?


    Hi and Thanks! I Think the Kernel patch is only for Raspberry pi 2, but I could be wrong. Everything else should work however:-) What problems are you experiencing with your xin-mo and Pi B+?


    Hey duckclimber! First off I’d like to say how thankful I am for the quick run through on this fix. It’s been driving me nuts for ages haha. I was having the same issue with the xin mo controller reading the axis of both joysticks and need them read separately. It appears I’m on the home stretch but I’ve ran into a bit of a snag with STEP 8.

    I’ve chosen to use WinSCP to transfer my files back and forth. When dragging the kernel over to /home (the following error is received)

    Cannot create remote file

    Permission denied.
    Error code: 3
    Error message from server: Permission denied

    After this I had put the file into the folder /home/pi. (also includes the folders RetroPie and RetroPie-Setup)

    When on the command line to type for prompts I entered as follows:

    $cd /home/
    /home $ tar -xf custom_kernel_1.20150818-1.tar.gz
    tar: custom_kernel_1.20150818-1.tar.gz: Cannot open: No such file or directory
    tar: Error is not recoverable: exiting now

    Now I’m at a complete loss. I’ve tried this with my Raspberry Pie 2 on version 3.0 and 3.4 of the SD card image and come to the same conclusion.

    Any help or advice would be amazing! I can also offer more information if needed.


    Hi! When you transfer your file to your /home/ do it as root. In other words login with your root-account and transfer the kernel patch.

    Here is Retro Pie 3.3.1 magnet link: magnet:?xt=urn:btih:6656bf7bd104930039f4eb81399976ebd297b8fe
    (open the link with uTorrent or transmission for example)
    I’ll now it works with that:-)

    Here is filezilla: https://filezilla-project.org/download.php?show_all=1


    Thanks for the clarification, it appeared that I was running as root but did not have some of the boxes checked under permissions. I’ve got that cleared up now and the controls are working (WHEW!) Your pretty great man keep up the awesome work and if I have any more issues I’ll be sure to shoot you a message :)


    Hello duckclimber,
    congratulations, you have done a good job with this tutorial.

    Following all the steps you get the cpo working well if every button is connected to the “standard”.

    But, I don’t know what is the standard. Can you suggest a button assignation to the xin-mo controller ? For example, for 2 players, 6 button per player, and 4 or 6 service buttons (1 player, 2 players, select, start, pause and exit)
    For example:
    input_player1_b_btn = 0
    input_player1_y_btn = 2
    input_player1_select_btn = 7
    input_player1_start_btn = 6
    input_player1_a_btn = 1
    input_player1_x_btn = 3

    Thank you


    Hi elparent! It really does not matter really, as long as you connect Player one and two to the right side of the Xin-mo board. You can change the button layout in Retro Arch and MAME later:-)


    Hi guys, I’ve indeed been pulling my hair out as both joysticks operate the both players when fully configured, will this fix sort this issue? I’m a real novice to the pi world!! Haha



    This seems excellent, thanks for putting it together!

    I’m having issues with Step 11:

    “Step 11: Go in to the RetroArch configuration and navigate to “input”, change the buttons you want for Player 1 and 2 for the Xin-mo. Then go to hotkeys menu and select what buttons you want for quitting a game, saving etc. ”

    Where exactly is this?



    Hi hoofa! If you are using the Xin-mo it should fix your problem:-)


    Hi! I will write it more clear in the guide, thanks:-)

    RetroPie—>Configure RetroArch/Launch RetroArch RGUI—–>Settings—->Input—->”Input Hotkey Binds” and “input User 1/2/3 etc Binds”

    Remember to save the settings before exit.


    worked perfectly, thanks so much for this! Quick question and slightly off topic so apologies, can you also configure a usb gamepad alongside the xin mo set up in case i want to play games using the pad instead or even to act as player 3/4 etc…?


    Thank you hoofa for your kind words:-) And for your question: yes co can! I have the same setup, if you look at the picture of my arcade you can see two USB-ports in the middle, these are for keyboard and gamepads.


    Amazing news! Is there a set way of configuring or could I just plug a USB pad in alongside the xinmo? would you need to disable to xinmo to allow you to us the pad as the main controller? Took me so long to find this thread and fix the xinmo issue that I’m scared of breaking it again!! Haha! And sorry for the potentially silly questions, I’m very new to all things retropie, Linux and raspberry pi!


    Hi man. Great work!! The P2 controlls works fine after this hack, before it didn’t recognize the p2 stick at all.
    Now i have another issue… The P1 stick controlls both player 1 and 2…
    Anyone else have this problem?

    Skickat från min iPhone med Tapatalk


    I’ve been running this setup with the custom kernel and command line file edits for a while, but I’m afraid to update to the most recent version of Retropie for fear of undoing all of these changes. Anyone have any experience with doing an update and keeping these customizations?


    Hi amansson82! Have you followed all steps? Could you tell what your setup is? Type of image, Raspberry pi ect. When you map your buttons in Retro Arch do you se what the output is on player 1 and 2? Is it the same there as well?


    Hi hijinksensue! I’ve done a backup of my micro SD-card using Pi Copier (MAC) and there is Win32 Disk imager for windows. Then if something goes wrong you can just use your backup:-) I have not got the time to test if I can update to 3.5, and since everything is working I don’t see the point at this moment. But when I do I will tell you guys!

    If somebody else have tried it you could share your experience here!:-)


    Hi again hoofa! I’ve done a “hack” to get my controllers to work as main controllers if a want to. I have installed a switch that turns off the Xin-mo If I want to use my game pads instead. You could change player settings in Retro Arch as well, but I’ve found this to be quicker:-) But if you want to have your game pads as player 3 and 4, just plug and play!


    duckclimber: Can you expand on your switch to shut off the Xin-Mo? Are you just cutting USB power? Does this require a reboot each time you want to switch controllers? I’m trying to do the exact same thing.


    Hi duckclimber, good work shutting off the xin mo controls to allow for the pads, I’m also keen to know what the switch is to shut them off and allow the pads acting as players 1 and 2?


    hi duckclimber, first of all thanks for your guide! really well done!
    now, a month ago i’ve builded my own bartop (my setup is the same of yours except for pi model, i’ve a raspberry pi 1 model b), the kernel worked nice and solved the axis problem… But yesterday somthing strange happened. retropie didnt see anymore the xin mo dual… the emulstation asked me to configure button (like it was first start) and there was written “no gamepad detected”. i thought it was a usb cable problem (maybe not right connected) but i was wrong, then i tried with jstest /dev/input/ but there wasn’t any js0 or js1… so i pulled the xin mo usb on my notebook (windows) to see if it was an hardware problem but there it worked good. i also tried to format and re-install retropie v3.3.1 but the xin mo still not shown (lsusb). can you help me? i’m a newbie and don’t know what else i can do.
    thank you!
    ps. hope i was clear, my english is not so good!


    Hi hijinksensue! Yes, I’ve just installed a button on the backside that cuts the power to the Xin-mo, I don’t have to reboot. (I soldered a switch to a USB-cable) If I wan’t to play four players I just plug in the USB-controllers along with the Xin-mo.


    Hi rosichella! Have you tried a powered USB-hub so the Xin-mo get extra power? It sounds strange that it worked at first, you can do a backup and try a clean install just to rule out any problems with RetroPie.


    OK, so I’ve managed to get everything working, THANKS for this, it was a HUGE help. I’m still running into an issue though, mainly with the FBA emulators.

    Initially I was having an issue where button #1 for P2 (player 2) wasn’t working in MAME. This was fixed easily by pressing tab when in a MAME ROM and manually fixing the input.

    I’m now having a similar issue with FBA games (CP1-3 mainly) where P2’s #7 and #0 buttons aren’t functioning correctly. #7 should be P2 Start, but instead it’s functioning as if it were #1 (low punch in fighting games). Meanwhile, button #1 is functioning as button #7.

    Any idea how to fix this? There doesn’t seem to be an obvious general setting for FBA like there is in MAME (tab doesn’t work).

    Let me know your thoughts.


    Just to add, it appears that each emulator in FBA is having different control issues, especially between different developers. CP1-3 games have the issue I mentioned above but games from NeoGeo and others have different mapping. Not sure what’s going on but help would be greatly appreciated!


    There is a simple way to fix this bug.

    1) Open the boot folder shared in the network (or in Retropie Terminal) use an editor and open cmdlne.txt

    2) add this code: usbhid.quirks=0x16c0:0x05e1:0x040 as first command

    3) Save the file and close the editor

    5) Reboot and, now, your controller work fine. No kernel needed, nothing to install.

    This is an easy way…


    Hi wowzer22! All buttons was fine for me in FBA at the start, I think it uses the RetroArch buttons. So I’m not sure how to change them in just FBA and not all the other ones at the same time, but if I find a answer I will write it here. If you find an answer write it here as well:-)

    Edit: Have you given this a try? :

    Maybe you have to edit the controls manually in /opt/retropie/configs/fba/retroarch.cfg


    Hi devil78! Before I wrote this guide I tried your way probably 1000 times, OK maybe not 1000 but maybe 20, did not work. But if they have fixed this in RetroPie 3.5 let us know, it would be great!


    Hey Duck,

    Thanks for the speedy response. Any shot you can paste what oyu have in your retroarch.cfg? I believe mine is setup correctly but it might help to cross-reference.

    I looked at the github solution and while my fba2x.cfg is different, it doesn’t really explain why my buttons wouldn’t be working correctly. Here’s what mine contains (this appears to be just for PiFBA:

    # Get codes from /usr/include/SDL/SDL_keysym.h
    #player 2 keyboard controls, disabled by default

    # Get codes from “jstest /dev/input/js0”
    # from package “joystick”
    #Joystick axis
    #player 2 button configuration
    #Joystick axis

    # Display Effect: 0 none, 1 scanlines


    I’ll try replacing it with theirs to see if it makes a difference. Wondering if that fixes all the games? It’s weird that Capcom has one set of button issues and a game like Wrestlefest has a completely different issue. The rest of the emulators in Retropie work flawlessly since running with your solution.

    Here’s what my RetroArch button layout looks like from Retroarch.cfg:

    # Joypad buttons.
    # Figure these out by using RetroArch-Phoenix or retroarch-joyconfig.
    # You can use joypad hats with hnxx, where n is the hat, and xx is a string representing direction.
    # E.g. “h0up”
    # input_player1_a_btn = 4
    # input_player1_b_btn = 3
    # input_player1_y_btn = 0
    # input_player1_x_btn = 1
    # input_player1_start_btn = 6
    # input_player1_select_btn = 8
    # input_player1_l_btn = 2
    # input_player1_r_btn = 5
    # input_player1_left_btn =
    # input_player1_right_btn =
    # input_player1_up_btn =
    # input_player1_down_btn =
    # input_player1_l2_btn =
    # input_player1_r2_btn =
    # input_player1_l3_btn =
    # input_player1_r3_btn =
    input_player1_b_btn = 3
    input_player1_y_btn = 0
    input_player1_select_btn = 7
    input_player1_start_btn = 6
    input_player1_up_axis = -1
    input_player1_down_axis = +1
    input_player1_left_axis = -0
    input_player1_right_axis = +0
    input_player1_a_btn = 4
    input_player1_x_btn = 1
    input_player1_l_btn = 2
    input_player1_r_btn = 5
    input_player2_b_btn = 3
    input_player2_y_btn = 0
    input_player2_select_btn = 7
    input_player2_start_btn = 6
    input_player2_up_axis = -1
    input_player2_down_axis = +1
    input_player2_left_axis = -0
    input_player2_right_axis = +0
    input_player2_a_btn = 4
    input_player2_x_btn = 1
    input_player2_l_btn = 2
    input_player2_r_btn = 5
    input_enable_hotkey_btn = 9
    input_exit_emulator_btn = 8
    input_menu_toggle_btn = 1
    input_load_state_btn = 2
    input_save_state_btn = 5
    input_reset_btn = 3
    input_state_slot_increase_axis = +0
    input_state_slot_decrease_axis = -0
    input_volume_up_axis = -1
    input_volume_down_axis = +1

    Seems like player 1 and 2 should both have the same basic button configurations.


    OK, I’ve figured something out…the issue is not that different ROMS are reading differently as much as different emulators are. Lr_fba_next and Lr_fba have the issue I mention with the Capcom roms, where the second player’s #1 and #7 buttons are mixed. PiFBA doesn’t seem to be reading the second player at all, and the coin/start buttons are mapped to buttons #10 and #11 for the first player for some strange reason.

    Any ideas? Based on the .cfg files I posted in the post above there doesn’t seem to be any reason this would be happening, everything looks as if it’s mapped correctly…unless I’m missing something?

    UPDATE: Turns out the lr_fba issues were good old fashioned user error. I had the buttons wired incorrectly. That said, I still can’t get piFBA to work right.


    wowzer22: Did you get it to work? I just copied my roms to the FBA-folder and it worked. The FBA-emulator uses the exact same button mapping as the my other retroarch configs. But if you copy your default retroarch.cfg and place it in your configs/fba folder and then change the buttons manually it should work.

    Has anybody tried this guide with RetroPie 3.6? Or is it fixed in 3.6 so you don´t need it? Please let us know! When I get the Raspberry Pi 3 I will try it out:-)


    Does anybody know how to create an easy hotkey short cut with the MAME emulator, got it working to quick save, load and exit on all others except MAME, bit of a pain to have to use the keyboard to exit


    Hi enigma90! Just press TAB on your keyboard and edit the keys you want:-)

Viewing 35 posts - 1 through 35 (of 61 total)
  • The forum ‘Controller Configuration in RetroPie’ is closed to new topics and replies.