Giter Club home page Giter Club logo

libcec-daemon's Introduction

libcec-daemon

A simple daemon to connect libcec to uinput. That is, using your TV to control your PC! by Andrew Brampton

Licence

Currently under the GPL, but only because libcec (on which we depend) is under the GPL. I have full intentions to relicence this project as BSD when libcec changes to either LGPL, or I do not need to depend on it anymore.

Build

  • Checkout the main source
git clone git://github.com/bramp/libcec-daemon.git
  • Now we need some buildtools and libraries
sudo apt-get install build-essential autoconf 
sudo apt-get install libboost-program-options-dev libboost-thread-dev libboost-system-dev liblog4cplus-dev
  • Also we need the libcec (version 3.x) libraries. Pulse eight provides east way to install
apt-get install libcec-dev libcec-platform-dev

# or manually build them:
wget http://packages.pulse-eight.net/ubuntu/install-libcec.sh
sudo bash install-libcec.sh
  • Now build libcec-daemon
cd libcec-daemon
./bootstrap && ./configure && make

Usage

Usage: libcec-daemon [options] [usb]

Allowed options:
  -h [ --help ]             show help message
  -V [ --version ]          show version (and exit)
  -d [ --daemon ]           daemon mode, run in background
  -l [ --list ]             list available CEC adapters and devices
  -v [ --verbose ]          verbose output (use -vv for more)
  -q [ --quiet ]            quiet output (print almost nothing)
  -a [ --donotactivate ]    do not activate device on startup
  --onstandby <path>        command to run on standby
  --onactivate <path>       command to run on activation
  --ondeactivate <path>     command to run on deactivation
  -p [ --port ] [a[.b.c.d]> HDMI port A or address A.B.C.D (overrides 
                            autodetected value)
  --usb <path>              USB adapter path (as shown by --list)

HDMI port A can be specified as tv.1 or av.1 for HDMI port 1 on respectively the
TV or a connected Audio System. 0 digit is optional for either port or physical
address, so that tv.0 is equivalent to just tv. Similarily, addresses such as
1, 1.0, 1.0.0 and 1.0.0.0 are also equivalent. Specifying 0 by itself is the same
as omitting the port argument, implying that the HDMI port will be autotected.
To summarize, to force libcec-daemon to manage TV HDMI port 1, the following
can be used:
      -p tv.1
      -p 1
      -p 1.0.0.0
The daemon will not work properly if it fails to detect the HDMI port, in which
case the port should be specified manually.

It is possible to run commands to react to a certain TV/AV events such as:
     - power off/standby event (--onstandby)
     - HDMI port switched in (--onactivate)
     - HDMI port switched out (--ondeactivate)
The <path> argument should specify a command or script that is executable by the
default shell for the user running libcec-daemon, usually /bin/sh for root user.
Typically, scripts would suspend/shutdown the host whenever a standby event is
received for power saving, and screensaver and/or media play/pause control could
be hooked to activation or deactivation events. Currently, The command is run
right after the event has occurred, therefore it cannot be invalidated/prevented
by the former returning an exit code other than 0 for example.

A libcec-daemon can be instantiated for each HDMI-CEC adapter available to the
host hardware, and the daemon will automatically use to the first detected one.
If more than one adapter is available, they should be specified by the usb
argument using either its sys-path or dev-path as listed by the --list argument.

libcec-daemon's People

Contributors

bramp avatar pepsiman avatar pssc avatar skywalker666 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

libcec-daemon's Issues

Multimeda Keys of Samsung TV not working

Hi,
I've compiled/installed libcec 2.1.4 and the libcec-daemon on my rraspberry pi.

Everything seems to work but some multimedia key like stop, play, .. are not working.

when i've started the libcec-daemon with -v option, you can see, that the stop and play button are recognized by the daemon, but no keypress action will be caused.

Here the output of the stop button:

DEBUG - Main::onCecLogMessage(72315 [T]>> 01:42:03)
DEBUG - Main::onCecLogMessage(72316 [D]>> TV (0) -> Recorder 1 (1): deck control (42))
DEBUG - Main::onCecCommand(Command 0->1[ ] 66)

play button:

DEBUG - Main::onCecLogMessage(73585 [T]>> 01:41:24)
DEBUG - Main::onCecLogMessage(73586 [D]>> TV (0) -> Recorder 1 (1): play (41))
DEBUG - Main::onCecCommand(Command 0->1[ ] 65)

and for example some other buttons

DEBUG - Main::onCecLogMessage(21081 [T]>> 01:44:00)
DEBUG - Main::onCecLogMessage(21081 [D]>> TV (0) -> Recorder 1 (1): user control pressed (44))
DEBUG - Main::onCecCommand(Command 0->1[ ] 68)
DEBUG - Main::onCecLogMessage(21082 [D]key pressed: select (0))
DEBUG - Main::onCecKeyPress(Key press: SELECT for 0ms)
DEBUG - send 352
DEBUG - Main::onCecLogMessage(21784 [T]>> 01:8b:00)
DEBUG - Main::onCecLogMessage(21787 [D]>> TV (0) -> Recorder 1 (1): vendor remote button up (8B))
DEBUG - Main::onCecCommand(Command 0->1[ ] 139)
DEBUG - Main::onCecLogMessage(21789 [D]key released: select (0))
DEBUG - Main::onCecKeyPress(Key press: SELECT for 707ms)
DEBUG - release 352

Where can i change something in the source code, so that this button will cause an keypress action?

Regards TimUx

boost static assert error is thrown during compilation

Hi!
I was trying to build libcec-daemon on my Archlinux (using libcec 2.1.4 and boost 1.55) but I face a very weird build error (a boost static assert is thrown):

erreur: static assertion failed: Target type is neither std::istream`able nor std::wistream`able

It has something to do with the HDMI::address type.
Any idea where that might come from ? Thanks!

Here is the full log:

[emeric@desktop-emeric: libcec-daemon](git:master*)$ make
make  all-am
make[1]: Entering directory '/home/emeric/Développement/upstream/libcec-daemon'
  CXX      src/hdmi.o
  CXX      src/libcec.o
  CXX      src/main.o
In file included from /usr/include/boost/any.hpp:27:0,
                 from /usr/include/boost/program_options/value_semantic.hpp:12,
                 from /usr/include/boost/program_options/options_description.hpp:13,
                 from /usr/include/boost/program_options.hpp:15,
                 from src/main.cpp:25:
/usr/include/boost/lexical_cast.hpp: In instantiation of ‘struct boost::detail::deduce_target_char_impl<boost::detail::deduce_character_type_later<HDMI::address> >’:
/usr/include/boost/lexical_cast.hpp:415:89:   required from ‘struct boost::detail::deduce_target_char<HDMI::address>’
/usr/include/boost/lexical_cast.hpp:674:92:   required from ‘struct boost::detail::lexical_cast_stream_traits<std::basic_string<char>, HDMI::address>’
/usr/include/boost/lexical_cast.hpp:2363:19:   required from ‘static Target boost::detail::lexical_cast_do_cast<Target, Source>::lexical_cast_impl(const Source&) [with Target = HDMI::address; Source = std::basic_string<char>]’
/usr/include/boost/lexical_cast.hpp:2543:50:   required from ‘Target boost::lexical_cast(const Source&) [with Target = HDMI::address; Source = std::basic_string<char>]’
/usr/include/boost/program_options/detail/value_semantic.hpp:89:38:   required from ‘void boost::program_options::validate(boost::any&, const std::vector<std::basic_string<charT> >&, T*, long int) [with T = HDMI::address; charT = char]’
/usr/include/boost/program_options/detail/value_semantic.hpp:170:55:   required from ‘void boost::program_options::typed_value<T, charT>::xparse(boost::any&, const std::vector<std::basic_string<charT> >&) const [with T = HDMI::address; charT = char]’
src/main.cpp:675:1:   required from here
/usr/include/boost/lexical_cast.hpp:388:13: erreur: static assertion failed: Target type is neither std::istream`able nor std::wistream`able
             BOOST_STATIC_ASSERT_MSG((result_t::value || boost::has_right_shift<std::basic_istream<wchar_t>, T >::value), 
             ^
Makefile:437: recipe for target 'src/main.o' failed
make[1]: *** [src/main.o] Error 1
make[1]: Leaving directory '/home/emeric/Développement/upstream/libcec-daemon'
Makefile:312: recipe for target 'all' failed
make: *** [all] Error 2

Cross compiling for android

Not sure if I'm writing in right place, but would anyone give me some cross compiling tips for android please? I've successfully cross compiled libcec but without detection ability. Usually there is configure script where I can set some --host --prefix etc, but here is just plain makefile. Sorry for such a lame request, I have no c++ skills and I just need your daemon so much... :)

Fails to work unless '--port tv.1' added to command line.

After the two commits on Jan 16th 2014 I have tell the daemon what physical port it is on. Here is what I without that:

Jan 31 14:19:16 ernie logger: INFO - Opened /dev/uinput
Jan 31 14:19:16 ernie logger: INFO - Created uinput device
Jan 31 14:19:16 ernie logger: INFO - Openning /sys/devices/pci0000:00/0000:00:1d.1/usb2/2-1
Jan 31 14:19:16 ernie logger: DEBUG - Main::onCecLogMessage(32 [D]unregistering all CEC clients)
Jan 31 14:19:16 ernie logger: DEBUG - Main::onCecLogMessage(32 [D]Broadcast (F): osd name set to 'Broadcast')
Jan 31 14:19:16 ernie logger: DEBUG - Main::onCecLogMessage(35 [D]connection opened, clearing any previous input and waiting for active transmissions to end before starting)
Jan 31 14:19:16 ernie logger: DEBUG - Main::onCecLogMessage(36 [D]communication thread started)
Jan 31 14:19:16 ernie logger: DEBUG - Main::onCecLogMessage(46 [D]turning controlled mode on)
Jan 31 14:19:16 ernie logger: DEBUG - Main::onCecLogMessage(77 [N]connection opened)
Jan 31 14:19:16 ernie logger: DEBUG - Main::onCecLogMessage(78 [D]processor thread started)
Jan 31 14:19:16 ernie logger: DEBUG - Main::onCecLogMessage(78 [D]<< Broadcast (F) -> TV (0): POLL)
Jan 31 14:19:16 ernie logger: DEBUG - Main::onCecLogMessage(78 [T]<< f0)
Jan 31 14:19:16 ernie logger: DEBUG - Main::onCecLogMessage(78 [D]setting the line timeout to 3)
Jan 31 14:19:16 ernie logger: DEBUG - Main::onCecLogMessage(113 [D]>> POLL sent)
Jan 31 14:19:16 ernie logger: DEBUG - Main::onCecLogMessage(113 [D]TV (0): device status changed into 'present')
Jan 31 14:19:16 ernie logger: DEBUG - Main::onCecLogMessage(113 [D]<< requesting vendor ID of 'TV' (0))
Jan 31 14:19:16 ernie logger: DEBUG - Main::onCecLogMessage(114 [T]<< f0:8c)
Jan 31 14:19:16 ernie logger: DEBUG - Main::onCecLogMessage(522 [T]>> 0f:87:00:80:45)
Jan 31 14:19:16 ernie logger: DEBUG - Main::onCecLogMessage(522 [D]>> TV (0) -> Broadcast (F): device vendor id (87))
Jan 31 14:19:16 ernie logger: DEBUG - Main::onCecCommand(Command 0 to 15 135)
Jan 31 14:19:16 ernie logger: DEBUG - Main::onCecLogMessage(522 [D]TV (0): vendor = Panasonic (008045))
Jan 31 14:19:16 ernie logger: DEBUG - Main::onCecLogMessage(522 [D]expected response received (87: device vendor id))
Jan 31 14:19:16 ernie logger: DEBUG - Main::onCecLogMessage(522 [D]replacing the command handler for device 'TV' (0))
Jan 31 14:19:16 ernie logger: DEBUG - Main::onCecLogMessage(522 [N]registering new CEC client - v2.1.4)
Jan 31 14:19:16 ernie logger: DEBUG - Main::onCecLogMessage(522 [D]detecting logical address for type 'playback device')
Jan 31 14:19:16 ernie logger: DEBUG - Main::onCecLogMessage(522 [D]trying logical address 'Playback 1')
Jan 31 14:19:16 ernie logger: DEBUG - Main::onCecLogMessage(522 [D]<< Playback 1 (4) -> Playback 1 (4): POLL)
Jan 31 14:19:16 ernie logger: DEBUG - Main::onCecLogMessage(522 [T]<< 44)
Jan 31 14:19:16 ernie logger: DEBUG - Main::onCecLogMessage(553 [D]CEC transmission - received response - TRANSMIT_FAILED_ACK)
Jan 31 14:19:16 ernie logger: DEBUG - Main::onCecLogMessage(553 [T]<< 44)
Jan 31 14:19:16 ernie logger: DEBUG - Main::onCecLogMessage(590 [D]CEC transmission - received response - TRANSMIT_FAILED_ACK)
Jan 31 14:19:16 ernie logger: DEBUG - Main::onCecLogMessage(590 [D]>> POLL not sent)
Jan 31 14:19:16 ernie logger: DEBUG - Main::onCecLogMessage(590 [D]using logical address 'Playback 1')
Jan 31 14:19:16 ernie logger: DEBUG - Main::onCecLogMessage(590 [D]Playback 1 (4): device status changed into 'handled by libCEC')
Jan 31 14:19:16 ernie logger: DEBUG - Main::onCecLogMessage(590 [D]Playback 1 (4): power status changed from 'unknown' to 'on')
Jan 31 14:19:16 ernie logger: DEBUG - Main::onCecLogMessage(590 [D]Playback 1 (4): vendor = Pulse Eight (001582))
Jan 31 14:19:16 ernie logger: DEBUG - Main::onCecLogMessage(590 [D]Playback 1 (4): CEC version 1.4)
Jan 31 14:19:16 ernie logger: DEBUG - Main::onCecLogMessage(590 [D]AllocateLogicalAddresses - device '0', type 'playback device', LA '4')
Jan 31 14:19:16 ernie logger: DEBUG - Main::onCecLogMessage(590 [D]setting ackmask to 10)
Jan 31 14:19:16 ernie logger: DEBUG - Main::onCecLogMessage(595 [D]Playback 1 (4): osd name set to 'ernie')
Jan 31 14:19:16 ernie logger: DEBUG - Main::onCecLogMessage(595 [D]Playback 1 (4): menu language set to 'eng')
Jan 31 14:19:16 ernie logger: DEBUG - Main::onCecLogMessage(595 [D]GetPhysicalAddress - trying to get the physical address via ADL)
Jan 31 14:19:16 ernie logger: DEBUG - Main::onCecLogMessage(595 [D]GetPhysicalAddress - ADL returned physical address 0000)
Jan 31 14:19:16 ernie logger: DEBUG - Main::onCecLogMessage(595 [D]GetPhysicalAddress - trying to get the physical address via nvidia driver)
Jan 31 14:19:16 ernie logger: DEBUG - Main::onCecLogMessage(595 [D]GetPhysicalAddress - nvidia driver returned physical address 0000)
Jan 31 14:19:16 ernie logger: DEBUG - Main::onCecLogMessage(595 [D]GetPhysicalAddress - trying to get the physical address from the OS)
Jan 31 14:19:16 ernie logger: DEBUG - Main::onCecLogMessage(595 [D]GetPhysicalAddress - OS returned physical address 0000)
Jan 31 14:19:16 ernie logger: DEBUG - Main::onCecLogMessage(595 [D]SetDevicePhysicalAddress - not setting invalid physical address 0000)
Jan 31 14:19:16 ernie logger: DEBUG - Main::onCecLogMessage(595 [D]SetPhysicalAddress - resetting HDMI port and base device to defaults)

It may not be those commits at fault, libcec has been updated too

Fail to build with boost 1.61

System is Debian unstable i386

src/accumulator.hpp: In instantiation of 'accumulator_type<T>* accumulator(T*) [with T = int]':
src/main.cpp:569:46:   required from here
src/accumulator.hpp:97:12: error: invalid new-expression of abstract class type 'accumulator_type<int>'
     return new accumulator_type<T>(store);
            ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/accumulator.hpp:18:7: note:   because the following virtual functions are pure within 'accumulator_type<int>':
 class accumulator_type : public boost::program_options::value_semantic
       ^~~~~~~~~~~~~~~~
In file included from /usr/include/boost/program_options/options_description.hpp:13:0,
                 from /usr/include/boost/program_options.hpp:15,
                 from src/main.cpp:26:
/usr/include/boost/program_options/value_semantic.hpp:44:22: note:  virtual bool boost::program_options::value_semantic::adjacent_tokens_only() const
         virtual bool adjacent_tokens_only() const = 0;
                      ^~~~~~~~~~~~~~~~~~~~
Makefile:452: recipe for target 'src/main.o' failed

Feature request: command to run on standby

Could we have a command line option to run a command when the TV sends a standby event? I'd use it to run pm-suspend but having a command line option would make it more flexible.

Can't compile on Ubuntu Trusty 14.04

I'm attempting to build this on Ubuntu 14.04 but I can't get past ./configure even though I've got libcec-dev installed:

$ dpkg -l |grep cec
ii  cec-utils                                  2.1.4-1ubuntu2                                     amd64        USB CEC Adaptor communication Library (utility programs)
ii  libcec-dev                                 2.1.4-1ubuntu2                                     amd64        USB CEC Adaptor communication Library (development files)
ii  libcec2:amd64                              2.1.4-1ubuntu2                                     amd64        USB CEC Adaptor communication Library (shared library)
$ ./bootstrap 
autoreconf: Entering directory `.'
autoreconf: configure.ac: not using Gettext
autoreconf: running: aclocal --force -I m4
autoreconf: configure.ac: tracing
autoreconf: configure.ac: not using Libtool
autoreconf: running: /usr/bin/autoconf --force
autoreconf: running: /usr/bin/autoheader --force
autoreconf: running: automake --add-missing --copy --force-missing
autoreconf: Leaving directory `.'

$ ./configure 
checking build system type... x86_64-unknown-linux-gnu
checking host system type... x86_64-unknown-linux-gnu
checking for a BSD-compatible install... /usr/bin/install -c
checking whether build environment is sane... yes
checking for a thread-safe mkdir -p... /bin/mkdir -p
checking for gawk... gawk
checking whether make sets $(MAKE)... yes
checking whether make supports nested variables... yes
checking whether make supports nested variables... (cached) yes
checking whether to enable maintainer-specific portions of Makefiles... no
checking for g++... g++
checking whether the C++ compiler works... yes
checking for C++ compiler default output file name... a.out
checking for suffix of executables... 
checking whether we are cross compiling... no
checking for suffix of object files... o
checking whether we are using the GNU C++ compiler... yes
checking whether g++ accepts -g... yes
checking for style of include used by make... GNU
checking dependency style of g++... gcc3
checking whether g++ supports C++11 features by default... no
checking whether g++ supports C++11 features with -std=gnu++11... yes
checking for gcc... gcc
checking whether we are using the GNU C compiler... yes
checking whether gcc accepts -g... yes
checking for gcc option to accept ISO C89... none needed
checking whether gcc understands -c and -o together... yes
checking dependency style of gcc... gcc3
checking for dlopen in -ldl... yes
./configure: line 4574: syntax error near unexpected token `LIBCEC,'
./configure: line 4574: `PKG_CHECK_MODULES(LIBCEC, libcec >= 2.1, LIBS="${LIBCEC_LIBS} ${LIBS}", as_fn_error $? "\"required package libcec is missing\"" "$LINENO" 5)'

Raspberry Pi3 - Raspian & Mythfrontend

Since mythfrontend didn't work out of the box for me, I thought I'd try libcec-daemon. I'm completely new to CEC so bear with me.

Compiling against libcec3 I had to make the following changes:
+// config.clientVersion = CEC_CLIENT_VERSION_CURRENT;
+// config.iDoubleTapTimeoutMs = 0;

Compiling then worked like a treat. Running libcec-daemon in debug mode, I could see 9 buttons were recognized by it all correctly, however when they were translated into uinput events, mythfrontend wouldn't recognize some of them in order to map them to the appropriate function.

Is this configurable? E.g., my SELECT/ENTER button is detected as SELECT by libcec-daemon, however it sends 352 which mythfrontend doesn't recognize when in the configuration screen. There are others too. Is this an odd CEC device or is this something you all have worked around already?

log4cplus does not use line buffering

Just trying to get a list of keys that my TV remote sends and nothing comes out till I kill the libcec-caemon, then it dumps it all out. That's OK when you have -v -v turned on and you're drowning in debug messages but once it's going there will only be a few messages per day.

No input on LXDE on Raspbian

Hi,

I am running libcec-daemon as pi user and from root user without problems from console. When I execute startx or sudo startx and enter LXDE the input is not passed to LXDE.

If i run libcec-daemon from LXDE it does not show any errors but doesn't work.
I tried chmod 666 /dev/uinput without luck.

I does not show any errors in the libcec-daemon or in syslog.

I'm running Raspbian (2013-02-09) updated with libcec 2.0.5-1

libcec-daemon fails to start without specifying HDMI port

Starting at the commit of Jan 16, 2014 libcec-daemon fails to start in my setup. I use libcec 2.1.4 and have a Samsung Series 6 TV, connected to the Pulse Eight adapter.

The daemon stops with failure "Failed to become active". It took me several hours debugging to realize the problem is that it couldn't detect the physical address. If I specify the port, it's starting OK.

  1. Is the detection mechanism broken? It seems to be working fine on older versions.
  2. I think libcec-daemon should log a warning or error if the physical address is not detected and perhaps show a hint that you have to specify it manually.

Error with liblog4cplus

Hi,

I have install liblog4cplus-dev but I see this error when running ./configure on Debian Jessie system:

checking log4cplus/logger.h usability... yes
checking log4cplus/logger.h presence... yes
checking for log4cplus/logger.h... yes
checking for log4cplus::Logger::getRoot() in -llog4cplus... no
configure: error: "required library log4cplus is missing"

Any ideas?

send single command

it is possible to send single command to deamon like cec-client ??

for example something like "libcec-daemon KEY_VOLUME_UP" and volume go UP ??

not working as daemon

I'm using libcec-daemon on a raspberry pi, along with triggerhappy.
When libcec-daemon is launched with -d, commands from triggerhappy conf are not executed.
It is working when simply launched, with -v for example.
[edit]
libcec is raspbian up-to-date, version 1.6.2-1.1
[/edit]

Also, key_stop doesn't seem to work, in a triggerhappy conf file.
I replaced key_stop by key_record, then the command is taken into account when I press record button on the remote.
[edit]
When launched with -v, libcec-daemon reports 45 when I press stop button on remote.

To finish, volumes buttons are not recognized at all, since nothing appears when I press volume up or down on the remote.
I've a Philips TV.
[/edit]

[Arch Linux] AUR support?

Hi,

I've found your project since I would like to integrate it inside my set-top-box made with Arch Linux ARM project over a Raspberry Pi. I know I can use plain make and make install to compile and install it, but are you planning to provide a PKGBUILD file so we can create easily a package on Arch?

Or maybe better, are you going to support your own project on AUR?

Thanks in advice :)

