Hades
[macOS] Fix for Xbox Elite Series 2 not working in Hades — Bluetooth and USB
I ran into an issue where an Xbox Elite Series 2 controller worked in most Steam games on macOS, but Hades ignored it completely. A standard Xbox controller worked in Hades, which made this particularly confusing.
I eventually found the cause and a working native fix. No keyboard/mouse emulation is involved. I did the implementation via Codex. So if you have Codex, Claude or any other agent: let it do the heavy work for you, using the description below.

**Cause**

The macOS version of Hades ships with SDL 2.0.15, which is too old for the way current macOS versions expose the Elite Series 2.
The Elite 2 appears as:
USB: Microsoft 045e:0b00
Bluetooth LE: Microsoft 045e:0b22
Through Apple’s modern GameController layer: synthetic Xbox controller 045e:02e0
Hades’ old SDL/Gainput implementation can sometimes detect the controller, but receives no button or axis events. A modern SDL2 build correctly receives all inputs through Apple’s GameController framework.

Tested successfully with:
MacBook Air M5
macOS 26.5.2
Xbox Elite Series 2
Bluetooth and USB
Hades build 38291
SDL 2.32.10

**Fix**

This is an unofficial modification. Back up the files first. Steam’s “Verify integrity of game files” feature or a future Hades update may undo it.

1. Quit Hades and Steam completely
Make sure neither Hades nor Steam is running.

2. Download SDL 2.32.10
Download and mount the macOS runtime DMG from the official SDL release page.
The mounted image should contain SDL2.framework.

3. Replace Hades’ old SDL framework
The commands below assume the default Steam library location:
HADES_APP="$HOME/Library/Application Support/Steam/steamapps/common/Hades/Game.macOS.app"
BACKUP_DIR="$HOME/Desktop/Hades-controller-fix-backup-$(date +%Y%m%d-%H%M%S)"
PLIST="$HADES_APP/Contents/Info.plist"

BUNDLE_ID="$(codesign -dv --verbose=4 "$HADES_APP" 2>&1 | awk -F= '/^Identifier=/{print $2}')"

mkdir -p "$BACKUP_DIR"
cp -p "$PLIST" "$BACKUP_DIR/Info.plist"
mv "$HADES_APP/Contents/MacOS/SDL2.framework" "$BACKUP_DIR/SDL2.framework"
ditto "/Volumes/SDL2/SDL2.framework" "$HADES_APP/Contents/MacOS/SDL2.framework"
If Hades is installed in a custom Steam library, adjust HADES_APP.

4. Declare GameController support in Info.plist
Run:
/usr/libexec/PlistBuddy -c "Add :CFBundleIdentifier string $BUNDLE_ID" "$PLIST"

/usr/libexec/PlistBuddy -c "Add :GCSupportedGameControllers array" "$PLIST"
/usr/libexec/PlistBuddy -c "Add :GCSupportedGameControllers:0 dict" "$PLIST"
/usr/libexec/PlistBuddy -c "Add :GCSupportedGameControllers:0:ProfileName string ExtendedGamepad" "$PLIST"

/usr/libexec/PlistBuddy -c "Add :GCSupportsControllerUserInteraction bool true" "$PLIST"
These commands are intended for an unmodified Hades installation. If a key already exists, PlistBuddy may report that the entry already exists.

5. Re-sign the modified application
xattr -cr "$HADES_APP"
codesign --force --deep --sign - "$HADES_APP"
codesign --verify --deep --strict "$HADES_APP"
The last command should finish without an error.

6. Configure Hades in Steam
Open Steam and go to:
Hades → Properties → Controller
Set the override to:
Disable Steam Input
Then under Properties → General → Launch Options, enter:
/UseNativeGaInput=false /UseNativeGaInputNoControllers=false

7. Start Hades
The Elite Series 2 should now work natively in both the menu and gameplay, over Bluetooth as well as USB.
Hades’ log should contain something similar to:
InputSystemSDL Initialized
Gamepad added: Index = 1, Name = Controller, GUID = 050000695e040000e0020000f31f6d04

**Known limitation**
macOS reports no haptic device through this synthetic GameController path, so controller vibration may not work. Buttons, sticks, triggers and the D-pad work normally.
If anything goes wrong, restore Info.plist and SDL2.framework from the backup folder, or use Steam’s file-integrity verification.
< >
Showing 1-1 of 1 comments
Huge thanks for sharing this fix! You're an absolute legend! 🙌

I can confirm that this solution works perfectly on my setup as well:

- **Mac:** MacBook Air M5
- **macOS:** 27.0.1 Golden Gate
- **Controller:** 8BitDo Ultimate 3-mode Controller for Xbox
- **Connection:** Bluetooth

Steam was detecting my controller just fine, but Hades wasn't responding to any inputs. After following your instructions and updating SDL2, everything works flawlessly!

You saved me a ton of time and frustration. Really appreciate the effort you put into investigating this issue and sharing such a detailed solution with the community. Thank you so much!
< >
Showing 1-1 of 1 comments
Per page: 1530 50