Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux 使用RPI上的cec客户端关闭电视_Linux_Terminal_Console_Raspberry Pi_Raspbian - Fatal编程技术网

Linux 使用RPI上的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

我有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
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电视的方法