CEC und IRMP auf STM32 - ein USB IR Empfänger/Sender/Einschalter mit Wakeup-Timer

  • So sieht das bei mir aus - ist während der Testphase noch so gebaut dass ich es an- und abstecken kann. Wird später in den Mini-PC eingebaut:


    [Blockierte Grafik: https://preview.ibb.co/cNcuZQ/imageedit_9_8816608924.jpg]

    [Blockierte Grafik: https://preview.ibb.co/mKV3Tk/imageedit_17_6450872339.jpg]


    Das Board gibt es für kleines Geld, und kein separater USB-RS232-Wandler nötig - und keine FW-Änderung


    Z.B. hier:

    http://eu.mouser.com/search/Pr…y0virtualkeyNUCLEO-F042K6

  • mouser.de will 20 € Porto.

    Gibt es den irgendwo tatsächlich für kleines Geld?

    Mouser verschickt portofrei bei >50€, also Sammelbestellung oder warten bis man genug sonstiges zum Mitbestellen hat. Ansonsten, Google ist dein Freund. Bei RS Components ist das Verschicken wohl deutlich günstiger.

  • Nun ja, nachdem ich mich da extra angemeldet habe die Ernüchterung: 9,50 € Porto und erst in einem Monat lieferbar.

    Freund Google findet auch nichts günstigeres als aliexpress.

    War wohl nichts mit "für kleines Geld".

    Außer jemand hat Lust, eine Sammelbestellung zu organisieren.

    Falls per PN 4 Stück zusammen kommen, würde ich das machen.

    Der Preis wäre dann der Mouser-Preis plus das Porto, das ich zahle.


    Falls jemand sowieso was bei Mouser bestellt, und mir zwei schicken würde, hätte ich auch Interesse.

  • Die Portokosten habe ich ohne Anmeldung auch gesehen. Weniger als die Hälfte ist "deutlich günstiger" weiss also nicht warum du maulst. Vielleicht haben wir unterschiedliche Vorstellungen von "klein", das kann ja sein, aber bei einem Monat Lieferzeit sich beschweren und dann aliexpress zu erwähnen das geht nicht zusammen. Wenn du Google *richtig* benutzt hättest hättest du mindestens noch develectro.com (ca. 20 EUR inkl.) und Rutronik finden müssen. So, genug Händchen gehalten...

  • Preise um die 20 € sind nicht neu und sind mir immer noch zu teuer.

    Insofern verstehe ich unter "kleines Geld" tatsächlich etwas anderes.

  • ich habe das mal mit einem nucleo aufgebaut, funktioniert im Prinzip auch, d.h. ich kann über ein Terminal Kommandos schicken und er zeigt mir auch CEC-Daten an. Nur Kodi kann ihn nicht erkennen (läuft alles unter Ubuntu 16). Das Tool 'cec-client' kann mit dem Adapter ebenfalls nichts anfangen.


    Wo muss ich jetzt noch "drehen"? Muss ich die libcec und cec-tools vom System runterwerfen und durch eine "händisch" erzeugte libcec (rainshadow-Branch) ersetzen? Geht dann automatisch auch Kodi? Und die cec-tools?

    Jetzt beantworte ich das mal selber, weil ein bischen Gefrickel ist dabei. Dies ist für Debian-basierte Distributionen wie Ubuntu mit dem Ziel das als "ordentliche" Pakete zu installieren. Falls beim Bauen irgendetwas fehlt wird man freundlich darauf hingewiesen und muss nachinstallieren. Erstmal alle Standardpakete die mit CEC zu tun haben, entfernen, insbesondere libcec und cec-tools. Dann den rainshadow-Branch von libcec in einem Entwicklungsverzeichnis klonen:

    Code
    git clone -b rainshadow https://github.com/gdachs/libcec.git

    In ./libcec/debian/rules mit einem Texteditor die Option -DHAVE_RAINSHADOW_API=1 anfügen so dass das so aussieht:

    Code
     override_dh_auto_configure:
         cmake -DCMAKE_BUILD_TYPE=Release -DBUILD_SHARED_LIBS=1 -DCMAKE_INSTALL_PREFIX=/usr -DHAVE_RAINSHADOW_API=1

    Dann die Pakete (fast) nach Anleitung bauen mit:

    Code
    cd libcec
    source /etc/lsb-release
    sed "s/#DIST#/${DISTRIB_CODENAME}/g" debian/changelog.in > debian/changelog
    dpkg-buildpackage -uc -us

    Ohne die Optionen -uc und -us versucht er signierte Pakete zu erzeugen, was bei mir nicht gefunzt hat und braucht man eh nicht wenn es nur für einen selber ist. Wenn das erfolgreich durchgelaufen ist hat man in ../ die .deb-Pakete die man dann ganz normal mit "dpkg -i <packet.deb>" installieren kann.


    So, "cec-client -l" erkennt mir jetzt den Adapter, und "cec-client -m" zeigt mir alle Kommunikation die so stattfindet an. Allerdings macht Kodi nichts damit (kein vorhander Eintrag in System -> Settings -> System -> Input Devices -> Peripherals -> CEC adapter) und in "cec-client -m" scheint die Kommunikation nur zum Teil dekodiert zu werden. Hier z.B. der Start mit einmal "up" und "down" gedrückt auf der Fernbedienung:

    "Up" war wohl " das Paket "51:44:01" und "down" war "51:44:02". Also es geht schon was, aber es klemmt noch irgendwo. Kennt sich jemand mit den Tiefen des CEC-Protokolls aus?


    Edit: Es scheint an der Version von Kodi zu liegen die bei Ubuntu 16 dabei ist. Nachdem ich Krypton installiert habe wird CEC erkannt und soweit ich das sehen kann funzt alles.

  • Muss ich die libcec und cec-tools vom System runterwerfen und durch eine "händisch" erzeugte libcec (rainshadow-Branch) ersetzen? Geht dann automatisch auch Kodi? Und die cec-tools?

    Genau


    HP Proliant MicroServer Gen8, Xeon E3-1230, 12 GB RAM, 3xWD red 2TB im RAID 5, 2xSundtek MediaTV Home DVB-C/T, L4M TWIN-C/T, Ubuntu Server 14.04.1, Plex Media Server
    Samsung UE55H6470

  • Die libcec auszutauschen ist vermutlich nicht jedermanns Sache. Daher meine Frage hierzu:

    Das Rainshadow-Protokoll hat den Vorteil, dass es wohl ab Kernel 4.12 direkt vom neuen CEC-Framework unterstützt wird. Da braucht es dann theoretisch auch die libCEC nicht mehr.

    Wie sieht das denn mittlerweile in der Praxis aus? Reicht der Kernel-Support? Oder braucht man die libcec doch?

    Was geht mit dem Kernel-Support und was nicht?

  • Die libcec auszutauschen ist vermutlich nicht jedermanns Sache. Daher meine Frage hierzu:

    Wie sieht das denn mittlerweile in der Praxis aus? Reicht der Kernel-Support? Oder braucht man die libcec doch?

    Was geht mit dem Kernel-Support und was nicht?

    Selbst Ubuntu 17.4 hat nur Kernel 4.10, d.h. z.Zt. noch entweder Kernel oder libcec austauschen. Von den beiden Optionen ist libcec austauschen deutlich einfacher.

  • Die libcec auszutauschen ist vermutlich nicht jedermanns Sache. Daher meine Frage hierzu:

    Wie sieht das denn mittlerweile in der Praxis aus? Reicht der Kernel-Support? Oder braucht man die libcec doch?

    Was geht mit dem Kernel-Support und was nicht?

    Na ja, erstmal geht gar nichts. Ich schrieb ja "theoretisch". Man muss dann nur noch der Userspace Application, z.B. Kodi, beibringen, statt der Libcec direkt den Kernel zu benutzen.


    HP Proliant MicroServer Gen8, Xeon E3-1230, 12 GB RAM, 3xWD red 2TB im RAID 5, 2xSundtek MediaTV Home DVB-C/T, L4M TWIN-C/T, Ubuntu Server 14.04.1, Plex Media Server
    Samsung UE55H6470

  • Dann wäre es ja wünschenswert, deine Rainshadow Erweiterung upstream in die Haupt libcec zu bekommen.

    Hast du schon mal einen Pull-Request oder so gemacht?

  • Also ich habe das jetzt eine Weile im Einsatz. Und ICH bin nicht zu kritisch aber der WAF is (noch) zu niedrig! Bei mir hängt der Adapter an einem always-on Media Center PC. Der TV und AVR sind aber (hart) ausgeschaltet, wenn nicht im Einsatz. Wenn man nach einigen Stunden TV und AVR wieder einschaltet, geht CEC meistens nicht mehr. Manchmal "fängt" er sich nach einigen Minuten wieder manchmal aber auch nicht, meistens zeigt der AVR dann auch nicht mehr "Kodi" an sondern "Internal gfx" (das ist der "default").

    Was mir aufgefallen ist, ist dass der TV anders als z.B. einen RasPi mit OE oder LE, den Adapter nicht als eigenes Gerät erkennt, er taucht nach einem CEC-Suchlauf nicht in der Geräteliste auf. M.E. könnte das damit zu tun haben.

    Irgendeine Idee?

  • Dann wäre es ja wünschenswert, deine Rainshadow Erweiterung upstream in die Haupt libcec zu bekommen.

    Hast du schon mal einen Pull-Request oder so gemacht?

    Nö, habe ich auch nicht vor. Beim Opdenkamp, dem Maintainer, von libcec, läuft nichts unter einem halben Jahr Reaktionszeit. Das weiß ich aus eigener Erfahrung, die LibCEC-Erweiterungen für Amlogic sind ja von mir.


    Die LibCEC hat sich sowieso mittelfristig, zumindest auf Linux, erledigt. Mein Kumpel Hans Verkuil hat die Treiber sowieso alle schon im CEC-Framework im Linux-Kernel. Der Rainshadow ist glaube ich seit Kernel 4.13 drin.


    Natürlich fehlt da dann noch die Userspace-Anbindung, aktuell benutzt noch keine Anwendung das CEC-Framework. Ich habe mal angefangen Kodi für LibreELEC

    ans CEC-Framework anzubinden, aber im Moment fehlen mir Zeit und Motivation da weiterzumachen.


    Ich selbst habe eben einfach keinen Bedarf. Mein Odroid-C2 läuft zu gut und ist absolut Familientauglich.


    Gerald


    HP Proliant MicroServer Gen8, Xeon E3-1230, 12 GB RAM, 3xWD red 2TB im RAID 5, 2xSundtek MediaTV Home DVB-C/T, L4M TWIN-C/T, Ubuntu Server 14.04.1, Plex Media Server
    Samsung UE55H6470

  • Was mir aufgefallen ist, ist dass der TV anders als z.B. einen RasPi mit OE oder LE, den Adapter nicht als eigenes Gerät erkennt, er taucht nach einem CEC-Suchlauf nicht in der Geräteliste auf

    Du könntest newbrain's Firmware (siehe #31) probieren:

    Zitat

    The physical address is preprogrammed, and a pushbutton can be used to change it.

    Läuft mit Standard libcec.

Jetzt mitmachen!

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