Hori Racing Wheel Apex - Not Detected

Hi OpenSUSE Community!
I’m running into an issue when plugging in my Racing Wheel. I’ve tested on Nobara and PopOS and they are both able to detect it as a Xbox Generic controller, here the dmesg output from Nobara:

[ 3286.629188] usb 2-2.1: New USB device found, idVendor=0f0d, idProduct=00a4, bcdDevice= 1.01
[ 3286.629193] usb 2-2.1: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[ 3286.629194] usb 2-2.1: Product: Racing Wheel Apex
[ 3286.629225] usb 2-2.1: Manufacturer: HORI CO.,LTD.
[ 3286.629237] usb 2-2.1: SerialNumber: 3FFBE831
[ 3286.706875] input: Generic X-Box pad as /devices/pci0000:00/0000:00:11.0/0000:02:00.0/usb2/2-2/2-2.1/2-2.1:1.0/input/input8
[ 3286.707710] usbcore: registered new interface driver xpad

lsusb -t on Nobara shows the following:
Port 001: Dev 004, If 0, Class=Vendor Specific Class, Driver=xpad, 12M

When comparing, here dmesg from openSUSE:

[60021.036019] usb 1-9: new full-speed USB device number 21 using xhci_hcd
[60021.180928] usb 1-9: New USB device found, idVendor=0f0d, idProduct=00a4, bcdDevice= 1.01
[60021.180936] usb 1-9: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[60021.180938] usb 1-9: Product: Racing Wheel Apex
[60021.180940] usb 1-9: Manufacturer: HORI CO.,LTD.
[60021.180942] usb 1-9: SerialNumber: 3FFBE831

Here from a lsusb and lsusb -t perspective (notice how no driver is loaded):
Bus 001 Device 021: ID 0f0d:00a4 Hori Co., Ltd Racing Wheel Apex
Port 009: Dev 013, If 0, Class=Vendor Specific Class, Driver=[none], 12M

OS Information:

NAME="openSUSE Tumbleweed"
# VERSION="20240211"
ID="opensuse-tumbleweed"
ID_LIKE="opensuse suse"
VERSION_ID="20240211"
PRETTY_NAME="openSUSE Tumbleweed"
ANSI_COLOR="0;32"
# CPE 2.3 format, boo#1217921
CPE_NAME="cpe:2.3:o:opensuse:tumbleweed:20240211:*:*:*:*:*:*:*"
#CPE 2.2 format
#CPE_NAME="cpe:/o:opensuse:tumbleweed:20240211"
BUG_REPORT_URL="https://bugzilla.opensuse.org"
SUPPORT_URL="https://bugs.opensuse.org"
HOME_URL="https://www.opensuse.org"
DOCUMENTATION_URL="https://en.opensuse.org/Portal:Tumbleweed"
LOGO="distributor-logo-Tumbleweed"

Other attempts:
I tried to grep through the udev rules on Nobara to see if I was missing any, with no luck.
Installed xpadneo, reboot machine and driver is not picked up.

I’ll need some additional guidance on this one. I will truly appreciate it. I have a feeling that is a mixture of both driver and udev rule configuration.

Hi,

In the xpad driver you can clearly see that HORI is either an Xbox 360 or Xbox ONE generic controller, but I can’t find your device ID on the list, which possibly means it might not be supported in the latest kernel.

TW has the latest kernel (6.7), while PopOS and other distros might use an older kernel, such as 5.x. If you can share the kernel version of the working system it might give some hints if this wheel was supported once.

You can do a firmware update for your wheel, but I don’t think this fixes anything on Linux.

Check if jstest-gtk (from Flatpak) can recognize your wheel. Oversteer would be a good tool to help set it up, but it does not support Hori.

Try to run udevadm on the working system, compare it with openSUSE, and share the results.

udevadm info -a -n /dev/[device-name] (e.g ttyUSB0)

You can find some helper commands on the Arch wiki.

1 Like

@avicenzi Thank you so much for reaching out and helping with this.

Took a bit since I had to re-create the VM on KVM and get the clipboard working to make this easy.

Here the results on openSUSE after running
udevadm monitor --property --udev
Since I needed to know where the USB device was located to begin with:

monitor will print the received events for:
UDEV - the event which udev sends out after rule processing

