Open Zophiekat opened 3 years ago
Rules with KERNEL=="hidraw*"
only help for USB HID or Bluetooth HID controllers, which includes recent Playstation and Nintendo controllers (and their third-party clones). Most Xbox controllers (and their third-party clones) are not usually USB HID.
This device appears to be using the xpad
driver, which means it's telling the kernel that it's Xbox-compatible, so it might not be HID.
If you run
~/.steam/root/ubuntu12_32/steam-runtime/run.sh steam-runtime-input-monitor
with this device unplugged, wait for it to finish describing all your other devices (it should say {"all-for-now": true} at the end), and then plug this device in, what additional information is displayed after the {"all-for-now": true} marker?
Press Ctrl+C to stop the input monitor when it has finished displaying the new device(s).
/dev/input/js1
The /dev/input/js*
device nodes are a legacy interface. Steam and all modern games should be using either /dev/input/event*
(the "evdev" interface) or /dev/hidraw*
(the "raw HID" interface, only available for HID controllers).
If you're going to use udevadm info
to describe a device, udevadm info -a
is usually more useful - that tells us about the device and all its parents, not just the device itself. For an evdev interface that is implemented by a USB or Bluetooth device, we usually need information from the USB or Bluetooth layer, not just the evdev layer.
``` "event", "readable", "read-write" ], "type_flags" : [ "joystick" ], "dev_node" : "/dev/input/event2", "subsystem" : "input", "sys_path" : "/sys/devices/pci0000:00/0000:00:01.2/0000:02:00.0/0000:03:08.0/0000:06:00.1/usb1/1-2/1-2:1.0/input/input31/event2", "bus_type" : "0x0003", "vendor_id" : "0x0f0d", "product_id" : "0x00dc", "version" : "0x0112", "evdev" : { "types" : [ "SYN", "KEY", "ABS", "FF" ], "absolute_axes" : [ "X", "Y", "Z", "RX", "RY", "RZ", "HAT0X", "HAT0Y" ], "relative_axes" : [ ], "keys" : [ "BTN_A", "BTN_B", "BTN_X", "BTN_Y", "BTN_TL", "BTN_TR", "BTN_SELECT", "BTN_START", "BTN_MODE", "BTN_THUMBL", "BTN_THUMBR" ], "input_properties" : [ ] }, "udev_properties" : [ "CURRENT_TAGS=:seat:uaccess:", "DEVLINKS=/dev/input/by-path/pci-0000:06:00.1-usb-0:2:1.0-event-joystick /dev/input/by-id/usb-HORI_CO._LTD._HORIPAD_S_12340000-event-joystick", "DEVNAME=/dev/input/event2", "DEVPATH=/devices/pci0000:00/0000:00:01.2/0000:02:00.0/0000:03:08.0/0000:06:00.1/usb1/1-2/1-2:1.0/input/input31/event2", "ID_BUS=usb", "ID_FOR_SEAT=input-pci-0000_06_00_1-usb-0_2_1_0", "ID_INPUT=1", "ID_INPUT_JOYSTICK=1", "ID_MODEL=HORIPAD_S", "ID_MODEL_ENC=HORIPAD\\x20S", "ID_MODEL_ID=00dc", "ID_PATH=pci-0000:06:00.1-usb-0:2:1.0", "ID_PATH_TAG=pci-0000_06_00_1-usb-0_2_1_0", "ID_REVISION=0112", "ID_SERIAL=HORI_CO._LTD._HORIPAD_S_12340000", "ID_SERIAL_SHORT=12340000", "ID_TYPE=generic", "ID_USB_DRIVER=xpad", "ID_USB_INTERFACES=:ff5d01:", "ID_USB_INTERFACE_NUM=00", "ID_VENDOR=HORI_CO._LTD.", "ID_VENDOR_ENC=HORI\\x20CO.\\x2cLTD.", "ID_VENDOR_ID=0f0d", "LIBINPUT_DEVICE_GROUP=3/f0d/dc:usb-0000:06:00.1-2", "MAJOR=13", "MINOR=66", "SUBSYSTEM=input", "TAGS=:seat:uaccess:", "USEC_INITIALIZED=78382947387" ], "input_ancestor" : { "sys_path" : "/sys/devices/pci0000:00/0000:00:01.2/0000:02:00.0/0000:03:08.0/0000:06:00.1/usb1/1-2/1-2:1.0/input/input31", "name" : "Generic X-Box pad", "bus_type" : "0x0003", "vendor_id" : "0x0f0d", "product_id" : "0x00dc", "version" : "0x0112" }, "usb_device_ancestor" : { "sys_path" : "/sys/devices/pci0000:00/0000:00:01.2/0000:02:00.0/0000:03:08.0/0000:06:00.1/usb1/1-2", "vendor_id" : "0x0f0d", "product_id" : "0x00dc", "version" : "0x0112", "manufacturer" : "HORI CO.,LTD.", "product" : "HORIPAD S", "serial" : "12340000" } } } { "added" : { "interface_flags" : [ ```
``` > Udevadm info starts with the device specified by the devpath and then walks up the chain of parent devices. It prints for every device found, all possible attributes in the udev rules key format. A rule to match, can be composed by the attributes of the device and the attributes from one single parent device. looking at device '/devices/pci0000:00/0000:00:01.2/0000:02:00.0/0000:03:08.0/0000:06:00.1/usb1/1-2/1-2:1.0/input/input31/event2': KERNEL=="event2" SUBSYSTEM=="input" DRIVER=="" ATTR{power/async}=="disabled" ATTR{power/control}=="auto" ATTR{power/runtime_active_kids}=="0" ATTR{power/runtime_active_time}=="0" ATTR{power/runtime_enabled}=="disabled" ATTR{power/runtime_status}=="unsupported" ATTR{power/runtime_suspended_time}=="0" ATTR{power/runtime_usage}=="0" looking at parent device '/devices/pci0000:00/0000:00:01.2/0000:02:00.0/0000:03:08.0/0000:06:00.1/usb1/1-2/1-2:1.0/input/input31': KERNELS=="input31" SUBSYSTEMS=="input" DRIVERS=="" ATTRS{capabilities/abs}=="3003f" ATTRS{capabilities/ev}=="20000b" ATTRS{capabilities/ff}=="107030000 0" ATTRS{capabilities/key}=="7cdb000000000000 0 0 0 0" ATTRS{capabilities/led}=="0" ATTRS{capabilities/msc}=="0" ATTRS{capabilities/rel}=="0" ATTRS{capabilities/snd}=="0" ATTRS{capabilities/sw}=="0" ATTRS{id/bustype}=="0003" ATTRS{id/product}=="00dc" ATTRS{id/vendor}=="0f0d" ATTRS{id/version}=="0112" ATTRS{inhibited}=="0" ATTRS{name}=="Generic X-Box pad" ATTRS{phys}=="usb-0000:06:00.1-2/input0" ATTRS{power/async}=="disabled" ATTRS{power/control}=="auto" ATTRS{power/runtime_active_kids}=="0" ATTRS{power/runtime_active_time}=="0" ATTRS{power/runtime_enabled}=="disabled" ATTRS{power/runtime_status}=="unsupported" ATTRS{power/runtime_suspended_time}=="0" ATTRS{power/runtime_usage}=="0" ATTRS{properties}=="0" ATTRS{uniq}=="" looking at parent device '/devices/pci0000:00/0000:00:01.2/0000:02:00.0/0000:03:08.0/0000:06:00.1/usb1/1-2/1-2:1.0': KERNELS=="1-2:1.0" SUBSYSTEMS=="usb" DRIVERS=="xpad" ATTRS{authorized}=="1" ATTRS{bAlternateSetting}==" 0" ATTRS{bInterfaceClass}=="ff" ATTRS{bInterfaceNumber}=="00" ATTRS{bInterfaceProtocol}=="01" ATTRS{bInterfaceSubClass}=="5d" ATTRS{bNumEndpoints}=="02" ATTRS{power/async}=="enabled" ATTRS{power/runtime_active_kids}=="0" ATTRS{power/runtime_enabled}=="disabled" ATTRS{power/runtime_status}=="unsupported" ATTRS{power/runtime_usage}=="0" ATTRS{supports_autosuspend}=="0" looking at parent device '/devices/pci0000:00/0000:00:01.2/0000:02:00.0/0000:03:08.0/0000:06:00.1/usb1/1-2': KERNELS=="1-2" SUBSYSTEMS=="usb" DRIVERS=="usb" ATTRS{authorized}=="1" ATTRS{avoid_reset_quirk}=="0" ATTRS{bConfigurationValue}=="1" ATTRS{bDeviceClass}=="ff" ATTRS{bDeviceProtocol}=="ff" ATTRS{bDeviceSubClass}=="ff" ATTRS{bMaxPacketSize0}=="8" ATTRS{bMaxPower}=="500mA" ATTRS{bNumConfigurations}=="1" ATTRS{bNumInterfaces}==" 1" ATTRS{bcdDevice}=="0112" ATTRS{bmAttributes}=="80" ATTRS{busnum}=="1" ATTRS{configuration}=="" ATTRS{devnum}=="4" ATTRS{devpath}=="2" ATTRS{idProduct}=="00dc" ATTRS{idVendor}=="0f0d" ATTRS{ltm_capable}=="no" ATTRS{manufacturer}=="HORI CO.,LTD." ATTRS{maxchild}=="0" ATTRS{power/active_duration}=="788652" ATTRS{power/async}=="enabled" ATTRS{power/autosuspend}=="2" ATTRS{power/autosuspend_delay_ms}=="2000" ATTRS{power/connected_duration}=="788652" ATTRS{power/control}=="on" ATTRS{power/level}=="on" ATTRS{power/persist}=="1" ATTRS{power/runtime_active_kids}=="1" ATTRS{power/runtime_active_time}=="788370" ATTRS{power/runtime_enabled}=="forbidden" ATTRS{power/runtime_status}=="active" ATTRS{power/runtime_suspended_time}=="0" ATTRS{power/runtime_usage}=="1" ATTRS{product}=="HORIPAD S" ATTRS{quirks}=="0x0" ATTRS{removable}=="removable" ATTRS{rx_lanes}=="1" ATTRS{serial}=="12340000" ATTRS{speed}=="12" ATTRS{tx_lanes}=="1" ATTRS{urbnum}=="197074" ATTRS{version}==" 2.00" looking at parent device '/devices/pci0000:00/0000:00:01.2/0000:02:00.0/0000:03:08.0/0000:06:00.1/usb1': KERNELS=="usb1" SUBSYSTEMS=="usb" DRIVERS=="usb" ATTRS{authorized}=="1" ATTRS{authorized_default}=="1" ATTRS{avoid_reset_quirk}=="0" ATTRS{bConfigurationValue}=="1" ATTRS{bDeviceClass}=="09" ATTRS{bDeviceProtocol}=="01" ATTRS{bDeviceSubClass}=="00" ATTRS{bMaxPacketSize0}=="64" ATTRS{bMaxPower}=="0mA" ATTRS{bNumConfigurations}=="1" ATTRS{bNumInterfaces}==" 1" ATTRS{bcdDevice}=="0515" ATTRS{bmAttributes}=="e0" ATTRS{busnum}=="1" ATTRS{configuration}=="" ATTRS{devnum}=="1" ATTRS{devpath}=="0" ATTRS{idProduct}=="0002" ATTRS{idVendor}=="1d6b" ATTRS{interface_authorized_default}=="1" ATTRS{ltm_capable}=="no" ATTRS{manufacturer}=="Linux 5.15.15-76051515-generic xhci-hcd" ATTRS{maxchild}=="6" ATTRS{power/active_duration}=="79109820" ATTRS{power/async}=="enabled" ATTRS{power/autosuspend}=="0" ATTRS{power/autosuspend_delay_ms}=="0" ATTRS{power/connected_duration}=="79170424" ATTRS{power/control}=="auto" ATTRS{power/level}=="auto" ATTRS{power/runtime_active_kids}=="1" ATTRS{power/runtime_active_time}=="79109793" ATTRS{power/runtime_enabled}=="enabled" ATTRS{power/runtime_status}=="active" ATTRS{power/runtime_suspended_time}=="60609" ATTRS{power/runtime_usage}=="0" ATTRS{power/wakeup}=="disabled" ATTRS{power/wakeup_abort_count}=="" ATTRS{power/wakeup_active}=="" ATTRS{power/wakeup_active_count}=="" ATTRS{power/wakeup_count}=="" ATTRS{power/wakeup_expire_count}=="" ATTRS{power/wakeup_last_time_ms}=="" ATTRS{power/wakeup_max_time_ms}=="" ATTRS{power/wakeup_total_time_ms}=="" ATTRS{product}=="xHCI Host Controller" ATTRS{quirks}=="0x0" ATTRS{removable}=="unknown" ATTRS{rx_lanes}=="1" ATTRS{serial}=="0000:06:00.1" ATTRS{speed}=="480" ATTRS{tx_lanes}=="1" ATTRS{urbnum}=="78" ATTRS{version}==" 2.00" looking at parent device '/devices/pci0000:00/0000:00:01.2/0000:02:00.0/0000:03:08.0/0000:06:00.1': KERNELS=="0000:06:00.1" SUBSYSTEMS=="pci" DRIVERS=="xhci_hcd" ATTRS{ari_enabled}=="0" ATTRS{broken_parity_status}=="0" ATTRS{class}=="0x0c0330" ATTRS{consistent_dma_mask_bits}=="64" ATTRS{current_link_speed}=="16.0 GT/s PCIe" ATTRS{current_link_width}=="16" ATTRS{d3cold_allowed}=="1" ATTRS{dbc}=="disabled" ATTRS{device}=="0x149c" ATTRS{dma_mask_bits}=="64" ATTRS{driver_override}=="(null)" ATTRS{enable}=="1" ATTRS{irq}=="40" ATTRS{link/l0s_aspm}=="0" ATTRS{link/l1_aspm}=="0" ATTRS{local_cpulist}=="0-15" ATTRS{local_cpus}=="0000ffff" ATTRS{max_link_speed}=="16.0 GT/s PCIe" ATTRS{max_link_width}=="16" ATTRS{msi_bus}=="1" ATTRS{msi_irqs/40}=="msi" ATTRS{numa_node}=="-1" ATTRS{power/async}=="enabled" ATTRS{power/control}=="on" ATTRS{power/runtime_active_kids}=="1" ATTRS{power/runtime_active_time}=="79170899" ATTRS{power/runtime_enabled}=="forbidden" ATTRS{power/runtime_status}=="active" ATTRS{power/runtime_suspended_time}=="0" ATTRS{power/runtime_usage}=="1" ATTRS{power/wakeup}=="enabled" ATTRS{power/wakeup_abort_count}=="0" ATTRS{power/wakeup_active}=="0" ATTRS{power/wakeup_active_count}=="0" ATTRS{power/wakeup_count}=="0" ATTRS{power/wakeup_expire_count}=="0" ATTRS{power/wakeup_last_time_ms}=="0" ATTRS{power/wakeup_max_time_ms}=="0" ATTRS{power/wakeup_total_time_ms}=="0" ATTRS{power_state}=="D0" ATTRS{revision}=="0x00" ATTRS{subsystem_device}=="0x8808" ATTRS{subsystem_vendor}=="0x1043" ATTRS{vendor}=="0x1022" looking at parent device '/devices/pci0000:00/0000:00:01.2/0000:02:00.0/0000:03:08.0': KERNELS=="0000:03:08.0" SUBSYSTEMS=="pci" DRIVERS=="pcieport" ATTRS{ari_enabled}=="0" ATTRS{broken_parity_status}=="0" ATTRS{class}=="0x060400" ATTRS{consistent_dma_mask_bits}=="32" ATTRS{current_link_speed}=="16.0 GT/s PCIe" ATTRS{current_link_width}=="16" ATTRS{d3cold_allowed}=="1" ATTRS{device}=="0x57a4" ATTRS{dma_mask_bits}=="32" ATTRS{driver_override}=="(null)" ATTRS{enable}=="2" ATTRS{irq}=="35" ATTRS{local_cpulist}=="0-15" ATTRS{local_cpus}=="0000ffff" ATTRS{max_link_speed}=="16.0 GT/s PCIe" ATTRS{max_link_width}=="16" ATTRS{msi_bus}=="1" ATTRS{msi_irqs/35}=="msi" ATTRS{numa_node}=="-1" ATTRS{power/async}=="enabled" ATTRS{power/autosuspend_delay_ms}=="100" ATTRS{power/control}=="auto" ATTRS{power/runtime_active_kids}=="3" ATTRS{power/runtime_active_time}=="79170904" ATTRS{power/runtime_enabled}=="enabled" ATTRS{power/runtime_status}=="active" ATTRS{power/runtime_suspended_time}=="0" ATTRS{power/runtime_usage}=="0" ATTRS{power/wakeup}=="disabled" ATTRS{power/wakeup_abort_count}=="" ATTRS{power/wakeup_active}=="" ATTRS{power/wakeup_active_count}=="" ATTRS{power/wakeup_count}=="" ATTRS{power/wakeup_expire_count}=="" ATTRS{power/wakeup_last_time_ms}=="" ATTRS{power/wakeup_max_time_ms}=="" ATTRS{power/wakeup_total_time_ms}=="" ATTRS{power_state}=="D0" ATTRS{reset_method}=="pm" ATTRS{revision}=="0x00" ATTRS{secondary_bus_number}=="6" ATTRS{subordinate_bus_number}=="6" ATTRS{subsystem_device}=="0x8808" ATTRS{subsystem_vendor}=="0x1043" ATTRS{vendor}=="0x1022" looking at parent device '/devices/pci0000:00/0000:00:01.2/0000:02:00.0': KERNELS=="0000:02:00.0" SUBSYSTEMS=="pci" DRIVERS=="pcieport" ATTRS{ari_enabled}=="0" ATTRS{broken_parity_status}=="0" ATTRS{class}=="0x060400" ATTRS{consistent_dma_mask_bits}=="32" ATTRS{current_link_speed}=="16.0 GT/s PCIe" ATTRS{current_link_width}=="4" ATTRS{d3cold_allowed}=="1" ATTRS{device}=="0x57ad" ATTRS{dma_mask_bits}=="32" ATTRS{driver_override}=="(null)" ATTRS{enable}=="2" ATTRS{irq}=="24" ATTRS{link/l1_1_aspm}=="0" ATTRS{link/l1_1_pcipm}=="0" ATTRS{link/l1_aspm}=="0" ATTRS{local_cpulist}=="0-15" ATTRS{local_cpus}=="0000ffff" ATTRS{max_link_speed}=="16.0 GT/s PCIe" ATTRS{max_link_width}=="8" ATTRS{msi_bus}=="1" ATTRS{numa_node}=="-1" ATTRS{power/async}=="enabled" ATTRS{power/autosuspend_delay_ms}=="100" ATTRS{power/control}=="auto" ATTRS{power/runtime_active_kids}=="5" ATTRS{power/runtime_active_time}=="79170904" ATTRS{power/runtime_enabled}=="enabled" ATTRS{power/runtime_status}=="active" ATTRS{power/runtime_suspended_time}=="0" ATTRS{power/runtime_usage}=="0" ATTRS{power/wakeup}=="disabled" ATTRS{power/wakeup_abort_count}=="" ATTRS{power/wakeup_active}=="" ATTRS{power/wakeup_active_count}=="" ATTRS{power/wakeup_count}=="" ATTRS{power/wakeup_expire_count}=="" ATTRS{power/wakeup_last_time_ms}=="" ATTRS{power/wakeup_max_time_ms}=="" ATTRS{power/wakeup_total_time_ms}=="" ATTRS{power_state}=="D0" ATTRS{reset_method}=="pm bus" ATTRS{revision}=="0x00" ATTRS{secondary_bus_number}=="3" ATTRS{subordinate_bus_number}=="8" ATTRS{subsystem_device}=="0x0000" ATTRS{subsystem_vendor}=="0x0000" ATTRS{vendor}=="0x1022" looking at parent device '/devices/pci0000:00/0000:00:01.2': KERNELS=="0000:00:01.2" SUBSYSTEMS=="pci" DRIVERS=="pcieport" ATTRS{aer_rootport_total_err_cor}=="0" ATTRS{aer_rootport_total_err_fatal}=="0" ATTRS{aer_rootport_total_err_nonfatal}=="0" ATTRS{ari_enabled}=="0" ATTRS{broken_parity_status}=="0" ATTRS{class}=="0x060400" ATTRS{consistent_dma_mask_bits}=="32" ATTRS{current_link_speed}=="16.0 GT/s PCIe" ATTRS{current_link_width}=="4" ATTRS{d3cold_allowed}=="1" ATTRS{device}=="0x1483" ATTRS{dma_mask_bits}=="32" ATTRS{driver_override}=="(null)" ATTRS{enable}=="2" ATTRS{irq}=="28" ATTRS{local_cpulist}=="0-15" ATTRS{local_cpus}=="0000ffff" ATTRS{max_link_speed}=="16.0 GT/s PCIe" ATTRS{max_link_width}=="8" ATTRS{msi_bus}=="1" ATTRS{msi_irqs/28}=="msi" ATTRS{numa_node}=="-1" ATTRS{power/async}=="enabled" ATTRS{power/autosuspend_delay_ms}=="100" ATTRS{power/control}=="auto" ATTRS{power/runtime_active_kids}=="1" ATTRS{power/runtime_active_time}=="79170908" ATTRS{power/runtime_enabled}=="enabled" ATTRS{power/runtime_status}=="active" ATTRS{power/runtime_suspended_time}=="0" ATTRS{power/runtime_usage}=="0" ATTRS{power/wakeup}=="enabled" ATTRS{power/wakeup_abort_count}=="0" ATTRS{power/wakeup_active}=="0" ATTRS{power/wakeup_active_count}=="0" ATTRS{power/wakeup_count}=="0" ATTRS{power/wakeup_expire_count}=="0" ATTRS{power/wakeup_last_time_ms}=="0" ATTRS{power/wakeup_max_time_ms}=="0" ATTRS{power/wakeup_total_time_ms}=="0" ATTRS{power_state}=="D0" ATTRS{reset_method}=="pm" ATTRS{revision}=="0x00" ATTRS{secondary_bus_number}=="2" ATTRS{subordinate_bus_number}=="8" ATTRS{subsystem_device}=="0x8808" ATTRS{subsystem_vendor}=="0x1043" ATTRS{vendor}=="0x1022" looking at parent device '/devices/pci0000:00': KERNELS=="pci0000:00" SUBSYSTEMS=="" DRIVERS=="" ATTRS{power/async}=="enabled" ATTRS{power/control}=="auto" ATTRS{power/runtime_active_kids}=="24" ATTRS{power/runtime_active_time}=="0" ATTRS{power/runtime_enabled}=="disabled" ATTRS{power/runtime_status}=="unsupported" ATTRS{power/runtime_suspended_time}=="0" ATTRS{power/runtime_usage}=="0" ATTRS{waiting_for_supplier}=="0" ```
this is the difference of running ~/.steam/root/ubuntu12_32/steam-runtime/run.sh steam-runtime-input-monitor when unplugging and plugging the device
Thanks.
The input device monitor identifies it as "read-write"
, so Steam will be able to access this device node. Modifying the udev rules for this device is not necessary: it already has the correct permissions.
As I suspected, this does not seem to be a HID device, so a KERNEL=="hidraw*"
rule will not help you either. I don't know why Steam is not detecting it, but the udev rules are not the problem.
@slouken: does SDL or Steam perhaps need a device table entry for this controller?
Or could SDL or Steam perhaps do this programmatically, and assume that all devices with the xpad
driver and all the expected axes and buttons are broadly Xbox-compatible for detection and mapping purposes?
I tried adding this controller but it wouldn't be recognized
this is the rule:
KERNEL=="hidraw*", ATTRS{idVendor}=="0f0d", ATTRS{idProduct}=="00dc", MODE="0660", TAG+="uaccess"
|I'm not sure what's wrong with the rule, but no matter what I try it just wont show up in Steam