RetroPie / RetroPie/RetroPie-Setup

Cannot configure 2 different controllers which have the same name

Open
#1,798 36 comments 0 reactions 0 assignees View on GitHub

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

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. 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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.