Rock Pi 4 -> IR & Wakeup gelöst

  • Hallo,

    komme aus dem CE Lager mit Amlogic Hardware. Konkret: Odroid N2+ 4GB
    Hier ist IR onboard und wakeup funktioniert fast ootb.

    Jetzt probiere ich LE auf Rockchip Hardware -> Rock Pi 4A
    Wie lässt sich auf einem RockPi 4 IR und Wakeup charmant lösen?

    Aktuell verwende ich FLIRC über usb. Geht IR auch irgendwie über gpio Pins? Oder muss zwingend ein usb Port geopfert werden?
    Würde per IRMP auf STM32 USB-HID Empfänger* mit Wakeup Funktion, eventl. durch brücken gpio Pins, einschalten funktionieren?
    (*Gleicher Ansatz wie Flirc nur können zusätzlich Pins zum einschalten gebrückt werden).
    Alternative wäre einschalten per cec, wenn ich beim Fernseher auf HDMI x schalte, startet der Rock Pi 4 - geht das?

    Mein RockPi 4 hat eine RTC Batterie angeschlossen und läuft unter VDR*Elec (LE12 basierend).
    Im vdr OSD ist nach x Minuten Inaktivität ausschalten konfiguriert. Vdr Timer Wakeup funktioniert soweit. Wahrscheinlich dank RTC Batterie.

    Nur einschalten tue ich immer per Netzteil ab/anstecken. Ok, einfach durchlaufen lassen würde auch gehen ^^

    Wie habt Ihr das gelöst?

    Klick für meine Hardware

    vdr1: Rock Pi 4A 4GB | VDR*ELEC LE12 32GB eMMC | Video: 2TB M.2 | 2x WinTV dualHD (DVB-T2/DVB-C) | IRMP RP2350 (Keyb)
    vdr2: Odroid N2+ 4GB | VDR*ELEC CE21-ng 64GB eMMC | Video über USB: 4TB SATA Rec (XFS) + 8TB SATA Archiv (exFAT) | 2x WinTV dualHD (DVB-T2/DVB-C) | IR OnBoard
    vdr3: HP ProDesk 400 G3 SFF (i3) | NVidia Quadro T400 | 2x 8GB | System: Ubuntu 24.02 LTS, yavdr ansible (vdr 2.7.4) auf 30GB mSATA SSD | Video: 3TB SATA (XFS) | 1x WinTV dualHD | IRMP RP2040 Keyb
    TV: Philips 55OLED805

  • Reicht denn zum Einschalten ein Tast impuls.

    So könnte man einen Raspberry 2040 Zero nehmen

    Wenn der Rock Pi4A an einen GPIO Durch überbrücken zwei Pins eingeschaltet werden kann

    Und der Pi4A nur einen kurzen impuls braucht könnte das einschalten funktionieren. Ausschalten geht ja eh übers Menue

    Evtl. brauchst Du auch nur ein Kabel was vom Zero kommt und an einen richtigen GPIO Port geht.

    Der Zero schalte das Pwr Button Signal als Masse , Minus

    MfG Helmut

    Test_VDR: Lintec Senior - MSI G41M P25 MS7592 Board - Intel P4 E8500 / 775 CPU - MSI GT710 PCI-e passiv - DVBSky S2 952 Dual SAT - 120GB Intenso SSD + Big HDD - 2x2GB DDR3 RAM - LG GH24NSD1 S-ATA DVD - SMK RC6 MCE 50GB FB. an STM32 USB-Arduino - EasyVDR 5 - Softhddevice mit Pulseaudio - Kodi 20.5 m. Confluence Skin
    Clients:Div. Raspberry PI

    Fernbedienungsempfänger: Siehe hier:RP 2040 Zero I.R. Empfänger kompl.

  • IR über GPIO Pin ist Glückspiel, da kein Interrupt zugesichert ist.

    Der PMIC auf dem Rock 4A wird laut Schaltplan von der RTC und von PWR_KEY_L eingeschaltet. PWR_KEY_L ist mit GPIO0_A5/EMMC_PWRON verbunden. Die Frage ist, ob man den auf dem Board abgreifen kann, denn er ist nicht mit dem 40er GPIO Header verbunden. R2117 und D2104 sind mit PWRON auf dem PMIC verbunden, da sollte es gehen. Auf der Components Placement Map von https://radxa.com/products/rock4/4a/#downloads sieht man, wo die sind.

  • Der PMIC auf dem Rock 4A wird laut Schaltplan von der RTC und von PWR_KEY_L eingeschaltet. PWR_KEY_L ist mit GPIO0_A5/EMMC_PWRON verbunden. Die Frage ist, ob man den auf dem Board abgreifen kann, denn er ist nicht mit dem 40er GPIO Header verbunden. R2117 und D2104 sind mit PWRON auf dem PMIC verbunden, da sollte es gehen. Auf der Components Placement Map von https://radxa.com/products/rock4/4a/#downloads sieht man, wo die sind.

    Hey, danke fürs nachschauen und kombinieren. Werde ich umsetzen.

    Waveshare RP2040 One wäre fast startklar. Welchen Pin muss ich mit R2117 oder D2104 verbinden?

    Oder besser erstmal mit einem Taster (von R2117 oder D2104) gegen Masse probieren?

    Klick für meine Hardware

    vdr1: Rock Pi 4A 4GB | VDR*ELEC LE12 32GB eMMC | Video: 2TB M.2 | 2x WinTV dualHD (DVB-T2/DVB-C) | IRMP RP2350 (Keyb)
    vdr2: Odroid N2+ 4GB | VDR*ELEC CE21-ng 64GB eMMC | Video über USB: 4TB SATA Rec (XFS) + 8TB SATA Archiv (exFAT) | 2x WinTV dualHD (DVB-T2/DVB-C) | IR OnBoard
    vdr3: HP ProDesk 400 G3 SFF (i3) | NVidia Quadro T400 | 2x 8GB | System: Ubuntu 24.02 LTS, yavdr ansible (vdr 2.7.4) auf 30GB mSATA SSD | Video: 3TB SATA (XFS) | 1x WinTV dualHD | IRMP RP2040 Keyb
    TV: Philips 55OLED805

    Edited once, last by vdr_rossi (March 30, 2025 at 3:27 PM).

  • Laut Datenblatt vom PMIC RK808 https://rockchip.fr/RK808%20datasheet%20V1.4.pdf Seite 10 wird einfach PWRON auf Masse gezogen. Erstmal Taster, dann WAKEUP_GPIO Pin 27.

  • Vorsichtshalber auch https://www.mikrocontroller.net/articles/IRMP_…fahrene_Bastler beachten. Ist vermutlich nicht nötig, aber sicher ist sicher ;)

  • Der rote Kreis ist um D2104 ? R2117 ist noch kleiner und sehr dicht am Rockchip RK 808-D

    Ist es egal ob am oberen oder unteren Kontakt abgenommen wird? Auf dem Bauteil steht nur S L drauf...
    Erstmal brücke ich per Taster auf Masse (gpio gnd Pin) ?

    Klick für meine Hardware

    vdr1: Rock Pi 4A 4GB | VDR*ELEC LE12 32GB eMMC | Video: 2TB M.2 | 2x WinTV dualHD (DVB-T2/DVB-C) | IRMP RP2350 (Keyb)
    vdr2: Odroid N2+ 4GB | VDR*ELEC CE21-ng 64GB eMMC | Video über USB: 4TB SATA Rec (XFS) + 8TB SATA Archiv (exFAT) | 2x WinTV dualHD (DVB-T2/DVB-C) | IR OnBoard
    vdr3: HP ProDesk 400 G3 SFF (i3) | NVidia Quadro T400 | 2x 8GB | System: Ubuntu 24.02 LTS, yavdr ansible (vdr 2.7.4) auf 30GB mSATA SSD | Video: 3TB SATA (XFS) | 1x WinTV dualHD | IRMP RP2040 Keyb
    TV: Philips 55OLED805

    Edited 2 times, last by vdr_rossi (March 30, 2025 at 7:40 PM).

  • Auf deinem Bild sieht man die Leiterbahn von Pin 51 = PWRON des RK808 durch das Pad vom Widerstand zur Diode. Oben an der Diode ist also mit PWRON verbunden. Da kann man was anlöten, was dann auf Masse gezogen wird. Zur Vorsicht über einen 220 Ohm Widerstand.

  • Ok, weitere Umsetzung wird Ende der Woche bzw. Wochenende passieren.

    Mir ist zwischendurch noch aufgefallen, dass die USB Ports im ausgeschalteten Zustand stromlos sind.
    D.h. RP2040-One muss vom Netzteil (usb-c Port) oder eventl. gpio pins versorgt werden. Usb-c Port könnte schwierig werden, da verschiedenen Spannungen unterstützt werden.
    Es wird hier 5v gebraucht.

    Werde aber erstmal den oberen Pin von D2104 per Taster zu gpio gnd versuchen. Mit 220 Ohm Widerstand.

    Klick für meine Hardware

    vdr1: Rock Pi 4A 4GB | VDR*ELEC LE12 32GB eMMC | Video: 2TB M.2 | 2x WinTV dualHD (DVB-T2/DVB-C) | IRMP RP2350 (Keyb)
    vdr2: Odroid N2+ 4GB | VDR*ELEC CE21-ng 64GB eMMC | Video über USB: 4TB SATA Rec (XFS) + 8TB SATA Archiv (exFAT) | 2x WinTV dualHD (DVB-T2/DVB-C) | IR OnBoard
    vdr3: HP ProDesk 400 G3 SFF (i3) | NVidia Quadro T400 | 2x 8GB | System: Ubuntu 24.02 LTS, yavdr ansible (vdr 2.7.4) auf 30GB mSATA SSD | Video: 3TB SATA (XFS) | 1x WinTV dualHD | IRMP RP2040 Keyb
    TV: Philips 55OLED805

  • Es wird hier 5v gebraucht.

    Kommt drauf an, was für ein Spannungswandler auf dem RP2040-One ist. Wenn aus China, kann das alles mögliche sein, wenn offizielle Version, eher nur einer. Da müsste man mal ins Datenblatt gucken.

  • Bei meinem aufgegebenen Raspberry Pi 5 Projekt, hatten wir ähnliches theoretisch durchgesprochen:

    Deswegen die Idee, es eventl. von gpio abzugreifen.

    Klick für meine Hardware

    vdr1: Rock Pi 4A 4GB | VDR*ELEC LE12 32GB eMMC | Video: 2TB M.2 | 2x WinTV dualHD (DVB-T2/DVB-C) | IRMP RP2350 (Keyb)
    vdr2: Odroid N2+ 4GB | VDR*ELEC CE21-ng 64GB eMMC | Video über USB: 4TB SATA Rec (XFS) + 8TB SATA Archiv (exFAT) | 2x WinTV dualHD (DVB-T2/DVB-C) | IR OnBoard
    vdr3: HP ProDesk 400 G3 SFF (i3) | NVidia Quadro T400 | 2x 8GB | System: Ubuntu 24.02 LTS, yavdr ansible (vdr 2.7.4) auf 30GB mSATA SSD | Video: 3TB SATA (XFS) | 1x WinTV dualHD | IRMP RP2040 Keyb
    TV: Philips 55OLED805

    Edited once, last by vdr_rossi (April 1, 2025 at 7:02 PM).

  • An GPIO Pin 2 + GPIO Pin 4 liegen 5V an, wenn über USB-C mit Power versorgt (siehe Schaltplan S. 3 und S. 16).

    Also einfach den 5V Pin auf dem RP2040 mit GPIO Pin 2 oder GPIO Pin 4 verbinden.

  • Top!

    Also einfach den 5V Pin auf dem RP2040 mit GPIO Pin 2 oder GPIO Pin 4 verbinden.

    Und die Spannungsversorgung über USB Port kann gleichzeitig verbunden sein. Zur Sicherheit messe ich nach, ob zu USB Spannungspin (+) und angegebenen gpio Pins Durchgang ist.

    Klick für meine Hardware

    vdr1: Rock Pi 4A 4GB | VDR*ELEC LE12 32GB eMMC | Video: 2TB M.2 | 2x WinTV dualHD (DVB-T2/DVB-C) | IRMP RP2350 (Keyb)
    vdr2: Odroid N2+ 4GB | VDR*ELEC CE21-ng 64GB eMMC | Video über USB: 4TB SATA Rec (XFS) + 8TB SATA Archiv (exFAT) | 2x WinTV dualHD (DVB-T2/DVB-C) | IR OnBoard
    vdr3: HP ProDesk 400 G3 SFF (i3) | NVidia Quadro T400 | 2x 8GB | System: Ubuntu 24.02 LTS, yavdr ansible (vdr 2.7.4) auf 30GB mSATA SSD | Video: 3TB SATA (XFS) | 1x WinTV dualHD | IRMP RP2040 Keyb
    TV: Philips 55OLED805

  • Zur Sicherheit messe ich nach, ob zu USB Spannungspin (+) und angegebenen gpio Pins Durchgang ist.

    Da sind wohl noch Spannungswandler dazwischen, deswegen eher das: RE: IRMP auf STM32 - ein USB-HID-Keyboard IR Empfänger/Sender/Einschalter mit Wakeup-Timer

  • Wakeup funktioniert!

    USB Kabel zu RP2xxx Platine aufgetrennt, sodass 5v über gpio Pin 2 (Rock Pi 4) auch im ausgeschaltetem Zustand da ist.
    Dann vom RP2xxx gpio 27 ein Kabel (mit 220 Ohm Wiederstand) zur D2104 Diode oben.

    Über angelernten Wakeup Code FB fährt das System hoch :)

    Beim Start (LE Logo Startbildschirm) laufen noch 5-6 Reihen
    ^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@
    ^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@
    durch.

    Aber dann startet vdr.

    Klick für meine Hardware

    vdr1: Rock Pi 4A 4GB | VDR*ELEC LE12 32GB eMMC | Video: 2TB M.2 | 2x WinTV dualHD (DVB-T2/DVB-C) | IRMP RP2350 (Keyb)
    vdr2: Odroid N2+ 4GB | VDR*ELEC CE21-ng 64GB eMMC | Video über USB: 4TB SATA Rec (XFS) + 8TB SATA Archiv (exFAT) | 2x WinTV dualHD (DVB-T2/DVB-C) | IR OnBoard
    vdr3: HP ProDesk 400 G3 SFF (i3) | NVidia Quadro T400 | 2x 8GB | System: Ubuntu 24.02 LTS, yavdr ansible (vdr 2.7.4) auf 30GB mSATA SSD | Video: 3TB SATA (XFS) | 1x WinTV dualHD | IRMP RP2040 Keyb
    TV: Philips 55OLED805

  • vdr_rossi April 19, 2025 at 7:24 PM

    Changed the title of the thread from “Rock Pi 4 -> IR & Wakeup Lösungen?” to “Rock Pi 4 -> IR & Wakeup gelöst”.
  • Super Arbeit, sieht gut aus.

    Schade das es kein direkten GPIO Pin dafür gibt.

    Aber Hauptsache es funktioniert. Gut zu wissen.

    Gruß Helmut

    Test_VDR: Lintec Senior - MSI G41M P25 MS7592 Board - Intel P4 E8500 / 775 CPU - MSI GT710 PCI-e passiv - DVBSky S2 952 Dual SAT - 120GB Intenso SSD + Big HDD - 2x2GB DDR3 RAM - LG GH24NSD1 S-ATA DVD - SMK RC6 MCE 50GB FB. an STM32 USB-Arduino - EasyVDR 5 - Softhddevice mit Pulseaudio - Kodi 20.5 m. Confluence Skin
    Clients:Div. Raspberry PI

    Fernbedienungsempfänger: Siehe hier:RP 2040 Zero I.R. Empfänger kompl.

  • Sehr schön :)

    Beim Start (LE Logo Startbildschirm) laufen noch 5-6 Reihen
    ^@^@^@^...
    durch.

    Innerhalb von 90 Sekunden nach dem Einschalten sendet die Firmware jede Sekunde KEY_REFRESH. Damit kann man bestimmen, ob das Gerät vom Empfänger per Fernbedienung gestartet wurde oder durch einen Timer oder von Hand. Wenn man eine Fernbedienung mit Makros wie die Logitech hat und mit einer Taste nicht nur den VDR sondern auch andere Geräte einschalten will, braucht man das um zu verhindern, dass er ungewollt runterfährt, wenn der VDR bereits läuft, aber man z.B. mit dieser einen Taste den TV etc. einschalten will, siehe https://github.com/j1rie/IRMP_STM…rcd/vdrshutdown und https://github.com/j1rie/IRMP_STM…entlircd#readme (unten).

    Falls diese Zeichen genau einmal pro Sekunde kommen, sind es diese KEY_REFRESH. Bei der Nicht-Keyboard Version ist das unauffälliger. Vermutlich auch, wenn du direkt in VDR startest statt in LE.

  • Innerhalb von 90 Sekunden nach dem Einschalten sendet die Firmware jede Sekunde KEY_REFRESH. Damit kann man bestimmen, ob das Gerät vom Empfänger per Fernbedienung gestartet wurde oder durch einen Timer oder von Hand. Wenn man eine Fernbedienung mit Makros wie die Logitech hat und mit einer Taste nicht nur den VDR sondern auch andere Geräte einschalten will, braucht man das um zu verhindern, dass er ungewollt runterfährt, wenn der VDR bereits läuft, aber man z.B. mit dieser einen Taste den TV etc. einschalten will, siehe https://github.com/j1rie/IRMP_STM…rcd/vdrshutdown und https://github.com/j1rie/IRMP_STM…entlircd#readme (unten).

    Falls diese Zeichen genau einmal pro Sekunde kommen, sind es diese KEY_REFRESH. Bei der Nicht-Keyboard Version ist das unauffälliger. Vermutlich auch, wenn du direkt in VDR startest statt in LE.

    Danke für die Aufklärung. Ja, das werden KEY_REFRESH sein.

    Wie bestimme ich damit womit das Gerät gestartet wurde? Im Nachhinein?
    Das zweite Argument verstehe ich: Also den Zustand, wo man mit einer FB Taste alles einschalten will, kommt man dann "Drücke eine Taste auf der FB um herunterfahren zu verhindern" (sinngemäß) zuvor.

    Sahnehäubchen wird noch die extern RGB-LED werden. Bei geschlossenem Gehäuse ist dann, durch zwei Löcher, nur RGB-LED und IR Sensor minimal sichtbar.

    Klick für meine Hardware

    vdr1: Rock Pi 4A 4GB | VDR*ELEC LE12 32GB eMMC | Video: 2TB M.2 | 2x WinTV dualHD (DVB-T2/DVB-C) | IRMP RP2350 (Keyb)
    vdr2: Odroid N2+ 4GB | VDR*ELEC CE21-ng 64GB eMMC | Video über USB: 4TB SATA Rec (XFS) + 8TB SATA Archiv (exFAT) | 2x WinTV dualHD (DVB-T2/DVB-C) | IR OnBoard
    vdr3: HP ProDesk 400 G3 SFF (i3) | NVidia Quadro T400 | 2x 8GB | System: Ubuntu 24.02 LTS, yavdr ansible (vdr 2.7.4) auf 30GB mSATA SSD | Video: 3TB SATA (XFS) | 1x WinTV dualHD | IRMP RP2040 Keyb
    TV: Philips 55OLED805

Participate now!

Don’t have an account yet? Register yourself now and be a part of our community!