staging.inyokaproject.org

Für diese Funktion musst du eingeloggt sein.

Ist es möglich per udev Regel einem IR REceiver einen /sys/class/rc/ Eintrag zu geben?

Status: Gelöst | Ubuntu-Version: Ubuntu 20.04 (Focal Fossa)
Antworten |

Bleys

Avatar von Bleys

Anmeldungsdatum:
13. August 2006

Beiträge: 6053

Hintergrund: Der aktuellen Version von ir-keytable fehlt der Parameter --device (-d). Es gibt also keine Möglichkeit mehr Fernbedienungen die nur Einträge in /dev/input/ erzeugen mit ir-keytable anzusprechen. Beispiel einer Technisat TTS53AI FB:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
~$ dmesg | tail
[16130.202144] usb 4-1: USB disconnect, device number 2
[16134.494705] usb 4-1: new low-speed USB device number 3 using ohci-pci
[16134.696692] usb 4-1: New USB device found, idVendor=04b4, idProduct=0100, bcdDevice= 0.00
[16134.696698] usb 4-1: New USB device strings: Mfr=1, Product=2, SerialNumber=0
[16134.696702] usb 4-1: Product: USB IR Receiver
[16134.696705] usb 4-1: Manufacturer: Formosa21
[16134.706279] input: Formosa21 USB IR Receiver Keyboard as /devices/pci0000:00/0000:00:13.0/usb4/4-1/4-1:1.0/0003:04B4:0100.0006/input/input30
[16134.763162] input: Formosa21 USB IR Receiver System Control as /devices/pci0000:00/0000:00:13.0/usb4/4-1/4-1:1.0/0003:04B4:0100.0006/input/input31
[16134.763387] hid-generic 0003:04B4:0100.0006: input,hidraw1: USB HID v1.11 Keyboard [Formosa21 USB IR Receiver] on usb-0000:00:13.0-1/input0

