I’m using Input.GetJoystickNames() to check what controllers are connected. On Windows, calling this function works without a problem. The same code running on the latest Unity 5.3.4 (Build #2016050301) on Ubuntu however returns only one gamepad. It seems to favor the one added last. I also checked if it’s possible to call Input.GetButtonDown of different gamepads (I checked which one is in /dev/input/js*) but Unity really just recognizes the one reported by Input.GetJoystickNames().
The joysticks all show up in jstest-gtk. Unity is only seeing one at a time.
Weird thing I noticed - might even be a separate issue - I have two xbox one controllers and a ps4 controller. If I plug all three in at the same time, then remove the ps4 controller, it still shows up as the controller detected. The computer does not have bluetooth, either, so I don’t think it is the controller still being connected. Looks like something is going on at the Unity level.
Have the Linux team tested this scenario? Is this a known issue?
This is a tested scenario, and is not a known issue - do you have libudev installed? (It’s required for dynamic hotplugging, but it’s a soft dependency.)