I’ve recently migrated from Minix Neo U9-H running CoreElec 9.2.8 to an Odroid N2+ running CoreElec 19.3. The setup is normally connected to a Sony Android TV.
Everything works except HDMI-CEC (which worked on the Minix Neo U9-H) – the N2+ doesn’t appear with a “CoreElec” label in the input selector, and none of the TV remote controls work.
The N2+ works fine with CEC on my Panasonic TV.
I suspect there’s an issue with CE’s version of the aocec
module.
My normal setup is as follows:
Sony TV (HDMI 2) -> ODroid N2+ (CoreElec device)
Sony TV (HDMI 4) -> Yamaha AVR -> various devices
For testing, I disconnected all other devices, so that the only thing connected to the TV is the ODroid N2+. I’ve tried multiple cables, running with completely fresh OpenElec installs (with no configuration changed from default).
Using echo 1 > /sys/class/aocec/dbg_en
, shutting down Kodi, and running cec-client
, it looks like:
-
CE is receiving messages from my TV correctly, I get messages in
dmesg
like:[ 4935.992679@0] cectx ff80023c.aocec: cec b rx len 2: 01 83 [ 4935.992729@0] cectx ff80023c.aocec: read msg len=2
-
CE is trying to respond to these messages, but
cec-client
gets a bunch of write failures:TRAFFIC: [ 8877] >> 01 TRAFFIC: [ 10645] >> 01:83 TRAFFIC: [ 10645] << 1f:84:20:00:01 WARNING: [ 10659] Write: write failed TRAFFIC: [ 10659] << 1f:84:20:00:01 WARNING: [ 10675] Write: write failed
dmesg
also reports the attempts to send messages:[ 4935.992968@1] cectx ff80023c.aocec: cecb: tx len: 5 data: 1f 84 20 00 01 [ 4936.007399@1] cectx ff80023c.aocec: cecb: tx len: 5 data: 1f 84 20 00 01
I’ve attached a logic analyser between the HDMI CEC pin and GND:
That looks to me like CE is able to pull the line low to ACK
, but when sending its own messages, it pulls the line low for 3.7ms (correct), but then doesn’t pull it low again to start transmission… it just pulls it low again after 12.2ms to send another start bit. This doesn’t seems incorrect per CEC 5.2.1, which says a device needs to start transmission of bits at T+4.3-4.7ms.
When I disconnect the TV and run poll 0
, this looks fine (though there is no ACK
from the TV, because that’s disconnected).
I see the same behaviour on the N2+ with CoreElec 9.2.8 and 19.4 nightly (2021-11-06).
Both the ODroid N2+ and Minix U9-H work fine with another Panasonic TV I have.
(I have more logic analyser traces, but I’m not allowed to post more than one image as a new user.)
# dmesg | grep cec
[ 0.949695@3] cectx ff80023c.aocec: cec driver date:2020/03/16:reduece no msg in sleep time
[ 0.949885@4] cectx ff80023c.aocec: compatible:amlogic, aocec-g12a
[ 0.949887@4] cectx ff80023c.aocec: cecb_ver:0x1
[ 0.949889@4] cectx ff80023c.aocec: line_reg:0x1
[ 0.949889@4] cectx ff80023c.aocec: line_bit:0x3
[ 0.949890@4] cectx ff80023c.aocec: ee_to_ao:0x1
[ 0.949987@4] input: cec_input as /devices/virtual/input/input0
[ 0.950068@3] cectx ff80023c.aocec: not find 'port_num'
[ 0.950070@3] cectx ff80023c.aocec: using cec:1
[ 0.950096@3] cectx ff80023c.aocec: no hdmirx regs
[ 0.950098@3] cectx ff80023c.aocec: no hhi regs
[ 0.950103@3] cectx ff80023c.aocec: not find 'arc_port_mask'
[ 0.950105@3] cectx ff80023c.aocec: not find 'output'
[ 0.951621@3] cectx ff80023c.aocec: wakeup_reason:0x0
[ 0.951675@3] cectx ff80023c.aocec: cev val1: 0x0;val2: 0x0
[ 0.951676@3] cectx ff80023c.aocec: aml_cec_probe success end