Linux 使用RPI上的cec客户端关闭电视
我有RPi B+运行Raspbian通过HDMI连接到我的LG电视。我成功编译并安装了cec客户端,我可以使用命令Linux 使用RPI上的cec客户端关闭电视,linux,terminal,console,raspberry-pi,raspbian,Linux,Terminal,Console,Raspberry Pi,Raspbian,我有RPi B+运行Raspbian通过HDMI连接到我的LG电视。我成功编译并安装了cec客户端,我可以使用命令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 DEB
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)
正在打开与CEC适配器的连接。。。
调试:[316]注销所有CEC客户端
调试:[318]广播(F):osd名称设置为“广播”
调试:[324]InitHostCEC-vchiq_初始化成功
调试:[325]初始化主机CEC-vchi_初始化成功
调试:[326]InitHostCEC-vchi_连接成功
调试:[330]逻辑地址更改为广播(f)
调试:[333]寄存器逻辑地址-注册地址e
调试:[605]逻辑地址已更改为记录器1(1)
调试:[605]逻辑地址已更改为免费使用(e)
调试:[605]打开-vc_cec已初始化
注意:[605]连接已打开
调试:[607]处理器线程已启动
调试:[608]电视(0):轮询
调试:[611]CEC适配器不支持启动器“广播”。改用“免费使用”
流量:[612]>已发送轮询
调试:[647]电视(0):设备状态更改为“当前”
调试:[647]>TV(0)->记录器1(1):报告电源状态(90)
调试:[4088]电视(0):电源状态从“未知”更改为“打开”
调试:[4089]收到预期响应(90:报告电源状态)
调试:[4091]0f:87:00:e0:91
调试:[4323]>>电视(0)->广播(F):设备供应商id(87)
调试:[4323]电视(0):供应商=LG(00e091)
调试:[4323]广播(F):供应商id脉冲八(1582)
流量:[4323]似乎libCEC没有什么问题。然而,LG TV型号的HDMI-CEC实现可能只是忽略了standby命令。您应该使用其他HDMI-CEC兼容设备测试Raspberry Pi,以检查备用命令是否正常工作。使用以下方法:
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
LG电视(仅限电视)不支持CEC待机命令。请参阅。不知道这是libcec实现还是TV的限制这里有一些额外的命令,可能有用
待命:
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
我也有同样的问题,希望得到一个答案。完成后使用:echo'standby 0'| cec client-加强,尽管我希望有人仍然可以找到通过HDMI-cec关闭LG电视的方法