Serielles IR mit Lirc 0.10 unter Debian9

  • Man könnte das Kernel-Modul auch über eine Datei in /etc/modules-load.d/ laden lassen, es gibt eigentlich keinen Grund dafür das von Lirc erledigen zu lassen:

    Code: /etc/modules-load.d/serial_ir.conf
    serial_ir

    Außerdem muss man noch mit setserial dafür sorgen, dass UART für die Schnittstelle deaktiviert wird, für /dev/ttyS1 also z.B.:

    Code: /etc/serial.conf
    /dev/ttyS1 uart none

    yaVDR-Dokumentation (Ceterum censeo enchiridia esse lectitanda.)

  • Es laeuft! Ich glaub's nicht! Ich hatte mir schon die Anleitung fuer einen Arduino-Empfaenger rausgesucht. Seit Lirc 0.93+ ist da naemlich eine Arduino-Unterstuetzung im Lirc.

    4 Tage! Mit Nachtschichten! Ich hab nicht mehr d'ran geglaubt!


    Dr. Seltsam schrieb:

    Zitat

    Wenn da nicht automatisch active-low kommt, ist der Empfänger entweder nicht richtig angeschlossen und/oder hat einen Hardware-Fehler.

    Deshalb bin ich jetzt einfach hin und hab die Stromversorgung des Empfaengers selbst sichergestellt. Plus kommt jetzt von der 5V-Leitung eines Molex-Steckers. Lirc meldete dadurch ploetzlich "Active-Low". mode2 empfing immernoch nichts. Spannungen geprueft und festgestellt, dass auch am Minuspol eine Spannung liegt (Pin 5 des Serial-Anschlusses). Als ich den Minuspol dann an echtes GND gelegt hatte, erwachte alles zum Leben! Die Empfaenger LED-blinkt hell und blau, mode2 schickt seitenweise Gruesse. Mit dem Seriell-Anschluss ist also nur noch die Datenleitung (Pin1 / DCD) verbunden. Sonst nichts.

    Zur Visualisierung nochmal das Diagramm im Anhang.

    Wie gesagt: GND und RTS kommen jetzt direkt vom Molex-Stecker des Netzteils. Statt mit RTS ist der Empfaenger also mit der +5V-Leitung verbunden.

  • und festgestellt, dass auch am Minuspol eine Spannung liegt (Pin 5 des Serial-Anschlusses)

    klingt fast so, als ob Du Typ5 Kabel am Typ9 Pfostenstecker des Mainboardes genommen hattest. Dort würde an Pin 5 TXD zu liegen kommen.

    Dann müsste aber auch RTS falsch liegen und es generell nicht gehen.

  • Nene, auf dem Mainboard sind Pfostenstecker fuer eine COM2-Slotblech-Erweiterung. Da hatte ich Jumperkabel drangesteckt - diese Dupont-Kabel fuer Breadboards.


    Ich habe die beiden empfohlenen Dateien angelegt. Wie bekomme ich nun Lirc automatisch beim Booten gestartet?


    Code
    systemctl enable lirc
    Failed to enable unit: Unit file lirc.service does not exist.systemctl enable lirc


  • Nene

    es gibt aber zwei grundsätzliche Pfostenstecker-Belegungen.

    Bei einer liegt GND auf Pin 5, bei der anderen auf Pin9. Die wurden wegen den Hosenträgerkabeln und Schneidklemmverbindern am Com Stecker eingeführt.

  • Jaja, umstecken hatte ich schon probiert. Es lag ja gar nicht nur am GND, sondern auch an den -11V an RTS, die nicht auf +11V geaendert wurden. Oder anders gesagt: Lirc sollte Serial so ansprechen, dass RTS nicht gepollt wird, sondern als Stromquelle herhaelt. Das hat offensichtlich nicht geklappt. Keine Ahnung was mit dem GND-Pin ist, ob der von Lirc haette runtergezogen werden muessen.


    Das mit den beiden Dateien fuer das Bootup klappt nicht. Beim Booten wird sich beschwert, dass der Port belegt sei. Ich kann Lirc dann auch nicht mehr manuell starten. Deshalb habe ich die Dateien wieder entfernt. Jetzt geht's wieder.


    Trotzdem brauche ich ein Autostart

    Ich hatte zudem den Befehl fuer den Lirc-Service falsch getippt. So scheint was zu passieren:

    Code
    systemctl enable lircd
    Synchronizing state of lircd.service with SysV service script with /lib/systemd/systemd-sysv-install.
    Executing: /lib/systemd/systemd-sysv-install enable lircd

    Natuerlich gibt's immernoch kein Autostart, weil ja der Port freigemacht und das kernel-modul vorher geladen werden muss.


    Nicht zuletzt gibt's noch ein kleines Problem mit Kodi: Es reagiert nur auf eine von zwei Fernbedienungen, obwohl beide in der Lircmap.xml definiert sind. irw reagiert korrekt auf beide.

  • Das mit den beiden Dateien fuer das Bootup klappt nicht. Beim Booten wird sich beschwert, dass der Port belegt sei.

    Ist das Paket setserial installiert?

    yaVDR-Dokumentation (Ceterum censeo enchiridia esse lectitanda.)

  • Jaja, umstecken hatte ich schon probiert

    auf welche Belegung ?

    eine Ahnung was mit dem GND-Pin ist, ob der von Lirc haette runtergezogen werden muessen.

    also GND Ist Masse und so mit das Einzigste was Rockstable ist und sich niemals ändern darf. Das ist der Bezugspunkt für alle Alles.


    ich gehe mal davon aus, das bei der richtigen Beschaltung auch die Versorgung über RTS klappen würde. Übrigens DCD ist das einzige Pin, welches bei Typ5 und Typ9 gleich ist , nämlich Pin1. Deswegen bekommt man auch bei der falscher Belegung dort Daten rein.

  • Ich weiss was GND ist.


    auf welche Belegung ?

    Von Pin5 auf Pin9. Das aendert aber auch nichts daran, dass RTS nicht hochgezogen wird. Lirc hat Macken in den 0.9er-Versionen! Ich kann froh sein, dass DTS jetzt geht und werde das nicht weiter ausreizen.

    Uebrigens habe ich eine elegante Loesung gefunden: Auf dem Mainboard sind Pins fuer Speaker und Chassis-Intrusion. Beides brauche ich nicht. Dadurch sind da gleich zwei freie 5V- und GND-Pins. Perfekt fuer die Jumper-Kabel meines Empfaengers.


    Ist das Paket setserial installiert?

    Ja.

  • Von Pin5 auf Pin9. Das aendert aber auch nichts daran, dass RTS nicht hochgezogen wird.

    also bei GND Pin9 ist RTS auf Pin 4 , - anstelle von Pin7 bei GND Pin5.

    Ich kann froh sein, dass DTS jetzt geht und werde das nicht weiter ausreizen.

    OK, ich dachte nur, das Du nach vier Nachtschichten den Ehrgeiz hättest :mua, das ordentlich zu Ende zu bringen. Aber es ist auch egal, wo man die Spannung für den TSOP hernimmt.

  • Ich habe den Eindruck, dass /etc/modules-load.d/serial_ir.conf das Modul serial_ir laedt, aber ohne den rictigen COM-Port. Ich muss naemlich


    Code
    rmmod serial_ir 


    und

    Code
    modprobe serial_ir 


    eintippen, wenn ich danach Lirc und mode2 von Hand starten will.

    Kann es sein, dass setserial beim Booten irgendwie erst nach dem modprobe ausgefuehrt wird?


    Ausserdem: Es gibt auf meinem System eine Datei /var/lib/setserial/autoserial.conf


    Inhalt:

    Da steht alles richtig drin. Verstehe gar nicht, warum das setserial uebrhaupt noch gebraucht wird.

  • Ich dachte, Du hattest /etc/modules-load.d/serial_ir.conf schon wieder gelöscht?

    Ich habe den Eintrag "serial-ir" direkt in /etc/modules drin. Kommt aufs gleiche hinaus Für die Modulparameter ist ausschließlich /etc/modprobe.d/serial_ir.conf zuständig. Und das muss funktionieren.


    Auf meinem Ubuntu 18.04 ist /etc/serial.conf auch nicht vorhanden, und im [modinit]-Abschnitt der /etc/lirc/lirc_options.conf habe ich auch nichts stehen. Ich meine mich zu erinnern, dass ich auch lange an dem Punkt festhing. Laut https://wiki.ubuntuusers.de/Lirc/ istd er richtige Weg jetzt bein Eintrag in /var/lib/setserial/autoserial.conf. Darin steht bei mir

    Code
    setserial /dev/ttyS0 uart none


    Bei Dir wäre es dann ttyS1.

    VDR1: ACT-620, Asus P8B75-M LX, Intel Core i3-3240, 4 GB DDR3 RAM 1600 MHz, passive Geforce GT1030 von MSI, Sandisk 2TB SSD, 2xWinTV DualHD, Atric-IR-Einschalter. SW: Xubuntu 20.04 auf 64GB Sandisk SSD.

    VDR2: Odroid N2+ mit CoreELEC und Ubuntu in chroot, WinTV DualHD

    VDR3: Tanix TX3 mit CoreELEC und Ubuntu in chroot, WinTV DualHD

  • Ich dachte, Du hattest /etc/modules-load.d/serial_ir.conf schon wieder gelöscht?

    Hatte ich auch. Was soll mich hindern, die wieder anzulegen? Ich probier halt alles aus.


    Diese /etc/modules kannte ich noch nicht. serial_ir hab ich jetzt mal da reingeschrieben, statt in diese andere Datei, deren Name ich gerade vergessen habe. Gleichzeitig

    steht in der /etc/modules-load.d/serial_ir:

    Code
    # COM2 equivalent: /dev/ttyS1
    options serial_ir irq=3 io=0x2f8# COM2 equivalent: /dev/ttyS1
    options serial_ir irq=3 io=0x2f8

    und in der /var/lib/setserial/autoserial.conf:


    Da passiert das gleiche wie vorher: Wenn ich im mode2 oder irw was sehen will muss ich erst


    Code
    rmmod serial_ir
    modprobe serial_ir
    systemctl restart lircd

    nach dem Booten eintippen. Mir scheint, diese Serial-Einstellungen kommen erst nach dem Modul-Load zur Anwendung, denn /dev/ttyS1 ist richtig konfiguriert.


    Code
    #setserial /dev/ttyS1
    /dev/ttyS1, UART: unknown, Port: 0x02f8, IRQ: 3
  • Mir kam gerade der Einfall, dass /etc/lirc/lirc_options.conf ja auch noch den Aufruf des Kernel-Moduls und auch den Aufruf von setserial enthaelt. Also die Codezeilen am Ende der Datei auskommentiert und neu gestartet. Kein Unterschied.

    Umgekehrter Fall: Modul nicht mehr beim Booten laden lassen und die lirc_options.conf alles erledigen lassen..warum denn nicht?


    Da stellt sich die Frage, ob lirc denn ueberhaupt automatisch gestartet wird. systemctl status lircd direkt nach dem Booten zeigt nun folgendes:

    Ist das vielleicht irgendein Rechte/Gruppen-Problem?

  • heisst Deine Datei jetzt /etc/modules-load.d/serial_ir oder /etc/modules-load.d/serial_ir.conf?

    Ich bin mir nicht sicher, ob in Zeile 2 die Auskommentierung greift, wenn sie nicht am Anfang steht. da das schon in Zeile 1 steht, ist es zudem überflüssig.

    Und Zeile 3 ist nochmal das gleiche.


    Bei Deiner autoserial.conf hoffe ich mal, dass die nicht wirklich so aussieht, sondern hier nur falsch bzw. doppelt reinkopiert wurde.


    Mir fiel noch auf, dass ich in meiner /etc/lirc/lirc_options.conf den Eintrag nodaemon = True habe, während es bei Dir False ist.

    Code
    [lircmd]
    uinput          = False
    nodaemon        = True


    Und meine /etc/modprobe.d/serial-ir.conf sieht anders aus:

    Code
    install serial_ir setserial /dev/ttyS0 uart none; modprobe --ignore-install serial_ir

    Das habe ich auch nur aus dem Forum und verstehe die Syntax nicht wirklich. Das heisst ich weiss auch nicht, wie man hier die anderen Modulparameter für den Port mit einbaut. Aber eigentlich müsstest Du das für Deinen Fall direkt dahinter schreiben können:


    Code
    install serial_ir setserial /dev/ttyS1 uart none; modprobe --ignore-install serial_ir irq=3 io=0x2f8

    VDR1: ACT-620, Asus P8B75-M LX, Intel Core i3-3240, 4 GB DDR3 RAM 1600 MHz, passive Geforce GT1030 von MSI, Sandisk 2TB SSD, 2xWinTV DualHD, Atric-IR-Einschalter. SW: Xubuntu 20.04 auf 64GB Sandisk SSD.

    VDR2: Odroid N2+ mit CoreELEC und Ubuntu in chroot, WinTV DualHD

    VDR3: Tanix TX3 mit CoreELEC und Ubuntu in chroot, WinTV DualHD

    Einmal editiert, zuletzt von Dr. Seltsam ()

  • wenn Du nachvollziehen willst, was in welcher Reihenfolge abläuft, könnte

    Code
    cat /var/log/syslog|grep -E 'lirc|serial'

    helfen

    VDR1: ACT-620, Asus P8B75-M LX, Intel Core i3-3240, 4 GB DDR3 RAM 1600 MHz, passive Geforce GT1030 von MSI, Sandisk 2TB SSD, 2xWinTV DualHD, Atric-IR-Einschalter. SW: Xubuntu 20.04 auf 64GB Sandisk SSD.

    VDR2: Odroid N2+ mit CoreELEC und Ubuntu in chroot, WinTV DualHD

    VDR3: Tanix TX3 mit CoreELEC und Ubuntu in chroot, WinTV DualHD

  • Bei beiden Befehlen kommt gar nichts. Habe soeben frisch gebootet.

    Ja, die Datei heisst korrekterweise /etc/modules-load.d/serial_ir.conf.

    Ich komme hier langsam ein wenig durcheinander mit den ganzen .conf-Dateien. Auch diese autoconf-Datei (kompletten Pfad bitte jetzt mal selber denken) ist tatsaechlich hier versehentlich doppelt eingefuegt worden.

    Ich versuche es jetzt mit der neuen serial_ir.conf.

  • kommt denn einzeln bei


    cat /var/log/syslog|grep lirc

    cat /var/log/syslog|grepserial

    etwas?


    Wichtig ist der senkrechte Strich- bei mir ist das AltGr und die Taste mit dem gößer/kleiner-Pfeil.

    VDR1: ACT-620, Asus P8B75-M LX, Intel Core i3-3240, 4 GB DDR3 RAM 1600 MHz, passive Geforce GT1030 von MSI, Sandisk 2TB SSD, 2xWinTV DualHD, Atric-IR-Einschalter. SW: Xubuntu 20.04 auf 64GB Sandisk SSD.

    VDR2: Odroid N2+ mit CoreELEC und Ubuntu in chroot, WinTV DualHD

    VDR3: Tanix TX3 mit CoreELEC und Ubuntu in chroot, WinTV DualHD

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!