@avicenzi It’s working! We got all these donated Hori wheels for the kids at school and now well be able to keep the openSUSE installs on all 20 machines by just adding these rules!
I did have to go to the Github repo for xpadneo and compile from source following the instructions there, but once the rule you provided was implemented, it all worked like a charm!(hope xpadneo could be added to the official repo in the future for easier provisioning) Sharing the results just in case anyone else runs into the same issue. Completely blessed, thank you!
here the results from lsusb -t
/: Bus 001.Port 001: Dev 001, Class=root_hub, Driver=xhci_hcd/16p, 480M
|__ Port 002: Dev 002, If 0, Class=Audio, Driver=snd-usb-audio, 480M
|__ Port 002: Dev 002, If 1, Class=Audio, Driver=snd-usb-audio, 480M
|__ Port 002: Dev 002, If 2, Class=Audio, Driver=snd-usb-audio, 480M
|__ Port 002: Dev 002, If 3, Class=Application Specific Interface, Driver=[none], 480M
|__ Port 003: Dev 003, If 0, Class=Human Interface Device, Driver=usbhid, 12M
|__ Port 003: Dev 003, If 1, Class=Human Interface Device, Driver=usbhid, 12M
|__ Port 003: Dev 003, If 2, Class=Human Interface Device, Driver=usbhid, 12M
|__ Port 003: Dev 003, If 3, Class=Human Interface Device, Driver=usbhid, 12M
|__ Port 004: Dev 004, If 0, Class=Hub, Driver=hub/4p, 480M
|__ Port 004: Dev 006, If 0, Class=Human Interface Device, Driver=usbhid, 12M
|__ Port 004: Dev 006, If 1, Class=Human Interface Device, Driver=usbhid, 12M
|__ Port 005: Dev 005, If 0, Class=Vendor Specific Class, Driver=xone-dongle, 480M
|__ Port 006: Dev 007, If 0, Class=Audio, Driver=snd-usb-audio, 12M
|__ Port 006: Dev 007, If 1, Class=Audio, Driver=snd-usb-audio, 12M
|__ Port 006: Dev 007, If 2, Class=Audio, Driver=snd-usb-audio, 12M
|__ Port 006: Dev 007, If 3, Class=Human Interface Device, Driver=usbhid, 12M
|__ Port 007: Dev 008, If 0, Class=Video, Driver=uvcvideo, 480M
|__ Port 007: Dev 008, If 1, Class=Video, Driver=uvcvideo, 480M
|__ Port 007: Dev 008, If 2, Class=Audio, Driver=snd-usb-audio, 480M
|__ Port 007: Dev 008, If 3, Class=Audio, Driver=snd-usb-audio, 480M
|__ Port 009: Dev 013, If 0, Class=Vendor Specific Class, Driver=xpad, 12M
|__ Port 011: Dev 010, If 0, Class=Vendor Specific Class, Driver=[none], 12M
|__ Port 013: Dev 011, If 0, Class=Human Interface Device, Driver=usbhid, 12M
/: Bus 002.Port 001: Dev 001, Class=root_hub, Driver=xhci_hcd/10p, 10000M
|__ Port 004: Dev 002, If 0, Class=Hub, Driver=hub/4p, 5000M
dmesg
[ 1659.446344] usb 1-9: new full-speed USB device number 14 using xhci_hcd
[ 1659.588585] usb 1-9: New USB device found, idVendor=0f0d, idProduct=00a4, bcdDevice= 1.01
[ 1659.588588] usb 1-9: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[ 1659.588589] usb 1-9: Product: Racing Wheel Apex
[ 1659.588590] usb 1-9: Manufacturer: HORI CO.,LTD.
[ 1659.588591] usb 1-9: SerialNumber: 3FFBE831
[ 1659.590034] input: Generic X-Box pad as /devices/pci0000:00/0000:00:14.0/usb1/1-9/1-9:1.0/input/input30
udevadm info -a -n /dev/bus/usb/001/015
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:14.0/usb1/1-9':
KERNEL=="1-9"
SUBSYSTEM=="usb"
DRIVER=="usb"
ATTR{authorized}=="1"
ATTR{avoid_reset_quirk}=="0"
ATTR{bConfigurationValue}=="1"
ATTR{bDeviceClass}=="ff"
ATTR{bDeviceProtocol}=="ff"
ATTR{bDeviceSubClass}=="ff"
ATTR{bMaxPacketSize0}=="64"
ATTR{bMaxPower}=="500mA"
ATTR{bNumConfigurations}=="1"
ATTR{bNumInterfaces}==" 1"
ATTR{bcdDevice}=="0101"
ATTR{bmAttributes}=="80"
ATTR{busnum}=="1"
ATTR{configuration}==""
ATTR{devnum}=="15"
ATTR{devpath}=="9"
ATTR{idProduct}=="00a4"
ATTR{idVendor}=="0f0d"
ATTR{ltm_capable}=="no"
ATTR{manufacturer}=="HORI CO.,LTD."
ATTR{maxchild}=="0"
ATTR{physical_location/dock}=="no"
ATTR{physical_location/horizontal_position}=="left"
ATTR{physical_location/lid}=="no"
ATTR{physical_location/panel}=="top"
ATTR{physical_location/vertical_position}=="upper"
ATTR{power/active_duration}=="33304"
ATTR{power/async}=="enabled"
ATTR{power/autosuspend}=="2"
ATTR{power/autosuspend_delay_ms}=="2000"
ATTR{power/connected_duration}=="33304"
ATTR{power/control}=="on"
ATTR{power/level}=="on"
ATTR{power/persist}=="1"
ATTR{power/runtime_active_kids}=="1"
ATTR{power/runtime_active_time}=="33035"
ATTR{power/runtime_enabled}=="forbidden"
ATTR{power/runtime_status}=="active"
ATTR{power/runtime_suspended_time}=="0"
ATTR{power/runtime_usage}=="1"
ATTR{product}=="Racing Wheel Apex"
ATTR{quirks}=="0x0"
ATTR{removable}=="removable"
ATTR{remove}=="(not readable)"
ATTR{rx_lanes}=="1"
ATTR{serial}=="3FFBE831"
ATTR{speed}=="12"
ATTR{tx_lanes}=="1"
ATTR{urbnum}=="8118"
ATTR{version}==" 2.00"
looking at parent device '/devices/pci0000:00/0000:00:14.0/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}=="0607"
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 6.7.4-1-default xhci-hcd"
ATTRS{maxchild}=="16"
ATTRS{power/active_duration}=="1789830"
ATTRS{power/async}=="enabled"
ATTRS{power/autosuspend}=="0"
ATTRS{power/autosuspend_delay_ms}=="0"
ATTRS{power/connected_duration}=="1789834"
ATTRS{power/control}=="auto"
ATTRS{power/level}=="auto"
ATTRS{power/runtime_active_kids}=="8"
ATTRS{power/runtime_active_time}=="1789830"
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{product}=="xHCI Host Controller"
ATTRS{quirks}=="0x0"
ATTRS{removable}=="unknown"
ATTRS{remove}=="(not readable)"
ATTRS{rx_lanes}=="1"
ATTRS{serial}=="0000:00:14.0"
ATTRS{speed}=="480"
ATTRS{tx_lanes}=="1"
ATTRS{urbnum}=="238"
ATTRS{version}==" 2.00"
looking at parent device '/devices/pci0000:00/0000:00:14.0':
KERNELS=="0000:00:14.0"
SUBSYSTEMS=="pci"
DRIVERS=="xhci_hcd"
ATTRS{ari_enabled}=="0"
ATTRS{broken_parity_status}=="0"
ATTRS{class}=="0x0c0330"
ATTRS{consistent_dma_mask_bits}=="64"
ATTRS{d3cold_allowed}=="1"
ATTRS{device}=="0xa36d"
ATTRS{dma_mask_bits}=="64"
ATTRS{driver_override}=="(null)"
ATTRS{enable}=="1"
ATTRS{index}=="2"
ATTRS{irq}=="151"
ATTRS{label}=="Onboard - Other"
ATTRS{local_cpulist}=="0-15"
ATTRS{local_cpus}=="ffff"
ATTRS{msi_bus}=="1"
ATTRS{msi_irqs/151}=="msi"
ATTRS{numa_node}=="-1"
ATTRS{power/async}=="enabled"
ATTRS{power/control}=="on"
ATTRS{power/runtime_active_kids}=="1"
ATTRS{power/runtime_active_time}=="1791340"
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{remove}=="(not readable)"
ATTRS{rescan}=="(not readable)"
ATTRS{resource0}=="(not readable)"
ATTRS{revision}=="0x10"
ATTRS{subsystem_device}=="0x8694"
ATTRS{subsystem_vendor}=="0x1043"
ATTRS{vendor}=="0x8086"
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}=="10"
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"
```