UDEV  [23506.369354] add      /devices/pci0000:00/0000:00:14.0/usb1/1-9 (usb)
ACTION=add
DEVPATH=/devices/pci0000:00/0000:00:14.0/usb1/1-9
SUBSYSTEM=usb
DEVNAME=/dev/bus/usb/001/015
DEVTYPE=usb_device
PRODUCT=f0d/a4/101
TYPE=255/255/255
BUSNUM=001
DEVNUM=015
SEQNUM=6958
USEC_INITIALIZED=23506322684
ID_BUS=usb
ID_MODEL=Racing_Wheel_Apex
ID_MODEL_ENC=Racing\x20Wheel\x20Apex
ID_MODEL_ID=00a4
ID_SERIAL=HORI_CO._LTD._Racing_Wheel_Apex_3FFBE831
ID_SERIAL_SHORT=3FFBE831
ID_VENDOR=HORI_CO._LTD.
ID_VENDOR_ENC=HORI\x20CO.\x2cLTD.
ID_VENDOR_ID=0f0d
ID_REVISION=0101
ID_USB_MODEL=Racing_Wheel_Apex
ID_USB_MODEL_ENC=Racing\x20Wheel\x20Apex
ID_USB_MODEL_ID=00a4
ID_USB_SERIAL=HORI_CO._LTD._Racing_Wheel_Apex_3FFBE831
ID_USB_SERIAL_SHORT=3FFBE831
ID_USB_VENDOR=HORI_CO._LTD.
ID_USB_VENDOR_ENC=HORI\x20CO.\x2cLTD.
ID_USB_VENDOR_ID=0f0d
ID_USB_REVISION=0101
ID_USB_INTERFACES=:ff5d01:
ID_VENDOR_FROM_DATABASE=Hori Co., Ltd
ID_PATH_WITH_USB_REVISION=pci-0000:00:14.0-usbv2-0:9
ID_PATH=pci-0000:00:14.0-usb-0:9
ID_PATH_TAG=pci-0000_00_14_0-usb-0_9
.LOCAL_ifNum=
DRIVER=usb
MAJOR=189
MINOR=14

UDEV  [23506.371552] add      /devices/pci0000:00/0000:00:14.0/usb1/1-9/1-9:1.0 (usb)
ACTION=add
DEVPATH=/devices/pci0000:00/0000:00:14.0/usb1/1-9/1-9:1.0
SUBSYSTEM=usb
DEVTYPE=usb_interface
PRODUCT=f0d/a4/101
TYPE=255/255/255
INTERFACE=255/93/1
MODALIAS=usb:v0F0Dp00A4d0101dcFFdscFFdpFFicFFisc5Dip01in00
SEQNUM=6959
USEC_INITIALIZED=23506355793
ID_USB_CLASS_FROM_DATABASE=Vendor Specific Class
ID_USB_SUBCLASS_FROM_DATABASE=Vendor Specific Subclass
ID_USB_PROTOCOL_FROM_DATABASE=Vendor Specific Protocol
ID_VENDOR_FROM_DATABASE=Hori Co., Ltd
ID_PATH_WITH_USB_REVISION=pci-0000:00:14.0-usbv2-0:9:1.0
ID_PATH=pci-0000:00:14.0-usb-0:9:1.0
ID_PATH_TAG=pci-0000_00_14_0-usb-0_9_1_0
.LOCAL_ifNum=00

UDEV  [23506.375178] bind     /devices/pci0000:00/0000:00:14.0/usb1/1-9 (usb)
ACTION=bind
DEVPATH=/devices/pci0000:00/0000:00:14.0/usb1/1-9
SUBSYSTEM=usb
DEVNAME=/dev/bus/usb/001/015
DEVTYPE=usb_device
DRIVER=usb
PRODUCT=f0d/a4/101
TYPE=255/255/255
BUSNUM=001
DEVNUM=015
SEQNUM=6960
USEC_INITIALIZED=23506322684
ID_BUS=usb
ID_MODEL=Racing_Wheel_Apex
ID_MODEL_ENC=Racing\x20Wheel\x20Apex
ID_MODEL_ID=00a4
ID_SERIAL=HORI_CO._LTD._Racing_Wheel_Apex_3FFBE831
ID_SERIAL_SHORT=3FFBE831
ID_VENDOR=HORI_CO._LTD.
ID_VENDOR_ENC=HORI\x20CO.\x2cLTD.
ID_VENDOR_ID=0f0d
ID_REVISION=0101
ID_USB_MODEL=Racing_Wheel_Apex
ID_USB_MODEL_ENC=Racing\x20Wheel\x20Apex
ID_USB_MODEL_ID=00a4
ID_USB_SERIAL=HORI_CO._LTD._Racing_Wheel_Apex_3FFBE831
ID_USB_SERIAL_SHORT=3FFBE831
ID_USB_VENDOR=HORI_CO._LTD.
ID_USB_VENDOR_ENC=HORI\x20CO.\x2cLTD.
ID_USB_VENDOR_ID=0f0d
ID_USB_REVISION=0101
ID_USB_INTERFACES=:ff5d01:
ID_VENDOR_FROM_DATABASE=Hori Co., Ltd
ID_PATH_WITH_USB_REVISION=pci-0000:00:14.0-usbv2-0:9
ID_PATH=pci-0000:00:14.0-usb-0:9
ID_PATH_TAG=pci-0000_00_14_0-usb-0_9
.LOCAL_ifNum=
MAJOR=189
MINOR=14

Here the results after running the following on openSUSE
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}=="318574"
    ATTR{power/async}=="enabled"
    ATTR{power/autosuspend}=="2"
    ATTR{power/autosuspend_delay_ms}=="2000"
    ATTR{power/connected_duration}=="318574"
    ATTR{power/control}=="on"
    ATTR{power/level}=="on"
    ATTR{power/persist}=="1"
    ATTR{power/runtime_active_kids}=="0"
    ATTR{power/runtime_active_time}=="318304"
    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}=="12"
    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}=="23822937"
    ATTRS{power/async}=="enabled"
    ATTRS{power/autosuspend}=="0"
    ATTRS{power/autosuspend_delay_ms}=="0"
    ATTRS{power/connected_duration}=="23822937"
    ATTRS{power/control}=="auto"
    ATTRS{power/level}=="auto"
    ATTRS{power/runtime_active_kids}=="9"
    ATTRS{power/runtime_active_time}=="23822935"
    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}=="230"
    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}=="23824350"
    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"