und

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
~$ udevadm info --query=all --attribute-walk --name=/dev/input/event3

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:13.0/usb4/4-1/4-1:1.0/0003:04B4:0100.0006/input/input30/event3':
    KERNEL=="event3"
    SUBSYSTEM=="input"
    DRIVER==""

  looking at parent device '/devices/pci0000:00/0000:00:13.0/usb4/4-1/4-1:1.0/0003:04B4:0100.0006/input/input30':
    KERNELS=="input30"
    SUBSYSTEMS=="input"
    DRIVERS==""
    ATTRS{name}=="Formosa21 USB IR Receiver Keyboard"
    ATTRS{phys}=="usb-0000:00:13.0-1/input0"
    ATTRS{uniq}==""
    ATTRS{properties}=="0"

  looking at parent device '/devices/pci0000:00/0000:00:13.0/usb4/4-1/4-1:1.0/0003:04B4:0100.0006':
    KERNELS=="0003:04B4:0100.0006"
    SUBSYSTEMS=="hid"
    DRIVERS=="hid-generic"
    ATTRS{country}=="00"

  looking at parent device '/devices/pci0000:00/0000:00:13.0/usb4/4-1/4-1:1.0':
    KERNELS=="4-1:1.0"
    SUBSYSTEMS=="usb"
    DRIVERS=="usbhid"
    ATTRS{bInterfaceProtocol}=="02"
    ATTRS{bNumEndpoints}=="01"
    ATTRS{authorized}=="1"
    ATTRS{bAlternateSetting}==" 0"
    ATTRS{supports_autosuspend}=="1"
    ATTRS{bInterfaceNumber}=="00"
    ATTRS{bInterfaceClass}=="03"
    ATTRS{bInterfaceSubClass}=="01"

  looking at parent device '/devices/pci0000:00/0000:00:13.0/usb4/4-1':
    KERNELS=="4-1"
    SUBSYSTEMS=="usb"
    DRIVERS=="usb"
    ATTRS{bConfigurationValue}=="1"
    ATTRS{bNumConfigurations}=="1"
    ATTRS{rx_lanes}=="1"
    ATTRS{quirks}=="0x0"
    ATTRS{devnum}=="3"
    ATTRS{authorized}=="1"
    ATTRS{bMaxPower}=="100mA"
    ATTRS{busnum}=="4"
    ATTRS{tx_lanes}=="1"
    ATTRS{manufacturer}=="Formosa21"
    ATTRS{bDeviceClass}=="00"
    ATTRS{maxchild}=="0"
    ATTRS{devpath}=="1"
    ATTRS{configuration}==""
    ATTRS{idProduct}=="0100"
    ATTRS{version}==" 2.00"
    ATTRS{bDeviceSubClass}=="00"
    ATTRS{bMaxPacketSize0}=="8"
    ATTRS{removable}=="unknown"
    ATTRS{bDeviceProtocol}=="00"
    ATTRS{avoid_reset_quirk}=="0"
    ATTRS{urbnum}=="12"
    ATTRS{idVendor}=="04b4"
    ATTRS{product}=="USB IR Receiver"
    ATTRS{ltm_capable}=="no"
    ATTRS{speed}=="1.5"
    ATTRS{bcdDevice}=="0000"
    ATTRS{bNumInterfaces}==" 1"
    ATTRS{bmAttributes}=="80"

  looking at parent device '/devices/pci0000:00/0000:00:13.0/usb4':
    KERNELS=="usb4"
    SUBSYSTEMS=="usb"
    DRIVERS=="usb"
    ATTRS{rx_lanes}=="1"
    ATTRS{ltm_capable}=="no"
    ATTRS{manufacturer}=="Linux 5.4.0-29-generic ohci_hcd"
    ATTRS{bMaxPower}=="0mA"
    ATTRS{idVendor}=="1d6b"
    ATTRS{devnum}=="1"
    ATTRS{tx_lanes}=="1"
    ATTRS{busnum}=="4"
    ATTRS{removable}=="unknown"
    ATTRS{idProduct}=="0001"
    ATTRS{maxchild}=="5"
    ATTRS{bcdDevice}=="0504"
    ATTRS{bmAttributes}=="e0"
    ATTRS{interface_authorized_default}=="1"
    ATTRS{bNumInterfaces}==" 1"
    ATTRS{bDeviceClass}=="09"
    ATTRS{bDeviceProtocol}=="00"
    ATTRS{product}=="OHCI PCI host controller"
    ATTRS{version}==" 1.10"
    ATTRS{quirks}=="0x0"
    ATTRS{avoid_reset_quirk}=="0"
    ATTRS{bMaxPacketSize0}=="64"
    ATTRS{speed}=="12"
    ATTRS{bNumConfigurations}=="1"
    ATTRS{bConfigurationValue}=="1"
    ATTRS{authorized_default}=="1"
    ATTRS{configuration}==""
    ATTRS{authorized}=="1"
    ATTRS{devpath}=="0"
    ATTRS{urbnum}=="65"
    ATTRS{serial}=="0000:00:13.0"
    ATTRS{bDeviceSubClass}=="00"

  looking at parent device '/devices/pci0000:00/0000:00:13.0':
    KERNELS=="0000:00:13.0"
    SUBSYSTEMS=="pci"
    DRIVERS=="ohci-pci"
    ATTRS{consistent_dma_mask_bits}=="32"
    ATTRS{device}=="0x7807"
    ATTRS{vendor}=="0x1022"
    ATTRS{msi_bus}=="1"
    ATTRS{subsystem_vendor}=="0x1849"
    ATTRS{local_cpus}=="f"
    ATTRS{numa_node}=="-1"
    ATTRS{dma_mask_bits}=="32"
    ATTRS{irq}=="18"
    ATTRS{subsystem_device}=="0x7807"
    ATTRS{driver_override}=="(null)"
    ATTRS{broken_parity_status}=="0"
    ATTRS{enable}=="1"
    ATTRS{ari_enabled}=="0"
    ATTRS{class}=="0x0c0310"
    ATTRS{local_cpulist}=="0-3"
    ATTRS{d3cold_allowed}=="0"
    ATTRS{revision}=="0x11"

  looking at parent device '/devices/pci0000:00':
    KERNELS=="pci0000:00"
    SUBSYSTEMS==""
    DRIVERS==""

