在RPI上使用cec-client关闭电视

时间:2014-09-15 12:09:25

标签: linux terminal console raspberry-pi raspbian

我有RPi B +运行Raspbian通过HDMI连接到我的LG电视。我成功编译并安装了cec-client,我可以使用命令echo "on 0" | cec-client -s轻松打开电视,但是当我尝试使用命令echo "standby 0" | cec-client -s关闭电视时,我得到了这个输出:

opening a connection to the CEC adapter...
DEBUG:   [             316]     unregistering all CEC clients
DEBUG:   [             318]     Broadcast (F): osd name set to 'Broadcast'
DEBUG:   [             324]     InitHostCEC - vchiq_initialise succeeded
DEBUG:   [             325]     InitHostCEC - vchi_initialise succeeded
DEBUG:   [             326]     InitHostCEC - vchi_connect succeeded
DEBUG:   [             330]     logical address changed to Broadcast (f)
DEBUG:   [             333]     RegisterLogicalAddress - registering address e
DEBUG:   [             605]     logical address changed to Recorder 1 (1)
DEBUG:   [             605]     logical address changed to Free use (e)
DEBUG:   [             605]     Open - vc_cec initialised
NOTICE:  [             605]     connection opened
DEBUG:   [             607]     processor thread started
DEBUG:   [             608]     << Broadcast (F) -> TV (0): POLL
DEBUG:   [             611]     initiator 'Broadcast' is not supported by the CEC adapter. using 'Free use' instead
TRAFFIC: [             612]     << e0
DEBUG:   [             647]     >> POLL sent
DEBUG:   [             647]     TV (0): device status changed into 'present'
DEBUG:   [             647]     << requesting vendor ID of 'TV' (0)
TRAFFIC: [             647]     << e0:8c
DEBUG:   [            1858]     expected response not received (87: device vendor id)
TRAFFIC: [            1859]     << e0:8c
DEBUG:   [            3070]     expected response not received (87: device vendor id)
NOTICE:  [            3070]     registering new CEC client - v2.1.4
DEBUG:   [            3070]     detecting logical address for type 'recording device'
DEBUG:   [            3070]     trying logical address 'Recorder 1'
DEBUG:   [            3070]     << Recorder 1 (1) -> Recorder 1 (1): POLL
TRAFFIC: [            3071]     << 11
DEBUG:   [            3071]     UnregisterLogicalAddress - releasing previous logical address
DEBUG:   [            3072]     logical address changed to Broadcast (f)
DEBUG:   [            3073]     RegisterLogicalAddress - registering address 1
DEBUG:   [            3255]     logical address changed to Free use (e)
DEBUG:   [            3255]     logical address changed to Recorder 1 (1)
TRAFFIC: [            3255]     << 11
DEBUG:   [            3255]     >> POLL not sent
DEBUG:   [            3256]     using logical address 'Recorder 1'
DEBUG:   [            3256]     Recorder 1 (1): device status changed into 'handled by libCEC'
DEBUG:   [            3256]     Recorder 1 (1): power status changed from 'unknown' to 'on'
DEBUG:   [            3256]     Recorder 1 (1): vendor = Pulse Eight (001582)
DEBUG:   [            3256]     Recorder 1 (1): CEC version 1.4
DEBUG:   [            3256]     AllocateLogicalAddresses - device '0', type 'recording device', LA '1'
DEBUG:   [            3256]     Recorder 1 (1): osd name set to 'CECTester'
DEBUG:   [            3256]     Recorder 1 (1): menu language set to 'eng'
DEBUG:   [            3258]     GetPhysicalAddress - physical address = 3000
DEBUG:   [            3258]     AutodetectPhysicalAddress - autodetected physical address '3000'
DEBUG:   [            3260]     Recorder 1 (1): physical address changed from ffff to 3000
DEBUG:   [            3262]     << Recorder 1 (1) -> broadcast (F): physical adddress 3000
TRAFFIC: [            3263]     << 1f:84:30:00:01
NOTICE:  [            3415]     CEC client registered: libCEC version = 2.1.4, client version = 2.1.4, firmware version = 1, logical address(es) = Recorder 1 (1) , physical address: 3.0.0.0, host: armv6l-unknown-linux-gnueabihf, features: 'P8 USB' 'P8 USB detect' 'RPi', git revision: a560d24, compiled on: Sun Sep 14 17:49:41 UTC 2014 by pi@raspberrypi on Linux 3.12.28+ (armv6l)
DEBUG:   [            3415]     << Recorder 1 (1) -> TV (0): OSD name 'CECTester'
TRAFFIC: [            3415]     << 10:47:43:45:43:54:65:73:74:65:72
DEBUG:   [            3716]     << requesting power status of 'TV' (0)
TRAFFIC: [            3716]     << 10:8f
TRAFFIC: [            3868]     >> 01:8c
DEBUG:   [            3868]     >> TV (0) -> Recorder 1 (1): give device vendor id (8C)
DEBUG:   [            3871]     << Recorder 1 (1) -> TV (0): vendor id Pulse Eight (1582)
TRAFFIC: [            3873]     << 1f:87:00:15:82
TRAFFIC: [            4087]     >> 01:90:00
DEBUG:   [            4087]     >> TV (0) -> Recorder 1 (1): report power status (90)
DEBUG:   [            4088]     TV (0): power status changed from 'unknown' to 'on'
DEBUG:   [            4089]     expected response received (90: report power status)
DEBUG:   [            4091]     << requesting vendor ID of 'TV' (0)
TRAFFIC: [            4091]     << 10:8c
TRAFFIC: [            4323]     >> 0f:87:00:e0:91
DEBUG:   [            4323]     >> TV (0) -> Broadcast (F): device vendor id (87)
DEBUG:   [            4323]     TV (0): vendor = LG (00e091)
DEBUG:   [            4323]     << Recorder 1 (1) -> Broadcast (F): vendor id Pulse Eight (1582)
TRAFFIC: [            4323]     << 1f:87:00:15:82
DEBUG:   [            4474]     expected response received (87: device vendor id)
DEBUG:   [            4475]     replacing the command handler for device 'TV' (0)
DEBUG:   [            4478]     TV (0): CEC version 1.3a
DEBUG:   [            4479]     TV (0): menu language set to 'eng'
DEBUG:   [            4481]     Recorder 1 (1): vendor = LG (00e091)
DEBUG:   [            4485]     replacing the command handler for device 'Recorder 1' (1)
DEBUG:   [            4485]     Recorder 1 (1): CEC version 1.3a
NOTICE:  [            4487]     << putting 'TV' (0) in standby mode
TRAFFIC: [            4488]     << 10:36
DEBUG:   [            4552]     unregistering all CEC clients
NOTICE:  [            4555]     unregistering client: libCEC version = 2.1.4, client version = 2.1.4, firmware version = 1, logical address(es) = Recorder 1 (1) , physical address: 3.0.0.0, host: armv6l-unknown-linux-gnueabihf, features: 'P8 USB' 'P8 USB detect' 'RPi', git revision: a560d24, compiled on: Sun Sep 14 17:49:41 UTC 2014 by pi@raspberrypi on Linux 3.12.28+ (armv6l)
DEBUG:   [            4559]     Recorder 1 (1): power status changed from 'on' to 'unknown'
DEBUG:   [            4561]     Recorder 1 (1): vendor = Unknown (000000)
DEBUG:   [            4564]     Recorder 1 (1): CEC version unknown
DEBUG:   [            4565]     Recorder 1 (1): osd name set to 'Recorder 1'
DEBUG:   [            4567]     Recorder 1 (1): device status changed into 'unknown'
DEBUG:   [            4567]     unregistering all CEC clients
DEBUG:   [            4624]     UnregisterLogicalAddress - releasing previous logical address
DEBUG:   [            4630]     logical address changed to Broadcast (f)