Here, the output from the Nobara box
udevadm monitor --property --udev

monitor will print the received events for:
UDEV - the event which udev sends out after rule processing

UDEV  [190.938768] add      /devices/pci0000:00/0000:00:11.0/0000:02:00.0/usb2/2-2/2-2.1 (usb)
ACTION=add
DEVPATH=/devices/pci0000:00/0000:00:11.0/0000:02:00.0/usb2/2-2/2-2.1
SUBSYSTEM=usb
DEVNAME=/dev/bus/usb/002/005
DEVTYPE=usb_device
PRODUCT=f0d/a4/101
TYPE=255/255/255
BUSNUM=002
DEVNUM=005
SEQNUM=5352
USEC_INITIALIZED=190929874
ID_BUS=usb
ID_MODEL=Racing_Wheel_Apex
ID_MODEL_ENC=Racing\x20Wheel\x20Apex
ID_MODEL_ID=00a4
ID_SERIAL=HORI_CO._LTD._Racing_Wheel_Apex_3FFBE831
ID_SERIAL_SHORT=3FFBE831
ID_VENDOR=HORI_CO._LTD.
ID_VENDOR_ENC=HORI\x20CO.\x2cLTD.
ID_VENDOR_ID=0f0d
ID_REVISION=0101
ID_USB_MODEL=Racing_Wheel_Apex
ID_USB_MODEL_ENC=Racing\x20Wheel\x20Apex
ID_USB_MODEL_ID=00a4
ID_USB_SERIAL=HORI_CO._LTD._Racing_Wheel_Apex_3FFBE831
ID_USB_SERIAL_SHORT=3FFBE831
ID_USB_VENDOR=HORI_CO._LTD.
ID_USB_VENDOR_ENC=HORI\x20CO.\x2cLTD.
ID_USB_VENDOR_ID=0f0d
ID_USB_REVISION=0101
ID_USB_INTERFACES=:ff5d01:
ID_VENDOR_FROM_DATABASE=Hori Co., Ltd
ID_PATH_WITH_USB_REVISION=pci-0000:02:00.0-usbv1-0:2.1
ID_PATH=pci-0000:02:00.0-usb-0:2.1
ID_PATH_TAG=pci-0000_02_00_0-usb-0_2_1
DRIVER=usb
MAJOR=189
MINOR=132

UDEV  [190.944310] add      /devices/pci0000:00/0000:00:11.0/0000:02:00.0/usb2/2-2/2-2.1/leds/xpad0 (leds)
ACTION=add
DEVPATH=/devices/pci0000:00/0000:00:11.0/0000:02:00.0/usb2/2-2/2-2.1/leds/xpad0
SUBSYSTEM=leds
SEQNUM=5354
USEC_INITIALIZED=190933654
ID_PATH_WITH_USB_REVISION=pci-0000:02:00.0-usbv1-0:2.1
ID_PATH=pci-0000:02:00.0-usb-0:2.1
ID_PATH_TAG=pci-0000_02_00_0-usb-0_2_1
ID_FOR_SEAT=leds-pci-0000_02_00_0-usb-0_2_1
TAGS=:seat:
CURRENT_TAGS=:seat:

UDEV  [190.944347] add      /devices/pci0000:00/0000:00:11.0/0000:02:00.0/usb2/2-2/2-2.1/2-2.1:1.0 (usb)
ACTION=add
DEVPATH=/devices/pci0000:00/0000:00:11.0/0000:02:00.0/usb2/2-2/2-2.1/2-2.1:1.0
SUBSYSTEM=usb
DEVTYPE=usb_interface
PRODUCT=f0d/a4/101
TYPE=255/255/255
INTERFACE=255/93/1
MODALIAS=usb:v0F0Dp00A4d0101dcFFdscFFdpFFicFFisc5Dip01in00
SEQNUM=5353
USEC_INITIALIZED=190933634
ID_USB_CLASS_FROM_DATABASE=Vendor Specific Class
ID_USB_SUBCLASS_FROM_DATABASE=Vendor Specific Subclass
ID_USB_PROTOCOL_FROM_DATABASE=Vendor Specific Protocol
ID_VENDOR_FROM_DATABASE=Hori Co., Ltd
ID_PATH_WITH_USB_REVISION=pci-0000:02:00.0-usbv1-0:2.1:1.0
ID_PATH=pci-0000:02:00.0-usb-0:2.1:1.0
ID_PATH_TAG=pci-0000_02_00_0-usb-0_2_1_1_0
DRIVER=xpad

