Skip to content

AOCEC: wrong physical address (1.0.0.0) when display chain is off at startup, never re-evaluated #752

Open

Description

@DesertRec

Continue from #738.

Environment

  • libCEC 8.1.7, client version 4.0.0, firmware 5, features: P8_USB, DRM, P8_detect, AOCEC
  • CoreELEC 22.0-Piers nightly 20260922, Kodi 22
  • Ugoos AM9 Pro (S905X5) -> miniDSP Tide16 (HDMI switch / eARC processor) -> Sony A90J
  • Device type: playback device
  • EDID reports Source Physical Address[a.b.c.d]: 3.1.0.0 at all times

Description

When Kodi starts with the display chain powered off, libCEC resets the HDMI port and base device to defaults and registers as 1.0.0.0, discarding the 3.1.0.0 supplied by the EDID. The address is never re-evaluated afterwards, even once the full topology is known, so the TV lists the device on HDMI 1 for the rest of the session. Restarting the CEC client with the chain powered on fixes it.

Note the TV is reported as present immediately before the reset, so this is not a fallback for an unreachable display.

Reproduction

  1. Power off the TV and the intermediate device
  2. Reboot the box (headless)
  3. Power the display chain on

Broken case - chain off at startup

02:47:30.853  TV (0): device status changed into 'present'
02:47:31.058  resetting HDMI port and base device to defaults
02:47:31.058  changing physical address to 1000
02:47:31.136  Playback 1 (4): physical address changed from ffff to 1000
02:47:31.136  CEC client registered: libCEC version = 8.1.7 ... physical address: 1.0.0.0

Later in the same session, with the topology fully discovered, the address is still not corrected:

02:48:43.536  Audio (5): physical address changed from ffff to 3000
02:49:19.564  >> TV (0) -> Broadcast (F): report physical address (84)
02:49:19.564  << Playback 1 (4) -> broadcast (F): physical address 1000
02:49:23.405  >> TV (0) sets stream path to physical address 3000
02:49:24.927  >> TV (0) -> Playback 1 (4): give physical address (83)
02:49:24.927  << Playback 1 (4) -> broadcast (F): physical address 1000

libCEC knows an audio system sits at 3.0.0.0, which is incompatible with its own 1.0.0.0, and still answers 1000 when asked directly.

Working case - same hardware, 11 minutes earlier, intermediate device powered on at startup

02:36:53.889  TV (0): device status changed into 'present'
02:36:54.099  using auto-detected physical address 3100
02:36:54.177  Playback 1 (4): physical address changed from ffff to 3100
02:36:54.177  CEC client registered ... physical address: 3.1.0.0

Expected

Either the EDID address should not be discarded by the default reset, or the physical address should be re-evaluated when the display chain becomes available - in particular on give physical address, or when a device is discovered whose address contradicts the local one.

Possibly related to #738, whose fix appears to have been applied to the Pulse-Eight USB path; this is the AOCEC adapter.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions