Raspberry PI über CEC steuern

  • Nachdem wir nun schon mal VDR nativ auf dem Raspberry haben, wollte ich auch die FB vom TV benutzen.
    Ich habe diese Anleitung nachträglich zusammen geschrieben. Ich hoffe ich habe nichts vergessen.


    Die Anleitung bezieht sich auf Raspbian. Andere Systeme müssen entsprechend angepasst werden.


    Hier mal eine Anleitung wie man cec auf dem Raspberry zum laufen bekommt:


    1) Download libcec von http://selfprogramming.bplaced.net/?page=downloads


    2) abhängigkeiten vorbereiten

    Code
    sudo apt-get install liblockdev1


    3) install lib

    Code
    sudo dpkg -i libcec_2.1.0-1_armhf.deb


    4) abhängigkeiten für libcec-daemon installieren

    Code
    sudo apt-get install libboost-program-options-dev liblog4cplus-dev


    5) hole libcec-daemon

    Code
    sudo apt-get install git
    git clone git://github.com/bramp/libcec-daemon.git


    6) übersetze libcec-daemon

    Code
    cd libcec-daemon
    make


    7) teste ob der TV erkannt wird

    Code
    sudo ./libcec-daemon -l


    8) teste ob die Tasten gehen

    Code
    sudo ./libcec-daemon -v


    9) libcec-daemon installieren

    Code
    sudo cp libcec-daemon /usr/local/bin/libcec-daemon


    10) trage libcec-daemon so ein das er beim starten automatisch geladen wird.
    Dazu trage folgende Zeile in die Datei /etc/rc.local vor dem exit 0 ein

    Code
    /usr/local/bin/libcec-daemon -d 2>&1 > /dev/null


    11) trage die udev Regel in die folgende Datei ein /etc/udev/rules.d/66-libcec-daemon.rules

    Code
    # udev rule for libcec-daemon input
    
    
    KERNEL=="event*", ATTRS{name}=="libcec-daemon", SYMLINK="input/libcec-daemon", MODE="666"


    (hier wäre ein reboot gut, ansonsten udev neu starten)


    12) vdr remote Plugin installieren

    Code
    sudo apt-get install vdr-plugin-remote


    13) vdr remote plugin konfigurieren
    Trage dazu in die Datei /etc/vdr/plugins/plugin.remote.conf folgendes ein:

    Code
    -i /dev/input/libcec-daemon


    14) Tasten anlernen
    So ab hier wird es etwas kompliziert.
    Das xineliboutput Plugin zeigt leider erst nach dem anlernen der Tasten ein Bild an. Daher wäre das Anlernen daher ein Blindflug.
    Damit wir trotzdem alles sehen können benutzen wir das skincurses.

    Code
    sudo apt-get install vdr-plugin-examples


    Dazu stoppen wir den vdr mit

    Code
    /etc/init.d/vdr stop

    und starten es in der Konsole per Hand

    Code
    sudo vdr -v /var/lib/video.00 -c /var/lib/vdr -L /usr/lib/vdr/plugins -r /usr/lib/vdr/vdr-recordingaction -s /usr/lib/vdr/vdr-shutdown-message -E /var/cache/vdr/epg.data -u vdr -g /tmp --port 6419 --vfat -w 60 -P "xineliboutput --local=none" -P "remote -i /dev/input/libcec-daemon " -P streamdev-client -Pskincurses


    Nun können die Tasten angelernt werden.
    Zum Schluss beenden wir den VDR mit strg+c
    Die Tasten sind nun angelernt und wir können den VDR normal starten.


    Wir können nun die vdr-plugin-examples wieder deinstallieren.

    Code
    sudo apt-get remove vdr-plugin-examples


    Bei mir ist jedoch noch das Porblem das von meinem VDR nur wenige Tasten(5) erkannt werden. Dazu kommt das der libcec nach einer Zeit keine Tasten mehr vom TV erkennt und ich den daemon neu starten muss.


  • Bei mir ist jedoch noch das Porblem das von meinem VDR nur wenige Tasten(5) erkannt werden.

    In irgend einem anderen Thread (bin mir nicht mehr sicher, ob es hier war) wurde mal über libcec-client -type geredet.
    Nur leider finde ich das nicht mehr.



    Viele Grüße
    schneisa

  • Das war sicher im vompclient Forum.


    Danke schon mal für die Anleitung!


    Claus

    MLD 5.5 mit vdr 2.6 - lirc yaUSBir - Octopus NET S2 - SCR - XFX GeForce 9300 mit Intel E3200 - 2GB RAM - WD Green 12TB HDD - SanDisk 64GB SSD - Lian Li PC-C37B - Samsung LE40A559
    MLD 5.5 mit vdr 2.4 - Raspberry Pi 3 - rpihddevice
    MLD 5.5 mit Squeeze Play - Raspberry Pi 2 - 32GB SD - 7" Touch TFT

  • Das war sicher im vompclient Forum.

    Stimmt, das war es. http://forum.loggytronic.com/i…topic=649.msg4167#msg4167


    schneisa

  • Wenn ich das hier mache, dann meldet sich der Raspi beim TV als HDD Recorder.

    Code
    /usr/local/bin/cec-client --type r -s


    Jedoch nach einer Zeit ist es wieder weg. Läuft nicht wirklich stabil das ganze.

  • A can't get the libcec-daemon to be functional when its started as a daemon.


    This is on a Moebius Raspbian installation with minimal packages installed but I experienced the same on a standard Raspbian installation.
    The tests have been executed as root.


    I'm testing the remote using evtest started as:


    # evtest /dev/input/libcec-daemon



    If started with e.g.
    # ./libcec-daemon -vv -d


    The following is the output (with the output redirected to a file)


    TRACE - Main::getCecName()
    INFO - Opened /dev/uinput
    INFO - Created uinput device
    TRACE - Main::Main()
    TRACE - Main::loop()
    TRACE - Cec::open()
    DEBUG - Main::onCecLogMessage(1103 [D]unregistering all CEC clients)
    DEBUG - Main::onCecLogMessage(1106 [D]Broadcast (F): osd name set to 'Broadcast')


    It is like it is not getting a response from the TV.
    When started in non daemon mode it communicates with the TV and finally enters the libcec-daemon event loop indicated by the following on the console/file


    ...
    DEBUG - Main::onCecLogMessage(2738 [D]<< Recorder 1 (1) -> TV (0): vendor id Philips (903e))
    DEBUG - Main::onCecLogMessage(2740 [D]<< Recorder 1 (1) -> TV (0): vendor id feature abort)
    DEBUG - Main::onCecLogMessage(2741 [D]<< transmitting abort message)
    DEBUG - Main::onCecLogMessage(2743 [T]<< 10:00:8c:00)
    DEBUG - Main::onCecLogMessage(2985 [T]>> 01:00:8e:00)
    DEBUG - Main::onCecLogMessage(2986 [D]>> TV (0) -> Recorder 1 (1): feature abort ( 0))
    DEBUG - Main::onCecCommand(Command 0 to 1 0)
    DEBUG - Main::onCecLogMessage(2989 [D]marking opcode 'menu status' as unsupported feature for device 'TV')
    TRACE - Loop
    TRACE - Loop
    TRACE - Loop


    Any ideas?

  • I had the same problem initially. I previously had version 1.8.1-1 of libcec installed since this is the recommended version to use when compiling/running vomp. Since libcec-daemon requires a later version I installed version 2.1.0-1. libcec-daemon then compiled but did give an segmentation fault when executed.


    I then manually removed all libcec packages and reinstalled version 2.1.0-1 and the segfaults was then gone. Cannot be 100% sure that the segfault was due to different versions of the runtime and developer packages but it sure point in that direction.


    ich bekomme nach dem Make nur ein segmentation fault.


    root@raspberrypi:/home/pi/libcec-daemon# ./libcec-daemon -l
    Segmentation fault


    Hat jemand eine Idee ?

  • I can also don't start the libcec-daemon as a daemon. So I start it without the -d option and with an & at the end: "libcec-daemon -q &"


    Claus

    MLD 5.5 mit vdr 2.6 - lirc yaUSBir - Octopus NET S2 - SCR - XFX GeForce 9300 mit Intel E3200 - 2GB RAM - WD Green 12TB HDD - SanDisk 64GB SSD - Lian Li PC-C37B - Samsung LE40A559
    MLD 5.5 mit vdr 2.4 - Raspberry Pi 3 - rpihddevice
    MLD 5.5 mit Squeeze Play - Raspberry Pi 2 - 32GB SD - 7" Touch TFT

  • Moin,
    ich habe gerade mein erste Raspberry bekommen. Openelec drauf. Mein erste versuche übers Fernsehen CEC zu benutzen laufen nicht.
    Wollte mal ein paar verständnis Fragen loswerden. Vielleicht kannst du helfen?
    1. Gibt der Fernseher alle empfangen Codes vom FB weiter über CEC?
    2. Laut beschreibung haben alle HDMI Kabel ein Draht für CEC übertragungen. Wenn mein FS kein CEC Menu anzeigt wenn der Pi an ist,
    kann ich trotzdem davon ausgehen dass der HDMI Kabel nicht schuld ist?
    3. Wie kann ich am PI unter Openelec überhaupt testen ob codes ankommen, wie hier mit ./libcec-daemon -vv -d gezeigt?
    Danke im voraus
    MfG Brian

    Cheers Brian


    Intel Dual Core, Asus P8H67-V, 4GB Ram, Easy VDR 14.04 Headless, 4 Tuner Cine2, Astra 19.2E & Astra 28.2E (BBC), XVDR zu 3 * KODI Clients (2 x Rasb Pi) über XVDR

  • 1) Die TVs geben alle nur bestimmte Knöpfe per CEC weiter
    2) HDMI-Kabel sollte man unbedingt durchprobieren wenns mit einem nicht geht. Ich hab schon welche ohne CEC-Leitung erwischt!
    3) Generell muß man mit dem TV erstmal eine Verbindung hinkriegen und im XBMC wird diese auch sofort unten angezeigt inkl. dem Gerät was verbindet. Wenn die Verbindung steht funktioniert der Spaß eigentlich auch fast immer. Ob bzw wie man das auf der Commandline prüft weiß ich jetzt allerdings nicht..


    Grüsse, PmK

  • Hi,
    danke für die Infos.


    An eine neue Samsung TV geht CEC OK. Ich habe zwei Toshiba TVs die angeblich
    CEC unterstützen, die aber absolut keine CEC menus, bzw, Regza-Link Menus anzeigen, damit
    funktioniert CEC nicht. Am HDMI Kabel lags nicht.
    Ist auch kein Problem ich habe einen Hama MCE FB gekauft und damit funktioniert der PI ganz gut.


    In den XBMC logs sehe ich gar keine unterschiede in der CEC Messages ob an der Samsung oder Toshiba TV angeschlossen.



    MfG Brian

    Cheers Brian


    Intel Dual Core, Asus P8H67-V, 4GB Ram, Easy VDR 14.04 Headless, 4 Tuner Cine2, Astra 19.2E & Astra 28.2E (BBC), XVDR zu 3 * KODI Clients (2 x Rasb Pi) über XVDR

  • Ich hatte einen Tip gelesen, man solle die Diode D14 auslöten. Ist in Rev.2 auch nicht mehr bestückt. Hat bei mir zuerst auch nix gebracht. Dann habe ich CEC durch ein Firmwarereset am TV hinbekommen. War aber nicht dauerhaft. Liegt aber wohl eher am Sony Bravia TV als am RPi.

  • Hab hier Sony kdlz5800 da funktioniert cec mit raspberry rev.2 einwandfrei.

    yavdr 0.61 testing SilverStone GD04S, Intel DH77EB, Intel G1610 CPU, 4GB RAM, Zotac Nvidia GTX-630 ,Corsair 4GB, Be quiet! BN140 System Power7, Samsung 830 SSD
    4 DVB-C Tuner L4M-Flex + Twin CT. Qnap TVS-873 per NFS als Aufnahmefreigabe.Per HDMI an Denon AVR-4300H/LG OLED 65B6D

  • Hi,


    nach dem Abziehen und wieder anstecken, muss die cec Applikation (vompclient, libcec-daemon,...) neu gestartet werden.


    Claus

    MLD 5.5 mit vdr 2.6 - lirc yaUSBir - Octopus NET S2 - SCR - XFX GeForce 9300 mit Intel E3200 - 2GB RAM - WD Green 12TB HDD - SanDisk 64GB SSD - Lian Li PC-C37B - Samsung LE40A559
    MLD 5.5 mit vdr 2.4 - Raspberry Pi 3 - rpihddevice
    MLD 5.5 mit Squeeze Play - Raspberry Pi 2 - 32GB SD - 7" Touch TFT

  • Hallo,


    als kleine Ergänzung noch, falls ihr auch folgenden Fehler bekommt

    Zitat

    libcec-daemon: error while loading shared libraries: libcec.so.2: cannot open ..

    dann folgendes Ausführen:



    Code
    cd /usr/lib/
    sudo ln -s /usr/local/lib/libcec.so.2 ./libcec.so.2


    Mag zwar trivial sein, kann einen (Anfänger) aber erst mal aus den Tritt bringen


    gruss
    rechner

  • MLD hat scheinbar ein paar Probleme einige Dateien zu finden. /usr/bin/libcec-daemon und /usr/bin/cec-client brechen mit Fehlermeldung in der Konsole ab.


    ln -s /opt/vc/lib/libbcm_host.so /usr/lib/libbcm_host.so
    ln -s /opt/vc/lib/libvcos.so /usr/lib/libvcos.so
    ln -s /opt/vc/lib/libvchiq_arm.so /usr/lib/libvchiq_arm.so


    sollte das beheben.

  • Das hier ist eine bessere Lösung

    Code
    LD_LIBRARY_PATH=/opt/vc/lib /usr/bin/libcec-daemon

Jetzt mitmachen!

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