CEC
HDMI CEC
редактировать config.txt
https://wiki.libreelec.tv/configuration/config_txt
2
https://forum.libreelec.tv/thread/29781-rpi5-cec-not-working/
systemctl stop kodi
echo 'scan' | cec-client -s
echo 'scan' | cec-client -s -d 1 opening a connection to the CEC adapter... requesting CEC bus information ... CEC bus information
=======
device #0: TV address: 0.0.0.0 active source: no vendor: LG osd string: TV CEC version: 1.3a power status: unknown language: eng
device #1: Recorder 1
address: 1.0.0.0
active source: no
vendor: LG
osd string: CECTester
CEC version: 1.3a
power status: on
language: eng
currently active source: unknown (-1)
echo scan | cec-client -s -d 31 opening a connection to the CEC adapter... DEBUG: [ 62] Broadcast (F): osd name set to 'Broadcast' DEBUG: [ 62] CLinuxCECAdapterCommunication::Open - m_fd=3 bStartListening=1 DEBUG: [ 62] CLinuxCECAdapterCommunication::Open - ioctl CEC_ADAP_G_PHYS_ADDR - addr=1000 DEBUG: [ 62] CLinuxCECAdapterCommunication::Open - ioctl CEC_ADAP_S_LOG_ADDRS - log_addr_mask=0000 num_log_addrs=0 DEBUG: [ 62] CLinuxCECAdapterCommunication::Open - ioctl CEC_ADAP_S_LOG_ADDRS - log_addr_mask=8000 num_log_addrs=1 NOTICE: [ 63] connection opened DEBUG: [ 63] CLinuxCECAdapterCommunication::Process - CEC_DQEVENT - CEC_EVENT_STATE_CHANGE - log_addr_mask=8000 phys_addr=1000 DEBUG: [ 63] << Broadcast (F) -> TV (0): POLL TRAFFIC: [ 63] << f0 DEBUG: [ 63] processor thread started DEBUG: [ 491] CLinuxCECAdapterCommunication::Write - ioctl CEC_TRANSMIT - tx_status=01 len=1 addr=f0 opcode=ffffffff DEBUG: [ 491] >> POLL sent DEBUG: [ 491] TV (0): device status changed into 'present' DEBUG: [ 491] << requesting vendor ID of 'TV' (0) TRAFFIC: [ 491] << f0:8c DEBUG: [ 668] CLinuxCECAdapterCommunication::Write - ioctl CEC_TRANSMIT - tx_status=01 len=2 addr=f0 opcode=8c DEBUG: [ 811] CLinuxCECAdapterCommunication::Process - ioctl CEC_RECEIVE - rx_status=01 len=5 addr=0f opcode=87 TRAFFIC: [ 811] >> 0f:87:00:e0:91 DEBUG: [ 811] >> TV (0) -> Broadcast (F): device vendor id (87) DEBUG: [ 811] TV (0): vendor = LG (00e091) DEBUG: [ 811] expected response received (87: device vendor id) DEBUG: [ 811] replacing the command handler for device 'TV' (0) DEBUG: [ 811] TV (0): CEC version 1.3a DEBUG: [ 811] TV (0): menu language set to 'eng' DEBUG: [ 811] registering new CEC client - v7.1.1 DEBUG: [ 811] using auto-detected physical address 1000 DEBUG: [ 811] detecting logical address for type 'recording device' DEBUG: [ 811] trying logical address 'Recorder 1' DEBUG: [ 811] << Recorder 1 (1) -> Recorder 1 (1): POLL TRAFFIC: [ 811] << 11 DEBUG: [ 883] CLinuxCECAdapterCommunication::Write - ioctl CEC_TRANSMIT - tx_status=24 len=1 addr=11 opcode=ffffffff TRAFFIC: [ 883] << 11 DEBUG: [ 955] CLinuxCECAdapterCommunication::Write - ioctl CEC_TRANSMIT - tx_status=24 len=1 addr=11 opcode=ffffffff DEBUG: [ 955] >> POLL not sent DEBUG: [ 955] using logical address 'Recorder 1' DEBUG: [ 955] Recorder 1 (1): device status changed into 'handled by libCEC' DEBUG: [ 955] Recorder 1 (1): power status changed from 'unknown' to 'on' DEBUG: [ 955] Recorder 1 (1): vendor = Pulse Eight (001582) DEBUG: [ 955] Recorder 1 (1): CEC version 1.4 DEBUG: [ 955] AllocateLogicalAddresses - device '0', type 'recording device', LA '1' DEBUG: [ 955] Recorder 1 (1): physical address changed from ffff to 1000 DEBUG: [ 955] CLinuxCECAdapterCommunication::SetLogicalAddresses - ioctl CEC_ADAP_S_LOG_ADDRS - log_addr_mask=0000 num_log_addrs=0 DEBUG: [ 955] CLinuxCECAdapterCommunication::Process - CEC_DQEVENT - CEC_EVENT_STATE_CHANGE - log_addr_mask=0000 phys_addr=1000 DEBUG: [ 1100] CLinuxCECAdapterCommunication::SetLogicalAddresses - ioctl CEC_ADAP_S_LOG_ADDRS - log_addr_mask=0002 num_log_addrs=1 DEBUG: [ 1100] Recorder 1 (1): osd name set to 'CECTester' DEBUG: [ 1100] Recorder 1 (1): menu language set to 'eng' DEBUG: [ 1100] CLinuxCECAdapterCommunication::Process - CEC_DQEVENT - CEC_EVENT_STATE_CHANGE - log_addr_mask=0002 phys_addr=1000 NOTICE: [ 1100] CEC client registered: libCEC version = 7.1.1, client version = 7.1.1, firmware version = 0, logical address(es) = Recorder 1 (1) , physical address: 1.0.0.0, compiled on 2025-11-01 08:43:55 by docker@b9f211185662 on Linux 6.14.11-2-pve (x86_64), features: P8_USB, DRM, P8_detect, Linux_kernel_API DEBUG: [ 1100] Recorder 1 (1): vendor = LG (00e091) DEBUG: [ 1100] replacing the command handler for device 'Recorder 1' (1) DEBUG: [ 1100] Recorder 1 (1): CEC version 1.3a DEBUG: [ 1100] << Recorder 1 (1) -> TV (0): OSD name 'CECTester' TRAFFIC: [ 1100] << 10:47:43:45:43:54:65:73:74:65:72 DEBUG: [ 5665] CLinuxCECAdapterCommunication::Write - ioctl CEC_TRANSMIT - tx_status=a0 len=11 addr=10 opcode=47 TRAFFIC: [ 5665] << 10:47:43:45:43:54:65:73:74:65:72 DEBUG: [ 7798] CLinuxCECAdapterCommunication::Write - ioctl CEC_TRANSMIT - tx_status=a0 len=11 addr=10 opcode=47 DEBUG: [ 7798] << requesting power status of 'TV' (0) TRAFFIC: [ 7798] << 10:8f DEBUG: [ 9932] CLinuxCECAdapterCommunication::Write - ioctl CEC_TRANSMIT - tx_status=a0 len=2 addr=10 opcode=8f TRAFFIC: [ 9932] << 10:8f DEBUG: [ 12065] CLinuxCECAdapterCommunication::Write - ioctl CEC_TRANSMIT - tx_status=a0 len=2 addr=10 opcode=8f requesting CEC bus information ... DEBUG: [ 12065] << Recorder 1 (1) -> Recorder 2 (2): POLL TRAFFIC: [ 12065] << 12 DEBUG: [ 14198] CLinuxCECAdapterCommunication::Write - ioctl CEC_TRANSMIT - tx_status=a0 len=1 addr=12 opcode=ffffffff TRAFFIC: [ 14198] << 12 DEBUG: [ 16332] CLinuxCECAdapterCommunication::Write - ioctl CEC_TRANSMIT - tx_status=a0 len=1 addr=12 opcode=ffffffff DEBUG: [ 16332] >> POLL not sent DEBUG: [ 16332] Recorder 2 (2): device status changed into 'not present' DEBUG: [ 16332] << Recorder 1 (1) -> Tuner 1 (3): POLL TRAFFIC: [ 16332] << 13 DEBUG: [ 18465] CLinuxCECAdapterCommunication::Write - ioctl CEC_TRANSMIT - tx_status=a0 len=1 addr=13 opcode=ffffffff TRAFFIC: [ 18465] << 13 DEBUG: [ 20598] CLinuxCECAdapterCommunication::Write - ioctl CEC_TRANSMIT - tx_status=a0 len=1 addr=13 opcode=ffffffff DEBUG: [ 20598] >> POLL not sent DEBUG: [ 20598] Tuner 1 (3): device status changed into 'not present' DEBUG: [ 20598] << Recorder 1 (1) -> Playback 1 (4): POLL TRAFFIC: [ 20598] << 14 DEBUG: [ 22732] CLinuxCECAdapterCommunication::Write - ioctl CEC_TRANSMIT - tx_status=a0 len=1 addr=14 opcode=ffffffff TRAFFIC: [ 22732] << 14 DEBUG: [ 24865] CLinuxCECAdapterCommunication::Write - ioctl CEC_TRANSMIT - tx_status=a0 len=1 addr=14 opcode=ffffffff DEBUG: [ 24865] >> POLL not sent DEBUG: [ 24865] Playback 1 (4): device status changed into 'not present' DEBUG: [ 24865] << Recorder 1 (1) -> Audio (5): POLL TRAFFIC: [ 24865] << 15 DEBUG: [ 26998] CLinuxCECAdapterCommunication::Write - ioctl CEC_TRANSMIT - tx_status=a0 len=1 addr=15 opcode=ffffffff TRAFFIC: [ 26998] << 15 DEBUG: [ 29132] CLinuxCECAdapterCommunication::Write - ioctl CEC_TRANSMIT - tx_status=a0 len=1 addr=15 opcode=ffffffff DEBUG: [ 29132] >> POLL not sent DEBUG: [ 29132] Audio (5): device status changed into 'not present' DEBUG: [ 29132] << Recorder 1 (1) -> Tuner 2 (6): POLL TRAFFIC: [ 29132] << 16 DEBUG: [ 31265] CLinuxCECAdapterCommunication::Write - ioctl CEC_TRANSMIT - tx_status=a0 len=1 addr=16 opcode=ffffffff TRAFFIC: [ 31265] << 16 DEBUG: [ 33398] CLinuxCECAdapterCommunication::Write - ioctl CEC_TRANSMIT - tx_status=a0 len=1 addr=16 opcode=ffffffff DEBUG: [ 33398] >> POLL not sent DEBUG: [ 33398] Tuner 2 (6): device status changed into 'not present' DEBUG: [ 33398] << Recorder 1 (1) -> Tuner 3 (7): POLL TRAFFIC: [ 33398] << 17 DEBUG: [ 35532] CLinuxCECAdapterCommunication::Write - ioctl CEC_TRANSMIT - tx_status=a0 len=1 addr=17 opcode=ffffffff TRAFFIC: [ 35532] << 17 DEBUG: [ 37665] CLinuxCECAdapterCommunication::Write - ioctl CEC_TRANSMIT - tx_status=a0 len=1 addr=17 opcode=ffffffff DEBUG: [ 37665] >> POLL not sent DEBUG: [ 37665] Tuner 3 (7): device status changed into 'not present' DEBUG: [ 37665] << Recorder 1 (1) -> Playback 2 (8): POLL TRAFFIC: [ 37665] << 18 DEBUG: [ 39798] CLinuxCECAdapterCommunication::Write - ioctl CEC_TRANSMIT - tx_status=a0 len=1 addr=18 opcode=ffffffff TRAFFIC: [ 39798] << 18 DEBUG: [ 41932] CLinuxCECAdapterCommunication::Write - ioctl CEC_TRANSMIT - tx_status=a0 len=1 addr=18 opcode=ffffffff DEBUG: [ 41932] >> POLL not sent DEBUG: [ 41932] Playback 2 (8): device status changed into 'not present' DEBUG: [ 41932] << Recorder 1 (1) -> Recorder 3 (9): POLL TRAFFIC: [ 41932] << 19 DEBUG: [ 44065] CLinuxCECAdapterCommunication::Write - ioctl CEC_TRANSMIT - tx_status=a0 len=1 addr=19 opcode=ffffffff TRAFFIC: [ 44065] << 19 DEBUG: [ 46198] CLinuxCECAdapterCommunication::Write - ioctl CEC_TRANSMIT - tx_status=a0 len=1 addr=19 opcode=ffffffff DEBUG: [ 46198] >> POLL not sent DEBUG: [ 46198] Recorder 3 (9): device status changed into 'not present' DEBUG: [ 46199] << Recorder 1 (1) -> Tuner 4 (A): POLL TRAFFIC: [ 46199] << 1a DEBUG: [ 48332] CLinuxCECAdapterCommunication::Write - ioctl CEC_TRANSMIT - tx_status=a0 len=1 addr=1a opcode=ffffffff TRAFFIC: [ 48332] << 1a DEBUG: [ 50465] CLinuxCECAdapterCommunication::Write - ioctl CEC_TRANSMIT - tx_status=a0 len=1 addr=1a opcode=ffffffff DEBUG: [ 50465] >> POLL not sent DEBUG: [ 50465] Tuner 4 (A): device status changed into 'not present' DEBUG: [ 50465] << Recorder 1 (1) -> Playback 3 (B): POLL TRAFFIC: [ 50465] << 1b DEBUG: [ 52598] CLinuxCECAdapterCommunication::Write - ioctl CEC_TRANSMIT - tx_status=a0 len=1 addr=1b opcode=ffffffff TRAFFIC: [ 52598] << 1b DEBUG: [ 54732] CLinuxCECAdapterCommunication::Write - ioctl CEC_TRANSMIT - tx_status=a0 len=1 addr=1b opcode=ffffffff DEBUG: [ 54732] >> POLL not sent DEBUG: [ 54732] Playback 3 (B): device status changed into 'not present' DEBUG: [ 54732] << Recorder 1 (1) -> Reserved 1 (C): POLL TRAFFIC: [ 54732] << 1c DEBUG: [ 56865] CLinuxCECAdapterCommunication::Write - ioctl CEC_TRANSMIT - tx_status=a0 len=1 addr=1c opcode=ffffffff TRAFFIC: [ 56865] << 1c DEBUG: [ 58998] CLinuxCECAdapterCommunication::Write - ioctl CEC_TRANSMIT - tx_status=a0 len=1 addr=1c opcode=ffffffff DEBUG: [ 58998] >> POLL not sent DEBUG: [ 58998] Reserved 1 (C): device status changed into 'not present' DEBUG: [ 58998] << Recorder 1 (1) -> Reserved 2 (D): POLL TRAFFIC: [ 58998] << 1d DEBUG: [ 61132] CLinuxCECAdapterCommunication::Write - ioctl CEC_TRANSMIT - tx_status=a0 len=1 addr=1d opcode=ffffffff TRAFFIC: [ 61132] << 1d DEBUG: [ 63265] CLinuxCECAdapterCommunication::Write - ioctl CEC_TRANSMIT - tx_status=a0 len=1 addr=1d opcode=ffffffff DEBUG: [ 63265] >> POLL not sent DEBUG: [ 63265] Reserved 2 (D): device status changed into 'not present' DEBUG: [ 63265] << Recorder 1 (1) -> Free use (E): POLL TRAFFIC: [ 63265] << 1e DEBUG: [ 65398] CLinuxCECAdapterCommunication::Write - ioctl CEC_TRANSMIT - tx_status=a0 len=1 addr=1e opcode=ffffffff TRAFFIC: [ 65398] << 1e DEBUG: [ 67532] CLinuxCECAdapterCommunication::Write - ioctl CEC_TRANSMIT - tx_status=a0 len=1 addr=1e opcode=ffffffff DEBUG: [ 67532] >> POLL not sent DEBUG: [ 67532] Free use (E): device status changed into 'not present' DEBUG: [ 67532] << requesting active source TRAFFIC: [ 67532] << 1f:85 DEBUG: [ 69665] CLinuxCECAdapterCommunication::Write - ioctl CEC_TRANSMIT - tx_status=a0 len=2 addr=1f opcode=85 TRAFFIC: [ 69665] << 1f:85 DEBUG: [ 71798] CLinuxCECAdapterCommunication::Write - ioctl CEC_TRANSMIT - tx_status=a0 len=2 addr=1f opcode=85 DEBUG: [ 71798] << requesting power status of 'TV' (0) TRAFFIC: [ 71798] << 10:8f DEBUG: [ 73932] CLinuxCECAdapterCommunication::Write - ioctl CEC_TRANSMIT - tx_status=a0 len=2 addr=10 opcode=8f TRAFFIC: [ 73932] << 10:8f DEBUG: [ 76065] CLinuxCECAdapterCommunication::Write - ioctl CEC_TRANSMIT - tx_status=a0 len=2 addr=10 opcode=8f DEBUG: [ 76065] << requesting active source TRAFFIC: [ 76065] << 1f:85 DEBUG: [ 78198] CLinuxCECAdapterCommunication::Write - ioctl CEC_TRANSMIT - tx_status=a0 len=2 addr=1f opcode=85 TRAFFIC: [ 78198] << 1f:85 CEC bus information =================== device #0: TV address: 0.0.0.0 active source: no vendor: LG osd string: TV CEC version: 1.3a power status: unknown language: eng device #1: Recorder 1 address: 1.0.0.0 active source: no vendor: LG osd string: CECTester CEC version: 1.3a power status: on language: eng currently active source: unknown (-1) DEBUG: [ 80332] CLinuxCECAdapterCommunication::Write - ioctl CEC_TRANSMIT - tx_status=a0 len=2 addr=1f opcode=85 DEBUG: [ 80332] unregistering all CEC clients NOTICE: [ 80332] unregistering client: libCEC version = 7.1.1, client version = 7.1.1, firmware version = 0, logical address(es) = Recorder 1 (1) , physical address: 1.0.0.0, compiled on 2025-11-01 08:43:55 by docker@b9f211185662 on Linux 6.14.11-2-pve (x86_64), features: P8_USB, DRM, P8_detect, Linux_kernel_API DEBUG: [ 80332] Recorder 1 (1): power status changed from 'on' to 'unknown' DEBUG: [ 80332] Recorder 1 (1): vendor = Unknown (000000) DEBUG: [ 80332] Recorder 1 (1): CEC version unknown DEBUG: [ 80332] Recorder 1 (1): osd name set to 'Recorder 1' DEBUG: [ 80332] Recorder 1 (1): device status changed into 'unknown' DEBUG: [ 80332] CLinuxCECAdapterCommunication::SetLogicalAddresses - ioctl CEC_ADAP_S_LOG_ADDRS - log_addr_mask=0000 num_log_addrs=0 DEBUG: [ 80332] CLinuxCECAdapterCommunication::SetLogicalAddresses - ioctl CEC_ADAP_S_LOG_ADDRS - log_addr_mask=0000 num_log_addrs=0 DEBUG: [ 80332] unregistering all CEC clients DEBUG: [ 80332] CLinuxCECAdapterCommunication::Process - CEC_DQEVENT - CEC_EVENT_STATE_CHANGE - log_addr_mask=0000 phys_addr=1000 DEBUG: [ 80332] CLinuxCECAdapterCommunication::SetLogicalAddresses - ioctl CEC_ADAP_S_LOG_ADDRS - log_addr_mask=0000 num_log_addrs=0 DEBUG: [ 81338] CLinuxCECAdapterCommunication::Process - stopped - m_fd=3 DEBUG: [ 81338] CLinuxCECAdapterCommunication::Close - m_fd=3
cec-ctl -S Driver Info: Driver Name : vc4_hdmi Adapter Name : vc4-hdmi-0 Capabilities : 0x0000030e Logical Addresses Transmit Passthrough Connector Info Reply Vendor ID Driver version : 6.12.56 Available Logical Addresses: 1 DRM Connector Info : card 0, connector 33 Physical Address : 1.0.0.0 Logical Address Mask : 0x0000 CEC Version : 2.0 OSD Name : Logical Addresses : 0 (Allow Fallback to Unregistered)
Power on:
LibreELEC:~ # cec-ctl --user-control-pressed ui-cmd=power-on-function --to 0
Monitor CEC traffic:
LibreELEC:~ # cec-ctl -m