Ich bin mir nicht sicher, ob es ir_keypad (ohne 0_0) nicht auch außerhalb der amlogic-Welt gibt. Die anderen beiden sind so exotisch dass sie wohl nur den internen IR-Empfänger meinen können.
Help request: VDR CoreElec (chroot oder Zabrimus) und amremote/eventlird
-
-
Ich bin mir nicht sicher, ob es ir_keypad (ohne 0_0) nicht auch außerhalb der amlogic-Welt gibt.
Das war vielleicht nicht genau genug formuliert. Hinzugefügt habe ich nur die letzten beiden Zeilen. Die ersten vier sind schon lange so drin. Darauf begründet sich meine Hoffnung.
-
Habe mein Odroid HC4 (VDR*Elec) upgedatet.
Von der Fernbedienung gehen jetzt nur die hoch/runter, ok und Zahlentasten. Vermisse die Menütaste.
Habe mir den Beitrag nochmal durchgelesen und nachverfolgt. Für Vdr*Elec fehlt noch die Dokumentation zu der Anlage des amremote.service
Code#/storage/.config/system.d/amremote.service [Unit] Description=Start amremote After=eventlircd.service Before=vdropt.service AllowIsolate=yes [Service] ExecStart=/usr/local/bin/start_ps3remote.sh [Install] WantedBy=basic.targetund
denke der Fehler liegt hier:
Pythonvdr1:/usr/local/bin # ./start_ps3remote.sh Traceback (most recent call last): File "/usr/local/bin/ps3remote.py", line 30, in <module> from evdev import UInput, InputDevice, ecodes, categorize File "/lib/python/evdev/ecodes.py", line 78, in <module> KeyError: 'UI_FF'D.h. ps3remote input device wird nicht erstellt und das weitere Zusammenspiel funktioniert nicht.
Was bedeutet KeyError: 'UI_FF'?
-
Welche Version von python-evdev verwendet Zabrimus denn? Die Version 1.9.1 aus Februar 2025 enthält wohl einen Fix für den Fehler:
https://python-evdev.readthedocs.io/en/stable/changelog.html
In welchen Versionen der Bug zuvor drin war, bleibt unklar. Das zeitlich kurze Erscheinen nach Version 1.9.0 legt nahe, dass es ein Bugfix-release für einen Fehler in Version 1.9.0 war. Vielleicht hat Zabrimus ausgerechnet die als Quelle in seinen Sourcen?
-
Ja, guter Hinweis.
Welche Version von python-evdev verwendet Zabrimus denn? ... Vielleicht hat Zabrimus ausgerechnet die als Quelle in seinen Sourcen?
Lässt sich das hieraus erkennen? -> https://github.com/Zabrimus/VDRSt…vdev/package.mk
-
https://github.com/gvalkov/python…0a75b3c7c1f.zip enthält laut changelog die Version 1.9.2 (May 01, 2025)
Dann ist der Fix möglicherweise nicht die Lösung, sondern das Problem? Muss an ps3remote.py deshalb etwas angepasst werden? Vielelicht kann seahawk1986 als Autor des Scripts dazu etwas sagen.
-
Was bedeutet KeyError: 'UI_FF'?
Das er in einem Dictionary keinen Schlüssel mit dem Namen UI_FF findet - die Datei /lib/python/evdev/ecodes.py wird wenn ich das richtig sehe durch die setup.py erstellt - wie sieht die denn auf dem betroffenen System aus?
Mit der Version 1.9.2 von evdev auf einem Ubuntu 24.04 ist da so eine Zeile in der Datei ( ecodes.py.txt ) zu finden:
-
die Datei /lib/python/evdev/ecodes.py wird wenn ich das richtig sehe durch die setup.py erstellt - wie sieht die denn auf dem betroffenen System aus?
Unter Vdr*Elec heisst die Datei /lib/python/evdev/ecodes.pyx mit x am Ende. Siehe auch Anhang + .txt
Da sind vor und hinterher Hieroglyphen drin... muss das so? Und UI_FF ist da auch nicht enthalten.
-
Das Package von _python-evdev habe ich gerade neu committed. Aus welchen Gründen auch immer wurden die *.py aus der Installation gelöscht.
Jetzt ist zumindest im install folgende Datei ./install_pkg/_python-evdev-a5d8cf0749f15d44feb76bbed27b30a75b3c7c1f/usr/lib/python/evdev/ecodes.py mit dem wohl interessantem Inhalt prefixes = "KEY ABS REL SW MSC LED BTN REP SND ID EV BUS SYN FF_STATUS FF INPUT_PROP UI_FF".split().
-
*.pyc Dateien sind die vom Interpreter kompilierte Bytecode-Version - aber da sollte es immer eine dazugehörige *.py Datei geben. *.pyx sagt mir jetzt nichts.
-
Dadurch hat sich die Fehlermeldung leicht geändert:
Pythonvdr1:/usr/local/bin # ./ps3remote.py Traceback (most recent call last): File "/usr/local/bin/./ps3remote.py", line 30, in <module> from evdev import UInput, InputDevice, ecodes, categorize File "/usr/lib/python/evdev/ecodes.py", line 78, in <module> for k, v in g[prefix].items(): ~^^^^^^^^ KeyError: 'UI_FF'ecodes.py enthält jetzt UI_FF, aber das reicht offenbar noch nicht.
Python
Display Morevdr1:/usr/local/bin # cat /usr/lib/python/evdev/ecodes.py # pylint: disable=undefined-variable """ This modules exposes the integer constants defined in ``linux/input.h`` and ``linux/input-event-codes.h``. Exposed constants:: KEY, ABS, REL, SW, MSC, LED, BTN, REP, SND, ID, EV, BUS, SYN, FF, FF_STATUS, INPUT_PROP This module also provides reverse and forward mappings of the names and values of the above mentioned constants:: >>> evdev.ecodes.KEY_A 30 >>> evdev.ecodes.ecodes['KEY_A'] 30 >>> evdev.ecodes.KEY[30] 'KEY_A' >>> evdev.ecodes.REL[0] 'REL_X' >>> evdev.ecodes.EV[evdev.ecodes.EV_KEY] 'EV_KEY' >>> evdev.ecodes.bytype[evdev.ecodes.EV_REL][0] 'REL_X' Keep in mind that values in reverse mappings may point to one or more event codes. For example:: >>> evdev.ecodes.FF[80] ('FF_EFFECT_MIN', 'FF_RUMBLE') >>> evdev.ecodes.FF[81] 'FF_PERIODIC' """ from inspect import getmembers from . import _ecodes #: Mapping of names to values. ecodes = {} prefixes = "KEY ABS REL SW MSC LED BTN REP SND ID EV BUS SYN FF_STATUS FF INPUT_PROP UI_FF".split() prev_prefix = "" g = globals() # eg. code: 'REL_Z', val: 2 for code, val in getmembers(_ecodes): for prefix in prefixes: # eg. 'REL' if code.startswith(prefix): ecodes[code] = val # FF_STATUS codes should not appear in the FF reverse mapping if not code.startswith(prev_prefix): d = g.setdefault(prefix, {}) # codes that share the same value will be added to a list. eg: # >>> ecodes.FF_STATUS # {0: 'FF_STATUS_STOPPED', 1: ['FF_STATUS_MAX', 'FF_STATUS_PLAYING']} if val in d: if isinstance(d[val], list): d[val].append(code) else: d[val] = [d[val], code] else: d[val] = code prev_prefix = prefix # Convert lists to tuples. k, v = None, None for prefix in prefixes: for k, v in g[prefix].items(): if isinstance(v, list): g[prefix][k] = tuple(v) #: Keys are a combination of all BTN and KEY codes. keys = {} keys.update(BTN) keys.update(KEY) # make keys safe to use for the default list of uinput device # capabilities del keys[_ecodes.KEY_MAX] del keys[_ecodes.KEY_CNT] #: Mapping of event types to other value/name mappings. bytype = { _ecodes.EV_KEY: keys, _ecodes.EV_ABS: ABS, _ecodes.EV_REL: REL, _ecodes.EV_SW: SW, _ecodes.EV_MSC: MSC, _ecodes.EV_LED: LED, _ecodes.EV_REP: REP, _ecodes.EV_SND: SND, _ecodes.EV_SYN: SYN, _ecodes.EV_FF: FF, _ecodes.EV_FF_STATUS: FF_STATUS, } from evdev._ecodes import * # cheaper than whitelisting in an __all__ del code, val, prefix, getmembers, g, d, k, v, prefixes, prev_prefix -
Kannst Du bitte in der packages/tools/_python-evdev/package.mk
die Zeile
Codebuild_ecodes --evdev-headers ${SYSROOT_PREFIX}/usr/include/linux/input.h:${SYSROOT_PREFIX}/usr/include/linux/input-event-codes.h \ändern in
Codebuild_ecodes --evdev-headers ${STAGING_DIR_TARGET}/usr/include/linux/input.h:${STAGING_DIR_TARGET}/usr/include/linux/input-event-codes.h:${STAGING_DIR_TARGET}/usr/include/linux/uinput.h \so wie die das hier machen? Vielleicht reicht das schon. Da wurde noch mehr gepatcht, wobei ich Patch 3/3 bisher nicht gefunden habe
-
Kannst Du bitte in der packages/tools/_python-evdev/package.mk
Wenn ich das richtig sehe, dann wurde "${SYSROOT_PREFIX}/usr/include/linux/uinput.h" angehängt. Ob die anderen Änderungen notwendig sind, wird sich erst nach einem Test herausstellen.
Die Änderung ist auf jeden Fall committed.
-
Danke
![Freude :]](https://www.vdr-portal.de/images/smilies/pleased.gif)
Kannst Du schon absehen, wann du neue CE images baust? Ich habe es mit meinem 10 Jahre alten Rechner aufgegeben, das dauert einfach zu lange
-
Habe CE21 bzw. Vdr*Elec lokal upgedatet und gebaut.
Fehlermeldung:
Pythonvdr3:/usr/local/bin # ./ps3remote.py Traceback (most recent call last): File "/usr/local/bin/./ps3remote.py", line 30, in <module> from evdev import UInput, InputDevice, ecodes, categorize ImportError: cannot import name 'UInput' from 'evdev' (unknown location)Wie kann ich bei der Fehlersuche weiter helfen?
-
Kannst Du schon absehen, wann du neue CE images baust?
Ich versuche es schon die ganze Zeit. Es gibt ziemliche Probleme mit dem Compile von libtool, an dem die Builds mehr oder weniger zufällig scheitern und das nervt etwas. Kleinste Änderungen im Build-Plan oder der Laufzeit eines Builds und schon geht es oder geht nicht.
-
Habe CE21 bzw. Vdr*Elec lokal upgedatet und gebaut.
Fehlermeldung:
Pythonvdr3:/usr/local/bin # ./ps3remote.py Traceback (most recent call last): File "/usr/local/bin/./ps3remote.py", line 30, in <module> from evdev import UInput, InputDevice, ecodes, categorize ImportError: cannot import name 'UInput' from 'evdev' (unknown location)Wie kann ich bei der Fehlersuche weiter helfen?
Bei der Fehlersuche blicke ich nicht mehr durch, aber einen workaround habe ich:
/storage/.config/system.d/amremote.service anlegen:
Code
Display More[Unit] Description=Start amremote After=eventlircd.service Before=vdropt.service AllowIsolate=yes [Service] ExecStart=/storage/start_ps3remote.sh [Install] WantedBy=basic.target/storage/start_ps3remote.sh anlegen und ausführbar machen:
Bash
Display More#!/bin/sh # Start only if /storage/.config/remote.conf exists if [ ! -f /storage/.config/remote.conf ]; then exit 0 fi # check if udev in CE has created the symlink for amremote (meson-remote): while [ ! -e /dev/input/meson-remote ]; do sleep 1; done # read configuration in profile . /storage/.profile if [ "${MESON_REMOTE_REPEAT}" = "" ]; then MESON_REMOTE_REPEAT=150 fi /storage/ps3remote.py -s /dev/input/meson-remote -r ${MESON_REMOTE_REPEAT}cp /usr/local/bin/ps3remote.py /storage/ps3remote.py
nano /storage/ps3remote.py
Hier jetzt eine Zeile ändern:
sys.path.append(r'/storage/lib/python')
Dann den Ordner /storage/lib/python anlegen und da den Inhalt aus dem Ordner /usr/lib/python (nicht /usr/lib/python3.11) einer älteren VDR*ELEC-Version reinkopieren.
Die anliegende zip enthält den python-Ordner in einem tgz-Paket. Das zip also auspacken und die python.tgz in /storage/lib legen. Dann in diesem Ordner mit tar xvfz python.tgz den darin enthaltenen python-Ordner auspacken.
Nach einem reboot sollte die Fernbedienung dann wieder laufen.

-
Kannst Du schon absehen, wann du neue CE images baust?
Was lange währt, wird endlich gut. Es sind wieder alle Releases gebaut worden (CE20/21/22, LE12/13).
-
Nach einem reboot sollte die Fernbedienung dann wieder laufen.
Tut sie.
Danke für den workaround.
-
Mit aktuellem CoreELEC-22-no (amlogic-no) funktioniert die Lösung nicht mehr.
PythonCE22:~ # ./ps3remote.py Traceback (most recent call last): File "/storage/./ps3remote.py", line 30, in <module> from evdev import UInput, InputDevice, ecodes, categorize ImportError: bad magic number in 'evdev': b'\xa7\r\r\n'Wie lässt sich das lösen?
-
Participate now!
Don’t have an account yet? Register yourself now and be a part of our community!