I just tested the RK nightly for RockPro64 (20211028) and remote controller works again after TV goes back from standby!
knaerzche thanks for your time and help
I just tested the RK nightly for RockPro64 (20211028) and remote controller works again after TV goes back from standby!
knaerzche thanks for your time and help
I tested a lot of combination in CEC Adapter setting but none works. Usually it is same or worse (RC doesn't work even kodi service restart).
Nevertheless I found two maybe interesting things:
1) I turned on Kodi debug logs for libCEC. Kodi is trying to change physical address to "FFFF" but there is no such value in CEC Adapter
TV is on and I put it into standby mode:
2021-09-07 19:04:21.604 T:2770 DEBUG <general>: PushCecKeypress - received key a8 duration 73
2021-09-07 19:04:21.604 T:2770 DEBUG <general>: CecLogMessage - >> TV (0) -> Playback 1 (4): user control release (45)
2021-09-07 19:04:26.609 T:2770 DEBUG <general>: CecLogMessage - CLinuxCECAdapterCommunication::Process - ioctl CEC_RECEIVE - rx_status=01 len=8 addr=0f opcode=a0
2021-09-07 19:04:26.609 T:2770 DEBUG <general>: CecLogMessage - >> 0f:a0:00:80:45:20:01:11
2021-09-07 19:04:26.609 T:2770 DEBUG <general>: CecLogMessage - TV (0): power status changed from 'on' to 'standby'
2021-09-07 19:04:26.609 T:2770 DEBUG <general>: CecLogMessage - >> TV (0) -> Broadcast (F): vendor command with id (A0)
2021-09-07 19:04:26.679 T:2770 DEBUG <general>: CecLogMessage - CLinuxCECAdapterCommunication::Process - ioctl CEC_RECEIVE - rx_status=01 len=2 addr=0f opcode=36
2021-09-07 19:04:26.679 T:2770 DEBUG <general>: CecLogMessage - >> 0f:36
2021-09-07 19:04:26.679 T:2770 DEBUG <general>: CecLogMessage - >> TV (0) -> Broadcast (F): standby (36)
2021-09-07 19:04:27.169 T:2770 DEBUG <general>: CecLogMessage - CLinuxCECAdapterCommunication::Process - ioctl CEC_RECEIVE - rx_status=01 len=2 addr=0f opcode=36
2021-09-07 19:04:27.169 T:2770 DEBUG <general>: CecLogMessage - >> 0f:36
TV is in standby mode and I turn it on via RC:
2021-09-07 19:04:40.867 T:2770 DEBUG <general>: CecLogMessage - CLinuxCECAdapterCommunication::Process - CEC_DQEVENT - CEC_EVENT_STATE_CHANGE - log_addr_mask=0000 phys_addr=ffff
2021-09-07 19:04:42.879 T:2770 DEBUG <general>: CecLogMessage - changing physical address to FFFF
2021-09-07 19:04:42.879 T:2770 DEBUG <general>: CecLogMessage - SetDevicePhysicalAddress - not setting invalid physical address ffff
2021-09-07 19:04:42.879 T:2770 DEBUG <general>: SetConfigurationFromLibCEC - settings updated by libCEC
I tried to change physical address in the CEC Adapter settings without any effect.
2) When I run cli command cec-ctl --tv -S while TV is on, Kodi up and RC works properly, immediately after execution RC stops working. I have to restart Kodi service to have RC working again.
munninen Absolutely agree!
Nevertheless, I checked the issue again and found that just restarting Kodi systemctl restart kodi.service solve the issue. Which points me to suspection that the issue is not in the hdmi-cec driver itself but somewhere in the Kodi, or maybe specificaly in libCEC library/addon.
Hi,
just tested 10RC1 (9.97.1) without luck.
knaerzche any chance to have time to continue on this issue?
Unfortunately no improvement. I also made test with removed cec.debounce_ms=5000 from extlinux.conf but there is no difference.
LE starts while TV is on:
Driver Info:
Driver Name : dwhdmi-rockchip
Adapter Name : dw_hdmi
Capabilities : 0x0000010e
Logical Addresses
Transmit
Passthrough
Connector Info
Driver version : 5.10.35
Available Logical Addresses: 4
DRM Connector Info : card 0, connector 61
Physical Address : 1.0.0.0
Logical Address Mask : 0x0010
CEC Version : 1.4
Vendor ID : 0x001582 (Pulse-Eight)
OSD Name : ''
Logical Addresses : 1 (Allow Fallback to Unregistered)
Logical Address : 4 (Playback Device 1)
Primary Device Type : Playback
Logical Address Type : Playback
Initial Event: State Change: PA: 1.0.0.0, LA mask: 0x0010, Conn Info: yes
Display More
TV goes into Standby:
Received from TV to all (0 to 15): VENDOR_COMMAND_WITH_ID (0xa0):
vendor-id: 32837 (0x00008045)
vendor-specific-data: 0x20 0x01 0x11
Received from TV to all (0 to 15): STANDBY (0x36)
Received from TV to all (0 to 15): STANDBY (0x36)
TV is on again:
(warn: State Change events were lost)
Event: State Change: PA: f.f.f.f, LA mask: 0x0000, Conn Info: yes
Received from TV to all (0 to 15): VENDOR_COMMAND_WITH_ID (0xa0):
vendor-id: 32837 (0x00008045)
vendor-specific-data: 0x20 0x00 0x01
Received from TV to all (0 to 15): ROUTING_CHANGE (0x80):
orig-phys-addr: 0.0.0.0
new-phys-addr: 1.0.0.0
Received from TV to all (0 to 15): SET_STREAM_PATH (0x86):
phys-addr: 1.0.0.0
Received from TV to all (0 to 15): ROUTING_CHANGE (0x80):
orig-phys-addr: 0.0.0.0
new-phys-addr: 1.0.0.0
Received from TV to all (0 to 15): SET_STREAM_PATH (0x86):
phys-addr: 1.0.0.0
Display More
Interrupted cec-ctl -m command and started again:
Driver Info:
Driver Name : dwhdmi-rockchip
Adapter Name : dw_hdmi
Capabilities : 0x0000010e
Logical Addresses
Transmit
Passthrough
Connector Info
Driver version : 5.10.35
Available Logical Addresses: 4
DRM Connector Info : card 0, connector 61
Physical Address : f.f.f.f
Logical Address Mask : 0x0000
CEC Version : 1.4
Vendor ID : 0x001582 (Pulse-Eight)
OSD Name : ''
Logical Addresses : 1 (Allow Fallback to Unregistered)
Logical Address : Not Allocated
Primary Device Type : Playback
Logical Address Type : Playback
Initial Event: State Change: PA: f.f.f.f, LA mask: 0x0000, Conn Info: yes
Display More
Sorry for late response. I just downloaded the image but please give me a few more days, I have to order new sd card, and I will test it.
Thanks. Ya, I have two another HDMI cables, no improvement while any cable change.
Just let me know if anything else is needed.
One more thing, I have to appologize and sorry for that. I found I can a bit configure Viera Link on the TV.
I configured it to support Viera Link (CEC) for standby status. After that I can see the message Received from TV to all (0 to 15): CEC_MSG_STANDBY (0x36) when I turn the TV to standby mode via RC. That's only difference from the previously pasted logs - the rest parts of logs continues in same manner.
Nevertheless, the Viera Link configuration doesn't have impact on the behavior. LE 9.2.6 works with both Viera Link configs, LE 10b1 no way with any of them:-(
Btw, I just noticed, LE 10b1 has these additional lines in tho log when I press RC power to turn the TV on:
Sorry, no way to configure in such detail CEC on the TV.
Here is output from cec-ctl -m on LE 9.2.6
TV is ON and I push RC power button to turn TV into standby:
LibreELEC:~ # cec-ctl -m
Driver Info:
Driver Name : dwhdmi-rockchip
Adapter Name : dw_hdmi
Capabilities : 0x0000000e
Logical Addresses
Transmit
Passthrough
Driver version : 4.4.154
Available Logical Addresses: 4
Physical Address : 1.0.0.0
Logical Address Mask : 0x0010
CEC Version : 1.4
Vendor ID : 0x001582
Logical Addresses : 1 (Allow Fallback to Unregistered)
Logical Address : 4 (Playback Device 1)
Primary Device Type : Playback
Logical Address Type : Playback
Initial Event: State Change: PA: 1.0.0.0, LA mask: 0x0010
Received from TV to all (0 to 15): CEC_MSG_VENDOR_COMMAND_WITH_ID (0xa0):
vendor-id: 32837 (0x00008045)
vendor-specific-data: 0x20 0x01 0x10
Display More
A here is output when I press RC power button to wake TV up:
Received from TV to all (0 to 15): CEC_MSG_VENDOR_COMMAND_WITH_ID (0xa0):
vendor-id: 32837 (0x00008045)
vendor-specific-data: 0x20 0x00 0x00
Transmitted by Playback Device 1 to TV (4 to 0): CEC_MSG_VENDOR_COMMAND (0x89):
vendor-specific-data: 0x10 0x02 0xff 0xff 0x00 0x05 0x05 0x45 0x55 0x5c 0x58 0x32
Transmitted by Playback Device 1 to all (4 to 15): CEC_MSG_ACTIVE_SOURCE (0x82):
phys-addr: 1.0.0.0
Received from TV to all (0 to 15): CEC_MSG_ROUTING_CHANGE (0x80):
orig-phys-addr: 0.0.0.0
new-phys-addr: 1.0.0.0
Transmitted by Playback Device 1 to TV (4 to 0): CEC_MSG_IMAGE_VIEW_ON (0x04)
Transmitted by Playback Device 1 to all (4 to 15): CEC_MSG_ACTIVE_SOURCE (0x82):
phys-addr: 1.0.0.0
Transmitted by Playback Device 1 to TV (4 to 0): CEC_MSG_MENU_STATUS (0x8e):
menu-state: activated (0x00)
Received from TV to Playback Device 1 (0 to 4): CEC_MSG_FEATURE_ABORT (0x00):
abort-msg: 137 (0x89)
reason: invalid-op (0x03)
Received from TV to all (0 to 15): CEC_MSG_SET_STREAM_PATH (0x86):
phys-addr: 1.0.0.0
Transmitted by Playback Device 1 to all (4 to 15): CEC_MSG_ACTIVE_SOURCE (0x82):
phys-addr: 1.0.0.0
Received from TV to Playback Device 1 (0 to 4): CEC_MSG_POLL
Received from TV to Playback Device 1 (0 to 4): CEC_MSG_GIVE_PHYSICAL_ADDR (0x83)
Transmitted by Playback Device 1 to all (4 to 15): CEC_MSG_REPORT_PHYSICAL_ADDR (0x84):
phys-addr: 1.0.0.0
prim-devtype: playback (0x04)
Received from TV to Playback Device 1 (0 to 4): CEC_MSG_GIVE_DEVICE_VENDOR_ID (0x8c)
Transmitted by Playback Device 1 to all (4 to 15): CEC_MSG_DEVICE_VENDOR_ID (0x87):
vendor-id: 32837 (0x00008045)
Received from TV to Playback Device 1 (0 to 4): CEC_MSG_VENDOR_COMMAND (0x89):
vendor-specific-data: 0x10 0x01 0x05
Transmitted by Playback Device 1 to TV (4 to 0): CEC_MSG_VENDOR_COMMAND (0x89):
vendor-specific-data: 0x10 0x02 0xff 0xff 0x00 0x05 0x05 0x45 0x55 0x5c 0x58 0x32
Received from TV to Playback Device 1 (0 to 4): CEC_MSG_VENDOR_COMMAND_WITH_ID (0xa0):
vendor-id: 32837 (0x00008045)
vendor-specific-data: 0x06 0x05
Transmitted by Playback Device 1 to all (4 to 15): CEC_MSG_ACTIVE_SOURCE (0x82):
phys-addr: 1.0.0.0
Transmitted by Playback Device 1 to TV (4 to 0): CEC_MSG_IMAGE_VIEW_ON (0x04)
Tx, Error (1), Max Retries
Transmitted by Playback Device 1 to TV (4 to 0): CEC_MSG_IMAGE_VIEW_ON (0x04)
Tx, Error (1), Max Retries
Transmitted by Playback Device 1 to all (4 to 15): CEC_MSG_ACTIVE_SOURCE (0x82):
phys-addr: 1.0.0.0
Tx, Error (1), Max Retries
Transmitted by Playback Device 1 to all (4 to 15): CEC_MSG_ACTIVE_SOURCE (0x82):
phys-addr: 1.0.0.0
Tx, Error (1), Max Retries
Received from TV to Playback Device 1 (0 to 4): CEC_MSG_VENDOR_COMMAND_WITH_ID (0xa0):
vendor-id: 32837 (0x00008045)
vendor-specific-data: 0x06 0x05
Transmitted by Playback Device 1 to all (4 to 15): CEC_MSG_ACTIVE_SOURCE (0x82):
phys-addr: 1.0.0.0
Transmitted by Playback Device 1 to TV (4 to 0): CEC_MSG_IMAGE_VIEW_ON (0x04)
Tx, Error (1), Max Retries
Transmitted by Playback Device 1 to TV (4 to 0): CEC_MSG_IMAGE_VIEW_ON (0x04)
Tx, Error (1), Max Retries
Transmitted by Playback Device 1 to all (4 to 15): CEC_MSG_ACTIVE_SOURCE (0x82):
phys-addr: 1.0.0.0
Tx, Error (1), Max Retries
Transmitted by Playback Device 1 to all (4 to 15): CEC_MSG_ACTIVE_SOURCE (0x82):
phys-addr: 1.0.0.0
Tx, Error (1), Max Retries
Received from TV to Playback Device 1 (0 to 4): CEC_MSG_VENDOR_COMMAND_WITH_ID (0xa0):
vendor-id: 32837 (0x00008045)
vendor-specific-data: 0x06 0x05
Transmitted by Playback Device 1 to all (4 to 15): CEC_MSG_ACTIVE_SOURCE (0x82):
phys-addr: 1.0.0.0
Transmitted by Playback Device 1 to TV (4 to 0): CEC_MSG_IMAGE_VIEW_ON (0x04)
Tx, Error (1), Max Retries
Transmitted by Playback Device 1 to TV (4 to 0): CEC_MSG_IMAGE_VIEW_ON (0x04)
Tx, Error (1), Max Retries
Transmitted by Playback Device 1 to all (4 to 15): CEC_MSG_ACTIVE_SOURCE (0x82):
phys-addr: 1.0.0.0
Tx, Error (1), Max Retries
Transmitted by Playback Device 1 to all (4 to 15): CEC_MSG_ACTIVE_SOURCE (0x82):
phys-addr: 1.0.0.0
Tx, Error (1), Max Retries
Received from TV to all (0 to 15): CEC_MSG_ROUTING_CHANGE (0x80):
orig-phys-addr: 0.0.0.0
new-phys-addr: 1.0.0.0
Transmitted by Playback Device 1 to TV (4 to 0): CEC_MSG_IMAGE_VIEW_ON (0x04)
Transmitted by Playback Device 1 to all (4 to 15): CEC_MSG_ACTIVE_SOURCE (0x82):
phys-addr: 1.0.0.0
Transmitted by Playback Device 1 to TV (4 to 0): CEC_MSG_MENU_STATUS (0x8e):
menu-state: activated (0x00)
Received from TV to all (0 to 15): CEC_MSG_SET_STREAM_PATH (0x86):
phys-addr: 1.0.0.0
Transmitted by Playback Device 1 to all (4 to 15): CEC_MSG_ACTIVE_SOURCE (0x82):
phys-addr: 1.0.0.0
Display More
To be honest, I'm a bit surprised that there is such many lines but in the end it works.
I also checked dmesg on LE 9.2.6 and these lines appear in the output when I wake the TV up:
[ 517.689278] dwhdmi-rockchip ff940000.hdmi: HDMI infoframe: Auxiliary Video Information (AVI), version 2, length 13
[ 517.689304] dwhdmi-rockchip ff940000.hdmi: colorspace: RGB
[ 517.689321] dwhdmi-rockchip ff940000.hdmi: scan mode: Underscan
[ 517.689337] dwhdmi-rockchip ff940000.hdmi: colorimetry: No Data
[ 517.689352] dwhdmi-rockchip ff940000.hdmi: picture aspect: 16:9
[ 517.689367] dwhdmi-rockchip ff940000.hdmi: active aspect: Same as Picture
[ 517.689380] dwhdmi-rockchip ff940000.hdmi: itc: IT Content
[ 517.689395] dwhdmi-rockchip ff940000.hdmi: extended colorimetry: xvYCC 601
[ 517.689410] dwhdmi-rockchip ff940000.hdmi: quantization range: Full
[ 517.689424] dwhdmi-rockchip ff940000.hdmi: nups: Unknown Non-uniform Scaling
[ 517.689438] dwhdmi-rockchip ff940000.hdmi: video code: 19
[ 517.689452] dwhdmi-rockchip ff940000.hdmi: ycc quantization range: Full
[ 517.689466] dwhdmi-rockchip ff940000.hdmi: hdmi content type: Graphics
[ 517.689480] dwhdmi-rockchip ff940000.hdmi: pixel repeat: 0
[ 517.689496] dwhdmi-rockchip ff940000.hdmi: bar top 0, bottom 0, left 0, right 0
Display More
These lines don't show on LE 10b1.
I can see, I was not so clear regarding describing the situation. So, let me rephrase it again:
Interesting is that LE 9.2.6 worked properly without any issue. I can setup 9.2.6 again and check the messages, if you wish...
I tried a lot of "magic" with TV and HDMI cable to disconnect/connect/turn on/turn off/remove from power/... none worked. I have to reboot LE.
Time to time I can see in dmesg ouput LOW_DRIVE status but I cannot figure when the message appears. I checked source code and patches a found that it could be this part of code responsible for that in file projects/Rockchip/patches/linux/default/linux-1003-for-libreelec.patch
@@ -129,8 +130,15 @@ static irqreturn_t dw_hdmi_cec_hardirq(int irq, void *data)
dw_hdmi_write(cec, stat, HDMI_IH_CEC_STAT0);
- if (stat & CEC_STAT_ERROR_INIT) {
- cec->tx_status = CEC_TX_STATUS_ERROR;
+ /* Status with both done and error_initiator bits have been seen
+ * on Rockchip RK3328 devices, transmit attempt seems to have failed
+ * when this happens, report as low drive and block cec-framework
+ * 100ms before core retransmits the failed message, this seems to
+ * mitigate the issue with failed transmit attempts.
+ */
+ if ((stat & (CEC_STAT_DONE|CEC_STAT_ERROR_INIT)) == (CEC_STAT_DONE|CEC_STAT_ERROR_INIT)) {
+ pr_info("dw_hdmi_cec_hardirq: stat=%02x LOW_DRIVE\n", stat);
+ cec->tx_status = CEC_TX_STATUS_LOW_DRIVE;
cec->tx_done = true;
ret = IRQ_WAKE_THREAD;
Display More
No idea if this could be related...
I have 10 years old Panasonic TV. Here is the output of cec-ctl -m:
Driver Info:
Driver Name : dwhdmi-rockchip
Adapter Name : dw_hdmi
Capabilities : 0x0000010e
Logical Addresses
Transmit
Passthrough
Connector Info
Driver version : 5.10.30
Available Logical Addresses: 4
DRM Connector Info : card 0, connector 61
Physical Address : 1.0.0.0
Logical Address Mask : 0x0010
CEC Version : 1.4
Vendor ID : 0x001582 (Pulse-Eight)
OSD Name : ''
Logical Addresses : 1 (Allow Fallback to Unregistered)
Logical Address : 4 (Playback Device 1)
Primary Device Type : Playback
Logical Address Type : Playback
Initial Event: State Change: PA: 1.0.0.0, LA mask: 0x0010, Conn Info: yes
Received from TV to all (0 to 15): VENDOR_COMMAND_WITH_ID (0xa0):
vendor-id: 32837 (0x00008045)
vendor-specific-data: 0x20 0x01 0x10
(warn: State Change events were lost)
Event: State Change: PA: f.f.f.f, LA mask: 0x0000, Conn Info: yes
Received from TV to all (0 to 15): VENDOR_COMMAND_WITH_ID (0xa0):
vendor-id: 32837 (0x00008045)
vendor-specific-data: 0x20 0x00 0x00
Received from TV to all (0 to 15): ROUTING_CHANGE (0x80):
orig-phys-addr: 0.0.0.0
new-phys-addr: 1.0.0.0
Received from TV to all (0 to 15): SET_STREAM_PATH (0x86):
phys-addr: 1.0.0.0
Received from TV to all (0 to 15): ROUTING_CHANGE (0x80):
orig-phys-addr: 0.0.0.0
new-phys-addr: 1.0.0.0
Received from TV to all (0 to 15): SET_STREAM_PATH (0x86):
phys-addr: 1.0.0.0
Display More
First "Received from TV to all..." is when I turn TV off, the rest appeared when I turn TV on.
Hi all,
I have issue with HDMI-CEC on RockPro64 on 10beta1 and nightly (20210420). Turning TV off and on again stops remote controller work. The only resolution is to keep TV on and reboot the system. Then remote controller works until I turn the TV off and on again. It worked perfectly on LE 9.2.6. so nothing to do with HDMI cable or TV itself.
Below are outputs from cec-ctl. Physical address and Logical address mask are changed when the TV goes the off and on cycle.
TV is ON, RockPro64 has been rebooted and RC works:
--------------------------------------------------------------------------------------------
Driver Info:
Driver Name : dwhdmi-rockchip
Adapter Name : dw_hdmi
Capabilities : 0x0000010e
Logical Addresses
Transmit
Passthrough
Connector Info
Driver version : 5.10.30
Available Logical Addresses: 4
DRM Connector Info : card 0, connector 61
Physical Address : 1.0.0.0
Logical Address Mask : 0x0010
CEC Version : 1.4
Vendor ID : 0x001582 (Pulse-Eight)
OSD Name : ''
Logical Addresses : 1 (Allow Fallback to Unregistered)
Logical Address : 4 (Playback Device 1)
Primary Device Type : Playback
Logical Address Type : Playback
TV has been turned off and on again, RC doesn't work:
--------------------------------------------------------------------------------------------
Driver Info:
Driver Name : dwhdmi-rockchip
Adapter Name : dw_hdmi
Capabilities : 0x0000010e
Logical Addresses
Transmit
Passthrough
Connector Info
Driver version : 5.10.30
Available Logical Addresses: 4
DRM Connector Info : card 0, connector 61
Physical Address : f.f.f.f
Logical Address Mask : 0x0000
CEC Version : 1.4
Vendor ID : 0x001582 (Pulse-Eight)
OSD Name : ''
Logical Addresses : 1 (Allow Fallback to Unregistered)
Logical Address : Not Allocated
Primary Device Type : Playback
Logical Address Type : Playback
Any ideas?
Thanks.