Bisher hatte ich noch keine Berührungspunkte mit udev Regeln. Falls es überhaupt möglich ist diesem Gerät einen rc Eintrag zuzuzweisen, bin ich für jede Hilfe dankbar.

seahawk1986

Anmeldungsdatum:
27. Oktober 2006

Beiträge: 10978

Man kann mit udev leider keine Device-Eigenschaften herbeizaubern, die der Kernel-Treiber nicht hergibt.

Bleys schrieb:

Hintergrund: Der aktuellen Version von ir-keytable fehlt der Parameter --device (-d). Es gibt also keine Möglichkeit mehr Fernbedienungen die nur Einträge in /dev/input/ erzeugen mit ir-keytable anzusprechen.

Ich frage mich gerade, welchen Sinn das hat, wenn da kein konfigurierbarer rc-core Treiber dahinter steht - ir-keytable liest und schreibt ja in die Dateien, die in /sys/class/rc/rcN/ (N ist die Nummer des rc-core Geräts) vom Kernel präsentiert werden und verwendet dafür z.T. spezielle ioctl-Aufrufe.

Bisher hatte ich noch keine Berührungspunkte mit udev Regeln. Falls es überhaupt möglich ist diesem Gerät einen rc Eintrag zuzuzweisen, bin ich für jede Hilfe dankbar.

Dein Empfänger ist soweit ich das sehen kann kein rc-core Gerät, sondern "nur" ein Kernel Input Device mit hid(raw) Treiber. Die Tastendrücke kann man mit evtest aus dem gleichnamigen Paket auslesen und wenn man die auf einem Lirc-kompatiblen Socket ausgeben lassen will, kann man inputlirc (unpraktisch, da statisch konfiguriert) oder eventlircd (gibt es z.B. in diesem PPA: https://launchpad.net/~yavdr/+archive/ubuntu/experimental-main), das Empfänger anhand von udev-Kriterien einbinden und Tastendrücke bzw. Tastenkombinationen remappen kann, dafür nutzen.

Für eventlircd haben wir unter yaVDR diesen Abschnitt in einer udev-Regel erarbeitet: yavdr/yavdr-remote/blob/master/udev/98-eventlircd.rules und die Regel, die Tastennamen auf das vereinheitlichte Schema, das wir u.a. für den VDR und KODI nutzen, umbiegt liegt hier: yavdr/yavdr-remote/blob/master/evmaps/03_04b4_0100.evmap (die Datei wird in /etc/eventlircd.d/ erwartet).

Bleys

(Themenstarter)
Avatar von Bleys

Anmeldungsdatum:
13. August 2006

Beiträge: 6053

seahawk1986 schrieb:

Man kann mit udev leider keine Device-Eigenschaften herbeizaubern, die der Kernel-Treiber nicht hergibt.

Ich war nicht sicher, hatte es aber befürchtet 😉

Bleys schrieb:

Hintergrund: Der aktuellen Version von ir-keytable fehlt der Parameter --device (-d). Es gibt also keine Möglichkeit mehr Fernbedienungen die nur Einträge in /dev/input/ erzeugen mit ir-keytable anzusprechen.

Ich frage mich gerade, welchen Sinn das hat, wenn da kein konfigurierbarer rc-core Treiber dahinter steht - ir-keytable liest und schreibt ja in die Dateien, die in /sys/class/rc/rcN/ (N ist die Nummer des rc-core Geräts) vom Kernel präsentiert werden und verwendet dafür z.T. spezielle ioctl-Aufrufe.

ok, wieder etwas gelernt. Danke!

Antworten |