HDMI-CEC Issues with Odroid N2 on Samsung S93D TV

Note: summary written with help of ChatGPT to summarize the troubleshooting done.

Problem Description

I am experiencing intermittent HDMI-CEC functionality between my Odroid N2 running CoreELEC after upgrading to a Samsung 2024 OLED S93D TV. Previously used with my 10 year old Samsung 4K TV without any problems. No other hardware or software changes on the CoreELEC box. The issue manifests as:

  • Intermittent Button Presses: TV remote inputs are only sporadically recognized by the Odroid.
  • CEC Commands Dropping Off: HDMI-CEC communication works briefly after powering on the Odroid but stops after ~10 seconds.
  • No Persistent Communication: Despite multiple attempts to maintain the active source and presence, the TV seems to lose awareness of the Odroid.

Notably, I suffered from an issue where the TV indicated the source was “offline” was resolved by switching the Odroid to HDMI Port 1, which now matches the physical address (1.0.0.0). This leads me to believe that the Odroid does not know to which port it is connected.

However, the intermittent input recognition remains a problem.

Likely the issue is with the TV, but these CEC issues are notoriously hard to troubleshoot so I appreciate any help I can get.


Setup Details

  • Odroid Device: Odroid N2 running CoreELEC (latest stable version, with libCEC version 6.0.2).
  • TV: Samsung S93D OLED 2024 (latest firmware installed).
  • Connection: High-quality HDMI cable supporting 4K HDR, connected to HDMI Port 1 (CEC enabled).
  • CEC Adapter Configuration:
    • Kodi configured to make the device the active source on startup.
    • Send “inactive source” on shutdown is enabled.
    • Pause playback on TV power-off is enabled.

Troubleshooting Attempts

  1. Switch to HDMI Port 1: Resolved the issue where the TV would incorrectly disconnect the source.
  2. Sending CEC Commands via cec-client:
    • Used commands to announce presence, set the active source, and maintain communication:
      • echo "as" | cec-client -s — Announced active source.
      • echo "tx 1f:84:10:00:01" | cec-client -s — Broadcast physical address and device type.
      • echo "tx 1f:82:10:00" | cec-client -s — Set active source.
      • echo "tx 1f:87:00:00:f0" | cec-client -s — Sent heartbeat messages.
    • Commands were sent successfully but did not resolve the issue. Responses from the TV are intermittent, and button presses stop being registered after a short time.
  3. Polling Power and Vendor Status:
    • TV sometimes reports “unknown” power state or fails to respond to queries like echo "tx 10:8f" | cec-client -s.
    • Vendor ID queries (tx 1f:8c) and device status checks produce inconsistent results.
    • Scanning the HDMI settings yields the following results. The two commands were done right after one another without any change in circumstances or other actions:
CoreELEC:~ # 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:        Unknown
osd string:    TV
CEC version:   1.4
power status:  on
language:      eng
 
 
device #1: Recorder 1
address:       1.0.0.0
active source: no
vendor:        Pulse Eight
osd string:    CECTester
CEC version:   1.4
power status:  on
language:      eng
 
 
currently active source: unknown (-1)
CoreELEC:~ # echo 'scan' | cec-client -s -d 4
opening a connection to the CEC adapter...
NOTICE:  [              48]     connection opened
NOTICE:  [            1357]     setting HDMI port to 1 on device TV (0)
NOTICE:  [            1535]     setting HDMI port to 1 on device TV (0)
NOTICE:  [            1691]     CEC client registered: libCEC version = 6.0.2, client version = 6.0.2, firmware version = 5, logical address(es) = Recorder 1 (1) , base device: TV (0), HDMI port number: 1, physical address: 1.0.0.0,  compiled on 2024-03-05 09:30:17 by portisch@ubuntu on Linux 6.5.0-17-generic (x86_64), features: P8_USB, DRM, P8_detect, AOCEC
requesting CEC bus information ...
CEC bus information
===================
device #0: TV
address:       0.0.0.0
active source: no
vendor:        Samsung
osd string:    TV
CEC version:   unknown
power status:  unknown
language:      eng
 
 
device #1: Recorder 1
address:       1.0.0.0
active source: no
vendor:        Pulse Eight
osd string:    CECTester
CEC version:   1.4
power status:  on
language:      eng
 
 
currently active source: unknown (-1)
NOTICE:  [           16384]     unregistering client: libCEC version = 6.0.2, client version = 6.0.2, firmware version = 5, logical address(es) = Recorder 1 (1) , base device: TV (0), HDMI port number: 1, physical address: 1.0.0.0,  compiled on 2024-03-05 09:30:17 by portisch@ubuntu on Linux 6.5.0-17-generic (x86_64), features: P8_USB, DRM, P8_detect, AOCEC
CoreELEC:~ #
  1. Testing OSD Messages:
    • Attempts to display OSD messages using echo "osd <message>" | cec-client -s yielded no visible results.
  2. Power Cycling:
    • Multiple power cycles of both the TV and Odroid did not improve functionality.
  3. Alternative HDMI Ports:
    • Previously tested HDMI Ports 3 and 4. Neither resolved the issue.

What Works

  • I was initially suffering from an issue where any change in CEC settings on the Odroid would cause the TV to disconnect. However, after further inspection the TV was switching to HDMI port 1. Switching the Odroid N2 to port 1 solved this issue. However it also tells me that Kodi is not getting any information regarding to which port it is connected.
  • Initial HDMI-CEC communication including button presses works for ~10 seconds after powering on the Odroid. After a few seconds they become intermittent and if I leave the TV and Odroid N2 unattended for ~30 minutes, I get no response from any button presses.

What Doesn’t Work

  • Remote button presses become unresponsive shortly after powering on the Odroid.
  • Commands to maintain active source or device presence do not resolve the issue.
  • TV sometimes fails to respond to basic power or vendor queries.

Request for Help

I am looking for assistance to:

  1. Debug and stabilize the HDMI-CEC connection between the Odroid and TV.
  2. Ensure that button presses from the TV remote consistently reach the Odroid.
  3. Identify if there are additional configuration tweaks or firmware-related issues that might improve compatibility.

Any advice or troubleshooting tips would be greatly appreciated. Please let me know if more information is needed!

Edit:
I did a fresh install of CE 21.1.1, but here the CEC response is also spotty until it cuts out after some time.
Also I installed LibreELEC on a pi3, and that one responded to inputs perfectly fine, snappy and fast. Latest LibreELEC is using libCEC v4.something, CoreELEC uses v6.something, maybe that is a problem? I tried looking around for options to downgrade to an older version, but I couldn’t manage.