Lxc and USB Hotplug Device for Xbox 360 Controller

Hi- I am hoping to get some guidance on an issue regarding LXC and a USB Hotplug device. I added the devices (wireless Xbox 360 controller and uinput) to my container and have done the following testing:

  1. Did a lsusb in the container and I can see the Wireless USB Device
  2. I can see all the appropriate devices- /dev/input/JS0 and /dev/input/event* These devices will appear and disappear in the container depending on if the controller is on and off. My research indicates that these are the two interfaces (I believe the event* is the newer interface) that are used to communicate with the controller
  3. I have done evtest in the container and when I press a button on the controller I can see the appropriate button being pressed on the screen. The results are the same in the host and the container.

Based on my limited knowledge, I assume that everything is working correctly and the usb device is being passed correctly from the host. Here is the issue:

  1. When I load Steam, the settings will show a XBox 360 controller and I can navigate Steam Big Picture Mode using the controller, however, the controller will not be recognized in Games. The game thinks I am using a keyboard and mouse.
  2. Steam has a process called Steam Input where I believe they will create virtual controller from your device. This allow Steam to inject their own controls and allows the controller to be mapped similar across different games. I have disabled Steam Input in game setting and the controller does not work natively either in the game.

These are the things I have done to try to resolve the issue:

  1. I believe the the uinput device may be the issue and tried different things with user permission. Steam is being run under the ubuntu user and believe I have the correct ownership for the devices, but I do know for certain.
  2. There is a lot of online information around Udev issues. This is very confusing to me because I am not sure if this is suppose to be done on the host or in container. My uinput is owned by the ubuntu user. I also added the ubuntu user to the input group
  3. I installed the Snap Steam package and the controller works correct. I looked a the Snap Steam yaml file am I see the joystick and uinput plugs. I believe I have the same LXC devices, but maybe I am missing something here. I also noticed that the Snap Steam package adds some customer udev rules in under /etc/udev

I am totally stumped here and believe there must be a way to get this to work.

What am I missing? What access would steam need to create a virtual controller device? How can I troubleshoot further?

I do not want to give up at this point as I invested too much time and hoping someone can help here.


****************** Config of the devices I added
gid: “1000”
mode: “0777”
productid: “0719”
type: unix-hotplug
uid: “1000”
vendorid: 045e

I also added:

gid: “1000”
mode: “0777”
path: /dev/uinput
type: unix-char
uid: “1000”