Vorneweg: Ich bin noch kein Experte, eher der Probiertyp der sich intuitiv durch viele Infos durchwühlt bis er sein Ziel erreicht.
Damit bin ich bisher ganz gut gefahren, aber hier eindeutig an einer Grenze angelangt was mein Verständnis anbetrifft.
Ausgangslage:
-Raspberry PI Zero
-Raspbian 11.5 Bullseye
-lirc 0.10.1-6.3
Funktionierende GPIO Konfiguration zum senden und empfangen von IR-Signalen.
IR-Signale von der Fernsteuerung empfangen läuft perfekt, ich kann damit Shell-Befehle auslösen.
IR-Signale senden per irsend läuft auch perfekt, ich kann damit andere Geräte steuern mit dem gleichen Befehl welche die IR-Fernsteuerung sendet.
ABER: Senden und empfangen bekomme ich nicht parallel zum Laufen. Es ist wie verhext.
Mein Ziel: Ich möchte gleichzeitig flexibel senden und empfangen von IR-Signalen ohne vor dem Senden irgendwelche configs umschreiben zu müssen oder services neu zu starten.
Nun, nach tagelangem herumprobieren über Wochen hiermit die Frage an die Experten, wie kann ich das realisieren?
1. Die Voraussetzung für erfolgreiches empfangen ist diese hier:
Mit folgender Konfiguration in der /boot/config.txt
...
# Uncomment this to enable infrared communication.
dtoverlay=gpio-ir,gpio_pin=17
#dtoverlay=gpio-ir-tx,gpio_pin=18
#dtoverlay=gpio-ir-tx,gpio_pin=27
dtoverlay=pwm-ir-tx
...
Dann kann ich einwandfrei mit irw alle Tasten meiner IR-Fernsteuerung empfangen und damit Shell-Commands über irexec.lircrc auslösen.
Funktioniert alles top.
irsend funktioniert in dieser Konfiguration nicht (z. B. irsend SEND_START EPSON KEY_RESTART; sleep 3; irsend SEND_STOP EPSON KEY_RESTART):
hardware does not support sending
Error running command: Input/output error
Durch diesen Eintrag in der /boot/config.txt: dtoverlay=pwm-ir-tx
Kann ich allerdings parallel per ir-ctl senden. Z. B.:
ir-ctl -d /dev/lirc1 -S necx:0x835584 -S necx:0x835584 -S necx:0x835584 -S necx:0x835584 --gap=125
IR-Signale werden erfolgreich gesendet.
ABER: Obwohl mit diesen Scancodes die Fernsteuerung eigentlich erkannt wurde (ir-keytable etc.), kann mein Endgerät mit den gesendeten IR-Signalen per ir-ctl nicht wirklich etwas anfangen. Ganz selten funktioniert es, allerdings viel zu selten (vielleicht 1 von 20 Versuchen und dabei muss ich noch teilweise am gap herumschrauben).
2a. Die Voraussetzung für erfolgreiches senden ist diese hier (nach reboot):
Mit folgender Konfiguration in der /boot/config.txt
...
# Uncomment this to enable infrared communication.
dtoverlay=gpio-ir,gpio_pin=17
dtoverlay=gpio-ir-tx,gpio_pin=18
#dtoverlay=gpio-ir-tx,gpio_pin=27
#dtoverlay=pwm-ir-tx
...
Dann funktioniert allerdings das erfolgreiche empfangen mit irw / Shell-Commands über irexec.lircrc nicht mehr.
2b. Die Voraussetzung für erfolgreiches empfangen abwechselnd mit senden ohne reboot:
Booten mit /boot/confi.txt von 1.:
...
# Uncomment this to enable infrared communication.
dtoverlay=gpio-ir,gpio_pin=17
#dtoverlay=gpio-ir-tx,gpio_pin=18
#dtoverlay=gpio-ir-tx,gpio_pin=27
dtoverlay=pwm-ir-tx
...
Jetzt kann ich erfolgreich empfangen.
In /etc/lirc/lirc_options.conf wird nun die Zeile:
device = /dev/lirc0
geändert in
device = /dev/lirc1
Dann noch ein:
sudo systemctl restart lircd.service
Voila, jetzt kann ich wieder erfolgreich mit irsend senden.
Will ich allerdings wieder empfangen muss ich das ganze wieder auf 0 ändern und einen erneuten lircd restart hinlegen.
Dieses hin- und her ist mir zu aufwändig bzw. zu instabil für einen schnellen Betrieb. Wie kann ich es wirklich parallel realisieren?!?
Ich habe in einigen Beiträgen erfahren, dass es mit Bullseye und LIRC wirklich viele Probleme gibt.
Hier sprechen einige davon, einfach auf Kernel-Lösungen umzusteigen:
https://debianforum.de/forum/viewtopic.php?t=174168
https://www.mess.org/2020/01/2…tools-to-rc-core-tooling/
Das wäre an sich die Lösung. ir-ctl funktioniert bei mir jedoch nicht zuverlässig (siehe oben).
Ich habe es auch mit der Aufnahme von Rohdaten von der Fernsteuerung probiert. Leider ohne Erfolg.
irsend scheint hier eine solidere wenn auch veraltete Lösung zu sein?!?
Ich hoffe das ist alles soweit verständlich und freue mich riesig über eure Ideen/Feedback!