Anzeige:
Ergebnis 1 bis 2 von 2

Thema: IR-Fernbedienung mit lirc und IR-Empfänger am RS-232 PCIe-Adapter

  1. #1
    Registrierter Benutzer Avatar von Ede
    Registriert seit
    Jul 2004
    Beiträge
    1.773

    IR-Fernbedienung mit lirc und IR-Empfänger am RS-232 PCIe-Adapter

    Hallo.

    Es gelingt mir nicht, einen IR-Empfänger mit lirc in Betrieb zu nehmen.
    Folgende Situation: Ich habe ein neues Mainboard mit einer aktuellen openSUSE Tumbleweed Installation. Das Mainboard ist ohne RS-232-Anschluss. Den Anschluss brauche ich aber für lirc mit IR-Empfänger. So habe ich mir gedacht, kein Problem, probiere ich es doch mit einer Erweiterungskarte am PCI-Express-×1-Steckplatz. Erweiterungskarte besorgt und eingebaut. Der IR-Empfänger ist also jetzt am 9-poligen D-Sub Stecker (RS-232) der PCIe-Karte angeschlossen. lirc gibt aber leider nichts aus, kein Empfang von der Fernbedienung, genaueres später. Erstmal musste ich zu meiner Überraschung feststellen, dass lirc_serial durch serial_ir ersetzt wurde, das nur am Rande. Dann habe ich eine serielle Maus am selben Anschluss ausprobiert:
    Code:
    inputattach -ms /dev/ttyS0
    Die Maus funktioniert. Die PCIe-RS-232-Karte ist also nicht defekt. Also ein Software-Problem? Ich habe ein paar Tage lang in Foren und lirc-Anleitungen recherchiert, mit unterschiedlicher Hardware und unterschiedlichen Software-Versionen getestet, um den Fehler einzugrenzen. Das neue IR-Fernbedienung-System mit serial_ir und /dev/input/event ist mir nicht geläufig ist, ich benutze seit 20 Jahren lirc_serial, das kenne ich gut, habe schon ein paar lirc-Installationen mit verschiedenen Fernbedienungen durchgeführt.

    Zu Testzwecken habe ich ein anderes Mainboard mit onboard RS-232 genommen und noch die RS-232 PCIe Adapter-Karte eingebaut. Um die Hardware auch unter unterschiedlichen Software-Versionen zu testen, habe ich antiX Linux 19.4 (386 Kernel 4.9 und lirc_serial) und das aktuelle antiX Linux 21 (x64 Kernel 5.1 und serial_ir) runtergeladen. Also als erstes antiX Linux 21 USB-Live-Stick erstellt und gebootet, setserial und lirc installiert, eine super Distribution!

    Jetzt geht's ins Detail. Nochmal zur Erinnerung: onboard RS-232 und die PCIe-RS-232-Karte. Test 1: IR-Empfänger am onboard RS-232 D-Sub Stecker.
    Wir sehen den onboard-Anschluss mit ttyS0 at I/O 0x3f8 und den PCIe Adapter mit ttyS1 at I/O 0x9c00:
    Code:
    root@antix1:/home/demo# dmesg|grep ttyS
    [    0.704507] 00:04: ttyS0 at I/O 0x3f8 (irq = 4, base_baud = 115200) is a 16550A
    [    0.705241] 0000:02:00.0: ttyS1 at I/O 0x9c00 (irq = 16, base_baud = 921600) is a Sunix
    Code:
    root@antix1:/home/demo# lspci -v
    02:00.0 Serial controller: SUNIX Co., Ltd. Multiport serial controller (prog-if 04 [16750])
    	Subsystem: SUNIX Co., Ltd. Multiport serial controller
    	Flags: bus master, fast devsel, latency 0, IRQ 16, NUMA node 0
    	I/O ports at 9c00 [size=32]
    	I/O ports at 9800 [size=32]
    	Capabilities: [60] Power Management version 3
    	Capabilities: [68] MSI: Enable- Count=1/32 Maskable+ 64bit+
    	Capabilities: [80] Express Legacy Endpoint, MSI 00
    	Capabilities: [100] Advanced Error Reporting
    	Kernel driver in use: serial
    Code:
    root@antix1:/home/demo# lspci -n
    02:00.0 0700: 1fd4:1999
    Code:
    root@antix1:/home/demo# setserial -g /dev/ttyS*
    /dev/ttyS0, UART: unknown, Port: 0x03f8, IRQ: 4
    /dev/ttyS1, UART: unknown, Port: 0x9c00, IRQ: 16
    /dev/ttyS2, UART: unknown, Port: 0x03e8, IRQ: 4
    /dev/ttyS3, UART: unknown, Port: 0x02e8, IRQ: 3
    Code:
    root@antix1:/home/demo# find /sys/devices/ -type d -name ttyS*
    /sys/devices/pnp0/00:04/tty/ttyS0
    /sys/devices/platform/serial8250/tty/ttyS2
    /sys/devices/platform/serial8250/tty/ttyS3
    /sys/devices/pci0000:00/0000:00:0d.0/0000:02:00.0/tty/ttyS1
    Laden des Treibers für den IR-Empfänger am onboard-Anschluss:
    Code:
    root@antix1:/home/demo# setserial /dev/ttyS0 uart none
    
    root@antix1:/home/demo# modprobe serial_ir io=0x3f8
    
    root@antix1:/home/demo# dmesg
    [  270.070832] serial_ir serial_ir.0: auto-detected active low receiver
    [  270.070844] Registered IR keymap rc-rc6-mce
    [  270.070891] rc rc0: Serial IR type home-brew as /devices/platform/serial_ir.0/rc/rc0
    [  270.070948] rc rc0: lirc_dev: driver serial_ir registered at minor = 0, raw IR receiver, raw IR transmitter
    [  270.070995] input: Serial IR type home-brew as /devices/platform/serial_ir.0/rc/rc0/input11
    [  270.093994] elogind-daemon[4937]: Watching system buttons on /dev/input/event10 (Serial IR type home-brew)
    
    root@antix1:/home/demo# mode2 --driver default --list-devices
    /dev/lirc0 [(null):(null)] ? ? version: ? serial: ?
    Test Fernbedienung und IR-Empfänger:
    Code:
    root@antix1:/home/demo# mode2 -H default -d /dev/lirc0
    Using driver default on device /dev/lirc0
    Trying device: /dev/lirc0
    Using device: /dev/lirc0
    Warning: Running as root.
    pulse 969
    space 816
    pulse 940
    space 813
    pulse 967
    space 816
    pulse 940
    space 815
    pulse 967
    space 816
    pulse 938
    space 817
    pulse 1828
    space 1706
    pulse 969
    space 814
    pulse 1831
    space 1708
    pulse 937
    space 815
    pulse 969
    space 818
    pulse 937
    timeout 125000
    ^C
    Funktioniert am onboard Anschluss einwandfrei, schnelle Reaktion auf Tastendrücke.

    Test 2: IR-Empfänger am RS-232 D-Sub Stecker auf der PCIe-Karte.
    Selber Ablauf wie bei Test 1, nur Laden des Treibers an "ttyS1 at I/O 0x9c00" angepasst:
    Code:
    root@antix1:/home/demo# setserial /dev/ttyS1 uart none
    
    root@antix1:/home/demo# modprobe serial_ir io=0x9c00
    dmesg gibt dasselbe wie in Test 1 aus: "auto-detected active low receiver ...".
    Test Fernbedienung und IR-Empfänger:
    Code:
    root@antix1:/home/demo# mode2 -H default -d /dev/lirc0
    Using driver default on device /dev/lirc0
    Trying device: /dev/lirc0
    Using device: /dev/lirc0
    Warning: Running as root.
    Keine Ausgabe mehr. Es kommt nichts an, Tastendruck hin oder her. Was läuft da schief?

    Zusammenfassung: Onboard RS-232 hat Empfang mit lirc, die PCIe-Karte nicht.

    Test der seriellen Maus an beiden Anschlüssen mit inputattach ist positiv. Die Maus funktioniert an der PCIe-Karte und am onboard-Anschluss sowieso.

    Die Tests bisher mit antiX Linux 21 (x64 Kernel 5.1 und serial_ir).
    Als nächstes habe ich Tests mit antiX Linux 19.4 (386 Kernel 4.9 und lirc_serial) gemacht.
    Das Ergebnis ist dasselbe. Die serielle Maus funktioniert an beiden Anschlüssen, lirc mit der Fernbedienung funktioniert nur am Onboard RS-232, nicht an der PCIe Adapter-Karte.

    Zusammenfassung:
    • lirc und die RS-232 PCIe Adapter-Karte verweigern die Zusammenarbeit in allen Hard- und Software-Kombinationen.
    • lirc funktioniert immer am Onboard RS-232.
    • Die Serielle Maus funktioniert am Onboard RS-232 und an der RS-232 PCIe Adapter-Karte.


    Wo ist das Problem? Habe ich was übersehen? Wie kann ich den Fehler eingrenzen?
    Hat jemand lirc mit einer RS-232 PCIe Adapter-Karte am Laufen?
    Geändert von Ede (06.11.21 um 01:58 Uhr)
    notebook Asus M2400N - Centrino 1600 MHz - 768 MB RAM - Suse 11.4
    pc1 MSI PM8M2 - Pentium4 3000 MHz - 2000 MB RAM - Suse 12.3
    pc2 Asus K7VT - Athlon 800 MHz - 256 MB RAM - Suse 12.1

  2. #2
    Registrierter Benutzer Avatar von Ede
    Registriert seit
    Jul 2004
    Beiträge
    1.773
    Habe nach weiterem Rumprobieren die Lösung für den seriellen Anschluss der PCIe-Karte gefunden, und zwar bei den Parametern von serial_ir. Funktioniert mit antiX und Tumbleweed.
    Code:
    # modinfo serial_ir
    filename:       /lib/modules/5.14.14-1-default/kernel/drivers/media/rc/serial_ir.ko.xz
    license:        GPL
    author:         Ralph Metzler, Trent Piepho, Ben Pfaff, Christoph Bartelmus, Andrei Tanas
    description:    Infra-red receiver driver for serial ports.
    suserelease:    openSUSE Tumbleweed
    srcversion:     389CCC5980EB109B740F2B3
    depends:        rc-core
    retpoline:      Y
    intree:         Y
    name:           serial_ir
    vermagic:       5.14.14-1-default SMP mod_unload modversions 
    sig_id:         PKCS#7
    signer:         openSUSE Secure Boot CA
    sig_key:        FA:BE:D8:BF:40:9A:5E:64
    sig_hashalgo:   sha256
    signature:      85:F3:CE:47:1B:64:10:33:2E:A5:6D:DF:E5:DD:19:DD:40:AE:71:78:
                    7C:E3:B2:1B:C5:42:50:0C:FA:93:77:58:9D:04:E7:CC:D1:5B:2B:75:
                    32:39:29:0D:19:F9:A8:E6:57:1E:07:FA:CB:45:08:2D:51:6B:9E:B0:
                    8B:3D:AF:77:3A:15:09:2C:73:74:CC:88:6B:DC:AA:B7:0B:CB:73:AA:
                    B7:18:35:1C:22:AD:BF:02:A8:2C:A4:AF:2F:D2:1C:D7:81:93:AC:F6:
                    0B:C2:55:8B:15:47:2A:0D:50:AE:31:E9:60:E7:AA:11:11:58:24:2A:
                    A8:A6:40:B5:10:39:13:A6:07:96:1D:94:4F:C9:9B:35:00:A8:8C:79:
                    10:3E:9E:17:39:E2:6B:B1:B3:64:B8:C5:44:32:ED:FA:A7:EB:EF:2B:
                    42:1B:C0:D9:B3:48:65:91:10:86:15:29:D8:99:E9:47:55:2B:86:2C:
                    DA:8B:EA:10:94:12:1B:92:94:EF:35:98:4B:59:DF:6C:F9:00:75:D3:
                    B4:95:4A:3D:43:7C:49:22:C8:5A:5D:97:A0:09:F7:C3:D8:4D:B2:CE:
                    8A:B4:86:49:6E:50:B4:E5:F7:49:8E:08:95:A7:91:3C:64:D7:39:E8:
                    F1:4A:48:B7:37:47:AD:28:E3:99:86:52:58:B3:05:2C
    parm:           type:Hardware type (0 = home-brew, 1 = IRdeo, 2 = IRdeo Remote, 3 = AnimaX, 4 = IgorPlug (int)
    parm:           io:I/O address base (0x3f8 or 0x2f8) (int)
    parm:           iommap:physical base for memory mapped I/O (0 = no memory mapped io) (ulong)
    parm:           ioshift:shift I/O register offset (0 = no shift) (int)
    parm:           irq:Interrupt (4 or 3) (int)
    parm:           share_irq:Share interrupts (0 = off, 1 = on) (bool)
    parm:           sense:Override autodetection of IR receiver circuit (0 = active high, 1 = active low ) (int)
    parm:           txsense:Sense of transmitter circuit (0 = active high, 1 = active low ) (bool)
    parm:           softcarrier:Software carrier (0 = off, 1 = on, default on) (bool)
    Oben sind die nötigen Einstellungen fett markiert. Es ist also irq und share_irq. In den ersten Tests, siehe 1. Beitrag, habe ich dem Treiber nur den Parameter io mitgegeben. Das reicht für den seriellen onboard-Anschluss aus, aber nicht für die PCIe-Karte

    I/O und irq der Hardware rausfinden:
    Code:
    # dmesg|grep ttyS
    [    0.647712] 0000:04:00.0: ttyS4 at I/O 0xd020 (irq = 18, base_baud = 921600) is a Sunix
    Als erstes den Treiber ohne share_irq ausprobiert:
    Code:
    # modprobe serial_ir io=0xd020 irq=18
    Das System meldet einen Fehler:
    Code:
    # dmesg
    [  225.182815] genirq: Flags mismatch irq 18. 00000000 (serial_ir) vs. 00000080 (i801_smbus)
    [  225.182825] serial_ir serial_ir.0: IRQ 18 busy
    [  225.182828] serial_ir: probe of serial_ir.0 failed with error -16
    Nach einem gescheiterten Versuch das Modul immer erst entladen:
    Code:
    # rmmod serial_ir
    Denn lsmod zeigt es als geladen an und ein neues Laden scheitert ohne vorheriges rmmod:
    Code:
    # lsmod|grep serial
    serial_ir              24576  0
    rc_core                61440  5 ir_rc6_decoder,rc_rc6_mce,cec,serial_ir
    Laden des Treibers mit dem Parameter share_irq:
    Code:
    # modprobe serial_ir io=0xd020 irq=18 share_irq=1
    Das Modul lädt ohne Fehler:
    Code:
    # dmesg
    [  240.742331] serial_ir serial_ir.0: auto-detected active low receiver
    [  240.742351] Registered IR keymap rc-rc6-mce
    [  240.742418] rc rc0: Serial IR type home-brew as /devices/platform/serial_ir.0/rc/rc0
    [  240.742548] rc rc0: lirc_dev: driver serial_ir registered at minor = 0, raw IR receiver, raw IR transmitter
    [  240.742629] input: Serial IR type home-brew as /devices/platform/serial_ir.0/rc/rc0/input15
    Die Fernbedienung funktionioniert:
    Code:
    # mode2 -H default -d /dev/lirc0
    Using driver default on device /dev/lirc0
    Trying device: /dev/lirc0
    Using device: /dev/lirc0
    Warning: Running as root.
    space 16777215
    pulse 960
    space 814
    pulse 1812
    space 1735
    pulse 924
    space 784
    pulse 1010
    space 799
    pulse 979
    space 786
    pulse 1851
    ^C
    Soweit so gut. Es folgt noch die Konfiguration von lircd und irexec.

    Eine Frage noch. Wie kann ich das vom Kernel automatisch geladene Gedöns verhinden, das ich nicht brauche?
    Also:
    Code:
    # dmesg
    [  240.742351] Registered IR keymap rc-rc6-mce
    und
    Code:
    # lsmod|grep serial
    serial_ir              24576  0
    rc_core                61440  5 ir_rc6_decoder,rc_rc6_mce,cec,serial_ir

    Nochmal der Ablauf zusammengefasst:

    ttyS*, I/O und irq der Hardware rausfinden:
    Code:
    # dmesg|grep ttyS
    [    0.647712] 0000:04:00.0: ttyS4 at I/O 0xd020 (irq = 18, base_baud = 921600) is a Sunix
    Treiber laden:
    Code:
    # setserial /dev/ttyS4 uart none
    # modprobe serial_ir io=0xd020 irq=18 share_irq=1
    Testen:
    Code:
    # mode2 -H default -d /dev/lirc0
    space 16777215
    pulse 960
    ...
    Geändert von Ede (07.11.21 um 16:48 Uhr)
    notebook Asus M2400N - Centrino 1600 MHz - 768 MB RAM - Suse 11.4
    pc1 MSI PM8M2 - Pentium4 3000 MHz - 2000 MB RAM - Suse 12.3
    pc2 Asus K7VT - Athlon 800 MHz - 256 MB RAM - Suse 12.1

Ähnliche Themen

  1. IR-Fernbedienung für lirc
    Von Mister-X im Forum Linux Allgemein
    Antworten: 5
    Letzter Beitrag: 08.10.10, 20:55
  2. lirc und usb-ir-empfänger
    Von DerMoench im Forum stationäre Hardware
    Antworten: 2
    Letzter Beitrag: 05.03.06, 00:38
  3. Lirc mit seriellem Empfänger
    Von MatzeMC im Forum stationäre Hardware
    Antworten: 25
    Letzter Beitrag: 30.01.04, 16:15
  4. lirc Fernbedienung hinzufügen
    Von nitroman im Forum Fernsehen
    Antworten: 4
    Letzter Beitrag: 26.10.03, 01:53
  5. IR-Empfänger am Seriellen Port - Software LIRC
    Von Matzetronic im Forum stationäre Hardware
    Antworten: 1
    Letzter Beitrag: 21.10.01, 23:33

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •