Raspberry PI über CEC steuern
-
-
Hallo!
Nachdem ich hier alles durchgearbeite habe, und nach einigen Stolpersteinen (bootstrap, configure etc) doch mal das "make" funktioniert hat, bekomme ich beim Versuch den Daemon zu starten folgenden Fehler:
./libcec-daemon: error while loading shared libraries: libcec.so.2: cannot open shared object file: No such file or directory
Den vorher genannten Tipp von "rechner" habe ich ausprobiert. Nutzt leider nix.
Die nachflgenden Tipps habe ich nicht verstanden.
Was kann ich noch probieren?
Danke im voraus und Grüße
Niel
-
Ich habe gestern mal versucht, die aktuelle Version von libcec-daemon zu kompilieren. Leider bleibt das make bei main.cpp stehen. Ich habe dann mal 1 Stunde gewartet aber danach war er immer noch nicht fertig.
Probiert habe ich es auf einem akualisierten Raspbian nach der Anleitung hier.
Irgend eine Idee, was da bei mir falsch laufen koennte?
-
Hallo!
Das Problem mit make hatte ich auch. Da war ein Fehler in der main.cpp.
Codeint Main::onCecKeyPress(const cec_user_control_code & keycode) { cec_keypress key = { .keycode=keycode };
habe ich geändert in
Codeint Main::onCecKeyPress(const cec_user_control_code & keycode) { cec_keypress key = { key.keycode=keycode };
Dann lief make durch. Ob das richtig war, kann ich nicht sagen. Es scheint zu funktionieren.
Nachdem ich alles nochmal neu gemacht habe, war auch mein vorher genannter Fehler bezüglich der nicht gefundenen Library weg.
Grüße
Niel
-
Vielen Dank! Das war's.
-
clausmuus
hast Du mal die Version 2.4 von libcec unter raspi ausprobiert?
In mld ist die 2.1 drinnen.Vielleicht gehen da ja ein paar mehr Tasten. Beim Pi und bei LG hat sich ein wenig getan.
https://github.com/Pulse-Eight/libcec/blob/master/ChangeLog
EDIT
Die Versionsnummern sind dort etwas komisch. Mal reden sie von 2.4.1 und mal von 2.1.4. Zahlendreher? -
Hallo,
libcec hat einen Versionsprung gemacht: im Git gibt es schon die Version 2.2.0., als Release fehlt die Version noch. Für den RPI hat sich lt Changelog auch was getan:
Zitat* various Raspberry Pi fixes. credits: @mk01
Ich habe mir die Verson gezogen und erste Tests gemacht. Das TV Gerät war ein nicht mehr ganz tauffrischer Philips (Easylink = CEC), der RPI ein B+. Die Tasten habe ich mit dem libcec-daemon ausgewertet. Der hatte übrigens zwei Compile Fehler, die ich erst korrgieren musste. Was nicht eben für das Programm spricht, aber funktioniert hat es erstaunlicherweise doch.Das Ergebnis ist bisher positiv. Der TV überträgt die alle Tasten mit Ausnahme derer, die der TV für sich nimmt wie z.b der Eingang, Lautstärke, Hauptmenü etc. Wichtige Tasten wie Rot/Grün Channel Up/Down/Power/OK usw kommen an. Leider fehlt die Menütaste/Home auf meiner FB bzw. die TV nimmt sie für sich. Aber evtl kann man das durch Umbiegen anderer Tasten lösen..
Was noch fehlt? Die Weitergabe der Keys an den VDR. Das sehe ich mir demnächst mal an.Grüße
Kurt -
Hi Kurt,
nur leider lässt sich libcec-daemon nicht gegen die neue Version bauen. Und den brauche ich um die cec Signale in Input Events umzusetzen.
Claus
-
-
-
9000H: guter HInweis. Hab ich übersehn.
Noch zwei Bemerkungen zum libcec-daemon.
1) Das Repo https://github.com/bramp/libcec-daemonlibcec-daemon ist schon längere Zeit nicht mehr gewartet worden. Der Fehler ist schon mehrfach gemeldet worden. Es scheint, als ob der Owner das Interesse verloren hat.2) Die Konstruktion: Daemon = CEC-Client - Remote-Plugin - VDR ist etwas umständlich. Besser fände ich es, wenn das Remote-Plugin aufgebohrt oder wenn jemand ein neues RPICEC-Plugin erstellen würde. Das Plugin würde sich einerseits als CEC Client betätigen und andererseits die empfangenen Keys anstatt an uinput an den VDR weitergeben. Damit würde man den Umweg über den externen Prozess vermeiden.
VG
Kurt -
Besser fände ich es, wenn das Remote-Plugin aufgebohrt oder wenn jemand ein neues RPICEC-Plugin erstellen würde. Das Plugin würde sich einerseits als CEC Client betätigen und andererseits die empfangenen Keys anstatt an uinput an den VDR weitergeben. Damit würde man den Umweg über den externen Prozess vermeiden.
Ich habe das auf meiner eigenen Wunschliste. Logistisch ist es wohl am einfachsten, die Funktion ins rpihddevice zu integrieren, da ich die entsprechenden Libraries eh schon anziehe und ein rpicec-plugin alleine irgendwie keinen Sinn macht.Gruss
Thomas -
Das halte ich für eine doofe Idee. Ein reines Input Plugin halte ich für sinnvoller, da dann auch andere Geräte oder der P8-CEC-Adapter davon profitieren.
-
-
Na ja, xbmc z.B. bringt ja auch ne eigene cec Unterstützung mit.
Aber grundsätzlich würde ich auch ne /dev/input Lösung bevorzugen, wenn die denn auch funktionieren würde. libcec-daemon funktioniert ja leider nicht für alle Tasten. Es kommen zwar alle tasten an, diverse Tasten werden aber nicht interpretiert und stehen somit nicht zur Verfügung. Da ich bei dem ganzen Thema nicht so ganz durchblicke, ist es mir auch nicht gelungen diese im libcec-daemon zu aktivieren.Claus
-
....ein rpicec-plugin alleine irgendwie keinen Sinn macht.
full Ack! Eine Integration ins rpihddevice wäre die beste Wahl und auch für den Anwender einfacher, da weniger zu konfigurieren ist (btw: klasse Plugin, läuft hervorragend bei mir).9000H, glotzipapa: wo ist das Problem. Wenn ihr Apps habt, die /dev/input/x brauchen, könnt ihr ja stattdessen den Daemon Prozess nehmen. Die Möglichkeiten schliessen sich ja nicht gegenseitig aus, ausser ihr wolltet gleichzeitig zwei cec clients betreiben. Was ich mir auf nem rpi nicht recht vorstellen kann.
clausmuus: welchen Tasten fehlen dir denn? Bsp? Hatte den Eindruck, das alles wichtige weitergereicht wird.
vg
Kurt -
Als Klassiker fällt mir als erstes die Menü Taste ein. In den Logs ist zu sehen, das diese zum RPI geschickt wird, jedoch wird die nicht vom RPI ausgewertet, sondern vom TV selbst.
Claus
-
Als Klassiker fällt mir als erstes die Menü Taste ein. In den Logs ist zu sehen, das diese zum RPI geschickt wird, jedoch wird die nicht vom RPI ausgewertet, sondern vom TV selbst.
Die Menutaste (und ein paar andere ) kommen bei mir beim RPI nicht an, egal was ich anstelle. Im Log sehe ich sie auch nicht. Test wie folgt
-Philips TV:
- Konfiguration->Einstellungen->Bevorzugte Einstellungen->Easylink->ein,
- Konfiguration->Einstellungen->Bevorzugte Einstellungen->Easylink FB->ein
RPI:
- libcec aus GIT bauen
- Starten CEC Test Client
- Dann Tasten der FB drücken (im Log P+/P-/Power off/Power on )
pi@pi ~ $ cec-client -t r
== using device type 'recording device'
CEC Parser created - libCEC version 2.2.0
no serial port given. trying autodetect:
path: Raspberry Pi
com port: RPIopening a connection to the CEC adapter...
DEBUG: [ 104] unregistering all CEC clients
DEBUG: [ 106] Broadcast (F): osd name set to 'Broadcast'
DEBUG: [ 107] InitHostCEC - vchiq_initialise succeeded
DEBUG: [ 108] InitHostCEC - vchi_initialise succeeded
DEBUG: [ 109] InitHostCEC - vchi_connect succeeded
DEBUG: [ 111] logical address changed to Free use (e)
DEBUG: [ 112] Open - vc_cec initialised
NOTICE: [ 113] connection opened
DEBUG: [ 115] << Broadcast (F) -> TV (0): POLL
DEBUG: [ 116] initiator 'Broadcast' is not supported by the CEC adapter. using 'Free use' instead
TRAFFIC: [ 117] << e0
DEBUG: [ 118] processor thread started
DEBUG: [ 179] >> POLL sent
DEBUG: [ 180] TV (0): device status changed into 'present'
DEBUG: [ 180] << requesting vendor ID of 'TV' (0)
TRAFFIC: [ 181] << e0:8c
TRAFFIC: [ 370] >> 0f:87:00:90:3e
DEBUG: [ 371] >> TV (0) -> Broadcast (F): device vendor id (87)
DEBUG: [ 372] TV (0): vendor = Philips (00903e)
DEBUG: [ 373] expected response received (87: device vendor id)
DEBUG: [ 373] replacing the command handler for device 'TV' (0)
NOTICE: [ 375] registering new CEC client - v2.2.0
DEBUG: [ 376] detecting logical address for type 'recording device'
DEBUG: [ 377] trying logical address 'Recorder 1'
DEBUG: [ 378] << Recorder 1 (1) -> Recorder 1 (1): POLL
TRAFFIC: [ 379] << 11
TRAFFIC: [ 471] << 11
DEBUG: [ 562] >> POLL not sent
DEBUG: [ 563] using logical address 'Recorder 1'
DEBUG: [ 564] Recorder 1 (1): device status changed into 'handled by libCEC'
DEBUG: [ 565] Recorder 1 (1): power status changed from 'unknown' to 'on'
DEBUG: [ 566] Recorder 1 (1): vendor = Pulse Eight (001582)
DEBUG: [ 567] Recorder 1 (1): CEC version 1.4
DEBUG: [ 568] AllocateLogicalAddresses - device '0', type 'recording device', LA '1'
DEBUG: [ 569] logical address changed to Recorder 1 (1)
DEBUG: [ 571] Recorder 1 (1): osd name set to 'CECTester'
DEBUG: [ 572] Recorder 1 (1): menu language set to 'eng'
DEBUG: [ 573] GetPhysicalAddress - physical address = 5000
DEBUG: [ 574] AutodetectPhysicalAddress - autodetected physical address '5000'
DEBUG: [ 575] Recorder 1 (1): physical address changed from ffff to 5000
DEBUG: [ 576] << Recorder 1 (1) -> broadcast (F): physical adddress 5000
TRAFFIC: [ 577] << 1f:84:50:00:01
NOTICE: [ 729] CEC client registered: libCEC version = 2.2.0, client version = 2.2.0, firmware version = 1, logical address(es) = Recorder 1 (1) , physical address: 5.0.0.0, host: armv6l-unknown-linux-gnueabihf, features: 'P8 USB' 'P8 USB detect' 'RPi', git revision: 9be2206, compiled on: Tue Oct 28 21:39:33 UTC 2014 by root@pi on Linux 3.12.28+ (armv6l)
DEBUG: [ 731] Recorder 1 (1): vendor = Philips (00903e)
DEBUG: [ 732] replacing the command handler for device 'Recorder 1' (1)
DEBUG: [ 733] << Recorder 1 (1) -> TV (0): OSD name 'CECTester'
TRAFFIC: [ 734] << 10:47:43:45:43:54:65:73:74:65:72
DEBUG: [ 1035] << requesting power status of 'TV' (0)
TRAFFIC: [ 1036] << 10:8f
TRAFFIC: [ 1188] >> 01:00:47:01
DEBUG: [ 1189] >> TV (0) -> Recorder 1 (1): feature abort ( 0)
TRAFFIC: [ 1270] >> 01:90:00
DEBUG: [ 1271] >> TV (0) -> Recorder 1 (1): report power status (90)
DEBUG: [ 1272] TV (0): power status changed from 'unknown' to 'on'
DEBUG: [ 1273] expected response received (90: report power status)
waiting for input
scan
requesting CEC bus information ...
CEC bus information
===================
device #0: TV
address: 0.0.0.0
active source: no
vendor: Philips
osd string: TV
CEC version: 1.3a
power status: on
language: gerdevice #1: Recorder 1
address: 5.0.0.0
active source: no
vendor: Philips
osd string: CECTester
CEC version: 1.4
power status: on
language: engcurrently active source: unknown (-1)
as
DEBUG: [ 63741] making Recorder 1 (1) the active source
NOTICE: [ 63742] >> source activated: Recorder 1 (1)
DEBUG: [ 63743] sending active source message for 'Recorder 1'
NOTICE: [ 63744] << powering on 'TV' (0)
TRAFFIC: [ 63745] << 10:04
NOTICE: [ 63806] << Recorder 1 (1) -> broadcast (F): active source (5000)
TRAFFIC: [ 63807] << 1f:82:50:00
DEBUG: [ 63929] << Recorder 1 (1) -> TV (0): menu state 'activated'
TRAFFIC: [ 63930] << 10:8e:00
TRAFFIC: [ 64119] >> 01:00:8e:00
DEBUG: [ 64120] >> TV (0) -> Recorder 1 (1): feature abort ( 0)
DEBUG: [ 64122] marking opcode 'menu status' as unsupported feature for device 'TV'
TRAFFIC: [ 69199] >> 01:44:4b
DEBUG: [ 69200] >> TV (0) -> Recorder 1 (1): user control pressed (44)
DEBUG: [ 69201] key pressed: forward (4b)
TRAFFIC: [ 69267] >> 01:8b:4b
DEBUG: [ 69268] >> TV (0) -> Recorder 1 (1): vendor remote button up (8B)
DEBUG: [ 69269] key released: forward (4b)
TRAFFIC: [ 70562] >> 01:44:4c
DEBUG: [ 70563] >> TV (0) -> Recorder 1 (1): user control pressed (44)
DEBUG: [ 70563] key pressed: backward (4c)
TRAFFIC: [ 70629] >> 01:8b:4c
DEBUG: [ 70630] >> TV (0) -> Recorder 1 (1): vendor remote button up (8B)
DEBUG: [ 70631] key released: backward (4c)
TRAFFIC: [ 76712] >> 0f:36
DEBUG: [ 76713] >> TV (0) -> Broadcast (F): standby (36)
DEBUG: [ 76715] TV (0): power status changed from 'on' to 'standby'
DEBUG: [ 94678] GetPhysicalAddress - physical address = 5000
NOTICE: [ 94679] physical address changed to 5000
DEBUG: [ 94679] physical address unchanged (5000)
TRAFFIC: [ 96226] >> 0f:84:00:00:00
DEBUG: [ 96226] >> TV (0) -> Broadcast (F): report physical address (84)
DEBUG: [ 96228] << Recorder 1 (1) -> broadcast (F): physical adddress 5000
TRAFFIC: [ 96229] << 1f:84:50:00:01
DEBUG: [ 96628] GetPhysicalAddress - physical address = 5000
NOTICE: [ 96629] physical address changed to 5000
DEBUG: [ 96630] physical address unchanged (5000)
TRAFFIC: [ 96819] >> 0f:87:00:90:3e
DEBUG: [ 96820] >> TV (0) -> Broadcast (F): device vendor id (87)
DEBUG: [ 96821] TV (0): power status changed from 'standby' to 'on'
DEBUG: [ 96822] << Recorder 1 (1) -> Broadcast (F): vendor id Philips (903e)
TRAFFIC: [ 96823] << 1f:87:00:15:82
TRAFFIC: [ 104762] >> 0f:80:00:00:50:00
DEBUG: [ 104763] >> TV (0) -> Broadcast (F): routing change (80)
DEBUG: [ 104763] Recorder 1 (1) was already marked as active source
NOTICE: [ 104765] >> source activated: Recorder 1 (1)
DEBUG: [ 104766] sending active source message for 'Recorder 1'
NOTICE: [ 104767] << powering on 'TV' (0)
TRAFFIC: [ 104768] << 10:04
NOTICE: [ 104829] << Recorder 1 (1) -> broadcast (F): active source (5000)
TRAFFIC: [ 104830] << 1f:82:50:00
DEBUG: [ 104952] << Recorder 1 (1) -> TV (0): menu state 'activated'
DEBUG: [ 104952] 'menu status' is marked as unsupported feature for device 'TV'
TRAFFIC: [ 105102] >> 01:8c
DEBUG: [ 105103] >> TV (0) -> Recorder 1 (1): give device vendor id (8C)
DEBUG: [ 105103] << Recorder 1 (1) -> TV (0): vendor id Philips (903e)
TRAFFIC: [ 105104] << 1f:87:00:15:82
lad
listing active devices:
logical address 0
logical address 1
q
DEBUG: [ 113404] unregistering all CEC clients
NOTICE: [ 113405] unregistering client: libCEC version = 2.2.0, client version = 2.2.0, firmware version = 1, logical address(es) = Recorder 1 (1) , physical address: 5.0.0.0, host: armv6l-unknown-linux-gnueabihf, features: 'P8 USB' 'P8 USB detect' 'RPi', git revision: 9be2206, compiled on: Tue Oct 28 21:39:33 UTC 2014 by root@pi on Linux 3.12.28+ (armv6l)
DEBUG: [ 113407] Recorder 1 (1): power status changed from 'on' to 'unknown'
DEBUG: [ 113408] Recorder 1 (1): vendor = Unknown (000000)
DEBUG: [ 113408] Recorder 1 (1): CEC version unknown
DEBUG: [ 113409] Recorder 1 (1): osd name set to 'Recorder 1'
DEBUG: [ 113410] marking Recorder 1 (1) as inactive source
DEBUG: [ 113411] Recorder 1 (1): device status changed into 'unknown'
DEBUG: [ 113412] unregistering all CEC clients
DEBUG: [ 114138] UnregisterLogicalAddress - releasing previous logical address
DEBUG: [ 114139] logical address changed to Broadcast (f)
Ich sehe (bei diesem TV) keine Chance, an die M Taste ran zu kommen.
VG
Kurt -
Hi,
fuer ganz harte Faelle gibt es ja auch noch combokeys.
CEC supports combo keys.
Context Menu = > Stop + play key pressed one after other
Back = > Stop + select (OK) key pressed one after other.
Home => Stop + pause key pressed one after other.CU
9000h
Jetzt mitmachen!
Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!