[ANNOUNCE] CEC Remote Plugin 1.3.1

  • Nebenbei frage ich mich aber auch wieso das BaseDevice und der HDMIPort überhaupt gesetzt werden müssen.


    Ich hätte jetzt auch vermutet dass das automatisch gesetzt wird. Kannst du mal die Logs vom VDR-Start posten?

    VDR 2.6.5 Kodi 18.6-Leia
    Debian GNU/Linux 12, Thermaltake DH102, ASUS PRIME N100I-D, CineS2 V6.5.
    Plugins:
    radio v1.1.0-6-g468280f , trayopenng 1.0.2, fritzbox 1.5.3, cdplayer 1.2.4, femon v2.4.0-GIT-d366856, menuorg 0.5.2, extrecmenung v2.0.4, streamdev-server v0.6.3, cecremote 1.5.0, osd2web 0.3.2, softhddevice v2.0.6-GIT97e825d

  • Hab genau das gleiche Problem. TV [0.0.0.0] (HDMI1, IN) hängt am HDMI (OUT) des Yamaha AV-Receiver [1.0.0.0]. Der VDR [ebenfals 1.0.0.0 ??] am HDMI1 (IN) des AV-Receivers. Da Receiver und VDR die gleiche physikalische Adresse bekommen [1.0.0.0], klappt das Ein-, Aus-, und/oder Umschalten so nicht. Erschwerend kommt noch hinzu, dass sich der FireTV-Stick [1.4.0.0] am HDMI4 (IN) des AV-Receivers grundsätzlich vordrängelt, sofern letzterer eingeschaltet wird. Die physikalische Adressierung der Geräte ist sowohl bei ON, als auch OFF (Standby Durchleitung) des AV-Receivers gleich.


    Direkt am HDMI2 (IN) des TVs angeschlossen, funktioniert der CEC-Adapter des VDRs wie angedacht.


    BaseDevice und HDMI-Port sollten für solche Fälle konfigurierbar sein, sonst lässt sich das Plugin nicht sinnvoll verwenden.


    Gruß
    iNOB

  • BaseDevice und HDMI-Port sollten für solche Fälle konfigurierbar sein, sonst lässt sich das Plugin nicht sinnvoll verwenden.


    In meinem git-repository gibt es einen neuen Commit, der baseDevice noch etwas anders initialisiert. Probiert mal aus, ob das so eventuell mit dem Autoconfig funktioniert. Ansonsten gibt es mit dem Commit noch die neue Option <basedevice> in <global>.

    Code
    <global>
      <basedevice>1</basedevice>
      ...

    VDR 2.6.5 Kodi 18.6-Leia
    Debian GNU/Linux 12, Thermaltake DH102, ASUS PRIME N100I-D, CineS2 V6.5.
    Plugins:
    radio v1.1.0-6-g468280f , trayopenng 1.0.2, fritzbox 1.5.3, cdplayer 1.2.4, femon v2.4.0-GIT-d366856, menuorg 0.5.2, extrecmenung v2.0.4, streamdev-server v0.6.3, cecremote 1.5.0, osd2web 0.3.2, softhddevice v2.0.6-GIT97e825d

  • Wozu ist dieser Abschnitt eigentlich notwendig?

    Code
    if (mHDMIPort != CEC_DEFAULT_HDMI_PORT) {
              mCECAdapter->SetHDMIPort(CECDEVICE_TV, mHDMIPort);
         }


    Könnte das nicht entfernt werden? Falls nicht muss der erste Parameter vermutlich auf das BaseDevice gesetzt werden.

  • Ich habs nun getestet. Ohne den Abschnitt aus dem obigen Post funktionierts!


    Beim initialisieren kommen aber einige Fehlermeldungen wie diese:

    Code
    [cecremote] CEC WARNING:  HIGH_ERROR line:189 time:1512


    Die Autodetection funktioniert auch nicht, aber ich glaube das Problem liegt auch eher woanders. Beim cec-client funktioniert auch keine Autodetection. Es wird nicht mal etwas dazu im Debug ausgegeben. Obwohl Google zig Logs mit Autodetection (der physikalischen Adresse) findet. Z.b. :

    Code
    DEBUG: [ 733] AutodetectPhysicalAddress - autodetected physical address '1100'


    Das kommt bei mir gar nicht?!?


    Danke auf jeden Fall für den schnellen Fix. Wäre super wenn du dir die SetHDMIPort Geschichte nochmal anschauen könntest. :)

  • Wozu ist dieser Abschnitt eigentlich notwendig?


    Den braucht man für die Autodetection. Ich setzte den hdmi port nur dann, wenn das auch so konfiguriert wurde.

    VDR 2.6.5 Kodi 18.6-Leia
    Debian GNU/Linux 12, Thermaltake DH102, ASUS PRIME N100I-D, CineS2 V6.5.
    Plugins:
    radio v1.1.0-6-g468280f , trayopenng 1.0.2, fritzbox 1.5.3, cdplayer 1.2.4, femon v2.4.0-GIT-d366856, menuorg 0.5.2, extrecmenung v2.0.4, streamdev-server v0.6.3, cecremote 1.5.0, osd2web 0.3.2, softhddevice v2.0.6-GIT97e825d

  • Ich habs nun getestet. Ohne den Abschnitt aus dem obigen Post funktionierts!


    Dann hast du bei dir den hdmi port in der cecremote.xml konfiguriert. Das überschreibt dann natürlich die Autodetection. Poste doch mal ein paar Logs, je nach Distribution entweder via "journalctl | grep cecremote" oder "grep cecremote /var/log/messages".

    Beim cec-client funktioniert auch keine Autodetection


    Frage deswegen doch mal direkt bei https://github.com/Pulse-Eight/libcec.

    VDR 2.6.5 Kodi 18.6-Leia
    Debian GNU/Linux 12, Thermaltake DH102, ASUS PRIME N100I-D, CineS2 V6.5.
    Plugins:
    radio v1.1.0-6-g468280f , trayopenng 1.0.2, fritzbox 1.5.3, cdplayer 1.2.4, femon v2.4.0-GIT-d366856, menuorg 0.5.2, extrecmenung v2.0.4, streamdev-server v0.6.3, cecremote 1.5.0, osd2web 0.3.2, softhddevice v2.0.6-GIT97e825d

  • Bei mir hängt der VDR am HDMIPort 3 des AVReceivers (logical address 5, physical address 2000).
    Der VDR sollte also die physical address 2300 bekommen.
    Wenn ich hdmip/[ort=3 und basedevice=5 setze, dann wird alles korrekt initialisiert, da du die beiden Werte ja schon vor dem Initialisieren in die cec_configuration schreibst:

    Code
    mCECConfig.iHDMIPort = mHDMIPort;
        mCECConfig.baseDevice = mBaseDevice;


    Der VDR bekommt also direkt beim Initialisieren die korrekte physikalische Adresse 2300.
    Beim Aufruf von

    Code
    mCECAdapter->SetHDMIPort(CECDEVICE_TV, mHDMIPort);

    wird dann aber der HDMI-Port erneut auf 3 und das BaseDevice auf 0 (=CECDEVICE_TV, der erste Parameter) gesetzt. Dadurch bekommt der VDR die falsche physikalische Adresse 3000 (=3. HDMI Port am TV). Das SetHDMIPort muss meiner Meinung nach überhaupt nicht aufgerufen werden.


    Log mit SetHDMIPort und mit BaseDevice=5, HDMIPort=3:


    Log mit SetHDMIPort und ohne Konfiguration von BaseDevice und HDMIPort. Die physikalische Adresse wird auf die zuletzt benutze Adresse (aus dem eeprom) gesetzt:


    Log ohne SetHDMIPort und mit BaseDevice=5, HDMIPort=3:

  • wird dann aber der HDMI-Port erneut auf 3 und das BaseDevice auf 0 (=CECDEVICE_TV, der erste Parameter) gesetzt. Dadurch bekommt der VDR die falsche physikalische Adresse 3000 (=3. HDMI Port am TV). Das SetHDMIPort muss meiner Meinung nach überhaupt nicht aufgerufen werden.


    Ok, ich hatte Tomaten auf den Augen. Ich nehme das dann raus.

    VDR 2.6.5 Kodi 18.6-Leia
    Debian GNU/Linux 12, Thermaltake DH102, ASUS PRIME N100I-D, CineS2 V6.5.
    Plugins:
    radio v1.1.0-6-g468280f , trayopenng 1.0.2, fritzbox 1.5.3, cdplayer 1.2.4, femon v2.4.0-GIT-d366856, menuorg 0.5.2, extrecmenung v2.0.4, streamdev-server v0.6.3, cecremote 1.5.0, osd2web 0.3.2, softhddevice v2.0.6-GIT97e825d

  • Einen hab ich noch:
    Wenn der VDR durch einen Timer aufwacht wird bei mir trotzdem ein "manual start" detektiert:

    Code
    Jan 10 17:53:19 htpc vdr: [cecremote] Next Wakeup 1452445080
    Jan 10 17:53:19 htpc vdr: [cecremote] manual start


    Der Timestamp für das Wakeup war also 16:58 UTC, also 17:58 Uhr lokal. Also knapp 300 Sekunden in der Zukunft.


    Den Code verstehe ich auch nicht ganz.

    Code
    106         // 600 comes from vdr's MANUALSTART constant in vdr.c
     107         if ((abs(Setup.NextWakeupTime) - time(NULL)) > 600) {
     108             mStartManually = false;
     109         }


    Ich verstehe das so, dass ein Timer-Start angenommen wird, wenn der nächste Wakeup mehr als 10 Minuten in der Zukunft liegt? Ist das nicht genau falschrum?

  • Ich verstehe das so, dass ein Timer-Start angenommen wird, wenn der nächste Wakeup mehr als 10 Minuten in der Zukunft liegt? Ist das nicht genau falschrum?


    Fast, ein automatischer Start wird dann angenommen, wenn der Wakeup außerhalb des Zeitraums von ±10 Minuten liegt.

    VDR 2.6.5 Kodi 18.6-Leia
    Debian GNU/Linux 12, Thermaltake DH102, ASUS PRIME N100I-D, CineS2 V6.5.
    Plugins:
    radio v1.1.0-6-g468280f , trayopenng 1.0.2, fritzbox 1.5.3, cdplayer 1.2.4, femon v2.4.0-GIT-d366856, menuorg 0.5.2, extrecmenung v2.0.4, streamdev-server v0.6.3, cecremote 1.5.0, osd2web 0.3.2, softhddevice v2.0.6-GIT97e825d

  • Warum? Ein automatischer Start wenn kein Timer in der Nähe liegt?


    Du hast mal wieder recht. Ich sollte immer noch mal lesen, was ich schreibe :O (Januar ist für mich immer Zeitmäßig eine schlechte Zeit um am VDR zu basteln). Ich checke demnächst eine Korrektur ein.

    VDR 2.6.5 Kodi 18.6-Leia
    Debian GNU/Linux 12, Thermaltake DH102, ASUS PRIME N100I-D, CineS2 V6.5.
    Plugins:
    radio v1.1.0-6-g468280f , trayopenng 1.0.2, fritzbox 1.5.3, cdplayer 1.2.4, femon v2.4.0-GIT-d366856, menuorg 0.5.2, extrecmenung v2.0.4, streamdev-server v0.6.3, cecremote 1.5.0, osd2web 0.3.2, softhddevice v2.0.6-GIT97e825d

  • Ist vielleicht ein wenig "brute force", aber funktioniert bestens sowohl für Blueray als auch für mein AppleTV.
    Möchtest du das als (configurierbare) Option in deinen Code übernehmen? Der WAF wird es dir danken :)


    So nachdem ich am Wochenende endlich mal wieder etwas Zeit übrig hatte, habe ich ein neues Tag <onceccommand> eingeführt, mit dem man für CEC-Kommandos Aktionen definieren kann. Interessierte können sich die aktuelle Entwicklerversion aus meinem Git ziehen.


    Ein <onceccommand> Kommando sieht dann z.B. folgendermaßen aus, wenn b.B der TV abgeschaltet wird:



    Hier mal noch eine Kurzbeschreibung aus dem Readme:

    VDR 2.6.5 Kodi 18.6-Leia
    Debian GNU/Linux 12, Thermaltake DH102, ASUS PRIME N100I-D, CineS2 V6.5.
    Plugins:
    radio v1.1.0-6-g468280f , trayopenng 1.0.2, fritzbox 1.5.3, cdplayer 1.2.4, femon v2.4.0-GIT-d366856, menuorg 0.5.2, extrecmenung v2.0.4, streamdev-server v0.6.3, cecremote 1.5.0, osd2web 0.3.2, softhddevice v2.0.6-GIT97e825d

  • Hi Uli,


    tolles neues Feature! Ich denke, ich kann das gut brauchen, denn mein Samsung TV schaltet nicht mehr auf HDMI3-CEC, sondern nur auf HDMI3, wenn ich eine SMART-TV-Funktion beende. In dem Moment will ich den VDR wieder aktiv melden, also ein <makeactive/> senden.


    Das Log sieht dann so aus:



    Apr 23 18:46:38 SumClient vdr: [cecremote] CEC Command 130 : active source Init 0 Dest 15
    Apr 23 18:46:38 SumClient vdr: [cecremote] cCECRemote::PushCmd 13 (size 0)
    Apr 23 18:46:38 SumClient vdr: [cecremote] Signal
    Apr 23 18:46:38 SumClient vdr: [cecremote] (-1) Action 13 Val -1 Phys Addr 0 Logical ffffffff ffffffff Op 130
    Apr 23 18:46:38 SumClient vdr: [cecremote] cCECRemote command 130
    Apr 23 18:46:38 SumClient vdr: [cecremote] CEC NOTICE: >> source deactivated: Recorder 1 (1)
    Apr 23 18:46:39 SumClient vdr: [cecremote] CEC Command 128 : routing change Init 0 Dest 15
    Apr 23 18:46:39 SumClient vdr: [cecremote] cCECRemote::PushCmd 13 (size 0)
    Apr 23 18:46:39 SumClient vdr: [cecremote] Signal
    Apr 23 18:46:39 SumClient vdr: [cecremote] (-1) Action 13 Val -1 Phys Addr 0 Logical ffffffff ffffffff Op 128
    Apr 23 18:46:39 SumClient vdr: [cecremote] cCECRemote command 128
    Apr 23 18:46:39 SumClient vdr: [cecremote] CEC Command 132 : report physical address Init 5 Dest 15
    Apr 23 18:46:39 SumClient vdr: [cecremote] cCECRemote::PushCmd 13 (size 0)
    Apr 23 18:46:39 SumClient vdr: [cecremote] Signal
    Apr 23 18:46:39 SumClient vdr: [cecremote] (-1) Action 13 Val -1 Phys Addr 0 Logical ffffffff ffffffff Op 132
    Apr 23 18:46:39 SumClient vdr: [cecremote] cCECRemote command 132
    Apr 23 18:46:39 SumClient vdr: [cecremote] CEC Command 114 : set system audio mode Init 5 Dest 15
    Apr 23 18:46:39 SumClient vdr: [cecremote] cCECRemote::PushCmd 13 (size 0)
    Apr 23 18:46:39 SumClient vdr: [cecremote] Signal
    Apr 23 18:46:39 SumClient vdr: [cecremote] (-1) Action 13 Val -1 Phys Addr 0 Logical ffffffff ffffffff Op 114
    Apr 23 18:46:39 SumClient vdr: [cecremote] cCECRemote command 114
    Apr 23 18:46:39 SumClient vdr: [cecremote] CEC Command 114 : set system audio mode Init 5 Dest 15
    Apr 23 18:46:39 SumClient vdr: [cecremote] cCECRemote::PushCmd 13 (size 0)
    Apr 23 18:46:39 SumClient vdr: [cecremote] Signal
    Apr 23 18:46:39 SumClient vdr: [cecremote] (-1) Action 13 Val -1 Phys Addr 0 Logical ffffffff ffffffff Op 114
    Apr 23 18:46:39 SumClient vdr: [cecremote] cCECRemote command 114
    Apr 23 18:46:58 SumClient vdr: [cecremote] CEC Command 128 : routing change Init 0 Dest 15
    Apr 23 18:46:58 SumClient vdr: [cecremote] cCECRemote::PushCmd 13 (size 0)
    Apr 23 18:46:58 SumClient vdr: [cecremote] Signal
    Apr 23 18:46:58 SumClient vdr: [cecremote] (-1) Action 13 Val -1 Phys Addr 0 Logical ffffffff ffffffff Op 128
    Apr 23 18:46:58 SumClient vdr: [cecremote] cCECRemote command 128
    Apr 23 18:46:58 SumClient vdr: [cecremote] CEC Command 129 : routing information Init 5 Dest 15
    Apr 23 18:46:58 SumClient vdr: [cecremote] cCECRemote::PushCmd 13 (size 0)
    Apr 23 18:46:58 SumClient vdr: [cecremote] Signal
    Apr 23 18:46:58 SumClient vdr: [cecremote] (-1) Action 13 Val -1 Phys Addr 0 Logical ffffffff ffffffff Op 129
    Apr 23 18:46:58 SumClient vdr: [cecremote] cCECRemote command 129


    Ich habe mir das dann so gedacht:


    <!-- wenn am TV die SMART-Funktion beendet wird und auf HDMI3 ohne CEC geschaltet wird -->
    <onceccommand command="129" initiator="TV">
    <!-- command queue -->
    <commandlist>
    <makeactive/>
    </commandlist>
    </onceccommand>




    Funktioniert aber nicht, ist das Command mit der Nummer 129 nicht korrekt?


    Danke und Gruß,
    Summitman

  • Funktioniert aber nicht, ist das Command mit der Nummer 129 nicht korrekt?


    Das sieht eher so aus, als würde das Plugin die Commandlist nicht ausführen. Kannst du bitte mal noch den Teil des Logs posten, wo nach dem VDR-Start das Plugin initialisiert wird.

    VDR 2.6.5 Kodi 18.6-Leia
    Debian GNU/Linux 12, Thermaltake DH102, ASUS PRIME N100I-D, CineS2 V6.5.
    Plugins:
    radio v1.1.0-6-g468280f , trayopenng 1.0.2, fritzbox 1.5.3, cdplayer 1.2.4, femon v2.4.0-GIT-d366856, menuorg 0.5.2, extrecmenung v2.0.4, streamdev-server v0.6.3, cecremote 1.5.0, osd2web 0.3.2, softhddevice v2.0.6-GIT97e825d

Jetzt mitmachen!

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