UDEV  [190.947159] add      /devices/pci0000:00/0000:00:11.0/0000:02:00.0/usb2/2-2/2-2.1/2-2.1:1.0/input/input9 (input)
ACTION=add
DEVPATH=/devices/pci0000:00/0000:00:11.0/0000:02:00.0/usb2/2-2/2-2.1/2-2.1:1.0/input/input9
SUBSYSTEM=input
PRODUCT=3/f0d/a4/101
NAME="Generic X-Box pad"
PHYS="usb-0000:02:00.0-2.1/input0"
PROP=0
EV=20000b
KEY=7cdb000000000000 0 0 0 0
ABS=3003f
FF=107030000 0
MODALIAS=input:b0003v0F0Dp00A4e0101-e0,1,3,15,k130,131,133,134,136,137,13A,13B,13C,13D,13E,ra0,1,2,3,4,5,10,11,mlsf50,51,58,59,5A,60,w
SEQNUM=5355
USEC_INITIALIZED=190933685
ID_INPUT=1
ID_INPUT_JOYSTICK=1
ID_BUS=usb
ID_MODEL=Racing_Wheel_Apex
ID_MODEL_ENC=Racing\x20Wheel\x20Apex
ID_MODEL_ID=00a4
ID_SERIAL=HORI_CO._LTD._Racing_Wheel_Apex_3FFBE831
ID_SERIAL_SHORT=3FFBE831
ID_VENDOR=HORI_CO._LTD.
ID_VENDOR_ENC=HORI\x20CO.\x2cLTD.
ID_VENDOR_ID=0f0d
ID_REVISION=0101
ID_TYPE=generic
ID_USB_MODEL=Racing_Wheel_Apex
ID_USB_MODEL_ENC=Racing\x20Wheel\x20Apex
ID_USB_MODEL_ID=00a4
ID_USB_SERIAL=HORI_CO._LTD._Racing_Wheel_Apex_3FFBE831
ID_USB_SERIAL_SHORT=3FFBE831
ID_USB_VENDOR=HORI_CO._LTD.
ID_USB_VENDOR_ENC=HORI\x20CO.\x2cLTD.
ID_USB_VENDOR_ID=0f0d
ID_USB_REVISION=0101
ID_USB_TYPE=generic
ID_USB_INTERFACES=:ff5d01:
ID_USB_INTERFACE_NUM=00
ID_USB_DRIVER=xpad
.INPUT_CLASS=joystick
ID_PATH_WITH_USB_REVISION=pci-0000:02:00.0-usbv1-0:2.1:1.0
ID_PATH=pci-0000:02:00.0-usb-0:2.1:1.0
ID_PATH_TAG=pci-0000_02_00_0-usb-0_2_1_1_0
ID_FOR_SEAT=input-pci-0000_02_00_0-usb-0_2_1_1_0
TAGS=:seat:
CURRENT_TAGS=:seat:

UDEV  [190.952941] add      /devices/pci0000:00/0000:00:11.0/0000:02:00.0/usb2/2-2/2-2.1/2-2.1:1.0/input/input9/js1 (input)
ACTION=add
DEVPATH=/devices/pci0000:00/0000:00:11.0/0000:02:00.0/usb2/2-2/2-2.1/2-2.1:1.0/input/input9/js1
SUBSYSTEM=input
DEVNAME=/dev/input/js1
SEQNUM=5357
USEC_INITIALIZED=190933736
ID_INPUT=1
ID_INPUT_JOYSTICK=1
ID_BUS=usb
ID_MODEL=Racing_Wheel_Apex
ID_MODEL_ENC=Racing\x20Wheel\x20Apex
ID_MODEL_ID=00a4
ID_SERIAL=HORI_CO._LTD._Racing_Wheel_Apex_3FFBE831
ID_SERIAL_SHORT=3FFBE831
ID_VENDOR=HORI_CO._LTD.
ID_VENDOR_ENC=HORI\x20CO.\x2cLTD.
ID_VENDOR_ID=0f0d
ID_REVISION=0101
ID_TYPE=generic
ID_USB_MODEL=Racing_Wheel_Apex
ID_USB_MODEL_ENC=Racing\x20Wheel\x20Apex
ID_USB_MODEL_ID=00a4
ID_USB_SERIAL=HORI_CO._LTD._Racing_Wheel_Apex_3FFBE831
ID_USB_SERIAL_SHORT=3FFBE831
ID_USB_VENDOR=HORI_CO._LTD.
ID_USB_VENDOR_ENC=HORI\x20CO.\x2cLTD.
ID_USB_VENDOR_ID=0f0d
ID_USB_REVISION=0101
ID_USB_TYPE=generic
ID_USB_INTERFACES=:ff5d01:
ID_USB_INTERFACE_NUM=00
ID_USB_DRIVER=xpad
.INPUT_CLASS=joystick
ID_PATH_WITH_USB_REVISION=pci-0000:02:00.0-usbv1-0:2.1:1.0
ID_PATH=pci-0000:02:00.0-usb-0:2.1:1.0
ID_PATH_TAG=pci-0000_02_00_0-usb-0_2_1_1_0
ID_FOR_SEAT=input-pci-0000_02_00_0-usb-0_2_1_1_0
MAJOR=13
MINOR=1
DEVLINKS=/dev/input/by-id/usb-HORI_CO._LTD._Racing_Wheel_Apex_3FFBE831-joystick /dev/input/by-path/pci-0000:02:00.0-usb-0:2.1:1.0-joystick /dev/input/by-path/pci-0000:02:00.0-usbv1-0:2.1:1.0-joystick
TAGS=:uaccess:seat:
CURRENT_TAGS=:uaccess:seat:

