[Gelöst] Ansible focal auf Raspberry - Kernel hat keinen GPIO-IR support

  • Hi,

    leider hat der Ubuntu Kernel für den Raspi keine Treiber für gpio-ir Support (sind im kernelconfig nicht aktivert).

    Kennt sich jemand aus damit man das in den Stockkernel bekommt?

    Ich hatte gehofft die Zeiten wo ich am Wochenende den Kernel baue sind vorbei :-).

    Auf dem Raspi wird das sicher dauern.


    Eventuell die Module "out of tree" bauen?


    2: In the "Role" rpi sind die Namen für die Device-Tree-Einstellungen falsch. Sollten sein: gpio-ir, gpio-ir-tx, pwm-ir-tx.

    Grüße, Dieter :-)

  • Die Module sind da, es scheint die config in den Kernel-Sourcen ist nicht aktuell. Aber gut.

    (/lib/modules/5.4...../kernel/drivers/media/rc)


    Aber warum lädt er die Treiber nicht?

    Grüße, Dieter :-)

  • Man muss dem Rasbperry über die Boot-Konfiguration dtoverlay=gpio-ir-recv,gpio_pin=PINNUMMER mitgeben. Wenn du dafür sorgst, dass die Variable rpi_ir_gpio_pin definiert ist, macht das Playbook das automatisch und man kann dem Empfänger nach einem Reboot nutzen.

    yaVDR-Dokumentation (Ceterum censeo enchiridia esse lectitanda.)

  • Hallo Seahawk, Danke,

    hatte ich gemacht (mit gpio-ir-recv), ist ja nicht mein erster PI.

    Mit Raspbian läuft das auch (allerdings mit "gpio-ir" ohne "-recv"). Auch der TX Funktioniert dort (leidlich und meist, ist halt kein Realtime-System).

    Habe den pwm Sender benutzt.


    Das habe ich bei Raspbian drin und läuft seit ~1 Jahr:

    Code
    1. dtoverlay=gpio-ir,gpio_pin=22,gpio_in_pull=up
    2. #dtoverlay=gpio-ir-tx,gpio_pin=18
    3. dtoverlay=pwm-ir-tx,gpio_pin=18

    Habs mit und ohne "-recv" versucht.


    BTW: Die Quellen der Treiber in media/rc für die gpio-ir sind identisch.


    Mit modprobe lädt der gpio-ir-recv, aber automatisch geht nichts.

    Habe keine udev in raspbian gefunden, war meine Hoffnung das da was fehlt.

    Grüße, Dieter :-)

  • Ich habe das gerade für den Empfangs-Teil noch mal nachgestellt - du hast recht, der Boot-Parameter muss gpio-ir heißen, ich habe das gerade im Git korrigiert.


    Angeschlossen habe ich einen TSOP 4836 an Vcc = 3,3 V, GND und Pin 27. In der /boot/firmware/usercfg.txt steht dann dtoverlay=gpio-ir,gpio_pin=27.

    Damit bekomme ich von ir-keytable einen Empfänger angezeigt, der wie erwartet auf eine vorkonfigurierte RC-6A MCE Fernbedienung reagiert:

    yaVDR-Dokumentation (Ceterum censeo enchiridia esse lectitanda.)

  • Hi,

    gelöst:


    War ein Problem speziell mit Raspi 2 und SSD am USB.

    Der Raspi booted via SD in die SSD.

    Dabei muss die usercfg.txt auf der SD sein, aber die Boot-Partition der SSD ist gemounted.

    Damit schreibt Ansible in die SSD wo es nicht verwendet wird.

    Manuelles kopieren war angesagt, dann hat es funktioniert.


    Vermutlich muss man auch den Kernel manuell updaten.

    Man könnte die Boot-Partition der SD als boot mounten (manuell die fstab anpassen).


    Später läuft es auf einem Raspi 3 der kann direkt von SSD booten.

    Grüße, Dieter :-)

  • @ Seahawk,

    nach "git pull origin" ist der RX ok, but TX ist immer noch falsch. Sollte "gpio-ir-tx" sein.

    Und "pwm-ir-tx" wird nicht unterstützt.

    Auch brauchen wir die anderen Dinge wie pullup.


    Vorschlag: Eine Möglichkeit um ganze Zeilen eizufügen, dann ist man flexible.

    Für einfache Fälle reicht das vorhandene.


    Wenn Du mir Zeit gibst schicke ich einen Pull-Request.

    Code
    1. dtoverlay=gpio-ir,gpio_pin=18,gpio_in_pull=up
    2. dtoverlay=gpio-ir-tx,gpio_pin=22

    Grüße, Dieter :-)

  • Pull-Request ist auf Github.

    Grüße, Dieter :-)

  • Auch brauchen wir die anderen Dinge wie pullup.

    Ok, invert scheint da auch noch als Option relevant zu sein: https://github.com/raspberrypi…boot/overlays/README#L773, auf das Setzen der Keymap kann man an der Stelle IMHO verzichten, dafür gibt es das Template für die rc_maps.cfg aus der Rolle yavdr-remote.


    Ich denke drei zusätzliche Variablen für rpi_gpio_in_pullup, rpi_gpio_in_invert und rpi_gpio_tx_invert tun da niemandem weh.

    Vorschlag: Eine Möglichkeit um ganze Zeilen eizufügen, dann ist man flexible.

    Man muss nur aufpassen, dass das nur für Einstellungen funktioniert, die nicht vom GPU-Teil des Raspberry beim Booten eingelesen werden müssen (wie z.B. der Memory Split) - die müssen in der /boot/firmware/config.txt landen, damit sie berücksichtigt werden.

    Pull-Request ist auf Github.

    Danke, ich schaue mir das bei Gelegenheit mal genauer an.

    yaVDR-Dokumentation (Ceterum censeo enchiridia esse lectitanda.)

  • Hi,

    Man kann schon jetzt statt Portnummer eine String angeben, damit kann man alle IR-einstellungen erschlagen.

    Mein Pull-request erlaubt auch extra Zeilen einzufügen. Habe auch Beispiel eingebaut.


    Später bin ich auf ein Problem gestoßen. Eine bereits existierende Lirc-Installation wird zerstört.

    Dies ist per Design und hat nichts mit meinen Änderungen zu tun.


    In meinem Fall läuft ein Python-Script der die beteiligten Geräte in den richtigen Modus bringt (Ein/Aus, Lautsträrke preset, Eingang, ...).

    Teils über ir-send, anderes über Eth Befehle (LG, Onkio, ...., Wake on Lan). Habe ich mit Mühen von Raspian auf Ubuntu portiert. Heißt WAF damit meine Frau damit klarkommt. Habe auch eine Android App geschrieben die das steuert (über lirc on lan). War mein Weihnachtgeschenk.


    Diese Einstellungen/Installation wird über Ansible gesteuert, vor yavdr-Ansible.


    Mein Angebot: Ich baue "when:" ein in die gefährlichen Roles und schicke einen neuen Pull-Request. Aber erst wenn der alte PR verarbeitet ist.

    Grüße, Dieter :-)