How do I separate player 1 from player 2?

I have Lakka installed on a raspberry pi 3 and I have mapped player 1 and when I go to map player 2 I notice that they are under the same port number. When I play a two player game in Mame, player 1 controls both players at the same time. Player 2 also controls both players. How can I fix this?


You should be able to go to settings > input > p2 input binds and change the ‘device index’ over to your other pad. This usually only happens with 2 identical pads (and not always even then).

1 Like

When I go to player 2 input and then device index, It says xin mo port 0, port 1 n/a all the way up to port 5 and then disable. It says the same thing as player 1. Is there anything else I can try?

1 Like

No, not AFAIK. You have another non-xin mo controller plugged in at the same time?

1 Like
New photo by peter rhodes

This is the setup I have. It should support two sticks and a bunch of buttons. This is the only controller I have plugged into the pi. When I was setting up lakka I had a Logitech controller hooked up to help setup until I mapped the xin mo controller.

1 Like

Ah, ok, if it’s 2 players on a single board, you’ll probably have to do some mucking around in your retroarch.cfg to manually map things, and you’ll likely need to disable autoconfig (not sure about that, though).

As you may have guessed, I’m not the most computer literate person. Is there any documentation or tutorial on how I do that?

Not really, but I suspect the steps would be: turn off autoconfig and return all of the binds to default, then go to p1 input binds and bind any of the buttons you want to use (i.e., leaving off the analogs, etc). Then, go into your retroarch.cfg and see what those buttons are recognized as (e.g., input_p1_b_btn = “13” or whatever). Write those values down somewhere, return everything to default and then do the same thing for your player 2 buttons. Once you have all of the values, you can assign them however you like via the config file.

How do I access the config file?

you’ll have to either SSH into it or pull your SD card and put it into another machine. You should be able to find it in ~/.config/retroarch/retroarch.cfg via SSH. On your SD card, it will be the partition with the ‘roms’ folder, in .config/retroarch/retroarch.cfg.

I’ll try to get to that tomorrow. After messing around and getting my button numbers, I noticed that all of my buttons are labeled correctly, but my joystick is synced with player 1.
When playing a 2 player game I can move player 1 and 2 at the same time, but player 2 doesn’t attack or jump when player 1 does.
I also noticed that in the player 1 input binds the number from the encoder board is there but there is also keyboard keys too(ex. rshift, enter). These keyboard keys do not show up in player 2 inputs. Do I need to enter in the keyboard keys to player 2 as well?

I have a similar problem (only not running on Pi). In my quest of finding an awnser I found the following:

Adding “usbhid.quirks=0x16c0:0x05e1:0x040” works for me running in Live mode from a PC to fix the xin-mo controller. When using a Pi you should be able to add this permanently to the boot file.

You can also use this to find how to access the bootloader files on Rasberry Pi.

Hope it works for you.

1 Like

Thanks for the info. As I told hunterk I am fairly computer illiterate. I plugged my SD card into another machine and found the the cmdline.txt file and entered the line of text from the github site, but nothing changed. My player 2 stick still tracks as player 1. Do I need to do something to get this command to run? Or is my product/vendor ID wrong? That article said I could us the command “lsusb” to find my product/vendor ID but I don’t know where to enter that into to get those numbers. I really do appreciate all of the help I have gotten and would really like to find a solution to this problem. So, please, if there is anymore help or suggestion please keep them coming.

I believe you’re on the right track! The product/vendor ID should be right. I solved my problem using that one the othe day too.

I found this video of someone showing what to do using the same principle. Could you try that?

I tried to go into the config file, but I don’t know what the settings for player 2 joystick should be. Should they be the same as player 1? I’ll poke around again if I get some time.

Unfortunately adding the command into the cmdline file did not work for me.

Please try to access Lakka command line interface and provide the output of lsusb.

Thank you.

Was finally able to figure out how to get this done. Here is the output you asked for. Lakka (community) Version: 2.0 Lakka:~ # lsusb Bus 001 Device 006: ID 14cd:6116 Super Top M6116 SATA Bridge Bus 001 Device 005: ID 0409:005a NEC Corp. HighSpeed Hub Bus 001 Device 004: ID 16c0:05e1 Van Ooijen Technische Informatica Free shared USB VID/PID pair for CDC devices Bus 001 Device 003: ID 0424:ec00 Standard Microsystems Corp. SMSC9512/9514 Fast Ethernet Adapter Bus 001 Device 002: ID 0424:9514 Standard Microsystems Corp. SMC9514 Hub Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

Here is the new issue that is on top of the old issue. With using this line usbhid.quirks=0x16c0:0x05e1:0x040 my controls are now reversed, meaning that player 2 is the only controls that work and I can’t enter into a game with my other stick.

I’m going to recheck that I have the controls plugged into the correct pins. I’m running out of options, am I better off going with Retropie or will I have the same problems there too? I would really prefer to use Lakka but ultimately I want to this cab to work.

Thank you. You have the same controller so if you boot with, it should work.

live usbhid.quirks=0x16c0:0x05e1:0x040

Did you try to reset first ? Settings Tab > Input > Input User 1 Binds > User 1 Bind Default All and same for player 2. Then, rebind it ?

So I enter live? That I have not done before. I’ll try your suggestion and get back to you.