UDEV  [190.961444] add      /devices/pci0000:00/0000:00:11.0/0000:02:00.0/usb2/2-2/2-2.1/2-2.1:1.0/input/input9/event7 (input)
ACTION=add
DEVPATH=/devices/pci0000:00/0000:00:11.0/0000:02:00.0/usb2/2-2/2-2.1/2-2.1:1.0/input/input9/event7
SUBSYSTEM=input
DEVNAME=/dev/input/event7
SEQNUM=5356
USEC_INITIALIZED=190933711
ID_INPUT=1
ID_INPUT_JOYSTICK=1
ID_BUS=usb
ID_MODEL=Racing_Wheel_Apex
ID_MODEL_ENC=Racing\x20Wheel\x20Apex
ID_MODEL_ID=00a4
ID_SERIAL=HORI_CO._LTD._Racing_Wheel_Apex_3FFBE831
ID_SERIAL_SHORT=3FFBE831
ID_VENDOR=HORI_CO._LTD.
ID_VENDOR_ENC=HORI\x20CO.\x2cLTD.
ID_VENDOR_ID=0f0d
ID_REVISION=0101
ID_TYPE=generic
ID_USB_MODEL=Racing_Wheel_Apex
ID_USB_MODEL_ENC=Racing\x20Wheel\x20Apex
ID_USB_MODEL_ID=00a4
ID_USB_SERIAL=HORI_CO._LTD._Racing_Wheel_Apex_3FFBE831
ID_USB_SERIAL_SHORT=3FFBE831
ID_USB_VENDOR=HORI_CO._LTD.
ID_USB_VENDOR_ENC=HORI\x20CO.\x2cLTD.
ID_USB_VENDOR_ID=0f0d
ID_USB_REVISION=0101
ID_USB_TYPE=generic
ID_USB_INTERFACES=:ff5d01:
ID_USB_INTERFACE_NUM=00
ID_USB_DRIVER=xpad
.INPUT_CLASS=joystick
ID_PATH_WITH_USB_REVISION=pci-0000:02:00.0-usbv1-0:2.1:1.0
ID_PATH=pci-0000:02:00.0-usb-0:2.1:1.0
ID_PATH_TAG=pci-0000_02_00_0-usb-0_2_1_1_0
ID_FOR_SEAT=input-pci-0000_02_00_0-usb-0_2_1_1_0
LIBINPUT_DEVICE_GROUP=3/f0d/a4:usb-0000:02:00.0-2
MAJOR=13
MINOR=71
DEVLINKS=/dev/input/by-path/pci-0000:02:00.0-usbv1-0:2.1:1.0-event-joystick /dev/input/by-path/pci-0000:02:00.0-usb-0:2.1:1.0-event-joystick /dev/input/by-id/usb-HORI_CO._LTD._Racing_Wheel_Apex_3FFBE831-event-joystick
TAGS=:uaccess:seat:
CURRENT_TAGS=:uaccess:seat:

UDEV  [190.969872] bind     /devices/pci0000:00/0000:00:11.0/0000:02:00.0/usb2/2-2/2-2.1/2-2.1:1.0 (usb)
ACTION=bind
DEVPATH=/devices/pci0000:00/0000:00:11.0/0000:02:00.0/usb2/2-2/2-2.1/2-2.1:1.0
SUBSYSTEM=usb
DEVTYPE=usb_interface
DRIVER=xpad
PRODUCT=f0d/a4/101
TYPE=255/255/255
INTERFACE=255/93/1
MODALIAS=usb:v0F0Dp00A4d0101dcFFdscFFdpFFicFFisc5Dip01in00
SEQNUM=5358
USEC_INITIALIZED=190933634
ID_USB_CLASS_FROM_DATABASE=Vendor Specific Class
ID_USB_SUBCLASS_FROM_DATABASE=Vendor Specific Subclass
ID_USB_PROTOCOL_FROM_DATABASE=Vendor Specific Protocol
ID_VENDOR_FROM_DATABASE=Hori Co., Ltd
ID_PATH_WITH_USB_REVISION=pci-0000:02:00.0-usbv1-0:2.1:1.0
ID_PATH=pci-0000:02:00.0-usb-0:2.1:1.0
ID_PATH_TAG=pci-0000_02_00_0-usb-0_2_1_1_0

