Sorry, we don't support your browser.  Install a modern browser

Linux GCC Problems#923

Background:
With Steam’s recent updates to support GCC and the updates to R2 to support controllers via SDL (if I remember correctly). There are a couple of other issues that is seen when attempting to use GCC on linux devices such as Steam deck and such.

Problem
When attempting to button check in R2. It is seen that the X and B buttons are swapped. I have attached a video showing that the buttons aren’t working as expected despite Steam detecting the buttons correctly. This issue seems to occur regardless of the two adapters I tested.

System Specs

- Fedora 42
- Steam Beta Branch:  Stable Client
- Steam Version:  1773426488
- Steam Client Build Date:  Thu, Mar 12, 2026 6:52 PM UTC -08:00
- Steam Web Build Date:  Thu, Mar 12, 2026 6:30 PM UTC -08:00
- Steam API Version:  SteamClient02
- Steam Arguments on Startup: -console -enable-libusb-gamecube
- Adapters Tried: Input-Integrity & Mayflash Adapter with Wii U / NS selected
- Steam Input : Enabled
- GCC Detected as a Generic Controller
- Launch Options: LD_PRELOAD="$LD_PRELOAD:/usr/\$LIB/libgamemode.so.0" PROTON_ENABLE_WAYLAND=1 
- Compatibility Layer: Proton 10.0.4

Closing Thoughts
I did some investigation regarding the inputs and came across this github repo containing all the mapping for controllers via SDL.
https://github.com/mdqinc/SDL_GameControllerDB?tab=readme-ov-file

This file can also be found in: steam/steamapps/common/Rivals 2/Rivals2/Plugins/ReInputUE/Content/Data

From the gamecontrollerdb.txt file, it is seen that the Nintendo GameCube Controller Adapter has the following configuration:
03000000790000004618000010010000,Nintendo·GameCube·Controller·Adapter,a:b1,b:b0,dpdown:b14,dpleft:b15,dpright:b13,dpup:b12,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,righttrigger:b5,rightx:a5~,righty:a2 ~,start:b9,x:b2,y:b3,platform:Linux,

I ran a separate application named sdl-jstest (Not sure if this is the best tool to utilize, if there’s a better tool that someone can relay to me, let me know.) to grab the mapping and see the following output:

 Name:    'Nintendo GameCube Controller'
  Mapping: '030042717e0500003703000000016800,*,a:b0,b:b2,dpdown:b6,dpleft:b4,dpright:b5,dpup:b7,lefttrigger:a4,leftx:a0,lefty:a1~,rightshoulder:b9,righttrigger:a5,rightx:a2,righty:a3~,start:b8,x:b1,y:b3,misc3:b11,misc4:b10,hint:!SDL_GAMECONTROLLER_USE_GAMECUBE_LABELS:=1,crc:7142,platform:Linux,'

I’m not sure if the differences shown here are of concern and could be causing this.

I had thought that the Rivals2 executable read the gamecontrollerdb.txt file; however, that does not seem to be the case since deleting that file entirely still made the controller usable in-game with the same issue.

Thanks Aether Team.

3 months ago

Did a little more investigation regarding this topic and saw that this github post was made back in 2025:
https://github.com/libsdl-org/SDL/issues/12847

When checking the release 3.4.2
https://github.com/libsdl-org/SDL/blob/release-3.4.2/src/joystick/SDL_gamepad.c#L1095

It is seen that the mapping string is also different from what is in gamecontrollerdb.txt

Mapping String:
a:b0,b:b2,dpdown:b6,dpleft:b4,dpright:b5,dpup:b7,lefttrigger:a4,leftx:a0,lefty:a1~,rightshoulder:b9,righttrigger:a5,rightx:a2,righty:a3~,start:b8,x:b1,y:b3,misc3:b11,misc4:b10,hint:!SDL_GAMECONTROLLER_USE_GAMECUBE_LABELS:=1,"

3 months ago

Seems that the video that I attempted to post never went through when attached.

See youtube link:

3 months ago
1

Did some more digging into steam logs and will basically restate the same comments that others have made across discords / reddit posts/ online in general –

Steam Input does indeed work with GCC Controllers, and after altering the steam input controller layout specifically for GCC. I was able to get the GCC Controller to work with the altered steam input layout alongside my 8BitDo Controller to work with the official steam roa2 layout.

My test procedure:

  1. Connect input integrity with GCC connected in Port 1, followed by 8Bitdo Controller
  2. Booted up R2
  3. Went into training, entered practice room, and saw that all buttons worked according to their set layouts
  4. Unplugged GCC from Port 1, and plugged back in ( saw there was no issues here with hot plugging )
  5. Left practice room and returned to lobby.
  6. Unplugged GCC from Port 1 then plugged into Port 2.
  7. Verified that there was no issues with button layout still.
  8. Unplugged adapter entirely and swapped it with the Mayflash adapter with Wii U / NS selected.
  9. Repeated steps 3 - 7.

Unless Steam updates the controllers that they support, the required act of physically having a GCC controller & adapter on-hand, and the addition of what seems like is a one time setup, should allow locals that do use steam deck to run appropriately without concern of GCC buttons not showing up.

I’m coming to this conclusion that Steam needs to update their controller database based on the screenshot attached.

It is seen that the GUID of the controller is completely incorrect despite it recognizing the Vendor ID and Product ID. Afterwards, there’s some validation step which results in a fail to recognize the adapter (see relative line number 1 ). This results in loading the steam input configuration that I set up earlier.

3 months ago

Holy shit this is exactly what I needed, I had to flash windows to play rivals 2 w GCC and it sucks 😭. I’m going to fully read thru this and see if I can adapt it to my nixOS setup. Thx!

3 months ago

No problem, for a quick list of instructions for anyone reading

GUI-based

  1. Close Steam
  2. Open up file explorer
  3. Navigate to .local/share/applications
  4. Look at Shared GUI/CLI Instructions

Terminal-Based

  1. Close Steam
  2. Open up your terminal and type cd ~/.local/share/applications
  3. Look at Shared GUI/CLI Instructions

Shared GUI/CLI Instructions

  1. Open up steam.desktop with your preferred text editor
  2. In the line that says exec, add -enable-libusb-gamecube
  3. Save the file
  4. Start Steam
  5. Go to Steam > Settings > Controller
  6. Verify that the Controller is recognized by Steam as GCC.
  7. On the Steam Main Window, navigate to Libraries
  8. Right click Rivals of Aether II > Properties
  9. Change your X and B Button

I’m not sure if this is also applicable to SteamOS, but if someone wants to try out these instructions and confirm, that’d be great.

If this works out for a number of people a YT video may be helpful as well.

3 months ago

In case, someone prefers a video format, see yt video:

3 months ago

Having more than 4 different controllers plugged in at the same time will result in input issues. Based on testing from edgintheledge, the following was reported:

I had a xbox controller, gc ult in pro controller mode, and two oem gccs all at the same time and it was all good, but if I plug more than 4 controllers at once stuff starts freaking out and I usually end up with only keyboard input and no controllers and I have to restart the game

so for example 4 oem gcc works all good, unplugging one gcc then putting an xbox works fine, and so does swapping back. But having all 5 controllers plugged in at any point can cause the game to get stuck reading a controller in the wrong mode (ie, gcc as an xbox) or completely lose input altogether despite the steam ui still reading controllers fine

3 months ago