HDMI-CEC: one remote, many brand names, and why it half works

HDMI-CEC (Consumer Electronics Control) is a slow control bus that lets HDMI devices command each other, which is why one remote can wake your TV, switch it to the right input and drop a receiver into standby at once. It half works because the HDMI specification makes the CEC wiring mandatory while leaving the implementation optional, so two fully compliant devices can support completely different subsets of the same command set. At least 22 marketing names have been printed on that one feature.

The bus is slow, old, and borrowed

Wikipedia's HDMI article describes CEC as "a one-wire bidirectional serial bus that is based on the CENELEC standard AV.link protocol". AV.link is not an HDMI invention. It comes out of the SCART era, standardised as CENELEC EN 50157-1, and Wikipedia's SCART article notes that it "appears as the Consumer Electronics Control channel in HDMI". On the full size Type A connector, that bus sits on pin 13.

The Linux kernel's CEC API documentation puts a number on the speed: "The bitrate is very slow (effectively no more than 36 bytes per second)." Messages are sized to match, and libCEC caps a frame at 16 blocks (CEC_MAX_FRAME_SIZE 16): one header, one opcode, up to 14 operands.

One correction, because most CEC writing repeats the error. Wikipedia says CEC "was defined in HDMI Specification 1.0 and updated in HDMI 1.2, HDMI 1.2a and HDMI 1.3a", and articles routinely conclude that CEC has been frozen since 2006. It has not. The kernel documentation states that "the protocol for CEC version 1.4 is defined in supplements 1 (CEC) and 2 (HEAC or HDMI Ethernet and Audio Return Channel) of the HDMI 1.4a specification and the extensions added to CEC version 2.0 are defined in chapter 11 of the HDMI 2.0 specification". CEC carries its own version numbers, currently up to 2.0, tracked separately from the HDMI version on the box. What stopped is the marketing: hdmi.org's specification overview does not mention CEC, and neither does its HDMI 2.2 material.

The addressing explains most of the quirks you will hit. Each device claims a 4 bit logical address describing what kind of box it is. In libCEC, the open source library Pulse-Eight publish for their USB-CEC adapters and for hardware like the Raspberry Pi, the enumeration runs from CECDEVICE_TV = 0 to CECDEVICE_FREEUSE = 14, with 15 doing double duty as CECDEVICE_UNREGISTERED and CECDEVICE_BROADCAST. Address 0 is always the TV. There is exactly one audio system slot, address 5, which is why a receiver and a soundbar contend for one seat. Because 15 is spent on broadcast, 15 addresses remain usable, which is where the "up to 15 CEC-enabled devices" figure comes from.

The CEC logical address slots and the two that cause trouble A strip of the logical addresses a CEC device can claim, numbered 0 to 15. Address 0 is highlighted as the TV, which always holds it. Address 5 is highlighted as the single audio system slot, so a receiver and a soundbar contend for one seat. Address 14 is the last named entry in the libCEC enumeration, CECDEVICE_FREEUSE. Address 15 sits apart from the rest because it is spent on unregistered and broadcast rather than on a device, which is why 15 addresses remain usable and why a standby sent to 15 reaches every device on the bus at once. Every device claims a 4 bit logical address 15 addresses remain usable, one device each 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 spent 0 TV. The display always holds address 0. 5 Audio system. One slot only, so a receiver and a soundbar contend for it. 15 Unregistered and broadcast. A standby (0x36) sent here reaches every device. 14 is CECDEVICE_FREEUSE, the last entry in the libCEC enumeration. A separate physical address says which port and how deep, renegotiated only at power-on.
Address 5 is why a receiver and a soundbar cannot both be the audio system, and address 15 is why one message can put the whole rack to sleep.

Every device also carries a physical address: a hierarchical value saying which HDMI port it hangs off and how many hops deep it sits behind switches and receivers. It is negotiated at power-on, not continuously, which is why re-cabling a live rack leaves the bus holding a stale map.

Everyone renamed it

The most common support problem with CEC is that you cannot find a setting called CEC. Wikipedia's trade name list runs to 19 vendor rows carrying 22 distinct marketing names, plus three vendors who never branded it.

BrandCEC trade name(s)
SamsungAnynet+
LGSimpLink
SonyBRAVIA Link, BRAVIA Sync, Control for HDMI
PanasonicVIERA Link, HDAVI Control, EZ-Sync
PhilipsEasyLink
SharpAquos Link
ToshibaCE-Link, Regza Link
OnkyoRIHD (Remote Interactive over HDMI)
PioneerKuro Link
MitsubishiNetCommand for HDMI, Realink for HDMI
Insignia, WestinghouseINlink
Funai, Sylvania, Emerson, Magnavox, PhilipsFun-Link
ITT, ThomsonT-Link
AOCE-link
Runco InternationalRuncoLink
Roku1-Touch Play
HitachiHDMI-CEC
HisenseCEC
VizioCEC

Sony and Panasonic each ship three names for one feature. Philips appears twice, under its own EasyLink and again in the Fun-Link group it shares with Funai, Sylvania, Emerson and Magnavox. Hitachi, Hisense and Vizio use the bare protocol name, so on those sets there is no clever product name to hunt for. Treat the Vizio row as historical: Vizio's CEC support URL now redirects off Vizio's domain to an unrelated third party site, so it could not be checked against a live vendor page.

Three of the big four still document CEC as a current feature. Samsung's Anynet+ page, updated 14 April 2026, defines Anynet+ as standing for "Any Network" and puts the toggle under External Device Manager. LG's two SimpLink pages, updated 12 and 17 July 2026, describe it flatly ("HDMI cables have a CEC function, enabling power control between products") and give the menu location for every webOS generation back to 2018; the entry moved from a Connection section to a Devices section with the 2021 webOS 6.0 sets. Panasonic states that VIERA Link "is based on the control functions provided by HDMI and industry standard known as HDMI CEC", then sets expectations correctly: "its operation with other manufacturers' equipment that supports HDMI CEC cannot be guaranteed."