UDEV  [190.977734] bind     /devices/pci0000:00/0000:00:11.0/0000:02:00.0/usb2/2-2/2-2.1 (usb)
ACTION=bind
DEVPATH=/devices/pci0000:00/0000:00:11.0/0000:02:00.0/usb2/2-2/2-2.1
SUBSYSTEM=usb
DEVNAME=/dev/bus/usb/002/005
DEVTYPE=usb_device
DRIVER=usb
PRODUCT=f0d/a4/101
TYPE=255/255/255
BUSNUM=002
DEVNUM=005
SEQNUM=5359
USEC_INITIALIZED=190929874
ID_BUS=usb
ID_MODEL=Racing_Wheel_Apex
ID_MODEL_ENC=Racing\x20Wheel\x20Apex
ID_MODEL_ID=00a4
ID_SERIAL=HORI_CO._LTD._Racing_Wheel_Apex_3FFBE831
ID_SERIAL_SHORT=3FFBE831
ID_VENDOR=HORI_CO._LTD.
ID_VENDOR_ENC=HORI\x20CO.\x2cLTD.
ID_VENDOR_ID=0f0d
ID_REVISION=0101
ID_USB_MODEL=Racing_Wheel_Apex
ID_USB_MODEL_ENC=Racing\x20Wheel\x20Apex
ID_USB_MODEL_ID=00a4
ID_USB_SERIAL=HORI_CO._LTD._Racing_Wheel_Apex_3FFBE831
ID_USB_SERIAL_SHORT=3FFBE831
ID_USB_VENDOR=HORI_CO._LTD.
ID_USB_VENDOR_ENC=HORI\x20CO.\x2cLTD.
ID_USB_VENDOR_ID=0f0d
ID_USB_REVISION=0101
ID_USB_INTERFACES=:ff5d01:
ID_VENDOR_FROM_DATABASE=Hori Co., Ltd
ID_PATH_WITH_USB_REVISION=pci-0000:02:00.0-usbv1-0:2.1
ID_PATH=pci-0000:02:00.0-usb-0:2.1
ID_PATH_TAG=pci-0000_02_00_0-usb-0_2_1
MAJOR=189
MINOR=132


