libcec/cecd - an HDMI-CEC library and daemon
The aim of this project is to provide a cross platform library (libcec), a daemon/service (cecd) as well as a set of utilities to support HDMI-CEC on platforms that have an HDMI interface with a CEC driver.
Its goal is to provide users and developers with an easy way to control PVRs/DVRs, Blu-Ray players, PCs (with an HDMI output that has HDMI-CEC support) from another Linux or Windows based HDMI-CEC appliance.
This project is in early beta, but currently in standby mode, as we are unfortunately fairly busy contributing to other Open Source projects. We will get back to it as soon as possible!
Currently, it is only available for Linux and only supports the XTreamer device. If you have an Xtreamer device, with the latest cec and venus_ir_wo drivers installed, you should be able to detect your player and (partially) command it using your TV remote.
cecd v0.5.0 [BETA], with the venus_ir_wo and cec-dev drivers can be downloaded here
The source code can be accessed from the SourceForge project page.
Our current targets are Realtek 1283 SoC ('MARS') platforms running Linux, and primarily the Xtreamer Pro HD player.
CEC access on this platform currently relies on a modified version of the CEC driver provided by Realtek for its custom 2.6.12 kernel. We also have plans to support the STi7111 SoC and the Linux CEC driver implementation from the Open Duckbox project in the future, as well as Windows and OS-X platforms, once GPU manufacturers start to include CEC support on their products.
The current development source available in the git repository.
For those not familiar with git, you can use the following to retrieve the initial source, as well as any subsequent updates:
git clone git://cecd.git.sourceforge.net/gitroot/cecd/cecd ; retrieve development branch (this only needs to be done once) git pull ; keep in sync with the remote tree
At present, the only CEC driver supported is the Realtek RTD1283 Linux driver, for the 2.6.12 kernel. Therefore, you must have a toolchain already set to compile for that environment, and the ability to run a custom kernel with the modified CEC driver enabled, as well as code that you compiled, on the target platform.
If your toolchain uses the prefix mipsel-linux (mipsel-linux-gcc, etc), you can build a static version of the cecd and utilities as follows:
./autogen.sh --host=mipsel-linux --disable-shared ; disable-shared ensures that you don't have to install the library on the target make
Then you can copy and run the cecd daemon on the target.
- Development will be broken down between a library (libcec), a service/daemon to answer standard CEC requests (cecd) and a set of utilities. The library is meant to be as generic as possible and not restricted to Linux only, as we hope GPU manufacturers on other platforms like Windows will implement CEC access in the future.
- I2C HDMI access (HDMI DDC) must be available along with CEC access, so that the physical address for the CEC device can be computed, as per sections 8.7.2 & 8.7.3 of the HDMI specifications v1.3a
- The default 2.6.12 CEC kernel driver for Realtek 1283 SoC platform uses wait_for_completion() and does not handle timeouts on read. Therefore, a modified CEC driver must be used.
- [cecd] translation of UI codes or CEC commands into system data
- [cecd] sequence of commands handling
- [decoder] embed a list of manufacturer IDs (OUI) for device identification
- [decoder] CEC messages translation
- [cecd] CEC messages automated response
- [core] logical address CEC setup algorithm
- [cecd] sending of UI codes
- [cecd] use of cecd.conf to set the device name and other parameters
- [realtek] allow the killing of the daemon even when the ioctl is blocking on kernel end (driver fix)
- [core] EDID retrieval
- [core] physical address retrieval
- [core][realtek] low level CEC functions (send, receive, set logical address)
- [core] logging
- HDMI-CEC Specifications v1.3a
- Current CEC driver sources, for Realtek MARS Linux Kernel 2.6.12, for use with cecd
- Realtek's original CEC driver sources for MARS Linux Kernel 2.6.12
The cecd-devel mailing list exists for the users of cecd, plus developers interested in contributing to the software itself.