--donotactivate still turns on the TV

The libcec config structure defaults to activating the source which turns on the TV. Changing the default stops that happening and the TV stays off when starting libcec-daemon with --donotactivate. When not using the --donotactivate option the TV is still switched on. Patch attached:

diff --git a/src/libcec.cpp b/src/libcec.cpp
index 77b6fab..4e5d1bf 100644
--- a/src/libcec.cpp
+++ b/src/libcec.cpp
@@ -123,6 +123,7 @@ ICECAdapter * Cec::CecInit(const char * name, CecCallback * callback) {
        callbacks.CBCecConfigurationChanged = &::cecConfigurationChanged;
        config.callbackParam                = callback;
        config.callbacks                    = &callbacks;
+       config.bActivateSource              = false;

        // LibCecInitialise is noisy, so we redirect cout to nowhere
        RedirectStreamBuffer redirect(cout, 0);

Any Chance for Windows Users?

Hello,

i´ve read about your daemon and want to use exact that kind of app on a windows machine. Is there any chance that you can convert it?

The new P8 program can read and implement the HDMI commands in Windows MCE and MediaPortal only.

Would be great to see programm that can send (customizable) keypresses directly to windows.

libcec-daemon Openelec

Hello,

I need to use libcec-daemon and VDR on OpenElec distribution. It's a little bit hard for me to make the Openelec Packages. I have a working libcec-daemon on Raspbmc but on openelec i miss the dependencies. Is there a way to compile on Raspbmc a version that i can copy over to Openelec so it contains every dependency ?

Running on a Pi

Bug reported by Zoolander06 (on bramp.net)

root@XBian:~/libcec-daemon# ./libcec-daemon –list
INFO – Opened /dev/uinput
INFO – Created uinput device
[0] port:RPI path:Raspberry Pi
Failed to open

I’ve tried with -v option, it does that (4 times) :

DEBUG – Main::onCecLogMessage(1167 [D]unregistering all CEC clients
)
DEBUG – Main::onCecLogMessage(1174 [D]Broadcast (F): osd name set to ‘Broadcast’
)
DEBUG – Main::onCecLogMessage(1178 [D]InitHostCEC – vchiq_initialise succeeded
)
DEBUG – Main::onCecLogMessage(1181 [D]InitHostCEC – vchi_initialise succeeded
)
DEBUG – Main::onCecLogMessage(1183 [D]InitHostCEC – vchi_connect succeeded
)
DEBUG – Main::onCecLogMessage(4512 [E]failed to release the previous LA
)
DEBUG – Main::onCecLogMessage(4516 [E]could not open a connection (try 1)

I think the line “failed to release the previous GA” is relevant, isn’t it ?

Building against libcec >=4.x (P8, Ubuntu 20.04)

I realise there have been a number of years since there was any activity to this repo, but if I may document my current woes in attempting to build libcec-daemon against libcec=4.0.4, in an Ubuntu 20.04 (x86_64) environment.

Initially, configure fails on, $PKG_CONFIG --print-errors --cflags --libs "libcec >= 2.1". Runnning this command manually highlights the need to also install packages libp8-platform-dev (which requires libfstrcmp0 & libfstrcmp0-dev) and libudev-dev.

Unfortunately, make then fails in a fashion that I'm not capable of unpicking. My programming prowess isn't up to very much, much less my C++.

Output from 'make' in the case that it helps, attached here.

If anyone's still running the daemon out there on an up to date system, please do let me know how you did it. :)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.