Guest - Testers are needed for the reworked CDateTime core component. See... https://forum.kodi.tv/showthread.php?tid=378981 (September 29) x
Bug libCEC - Doesnt respects Physicall Address
#1
I jumped from 3.0.1 libCEC to 4.0.4, so I tested, if its better. And I found, that (long term present) bug still appears when using CEC.

Configuration:
TV (0000) <–> AVR (2000)[HDMI2 on TV] <–> Odroid C2 (2100)[HDMI1 on AVR].
When AVR switched off, it passthroughs HDMI signal from C2 to TV.

Reproducing:
Default configuration, TV set ON, AVR OFF (signal is passthrough to TV), source HDMI2.
When C2 is started, Its detected correctly as Playback device 1 (logical adress 4), get physicall adress 2100, CEC works.

txt:
CecLogMessage - Playback 1 (4): device status changed into 'handled by libCEC'
11:36:57.495 T:3809579888 DEBUG: CecLogMessage - Playback 1 (4): power status changed from 'unknown' to 'on'
11:36:57.495 T:3809579888 DEBUG: CecLogMessage - Playback 1 (4): vendor = Pulse Eight (001582)
11:36:57.495 T:3809579888 DEBUG: CecLogMessage - Playback 1 (4): CEC version 1.4
11:36:57.495 T:3809579888 DEBUG: CecLogMessage - AllocateLogicalAddresses - device '0', type 'playback device', LA '4'
11:36:57.495 T:3809579888 DEBUG: CecLogMessage - Playback 1 (4): physical address changed from ffff to 2100
11:36:57.496 T:3809579888 DEBUG: CecLogMessage - Playback 1 (4): osd name set to 'Kodi'
11:36:57.496 T:3809579888 DEBUG: CecLogMessage - Playback 1 (4): menu language set to 'eng'
11:36:57.496 T:3809579888 DEBUG: CecLogMessage - physical address unchanged (2100)

But, when I switched source @TV to TV program (ie. other source), and then I switched back to HDMI2, CEC is lost. Logs shows, that routes go to 2000 instead of 2100.
txt:

11:40:10.041 T:3809579888   DEBUG: CecLogMessage - >> 0f:82:00:00
11:40:10.042 T:3809579888   DEBUG: CecLogMessage - making TV (0) the active source
11:40:10.043 T:3809579888   DEBUG: CecLogMessage - marking Playback 1 (4) as inactive source
11:40:10.043 T:3809579888   DEBUG: CecLogMessage - >> source deactivated: Playback 1 (4)
11:40:10.044 T:3809579888   DEBUG: CecLogMessage - >> TV (0) -> Broadcast (F): active source (82)
11:40:15.799 T:3809579888   DEBUG: CecLogMessage - >> 0f:80:00:00:20:00
11:40:15.799 T:3809579888   DEBUG: CecLogMessage - >> TV (0) -> Broadcast (F): routing change (80)
11:40:16.405 T:3809579888   DEBUG: CecLogMessage - >> 0f:86:20:00
11:40:16.405 T:3809579888   DEBUG: CecLogMessage - >> TV (0) sets stream path to physical address 2000
11:40:16.405 T:3809579888   DEBUG: CecLogMessage - >> TV (0) -> Broadcast (F): set stream path (86)

Well, maybe some automaticLibcec cant be setuped by logical adresses, no problem, I can setup physicall ones. The trouble is, that even I setuped this option to 2100 through GUI

xml:
<setting id="physical_address" value="2100" />

it doesnt help. When I switched on TV from Playback device 1 to TV (ie other source than C2), and then back, I lost my CEC in case AVR is on the way (I dont expect this issue with direct connection TV-C2).

I tried also choose AVR and hdmi port 1 on Peripherals, doesnt help either.

Other weird thing I noticed, even when user change psychical adress (and its written to CEC peripherals config file `cec_CEC_Adapter.xml` first), after Kodi restart, in Peripherals is again default psychical adress value shown (greyed 0), and also .xml value returns to default 0.

P.S.: Turn off and on TV doesnt cause this problem, if source is remained to HDMI2. The actual switching sources on TV seems to trigger this. Setting playback device as inactive source is correct, but there is some bug when set it again to active, in this particular configuration.

