Conflicting joysticks?
-
Hey all,
I just built a new arcade box that looks jus great!
It has 15 buttons and 2 joysticks, all connected to a gamepad that sends the commands to the PI via USB.
All looks good, I got my games running, but now I want to go 2 players. This is where I start having problems...
If I connect the gamepad to my mac, I see 4 axis, with readings for each one, plus each button. Perfect!
If I connect it to the PI and run jstest, I only see 2 axis, with both joysticks reporting the same values. As if I only had one joystick.... Very weird..... Driver problems?
So when I try to multi-play, both players move when I use either joystick...
Next, I tried changing the 4 connection pins of the "player 2" joystick to 4 different pins on the gamepad. I was like - that's it! It's like having a joystick for player 1, and 4 buttons for player 2.
Guess what? Now one of the characters is controlled by of the joysticks as it should, but the other joystick is controlling both players. How about that!?
I am lost.... What should I do next?
-
@bogdanripa what are your controllers recognized as? When you go to start and configure input, what does it say?
You must also be very careful to be sure that both controller setups are wired 100% exactly the same. The wiring must match as well as the pin locations you plug the wires from the buttons into the usb encoder. Everything has to be identical.
Last question, does each of your controllers run to a separate usb encoder with its own usb connection to the pie?
-
Hi @TMNTturtlguy ,
- Wiring.
Yes, all is identical. Also, there is a single board where all the wires come in, so only one USB connector to the pie.
- Configuration
If I "Configure Input", it says that "2 gamepads detected". As I hold a button, it displays "Twin USB gamepad", but as I go through the mapping procedure, it only configures "gamepad 1".
Then, as I configure the D-PAD UP/DOWN/LEFT/RIGHT, it says "AXIS 1-, 1+, 0-, 0+" for both joysticks...
Running "jstest /dev/input/js1" also shows only 2 axis (0 and 1), both of them being triggered when I move either joystick:
So at this point one would be - oh, it's a hardware problem. The gamepad is broken or the wiring is off.
So next, I connect the gamepad to my computer and run some similar tests:
And here everything looks just fine, all 4 axis are visible and function independently...
What next?
-
@bogdanripa im half confused but here is a few things. When you setup a controller in emulationstation you only setup one controller. Then restart your system. Both controllers should be working fine. When you run a jstest, js0 is player 1 and js1 is player 2. Without knowing what your usb device is i couldnt tell you if there is a usbquirk or anything for it.
-
Trust me, I am more confused than you :)
I just did what you are proposing here and still nothing.jstest /dev/input/js0 shows a "fictive" GPIO joystick that I don't have:
Joystick (GPIO Controller 1)
-
@bogdanripa then you must have ran/ installed a script for the gpio controller and need to uninstall it.
-
@bogdanripa also js2 should show up as the player 2 joystick in your current setup
-
@bogdanripa have you set up joystick 2 in emulationstatio? You stated above that you see that 2 joysticks are recognized, but you only set up the buttons for one? You need to follow the same steps for the second controller. It will recognize the button presses as the same but it should now let you operate the 2 controllers independently.
-
It won't let me set-up the 2nd controller... And the fact that in command line (jstest) I see both controllers as one means this is a drivers problem...
Either way - I fixed it by simply rewiring the joystick buttons to map "regular" buttons and then set it up like this.
I have a few missing buttons now but at least all works just fine...
-
@bogdanripa sounds like you have a solution. If you continue to have issues I would recommend getting a separate encoder for each joystick/controls. The easyget zero delay USB encoders seem to work well. They are recognized as individual dragonrise controls.
-
Hi @bogdanripa!
I have the same USB controller and finally got it recognized as 2 controllers in Emulationstation:
The solution: You must set a "quirk" for the usbhid module
Follow the instructions here:
Be aware that the vendor / product ID might differ. (Check via lsusb, the USB name for the double usb CY-2121 controller is "Personal Communications Systems, Inc")
https://github.com/RetroPie/RetroPie-Setup/wiki/Xin-Mo-ControllerI'm using RetroPi via Ubuntu 16.04, so here's how I managed this for Ubuntu:
- Search for the vendor ID / Product ID via lsusb
- create a file named "usbhid.config" under /etc/modprobe.d/"
- Add the following line to the file: "options usbhid quirks=0x0810:0xe001:0x00000040"
- 0810 is the VendorID
- e001 is the product ID
- Save the file
- run "sudo update-initramfs - u - k $(uname -r)"
- Restart your PC
- check via "cat /sys/mmodules/usbhid/parameters/quirks", if the quirk has been applied successfully
- Take al look into "/dev/input": There should be a js0 and a js1 now
-
@absolut1978 tks.! has worked on arch
sudo rmmod usbhid && sudo modprobe usbhid quirks=0x0810:0xe301:0x00000040
I was just detecting a 20 button joypad xD, If you pressed joypad1 up, player 2 also moved, and it is fixed.
My joypad is this
https://k60.kn3.net/taringa/C/7/6/C/F/8/comgunner/08F.jpgHardware:
Twin USB Gamepad
T: Bus=08 Lev=01 Prnt=01 Port=00 Cnt=01 Dev#= 2 Spd=1.5 MxCh= 0
D: Ver= 1.00 Cls=00(>ifc ) Sub=00 Prot=00 MxPS= 8 #Cfgs= 1
P: Vendor=0810 ProdID=e301 Rev= 1.06
S: Product=Twin USB Gamepad -
@absolut1978 hi! I'm new and I'm a noob, sorry BTW haha, but what should I do if I try to update and it says that /boot/initrd.img-4.4.38-v7+ does not exist. Cannot update. I'm on a raspberry pi model 3B. Thanks!
-
@huevo0nd Please open a new topic with your problem and add the info requested in https://retropie.org.uk/forum/topic/3/read-this-first.
-
hi I'm Italian I'm using a translator, I built a bartop all ok I have the same problem with that twin game usb encoder on the back surface and RB3b +
- I searched for id product vendor and it is the same one already found by other users I created the file.config, but I have the doubt that the extension should be. conf because all the files in the /etc/modprobe.d/ folder are. conf then I ask you confirmation if the file must be. conf o config.
I follow the guide and then execute the command sudo update-initramfs - u - k $ (uname -r) but it gives me invalid argument -
I ask you if you can follow me step by step I don't want to solve it, it's like seeing only one joystick equal for all 2 levers
- I searched for id product vendor and it is the same one already found by other users I created the file.config, but I have the doubt that the extension should be. conf because all the files in the /etc/modprobe.d/ folder are. conf then I ask you confirmation if the file must be. conf o config.
-
i have this encoder.
if I do not solve I was thinking of buying another one and so I connect it with another usb and solve it and so it sees them as 2 different usb ... I'm going crazy not risdo to play with 2 players .. -
@archfranck you should have opened a new topic, instead of re-opening a 2 years topic.
Follow the instructions on https://github.com/RetroPie/RetroPie-Setup/wiki/Xin-Mo-Controller and report back if you have any problems. -
ok resolve tanks
-
@archfranck
Hi. How did you do finally ? what was the solution ? -
@com_gunner said in Conflicting joysticks?:
Hi every one.
I used command line in Terminal
lsusb
and I got this information:
Bus 001 Device 004: ID 0810:e001 Personal Communication Systems, Inc. Bus 001 Device 005: ID 0424:7800 Standard Microsystems Corp. Bus 001 Device 003: ID 0424:2514 Standard Microsystems Corp. USB 2.0 Hub Bus 001 Device 002: ID 0424:2514 Standard Microsystems Corp. USB 2.0 Hub Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
How to know where is mine?
I use this one oncoder:
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.