Failure mode one: the wrong input keeps stealing the screen

Two opcodes cause this. CEC_OPCODE_ACTIVE_SOURCE (0x82) is a device announcing that it should be on screen right now. CEC_OPCODE_SET_STREAM_PATH (0x86) is the TV telling the device at a given physical address to become the active source. Any device leaving standby is entitled to send 0x82, so a console waking to install a patch, or a streaming stick rebooting after a firmware push, can pull the display off whatever you were watching.

Before blaming the source device, check the port. Pulse-Eight document that "on some LG TV models, CEC is only fully active on specific HDMI ports", and that "HDMI port 1 is typically the primary CEC port on LG televisions", so the same player can work on one input and go deaf on another. On LG commercial and Pro panels there is a second trap: "The Set ID must be set to 1 for standard CEC communication to function correctly." Pulse-Eight note that this issue is specific to commercial and Pro displays, not consumer sets.

Failure mode two: the whole rack sleeps and wakes together

CEC_OPCODE_STANDBY is 0x36, and it can be sent point to point or broadcast to logical address 15, meaning every device on the bus. A broadcast standby is working exactly as designed when it takes your soundbar down with the TV. The design assumes you want one power domain, and often you do not.

If a device has to stay up, an always-on media server, a console downloading in rest mode, a Pi acting as a client, turn CEC off on that device rather than at the TV. Disabling it at the TV kills the useful behaviour for everything else.

Panasonic documents the related annoyance: if the connection or setting of HDAVI Control equipment changes, you should "switch the power of this unit Off and On again while the power of all equipment is On". That is physical address negotiation being redone. If CEC broke the day you added a box, power cycling the whole chain with everything connected is the first move, not a factory reset.

Failure mode three: a receiver that will not pass control through

This is where CEC gets expensive to debug, because video and audio keep working while control silently does not. The Denon AVR-X2800H manual carries the cleanest example: "The HDMI OUT MONITOR 2 connector is not compatible with the HDMI Control function. Use the HDMI OUT MONITOR 1 connector to connect to the TV." Plug the TV into the second output and you get a perfect picture with no control link, and nothing on screen explains why. Denon also requires HDMI Control on every connected device, not just the receiver.

Why the second monitor output on a receiver kills the control link Two identical chains compared, source device to AV receiver to TV. In the top chain the TV is on HDMI OUT MONITOR 1 and two arrows reach the TV, one for the picture and one for CEC control on pin 13, so the remote works. In the bottom chain the TV is on HDMI OUT MONITOR 2 and only the picture arrow reaches the TV; the control path stops partway with a cross mark and never arrives. Both chains show a full picture, which is why this failure is hard to find. Two monitor outputs, one control path TV on HDMI OUT MONITOR 1 Source device AV receiver HDMI OUT MONITOR 1 picture CEC control TV remote works Denon requires HDMI Control enabled on every connected device, not just the receiver. TV on HDMI OUT MONITOR 2 Source device AV receiver HDMI OUT MONITOR 2 picture CEC control does not arrive TV picture only Video and audio keep working while control silently does not, and nothing on screen explains why. picture path CEC control, pin 13 control blocked at the connector
Only the connector changes between the two rows. The cable, the source and the picture are identical, which is what makes this one expensive to find.

Sonos surfaces the same class of problem as a literal in-app error, either "There is a device interfering with the HDMI connection" or "CEC broadcast blocked. There is a device connected to your TV causing an issue." Sonos attribute it to "interference from another HDMI device connected to the TV, like an audio receiver, cable box, or game console". Their procedure is worth copying whatever hardware you own: enable CEC in the TV's menu, disconnect every HDMI device on that TV, then plug them back one at a time. The device that brings the error back is the offender.

Yamaha's RX-V685 manual concedes a scaling limit without publishing a number: "HDMI Control may not work properly if the number of connected devices exceeds the limit. In this case, disable HDMI Control on devices not in use." The same page recommends "using TV and playback devices from the same manufacturer so that HDMI Control works more effectively", a vendor conceding that cross-brand CEC is best effort.

What to disable, and in what order

Treat CEC as opt-in per device, not a global switch. Leave it on at the TV, leave it on for the one source you genuinely drive with the TV remote, and turn it off everywhere else. That buys the input switching and single-remote volume control people want, without letting five devices arbitrate power state on a bus with a broadcast standby command.

When something misbehaves, work in this order: confirm which HDMI port on the TV carries full CEC, confirm the receiver output you used is the CEC-capable one, power cycle the entire chain with all devices connected, then disable CEC one device at a time starting with consoles and cable boxes. If a device offers no CEC toggle, the physical fallback is a cable or adapter with pin 13 not connected, which is what Sonos suggest for an interfering device you cannot configure. One Samsung limitation to note while testing: Samsung state that "you can only set up and operate Anynet+ (HDMI-CEC) settings and devices with the Samsung TV remote control", so a universal remote or phone app will not do this part.

Newer hardware does not rescue any of this. The HDMI Forum announced version 2.2 on 6 January 2025 and released it on 25 June 2025, raising the maximum bit rate to 96 Gbit/s and adding the Latency Indication Protocol for audio and video sync. CEC appears nowhere in that material. The control channel a 96 Gbit/s cable carries is the one a decade-old cable carries, provided the conductor is actually there, which is why Panasonic still specify that VIERA Link "needs an HDMI compliant (fully wired) cable" and why a cheap cable with missing pins can break control while passing a 4K picture.

Sources