udevadm info -a -n /dev/input/js1


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:11.0/0000:02:00.0/usb2/2-2/2-2.1/2-2.1:1.0/input/input9/js1':
    KERNEL=="js1"
    SUBSYSTEM=="input"
    DRIVER==""
    ATTR{power/control}=="auto"
    ATTR{power/runtime_active_time}=="0"
    ATTR{power/runtime_status}=="unsupported"
    ATTR{power/runtime_suspended_time}=="0"

  looking at parent device '/devices/pci0000:00/0000:00:11.0/0000:02:00.0/usb2/2-2/2-2.1/2-2.1:1.0/input/input9':
    KERNELS=="input9"
    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}=="00a4"
    ATTRS{id/vendor}=="0f0d"
    ATTRS{id/version}=="0101"
    ATTRS{inhibited}=="0"
    ATTRS{name}=="Generic X-Box pad"
    ATTRS{phys}=="usb-0000:02:00.0-2.1/input0"
    ATTRS{power/control}=="auto"
    ATTRS{power/runtime_active_time}=="0"
    ATTRS{power/runtime_status}=="unsupported"
    ATTRS{power/runtime_suspended_time}=="0"
    ATTRS{properties}=="0"
    ATTRS{uniq}==""

  looking at parent device '/devices/pci0000:00/0000:00:11.0/0000:02:00.0/usb2/2-2/2-2.1/2-2.1:1.0':
    KERNELS=="2-2.1: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{supports_autosuspend}=="0"

  looking at parent device '/devices/pci0000:00/0000:00:11.0/0000:02:00.0/usb2/2-2/2-2.1':
    KERNELS=="2-2.1"
    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}=="64"
    ATTRS{bMaxPower}=="500mA"
    ATTRS{bNumConfigurations}=="1"
    ATTRS{bNumInterfaces}==" 1"
    ATTRS{bcdDevice}=="0101"
    ATTRS{bmAttributes}=="80"
    ATTRS{busnum}=="2"
    ATTRS{configuration}==""
    ATTRS{devnum}=="5"
    ATTRS{devpath}=="2.1"
    ATTRS{idProduct}=="00a4"
    ATTRS{idVendor}=="0f0d"
    ATTRS{ltm_capable}=="no"
    ATTRS{manufacturer}=="HORI CO.,LTD."
    ATTRS{maxchild}=="0"
    ATTRS{power/active_duration}=="293371"
    ATTRS{power/autosuspend}=="2"
    ATTRS{power/autosuspend_delay_ms}=="2000"
    ATTRS{power/connected_duration}=="293371"
    ATTRS{power/control}=="on"
    ATTRS{power/level}=="on"
    ATTRS{power/persist}=="1"
    ATTRS{power/runtime_active_time}=="292681"
    ATTRS{power/runtime_status}=="active"
    ATTRS{power/runtime_suspended_time}=="0"
    ATTRS{product}=="Racing Wheel Apex"
    ATTRS{quirks}=="0x0"
    ATTRS{removable}=="unknown"
    ATTRS{remove}=="(not readable)"
    ATTRS{rx_lanes}=="1"
    ATTRS{serial}=="3FFBE831"
    ATTRS{speed}=="12"
    ATTRS{tx_lanes}=="1"
    ATTRS{urbnum}=="21"
    ATTRS{version}==" 2.00"

  looking at parent device '/devices/pci0000:00/0000:00:11.0/0000:02:00.0/usb2/2-2':
    KERNELS=="2-2"
    SUBSYSTEMS=="usb"
    DRIVERS=="usb"
    ATTRS{authorized}=="1"
    ATTRS{avoid_reset_quirk}=="0"
    ATTRS{bConfigurationValue}=="1"
    ATTRS{bDeviceClass}=="09"
    ATTRS{bDeviceProtocol}=="00"
    ATTRS{bDeviceSubClass}=="00"
    ATTRS{bMaxPacketSize0}=="8"
    ATTRS{bMaxPower}=="0mA"
    ATTRS{bNumConfigurations}=="1"
    ATTRS{bNumInterfaces}==" 1"
    ATTRS{bcdDevice}=="0100"
    ATTRS{bmAttributes}=="e0"
    ATTRS{busnum}=="2"
    ATTRS{configuration}=="VMware, Inc."
    ATTRS{devnum}=="3"
    ATTRS{devpath}=="2"
    ATTRS{idProduct}=="0002"
    ATTRS{idVendor}=="0e0f"
    ATTRS{ltm_capable}=="no"
    ATTRS{manufacturer}=="VMware, Inc."
    ATTRS{maxchild}=="7"
    ATTRS{power/active_duration}=="360005"
    ATTRS{power/autosuspend}=="0"
    ATTRS{power/autosuspend_delay_ms}=="0"
    ATTRS{power/connected_duration}=="482337"
    ATTRS{power/control}=="auto"
    ATTRS{power/level}=="auto"
    ATTRS{power/runtime_active_time}=="359782"
    ATTRS{power/runtime_status}=="active"
    ATTRS{power/runtime_suspended_time}=="122307"
    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}=="VMware Virtual USB Hub"
    ATTRS{quirks}=="0x0"
    ATTRS{removable}=="unknown"
    ATTRS{remove}=="(not readable)"
    ATTRS{rx_lanes}=="1"
    ATTRS{speed}=="12"
    ATTRS{tx_lanes}=="1"
    ATTRS{urbnum}=="83"
    ATTRS{version}==" 1.10"

  looking at parent device '/devices/pci0000:00/0000:00:11.0/0000:02:00.0/usb2':
    KERNELS=="usb2"
    SUBSYSTEMS=="usb"
    DRIVERS=="usb"
    ATTRS{authorized}=="1"
    ATTRS{authorized_default}=="1"
    ATTRS{avoid_reset_quirk}=="0"
    ATTRS{bConfigurationValue}=="1"
    ATTRS{bDeviceClass}=="09"
    ATTRS{bDeviceProtocol}=="00"
    ATTRS{bDeviceSubClass}=="00"
    ATTRS{bMaxPacketSize0}=="64"
    ATTRS{bMaxPower}=="0mA"
    ATTRS{bNumConfigurations}=="1"
    ATTRS{bNumInterfaces}==" 1"
    ATTRS{bcdDevice}=="0607"
    ATTRS{bmAttributes}=="e0"
    ATTRS{busnum}=="2"
    ATTRS{configuration}==""
    ATTRS{devnum}=="1"
    ATTRS{devpath}=="0"
    ATTRS{idProduct}=="0001"
    ATTRS{idVendor}=="1d6b"
    ATTRS{interface_authorized_default}=="1"
    ATTRS{ltm_capable}=="no"
    ATTRS{manufacturer}=="Linux 6.7.0-204.fsync.fc39.x86_64 uhci_hcd"
    ATTRS{maxchild}=="2"
    ATTRS{power/active_duration}=="482706"
    ATTRS{power/autosuspend}=="0"
    ATTRS{power/autosuspend_delay_ms}=="0"
    ATTRS{power/connected_duration}=="482706"
    ATTRS{power/control}=="auto"
    ATTRS{power/level}=="auto"
    ATTRS{power/runtime_active_time}=="482705"
    ATTRS{power/runtime_status}=="active"
    ATTRS{power/runtime_suspended_time}=="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}=="UHCI Host Controller"
    ATTRS{quirks}=="0x0"
    ATTRS{removable}=="unknown"
    ATTRS{remove}=="(not readable)"
    ATTRS{rx_lanes}=="1"
    ATTRS{serial}=="0000:02:00.0"
    ATTRS{speed}=="12"
    ATTRS{tx_lanes}=="1"
    ATTRS{urbnum}=="42"
    ATTRS{version}==" 1.10"

  looking at parent device '/devices/pci0000:00/0000:00:11.0/0000:02:00.0':
    KERNELS=="0000:02:00.0"
    SUBSYSTEMS=="pci"
    DRIVERS=="uhci_hcd"
    ATTRS{acpi_index}=="16777728"
    ATTRS{ari_enabled}=="0"
    ATTRS{broken_parity_status}=="0"
    ATTRS{class}=="0x0c0300"
    ATTRS{consistent_dma_mask_bits}=="32"
    ATTRS{d3cold_allowed}=="0"
    ATTRS{device}=="0x0774"
    ATTRS{dma_mask_bits}=="32"
    ATTRS{driver_override}=="(null)"
    ATTRS{enable}=="1"
    ATTRS{irq}=="18"
    ATTRS{label}=="usb"
    ATTRS{local_cpulist}=="0"
    ATTRS{local_cpus}=="00000000,00000000,00000000,00000001"
    ATTRS{msi_bus}=="1"
    ATTRS{numa_node}=="-1"
    ATTRS{power/control}=="on"
    ATTRS{power/runtime_active_time}=="483288"
    ATTRS{power/runtime_status}=="active"
    ATTRS{power/runtime_suspended_time}=="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{remove}=="(not readable)"
    ATTRS{rescan}=="(not readable)"
    ATTRS{reset}=="(not readable)"
    ATTRS{reset_method}=="af_flr bus"
    ATTRS{resource4}=="(not readable)"
    ATTRS{revision}=="0x00"
    ATTRS{subsystem_device}=="0x1976"
    ATTRS{subsystem_vendor}=="0x15ad"
    ATTRS{vendor}=="0x15ad"

  looking at parent device '/devices/pci0000:00/0000:00:11.0':
    KERNELS=="0000:00:11.0"
    SUBSYSTEMS=="pci"
    DRIVERS==""
    ATTRS{ari_enabled}=="0"
    ATTRS{broken_parity_status}=="0"
    ATTRS{class}=="0x060401"
    ATTRS{consistent_dma_mask_bits}=="32"
    ATTRS{d3cold_allowed}=="0"
    ATTRS{device}=="0x0790"
    ATTRS{dma_mask_bits}=="32"
    ATTRS{driver_override}=="(null)"
    ATTRS{enable}=="1"
    ATTRS{irq}=="0"
    ATTRS{local_cpulist}=="0"
    ATTRS{local_cpus}=="00000000,00000000,00000000,00000001"
    ATTRS{msi_bus}=="1"
    ATTRS{numa_node}=="-1"
    ATTRS{power/control}=="on"
    ATTRS{power/runtime_active_time}=="483321"
    ATTRS{power/runtime_status}=="active"
    ATTRS{power/runtime_suspended_time}=="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{remove}=="(not readable)"
    ATTRS{rescan}=="(not readable)"
    ATTRS{revision}=="0x02"
    ATTRS{secondary_bus_number}=="2"
    ATTRS{subordinate_bus_number}=="2"
    ATTRS{subsystem_device}=="0x0790"
    ATTRS{subsystem_vendor}=="0x15ad"
    ATTRS{vendor}=="0x15ad"
    ATTRS{waiting_for_supplier}=="0"

  looking at parent device '/devices/pci0000:00':
    KERNELS=="pci0000:00"
    SUBSYSTEMS==""
    DRIVERS==""
    ATTRS{power/control}=="auto"
    ATTRS{power/runtime_active_time}=="0"
    ATTRS{power/runtime_status}=="unsupported"
    ATTRS{power/runtime_suspended_time}=="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{waiting_for_supplier}=="0"


