RetroPie / RetroPie/RetroPie-Setup
Cannot configure 2 different controllers which have the same name
Nobody has claimed this yet.
- Dominant language
- Shell
- Stars
- 10.4k
- Forks
- 1.4k
- Avg merge
- 2d 12h
- Merged PRs (30d)
- 11
Description
First of all, I am not sure if this issue is really related to the Retropie-Setup itself.
It is actually related to the configuration of controllers in EmulationStation and retroarch.
Currently the controllers are identified by their name (name attribute given by udev).
However, I happen to have 2 different types of gamepads which firmware is made by the same company (while the brand of the gamepads are different), so their udev name is the same ("USB, 2-axis 8-button gamepad ").
However, the physical disposition of the buttons is different, which means that if I configure one of the gamepad, the other one will have the buttons A swapped with B and X swapped with Y.
I tried to fix the issue with the following methods:
- Remap the buttons of one controller using jscal and jscal-store. However, since EmulationStation and Retroarch relies on udev, this solution does not work (I tried to change the input driver from udev to linuxraw, but the result was the same)
- Try to change the name of the devices with a udev rule (what a fool I am). I realized this is impossible...
But I do see one solution, which would be to use the Product and Vendor ID or GUID in addition of the device name.
This solution currently works in EmulationStation. If I add the DeviceGUID in addition of the device name, I can have 2 different settings for controllers having the same name.
So it would be nice that the DeviceGUIS would not be stripped off in the es_input.cfg.
The remaining task would be to make Retroarch compatible with another way to identify the controller.
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start by reviewing how EmulationStation writes controller entries to es_input.cfg and whether DeviceGUID is stripped. Then trace how RetroArch identifies controllers and compare the udev, linuxraw, jscal, and jscal-store paths mentioned in the issue. Done means distinct controllers with the same name retain separate mappings in both EmulationStation and RetroArch.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- linux, shell
- Domain
- game-dev, operating-systems
- Issue type
- Bug
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 25/100