没有任何反应。另外我只使用CLI,经过一段时间后RPi将电视放入空白屏幕保护程序,但我无法弄清楚如何根据我的命令做到这一点。

4 个答案:

答案 0 :(得分:1)

似乎libCEC没有任何问题。然而,LG TV模型的HDMI-CEC实现可能只是忽略了备用命令。您应该使用其他符合HDMI-CEC标准的设备测试Raspberry Pi,以检查备用命令是否正常工作。

答案 1 :(得分:1)

LG电视(仅限电视)不支持CEC待机命令。请参阅here。不知道它是libcec实现还是TV限制

答案 2 :(得分:0)

使用此:

sudo apt-get update;
sudo apt-get install gcc;
sudo apt-get install autoconf;
sudo apt-get install libtool;
sudo apt-get install pkg-config;
sudo apt-get install libselinux1-dev;
sudo apt-get install liblockdev1-dev;
sudo apt-get install gawk;
sudo apt-get install g++;
sudo apt-get install c++;
sudo apt-get install libgudev-1.0-dev;
sudo apt-get install libudev-dev;

mkdir -p $HOME/distr/libcec; 
wget -P $HOME/distr/libcec https://github.com/Pulse-Eight/libcec/archive/master.zip;
unzip $HOME/distr/libcec/master.zip -d $HOME/distr/libcec/;
cd $HOME/distr/libcec/libcec-master ./bootstrap;"
./configure --with-rpi-include-path=/opt/vc/include --with-rpi-lib-path=/opt/vc/lib --enable-rpi;
make;
sudo make install;
sudo apt-get install cec-utils;

然后这个:

sudo apt-get update
sudo apt-get dist-upgrade
sudo rpi-update
sudo reboot

答案 3 :(得分:0)

这里有一些其他命令,也许有用...

待机:

echo "standby 0" | cec-client -s -d 1

开机:

echo "on 0" | cec-client -s -d 1

更改HDMI来源:

HDMI 1: echo "tx 4F:82:10:00" | cec-client -s -d 1
HDMI 2: echo "tx 4F:82:20:00" | cec-client -s -d 1
HDMI 3: echo "tx 4F:82:30:00" | cec-client -s -d 1
HDMI 4: echo "tx 4F:82:40:00" | cec-client -s -d 1