Full .xml after setup PA:
xml:
  <settings>
        <setting id="activate_source" value="1" />
        <setting id="button_release_delay_ms" value="0" />
        <setting id="button_repeat_rate_ms" value="0" />
        <setting id="cec_hdmi_port" value="1" />
        <setting id="cec_standby_screensaver" value="0" />
        <setting id="cec_wake_screensaver" value="0" />
        <setting id="connected_device" value="36038" />
        <setting id="device_name" value="Kodi" />
        <setting id="device_type" value="1" />
        <setting id="double_tap_timeout_ms" value="100" />
        <setting id="enabled" value="1" />
        <setting id="pause_or_stop_playback_on_deactivate" value="231" />
        <setting id="pause_playback_on_deactivate" value="0" />
        <setting id="physical_address" value="2100" />
        <setting id="power_avr_on_as" value="0" />
        <setting id="send_inactive_source" value="0" />
        <setting id="standby_devices" value="231" />
        <setting id="standby_devices_advanced" value="" />
        <setting id="standby_pc_on_tv_standby" value="36028" />
        <setting id="standby_tv_on_pc_standby" value="0" />
        <setting id="tv_vendor" value="0" />
        <setting id="use_tv_menu_language" value="0" />
        <setting id="wake_devices" value="231" />
        <setting id="wake_devices_advanced" value="" />
    </settings>

So, I found two strange things:
  1. Setup of physical address doesnt affects PA after TV source switch and back
  2. Value (2100) is written to the .xml after setup, but after reboot C2 value is overriden, and goes back to the zero.
I differentiate those two clearly, because 2. doesnt causes 1; ie. even before restart, after manual PA change through OSD, pop-up notifies about CEC conf update, .xml file is updated, CEC works (on 2100) after this manual change (which is good sign that value is correct). Still, after switching to different source on TV and then back to C2, CEC goes into 2000 instead of choosed 2100. And on top of that, after restart this “PA choose” is reverted to default.
Reply
#2
Exclamation 
(2019-02-04, 19:49)JimmySmith2 Wrote: I jumped from 3.0.1 libCEC to 4.0.4, so I tested, if its better. And I found, that (long term present) bug still appears when using CEC.

Configuration:
TV (0000) <–> AVR (2000)[HDMI2 on TV] <–> Odroid C2 (2100)[HDMI1 on AVR].
When AVR switched off, it passthroughs HDMI signal from C2 to TV.

Reproducing:
Default configuration, TV set ON, AVR OFF (signal is passthrough to TV), source HDMI2.
When C2 is started, Its detected correctly as Playback device 1 (logical adress 4), get physicall adress 2100, CEC works.

txt:
CecLogMessage - Playback 1 (4): device status changed into 'handled by libCEC'
11:36:57.495 T:3809579888 DEBUG: CecLogMessage - Playback 1 (4): power status changed from 'unknown' to 'on'
11:36:57.495 T:3809579888 DEBUG: CecLogMessage - Playback 1 (4): vendor = Pulse Eight (001582)
11:36:57.495 T:3809579888 DEBUG: CecLogMessage - Playback 1 (4): CEC version 1.4
11:36:57.495 T:3809579888 DEBUG: CecLogMessage - AllocateLogicalAddresses - device '0', type 'playback device', LA '4'
11:36:57.495 T:3809579888 DEBUG: CecLogMessage - Playback 1 (4): physical address changed from ffff to 2100
11:36:57.496 T:3809579888 DEBUG: CecLogMessage - Playback 1 (4): osd name set to 'Kodi'
11:36:57.496 T:3809579888 DEBUG: CecLogMessage - Playback 1 (4): menu language set to 'eng'
11:36:57.496 T:3809579888 DEBUG: CecLogMessage - physical address unchanged (2100)

But, when I switched source @TV to TV program (ie. other source), and then I switched back to HDMI2, CEC is lost. Logs shows, that routes go to 2000 instead of 2100.
txt:

11:40:10.041 T:3809579888   DEBUG: CecLogMessage - >> 0f:82:00:00
11:40:10.042 T:3809579888   DEBUG: CecLogMessage - making TV (0) the active source
11:40:10.043 T:3809579888   DEBUG: CecLogMessage - marking Playback 1 (4) as inactive source
11:40:10.043 T:3809579888   DEBUG: CecLogMessage - >> source deactivated: Playback 1 (4)
11:40:10.044 T:3809579888   DEBUG: CecLogMessage - >> TV (0) -> Broadcast (F): active source (82)
11:40:15.799 T:3809579888   DEBUG: CecLogMessage - >> 0f:80:00:00:20:00
11:40:15.799 T:3809579888   DEBUG: CecLogMessage - >> TV (0) -> Broadcast (F): routing change (80)
11:40:16.405 T:3809579888   DEBUG: CecLogMessage - >> 0f:86:20:00
11:40:16.405 T:3809579888   DEBUG: CecLogMessage - >> TV (0) sets stream path to physical address 2000
11:40:16.405 T:3809579888   DEBUG: CecLogMessage - >> TV (0) -> Broadcast (F): set stream path (86)

Well, maybe some automaticLibcec cant be setuped by logical adresses, no problem, I can setup physicall ones. The trouble is, that even I setuped this option to 2100 through GUI

xml:
<setting id="physical_address" value="2100" />

it doesnt help. When I switched on TV from Playback device 1 to TV (ie other source than C2), and then back, I lost my CEC in case AVR is on the way (I dont expect this issue with direct connection TV-C2).

I tried also choose AVR and hdmi port 1 on Peripherals, doesnt help either.

Other weird thing I noticed, even when user change psychical adress (and its written to CEC peripherals config file `cec_CEC_Adapter.xml` first), after Kodi restart, in Peripherals is again default psychical adress value shown (greyed 0), and also .xml value returns to default 0.

P.S.: Turn off and on TV doesnt cause this problem, if source is remained to HDMI2. The actual switching sources on TV seems to trigger this. Setting playback device as inactive source is correct, but there is some bug when set it again to active, in this particular configuration.

Full .xml after setup PA:
xml:
  <settings>
        <setting id="activate_source" value="1" />
        <setting id="button_release_delay_ms" value="0" />
        <setting id="button_repeat_rate_ms" value="0" />
        <setting id="cec_hdmi_port" value="1" />
        <setting id="cec_standby_screensaver" value="0" />
        <setting id="cec_wake_screensaver" value="0" />
        <setting id="connected_device" value="36038" />
        <setting id="device_name" value="Kodi" />
        <setting id="device_type" value="1" />
        <setting id="double_tap_timeout_ms" value="100" />
        <setting id="enabled" value="1" />
        <setting id="pause_or_stop_playback_on_deactivate" value="231" />
        <setting id="pause_playback_on_deactivate" value="0" />
        <setting id="physical_address" value="2100" />
        <setting id="power_avr_on_as" value="0" />
        <setting id="send_inactive_source" value="0" />
        <setting id="standby_devices" value="231" />
        <setting id="standby_devices_advanced" value="" />
        <setting id="standby_pc_on_tv_standby" value="36028" />
        <setting id="standby_tv_on_pc_standby" value="0" />
        <setting id="tv_vendor" value="0" />
        <setting id="use_tv_menu_language" value="0" />
        <setting id="wake_devices" value="231" />
        <setting id="wake_devices_advanced" value="" />
    </settings>

So, I found two strange things:
  1. Setup of physical address doesnt affects PA after TV source switch and back
  2. Value (2100) is written to the .xml after setup, but after reboot C2 value is overriden, and goes back to the zero.
I differentiate those two clearly, because 2. doesnt causes 1; ie. even before restart, after manual PA change through OSD, pop-up notifies about CEC conf update, .xml file is updated, CEC works (on 2100) after this manual change (which is good sign that value is correct). Still, after switching to different source on TV and then back to C2, CEC goes into 2000 instead of choosed 2100. And on top of that, after restart this “PA choose” is reverted to default.  

For the Love of Pete, can somebody respond to this with a solution?  I've been fighting the same issue, on multiple systems and OSes and versions of Kodi, for years.

I understand that this is likely a problem with my TV, but it is simple enough to work around it by specifying the proper address. So why on earth can't we get a manually configured CEC address to stick? I'm so sick and tired of having to spend time getting the remote to work again everytime either the TV or the PC restarts, and now I've wasted yet another half of my Saturday in another failed attempt to find a solution.

The OP describes the situation well enough, but I can provide a log if needed.
Reply

Logout Mark Read Team Forum Stats Members Help
libCEC - Doesnt respects Physicall Address0