As for the OS information here you go:

openSUSE uname -r && /etc/os-release

6.7.4-1-default

NAME="openSUSE Tumbleweed"
# VERSION="20240214"
ID="opensuse-tumbleweed"
ID_LIKE="opensuse suse"
VERSION_ID="20240214"
PRETTY_NAME="openSUSE Tumbleweed"
ANSI_COLOR="0;32"
# CPE 2.3 format, boo#1217921
CPE_NAME="cpe:2.3:o:opensuse:tumbleweed:20240214:*:*:*:*:*:*:*"
#CPE 2.2 format
#CPE_NAME="cpe:/o:opensuse:tumbleweed:20240214"
BUG_REPORT_URL="https://bugzilla.opensuse.org"
SUPPORT_URL="https://bugs.opensuse.org"
HOME_URL="https://www.opensuse.org"
DOCUMENTATION_URL="https://en.opensuse.org/Portal:Tumbleweed"
LOGO="distributor-logo-Tumbleweed"

Nobara uname -r && /etc/os-release

6.7.0-204.fsync.fc39.x86_64

NAME="Nobara Linux"
VERSION="39 (KDE Plasma)"
ID=nobara
ID_LIKE="rhel centos fedora"
VERSION_ID=39
VERSION_CODENAME=""
PLATFORM_ID="platform:f39"
PRETTY_NAME="Nobara Linux 39 (KDE Plasma)"
ANSI_COLOR="0;38;2;60;110;180"
LOGO=nobara-logo-icon
CPE_NAME="cpe:/o:nobaraproject:nobara:39"
DEFAULT_HOSTNAME="nobara"
HOME_URL="https://nobaraproject.org/"
DOCUMENTATION_URL="https://www.nobaraproject.org/"
SUPPORT_URL="https://www.nobaraproject.org/"
BUG_REPORT_URL="https://gitlab.com/gloriouseggroll/nobara-images"
REDHAT_BUGZILLA_PRODUCT="Nobara"
REDHAT_BUGZILLA_PRODUCT_VERSION=39
REDHAT_SUPPORT_PRODUCT="Nobara"
REDHAT_SUPPORT_PRODUCT_VERSION=39
SUPPORT_END=2024-05-14
VARIANT="KDE Plasma"
VARIANT_ID=kde

Perhaps you can try the following:

Create a file /etc/udev/rules.d/50-hori-wheel.rules with this content:

# HORI Racing Wheel Apex
ACTION=="add", ATTRS{idVendor}=="0f0d", ATTRS{idProduct}=="00a4", RUN+="/sbin/modprobe xpad" RUN+="/bin/sh -c 'echo 0f0d 00a4 > /sys/bus/usb/drivers/xpad/new_id'"

In theory, this will load the xpad module and register the new device.

Ensure you have xpadneo installed, you can check by manually loading it:

modprobe xpad

@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"
    ```

Great news :smiling_face_with_three_hearts:

I had no clue that these were being used in a school project, really nice to hear it.

Regarding having xpad as a package in openSUSE, that can easily be done, I might look into it once I have some time.

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.