Hi!
On Sat, 2019-02-16 at 16:20:43 +0100, Stephen Kitt wrote:
> On Sat, 16 Feb 2019 16:08:35 +0100, Guillem Jover <[email protected]> wrote:
> > The jscal-store and jscal-restore programs are great! The problem is that
> > they use the device names (such as js0) as keys for the calibration state,
> > which means that if you've got multiple and different devices then you
> > need to connect them all in the same order for them to get the correct
> > calibration.
> >
> > It would be nice if the state used something like the device IDs as keys
> > instead.
>
> It already does, at least if a name can be found for the device.
Ah, right I see now from the jscal-*store code, was confused by the
udev rule which only passes the name and the state which only had the
DEVICE= attribute for all my joysticks.
> What does
>
> udevadm info -a -n /dev/input/js0 | /usr/share/joystick/ident
For all of them it just returns stuff like:
,---
DEVICE="js2"
NAME=""
SERIAL=""
VENDOR=""
PRODUCT=""
`---
with changed DEVICE names.
> output on your system, with your various joysticks connected?
I'm including the whole «udevadm info» output for various devices
I've just got connected now. This is with Linux 4.20.x from
experimental, but was the same with 4.19.x several weeks ago when
I first tried.
,--- /dev/input/js0 ---
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/virtual/input/input18/js0':
KERNEL=="js0"
SUBSYSTEM=="input"
DRIVER==""
ATTR{SUBSYSTEM}=="input"
ATTR{MAJOR}=="13"
ATTR{MINOR}=="0"
ATTR{USEC_INITIALIZED}=="1023960455"
ATTR{ID_INPUT}=="1"
looking at parent device '/devices/virtual/input/input18':
KERNELS=="input18"
SUBSYSTEMS=="input"
DRIVERS==""
ATTRS{SUBSYSTEM}=="input"
ATTRS{PRODUCT}=="19/1014/5054/6801"
ATTRS{NAME}==""ThinkPad HDAPS joystick emulation""
ATTRS{PHYS}==""hdaps/input0""
ATTRS{PROP}=="0"
ATTRS{EV}=="9"
ATTRS{ABS}=="3"
ATTRS{MODALIAS}=="input:b0019v1014p5054e6801-e0,3,kra0,1,mlsfw"
ATTRS{USEC_INITIALIZED}=="1023959158"
ATTRS{ID_INPUT}=="1"
`---
,--- /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/virtual/input/input19/js1':
KERNEL=="js1"
SUBSYSTEM=="input"
DRIVER==""
ATTR{SUBSYSTEM}=="input"
ATTR{MAJOR}=="13"
ATTR{MINOR}=="1"
ATTR{USEC_INITIALIZED}=="1023961422"
ATTR{ID_INPUT}=="1"
looking at parent device '/devices/virtual/input/input19':
KERNELS=="input19"
SUBSYSTEMS=="input"
DRIVERS==""
ATTRS{SUBSYSTEM}=="input"
ATTRS{PRODUCT}=="19/1014/5054/4801"
ATTRS{NAME}==""ThinkPad HDAPS accelerometer data""
ATTRS{PHYS}==""hdaps/input1""
ATTRS{PROP}=="0"
ATTRS{EV}=="9"
ATTRS{ABS}=="3"
ATTRS{MODALIAS}=="input:b0019v1014p5054e4801-e0,3,kra0,1,mlsfw"
ATTRS{USEC_INITIALIZED}=="1023959728"
ATTRS{ID_INPUT}=="1"
`---
,--- /dev/input/js2 ---
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:1d.0/usb6/6-1/6-1:1.0/0003:054C:0268.000A/input/input33/js2':
KERNEL=="js2"
SUBSYSTEM=="input"
DRIVER==""
ATTR{SUBSYSTEM}=="input"
ATTR{MAJOR}=="13"
ATTR{MINOR}=="2"
ATTR{USEC_INITIALIZED}=="137765902111"
ATTR{ID_INPUT}=="1"
ATTR{ID_INPUT_JOYSTICK}=="1"
ATTR{ID_VENDOR}=="Sony"
ATTR{ID_VENDOR_ENC}=="Sony"
ATTR{ID_VENDOR_ID}=="054c"
ATTR{ID_MODEL}=="PLAYSTATION_R_3_Controller"
ATTR{ID_MODEL_ENC}=="PLAYSTATION\x28R\x293\x20Controller"
ATTR{ID_MODEL_ID}=="0268"
ATTR{ID_REVISION}=="0100"
ATTR{ID_SERIAL}=="Sony_PLAYSTATION_R_3_Controller"
ATTR{ID_TYPE}=="hid"
ATTR{ID_BUS}=="usb"
ATTR{ID_USB_INTERFACES}==":030000:"
ATTR{ID_USB_INTERFACE_NUM}=="00"
ATTR{ID_USB_DRIVER}=="usbhid"
ATTR{ID_PATH}=="pci-0000:00:1d.0-usb-0:1:1.0"
ATTR{ID_PATH_TAG}=="pci-0000_00_1d_0-usb-0_1_1_0"
looking at parent device
'/devices/pci0000:00/0000:00:1d.0/usb6/6-1/6-1:1.0/0003:054C:0268.000A/input/input33':
KERNELS=="input33"
SUBSYSTEMS=="input"
DRIVERS==""
ATTRS{SUBSYSTEM}=="input"
ATTRS{PRODUCT}=="3/54c/268/8111"
ATTRS{NAME}==""Sony PLAYSTATION(R)3 Controller""
ATTRS{PHYS}==""usb-0000:00:1d.0-1/input0""
ATTRS{UNIQ}==""00:06:f5:b8:49:23""
ATTRS{PROP}=="0"
ATTRS{EV}=="20001b"
ATTRS{KEY}=="f00000000 0 0 0 7fdb000000000000 0 0 0 0"
ATTRS{ABS}=="3f"
ATTRS{MSC}=="10"
ATTRS{FF}=="107030000 0"
ATTRS{MODALIAS}=="input:b0003v054Cp0268e8111-e0,1,3,4,15,k130,131,133,134,136,137,138,139,13A,13B,13C,13D,13E,220,221,222,223,ra0,1,2,3,4,5,m4,lsf50,51,58,59,5A,60,w"
ATTRS{USEC_INITIALIZED}=="137765898637"
ATTRS{ID_INPUT}=="1"
ATTRS{ID_INPUT_JOYSTICK}=="1"
ATTRS{ID_VENDOR}=="Sony"
ATTRS{ID_VENDOR_ENC}=="Sony"
ATTRS{ID_VENDOR_ID}=="054c"
ATTRS{ID_MODEL}=="PLAYSTATION_R_3_Controller"
ATTRS{ID_MODEL_ENC}=="PLAYSTATION\x28R\x293\x20Controller"
ATTRS{ID_MODEL_ID}=="0268"
ATTRS{ID_REVISION}=="0100"
ATTRS{ID_SERIAL}=="Sony_PLAYSTATION_R_3_Controller"
ATTRS{ID_TYPE}=="hid"
ATTRS{ID_BUS}=="usb"
ATTRS{ID_USB_INTERFACES}==":030000:"
ATTRS{ID_USB_INTERFACE_NUM}=="00"
ATTRS{ID_USB_DRIVER}=="usbhid"
ATTRS{ID_PATH}=="pci-0000:00:1d.0-usb-0:1:1.0"
ATTRS{ID_PATH_TAG}=="pci-0000_00_1d_0-usb-0_1_1_0"
looking at parent device
'/devices/pci0000:00/0000:00:1d.0/usb6/6-1/6-1:1.0/0003:054C:0268.000A':
KERNELS=="0003:054C:0268.000A"
SUBSYSTEMS=="hid"
DRIVERS=="sony"
ATTRS{SUBSYSTEM}=="hid"
ATTRS{DRIVER}=="sony"
ATTRS{HID_ID}=="0003:0000054C:00000268"
ATTRS{HID_NAME}=="Sony PLAYSTATION(R)3 Controller"
ATTRS{HID_PHYS}=="usb-0000:00:1d.0-1/input0"
ATTRS{HID_UNIQ}=="00:06:f5:b8:49:23"
ATTRS{MODALIAS}=="hid:b0003g0000v0000054Cp00000268"
looking at parent device '/devices/pci0000:00/0000:00:1d.0/usb6/6-1/6-1:1.0':
KERNELS=="6-1:1.0"
SUBSYSTEMS=="usb"
DRIVERS=="usbhid"
ATTRS{SUBSYSTEM}=="usb"
ATTRS{DRIVER}=="usbhid"
ATTRS{DEVTYPE}=="usb_interface"
ATTRS{PRODUCT}=="54c/268/100"
ATTRS{TYPE}=="0/0/0"
ATTRS{INTERFACE}=="3/0/0"
ATTRS{MODALIAS}=="usb:v054Cp0268d0100dc00dsc00dp00ic03isc00ip00in00"
ATTRS{USEC_INITIALIZED}=="137764530322"
ATTRS{ID_VENDOR_FROM_DATABASE}=="Sony Corp."
ATTRS{ID_MODEL_FROM_DATABASE}=="Batoh Device / PlayStation 3 Controller"
looking at parent device '/devices/pci0000:00/0000:00:1d.0/usb6/6-1':
KERNELS=="6-1"
SUBSYSTEMS=="usb"
DRIVERS=="usb"
ATTRS{SUBSYSTEM}=="usb"
ATTRS{DRIVER}=="usb"
ATTRS{DEVTYPE}=="usb_device"
ATTRS{PRODUCT}=="54c/268/100"
ATTRS{TYPE}=="0/0/0"
ATTRS{BUSNUM}=="006"
ATTRS{DEVNUM}=="004"
ATTRS{MAJOR}=="189"
ATTRS{MINOR}=="643"
ATTRS{USEC_INITIALIZED}=="137763263943"
ATTRS{ID_VENDOR}=="Sony"
ATTRS{ID_VENDOR_ENC}=="Sony"
ATTRS{ID_VENDOR_ID}=="054c"
ATTRS{ID_MODEL}=="PLAYSTATION_R_3_Controller"
ATTRS{ID_MODEL_ENC}=="PLAYSTATION\x28R\x293\x20Controller"
ATTRS{ID_MODEL_ID}=="0268"
ATTRS{ID_REVISION}=="0100"
ATTRS{ID_SERIAL}=="Sony_PLAYSTATION_R_3_Controller"
ATTRS{ID_BUS}=="usb"
ATTRS{ID_USB_INTERFACES}==":030000:"
ATTRS{ID_VENDOR_FROM_DATABASE}=="Sony Corp."
ATTRS{ID_MODEL_FROM_DATABASE}=="Batoh Device / PlayStation 3 Controller"
looking at parent device '/devices/pci0000:00/0000:00:1d.0/usb6':
KERNELS=="usb6"
SUBSYSTEMS=="usb"
DRIVERS=="usb"
ATTRS{SUBSYSTEM}=="usb"
ATTRS{DRIVER}=="usb"
ATTRS{DEVTYPE}=="usb_device"
ATTRS{PRODUCT}=="1d6b/1/420"
ATTRS{TYPE}=="9/0/0"
ATTRS{BUSNUM}=="006"
ATTRS{DEVNUM}=="001"
ATTRS{MAJOR}=="189"
ATTRS{MINOR}=="640"
ATTRS{USEC_INITIALIZED}=="993147410"
ATTRS{ID_VENDOR}=="Linux_4.20.0-trunk-amd64_uhci_hcd"
ATTRS{ID_VENDOR_ENC}=="Linux\x204.20.0-trunk-amd64\x20uhci_hcd"
ATTRS{ID_VENDOR_ID}=="1d6b"
ATTRS{ID_MODEL}=="UHCI_Host_Controller"
ATTRS{ID_MODEL_ENC}=="UHCI\x20Host\x20Controller"
ATTRS{ID_MODEL_ID}=="0001"
ATTRS{ID_REVISION}=="0420"
ATTRS{ID_SERIAL}=="Linux_4.20.0-trunk-amd64_uhci_hcd_UHCI_Host_Controller_0000:00:1d.0"
ATTRS{ID_SERIAL_SHORT}=="0000:00:1d.0"
ATTRS{ID_BUS}=="usb"
ATTRS{ID_USB_INTERFACES}==":090000:"
ATTRS{ID_VENDOR_FROM_DATABASE}=="Linux Foundation"
ATTRS{ID_MODEL_FROM_DATABASE}=="1.1 root hub"
looking at parent device '/devices/pci0000:00/0000:00:1d.0':
KERNELS=="0000:00:1d.0"
SUBSYSTEMS=="pci"
DRIVERS=="uhci_hcd"
ATTRS{SUBSYSTEM}=="pci"
ATTRS{DRIVER}=="uhci_hcd"
ATTRS{PCI_CLASS}=="C0300"
ATTRS{PCI_ID}=="8086:2934"
ATTRS{PCI_SUBSYS_ID}=="17AA:20F0"
ATTRS{PCI_SLOT_NAME}=="0000:00:1d.0"
ATTRS{MODALIAS}=="pci:v00008086d00002934sv000017AAsd000020F0bc0Csc03i00"
ATTRS{USEC_INITIALIZED}=="989608079"
ATTRS{ID_PCI_CLASS_FROM_DATABASE}=="Serial bus controller"
ATTRS{ID_PCI_SUBCLASS_FROM_DATABASE}=="USB controller"
ATTRS{ID_PCI_INTERFACE_FROM_DATABASE}=="UHCI"
ATTRS{ID_VENDOR_FROM_DATABASE}=="Intel Corporation"
ATTRS{ID_MODEL_FROM_DATABASE}=="82801I (ICH9 Family) USB UHCI Controller"
looking at parent device '/devices/pci0000:00':
KERNELS=="pci0000:00"
SUBSYSTEMS==""
DRIVERS==""
`---
,--- /dev/input/js3 ---
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:1a.0/usb1/1-1/1-1:1.0/input/input35/js3':
KERNEL=="js3"
SUBSYSTEM=="input"
DRIVER==""
ATTR{SUBSYSTEM}=="input"
ATTR{MAJOR}=="13"
ATTR{MINOR}=="3"
ATTR{USEC_INITIALIZED}=="137829304795"
ATTR{ID_INPUT}=="1"
ATTR{ID_INPUT_JOYSTICK}=="1"
ATTR{ID_VENDOR_ID}=="045e"
ATTR{ID_MODEL}=="Controller"
ATTR{ID_MODEL_ENC}=="Controller"
ATTR{ID_MODEL_ID}=="028e"
ATTR{ID_REVISION}=="0114"
ATTR{ID_SERIAL_SHORT}=="280E517"
ATTR{ID_TYPE}=="generic"
ATTR{ID_BUS}=="usb"
ATTR{ID_USB_INTERFACES}==":ff5d01:ff5d03:ff5d02:fffd13:"
ATTR{ID_USB_INTERFACE_NUM}=="00"
ATTR{ID_USB_DRIVER}=="xpad"
ATTR{ID_PATH}=="pci-0000:00:1a.0-usb-0:1:1.0"
ATTR{ID_PATH_TAG}=="pci-0000_00_1a_0-usb-0_1_1_0"
looking at parent device
'/devices/pci0000:00/0000:00:1a.0/usb1/1-1/1-1:1.0/input/input35':
KERNELS=="input35"
SUBSYSTEMS=="input"
DRIVERS==""
ATTRS{SUBSYSTEM}=="input"
ATTRS{PRODUCT}=="3/45e/28e/114"
ATTRS{NAME}==""Microsoft X-Box 360 pad""
ATTRS{PHYS}==""usb-0000:00:1a.0-1/input0""
ATTRS{PROP}=="0"
ATTRS{EV}=="20000b"
ATTRS{KEY}=="7cdb000000000000 0 0 0 0"
ATTRS{ABS}=="3003f"
ATTRS{FF}=="107030000 0"
ATTRS{MODALIAS}=="input:b0003v045Ep028Ee0114-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"
ATTRS{USEC_INITIALIZED}=="137829302764"
ATTRS{ID_INPUT}=="1"
ATTRS{ID_INPUT_JOYSTICK}=="1"
ATTRS{ID_VENDOR_ID}=="045e"
ATTRS{ID_MODEL}=="Controller"
ATTRS{ID_MODEL_ENC}=="Controller"
ATTRS{ID_MODEL_ID}=="028e"
ATTRS{ID_REVISION}=="0114"
ATTRS{ID_SERIAL_SHORT}=="280E517"
ATTRS{ID_TYPE}=="generic"
ATTRS{ID_BUS}=="usb"
ATTRS{ID_USB_INTERFACES}==":ff5d01:ff5d03:ff5d02:fffd13:"
ATTRS{ID_USB_INTERFACE_NUM}=="00"
ATTRS{ID_USB_DRIVER}=="xpad"
ATTRS{ID_PATH}=="pci-0000:00:1a.0-usb-0:1:1.0"
ATTRS{ID_PATH_TAG}=="pci-0000_00_1a_0-usb-0_1_1_0"
looking at parent device '/devices/pci0000:00/0000:00:1a.0/usb1/1-1/1-1:1.0':
KERNELS=="1-1:1.0"
SUBSYSTEMS=="usb"
DRIVERS=="xpad"
ATTRS{SUBSYSTEM}=="usb"
ATTRS{DRIVER}=="xpad"
ATTRS{DEVTYPE}=="usb_interface"
ATTRS{PRODUCT}=="45e/28e/114"
ATTRS{TYPE}=="255/255/255"
ATTRS{INTERFACE}=="255/93/1"
ATTRS{MODALIAS}=="usb:v045Ep028Ed0114dcFFdscFFdpFFicFFisc5Dip01in00"
ATTRS{USEC_INITIALIZED}=="137826424508"
ATTRS{ID_USB_CLASS_FROM_DATABASE}=="Vendor Specific Class"
ATTRS{ID_USB_SUBCLASS_FROM_DATABASE}=="Vendor Specific Subclass"
ATTRS{ID_USB_PROTOCOL_FROM_DATABASE}=="Vendor Specific Protocol"
ATTRS{ID_VENDOR_FROM_DATABASE}=="Microsoft Corp."
ATTRS{ID_MODEL_FROM_DATABASE}=="Xbox360 Controller"
looking at parent device '/devices/pci0000:00/0000:00:1a.0/usb1/1-1':
KERNELS=="1-1"
SUBSYSTEMS=="usb"
DRIVERS=="usb"
ATTRS{SUBSYSTEM}=="usb"
ATTRS{DRIVER}=="usb"
ATTRS{DEVTYPE}=="usb_device"
ATTRS{PRODUCT}=="45e/28e/114"
ATTRS{TYPE}=="255/255/255"
ATTRS{BUSNUM}=="001"
ATTRS{DEVNUM}=="002"
ATTRS{MAJOR}=="189"
ATTRS{MINOR}=="1"
ATTRS{USEC_INITIALIZED}=="137825264783"
ATTRS{ID_VENDOR_ID}=="045e"
ATTRS{ID_MODEL}=="Controller"
ATTRS{ID_MODEL_ENC}=="Controller"
ATTRS{ID_MODEL_ID}=="028e"
ATTRS{ID_REVISION}=="0114"
ATTRS{ID_SERIAL_SHORT}=="280E517"
ATTRS{ID_BUS}=="usb"
ATTRS{ID_USB_INTERFACES}==":ff5d01:ff5d03:ff5d02:fffd13:"
ATTRS{ID_VENDOR_FROM_DATABASE}=="Microsoft Corp."
ATTRS{ID_MODEL_FROM_DATABASE}=="Xbox360 Controller"
looking at parent device '/devices/pci0000:00/0000:00:1a.0/usb1':
KERNELS=="usb1"
SUBSYSTEMS=="usb"
DRIVERS=="usb"
ATTRS{SUBSYSTEM}=="usb"
ATTRS{DRIVER}=="usb"
ATTRS{DEVTYPE}=="usb_device"
ATTRS{PRODUCT}=="1d6b/1/420"
ATTRS{TYPE}=="9/0/0"
ATTRS{BUSNUM}=="001"
ATTRS{DEVNUM}=="001"
ATTRS{MAJOR}=="189"
ATTRS{MINOR}=="0"
ATTRS{USEC_INITIALIZED}=="993167288"
ATTRS{ID_VENDOR}=="Linux_4.20.0-trunk-amd64_uhci_hcd"
ATTRS{ID_VENDOR_ENC}=="Linux\x204.20.0-trunk-amd64\x20uhci_hcd"
ATTRS{ID_VENDOR_ID}=="1d6b"
ATTRS{ID_MODEL}=="UHCI_Host_Controller"
ATTRS{ID_MODEL_ENC}=="UHCI\x20Host\x20Controller"
ATTRS{ID_MODEL_ID}=="0001"
ATTRS{ID_REVISION}=="0420"
ATTRS{ID_SERIAL}=="Linux_4.20.0-trunk-amd64_uhci_hcd_UHCI_Host_Controller_0000:00:1a.0"
ATTRS{ID_SERIAL_SHORT}=="0000:00:1a.0"
ATTRS{ID_BUS}=="usb"
ATTRS{ID_USB_INTERFACES}==":090000:"
ATTRS{ID_VENDOR_FROM_DATABASE}=="Linux Foundation"
ATTRS{ID_MODEL_FROM_DATABASE}=="1.1 root hub"
looking at parent device '/devices/pci0000:00/0000:00:1a.0':
KERNELS=="0000:00:1a.0"
SUBSYSTEMS=="pci"
DRIVERS=="uhci_hcd"
ATTRS{SUBSYSTEM}=="pci"
ATTRS{DRIVER}=="uhci_hcd"
ATTRS{PCI_CLASS}=="C0300"
ATTRS{PCI_ID}=="8086:2937"
ATTRS{PCI_SUBSYS_ID}=="17AA:20F0"
ATTRS{PCI_SLOT_NAME}=="0000:00:1a.0"
ATTRS{MODALIAS}=="pci:v00008086d00002937sv000017AAsd000020F0bc0Csc03i00"
ATTRS{USEC_INITIALIZED}=="989607860"
ATTRS{ID_PCI_CLASS_FROM_DATABASE}=="Serial bus controller"
ATTRS{ID_PCI_SUBCLASS_FROM_DATABASE}=="USB controller"
ATTRS{ID_PCI_INTERFACE_FROM_DATABASE}=="UHCI"
ATTRS{ID_VENDOR_FROM_DATABASE}=="Intel Corporation"
ATTRS{ID_MODEL_FROM_DATABASE}=="82801I (ICH9 Family) USB UHCI Controller"
looking at parent device '/devices/pci0000:00':
KERNELS=="pci0000:00"
SUBSYSTEMS==""
DRIVERS==""
`---
Thanks,
Guillem