There was a lot of chatter on the industry blogs and podcasts right before Microsoft released the Xbox One regarding the support, or lack thereof, for HDMI Consumer Electronics Control (CEC). Rumor had it that CEC was part of the new platform. Since I was involved a couple of years ago with providing input to Microsoft on the justification for including CEC support in the new version of Windows (now Windows 8) and the new Xbox, I thought they finally might have pulled it off.
I guess I was hopeful and was one of the first ones to tweet that CEC did work. After all, I plugged my 2011 Panasonic plasma, an old Sony 5.1 receiver, and a Verizon HD set top box in via HDMI, configured my devices through a simple setup process on the Xbox One, and everything worked great. Not only did I not connect an IR blaster, I mounted the Kinect above the TV with it facing out into the room – the opposite direction from all of my equipment. I assumed the control was happening through HDMI’s CEC. Awesome!
Then the questions started rolling in. It was not working for many others and everyone questioned my assumptions. Unfortunately, I was more interested in checking out the Xbox One experience at the time and had not thought the whole control piece through. What really threw me off and originally led me down the path of CEC was that the Xbox One discovered my TV type and was able to control it without my entering in any make or model information like you normally would when setting up IR. In addition, it stated that it could not discover my receiver type and had me enter the make and model. I did not think much of it at the time because my test setup had an early Sony receiver that I assumed did not support CEC – which, in hindsight, made no sense since the Xbox One would not have been able to control it via CEC when I was finished.
I did not connect the set top box up until after I had everything else working, so I did not include that in my original tweets. I eventually added that into my system and, low and behold, the Xbox One controlled it, too. My friend Ben Drawbaugh over at Engadget (another CEC hopeful) always emphasizes that (until very recently), no cable set top box supports CEC, and so I really started questioning my assumptions.
All I can say is that the Xbox One has one hell of an IR blaster (rumor has it that it uses a complex active IR implementation instead of the normal passive IR we are used to). It worked flawlessly; even with it facing out into the room away from all of my equipment. I had to put a cloth cover over the face of each device to get them to fail. However, that did confirm that IR and not HDMI CEC was controlling my equipment.
I NEEDED CONCLUSIVE EVIDENCE
I really got curious if there was any CEC communication on the bus, especially since the system was able to determine my TV type without my having to enter the information. I had not seen that before.
I have a Kwikwai CEC analyzer that allows me to view CEC traffic, so I put it in series with the Xbox One’s HDMI out and my TV. Note that CEC is a true bus that runs between all of the HDMI equipment, so the placement on the bus was not critical.
The following two screen captures show that there is some CEC traffic on the bus, but it is not what I expected (or hoped for). The timestamps show that the communication starts at the bottom and goes to the top.
The CEC Power On Sequence
The CEC Power Off Sequence
A QUICK BACKGROUND ON CEC
The real goal of CEC is to make it simple to interact with all of the individual components connected via HDMI using a simple “One-Touch” interface – automagically. The CEC wire in the HDMI cable actually is a bi-directional serial bus that runs between all connected HDMI devices (AVR, TV, etc.). All devices receive any data sent out on the CEC wire at the same time, even if they are turned off (how else are you going to be able to turn something on?).
The Primary End-User CEC Features (for HDMI 1.x)
- One Touch Play – Allows a device to play content and become the active HDMI Source with a single button press.
- System Standby – Switches all devices to Standby Mode with one button press.
- One Touch Record – Offers a What You See Is What You Record (WYSIWYR) feature, meaning that whatever is being shown on the TV screen is recorded on a selected recording device.
- Deck Control – Enables a device to control (play, fast forward, etc.) a playback device (DVR, for instance) and interrogate a playback device (a “deck”) for its status and transport mode. This terminology is taken from the old concept of a “tape deck.”
- Tuner Control – Allows a device to control the tuner of another HDMI device, usually a set top box.
- Device Menu Control – Enables a device to control the menu of another device by passing through User Interface (navigational) commands.
- Remote Control Pass Through – Enables remote control commands to be passed through to other devices within the system over the dedicated CEC bus (wires) running within all of the HDMI cables.
CEC uses a hierarchy of “Physical Device Addresses” in the format of x.x.x.x for being able to communicate between devices on the bus (not related at all to TCP/IP addressing). These addresses are acquired dynamically when a component is plugged into the HDMI CEC bus. The reason I bring this up is that about the only traffic I see relates to discovering a Physical Address (184.108.40.206 in this case) and talking to it, as seen in the CEC Power On Sequence above.
These Physical Addresses then map to one of fifteen pre-defined CEC Logical Addresses (0 through F in hex). Each of these Logical Addresses represent a specific Device Type in the A/V world with a known set of Functions that can be performed or controlled on that type of device. The HDMI (1.x) specification defines this mapping as:
ADDRESS (Hex) DEVICE TYPE
1 Recording Device 1
2 Recording Device 2
3 Tuner 1 (STB1)
4 Playback Device 1 (DVD1)
5 Audio System
6 Tuner 2 (STB2)
7 Tuner 3 (STB3)
8 Playback Device 2 (DVD2)
9 Recording Device 3
A Tuner 4
B Playback Device 3
E Free Use
15 Unregistered (as an Initiator Address)
In other words, “One-Touch Usage Scenarios” deal with HDMI-based Device Types. On the wire, each Device Type is associated with a Logical Address that points to the specific Physical Address within the CEC hierarchy assigned to the CEC-based device to be controlled. Not all of this is essential for understanding the communications between the devices in the screen shots shown above, but it is important to know if one is trying to figure out how those devices are communicating on the CEC bus.
The last piece of the puzzle is that a TV always defaults to a Logical Address of 0. This becomes important as we analyze the CEC traffic.
BACK TO MY CEC COMMUNICATIONS
It was important for me to present a cursory overview on CEC for you to be able to interpret the communication sequences. Let me run through a few of the relevant CEC messages and associated communications on the bus.
The first thing to notice in the Power On Sequence table is that ALL CEC communications originate from a logical source device address (under the heading of Src in the table) of 0. This means that the only device sending out CEC messages is the TV at the Src address of 0 (remember, 0 maps to a Device Type of TV). You can see the TV “polling” (part of the CEC device Discovery process) to see what is out on the bus. The only device with any communication is an HDMI Sink (destination – or Dst in the heading) addressed as B (in hex), which maps to a logical CEC Device Type of Playback Device 3 (from the CEC Device Type table listed above).
The TV then sets up an HDMI Stream Path from B (the Source) to 0 (itself). Other than a few vendor-specific messages related to my having the CEC System Standby feature enabled on the TV, there is no other communication on the CEC bus. The same holds true for the Power Off Sequence table.
I was confused. The way the CEC polling, discovery, and mapping process works, as defined in the HDMI specification, is that a component acquires the first available Logical Address associated with a particular Device Type. You can see that the only other device to which the TV is communicating is mapped to the Logical Address of B, or Playback Device 3. It should have been Playback Device 1 with a Logical Address of 4 instead of B.
Here is the clincher. I unplugged everything except the TV and my Kwikwai CEC analyzer. I got exactly the same communications on the CEC bus as I did with everything hooked up when I manually turned the TV on and off. It turns out the device sitting at Logical Address B is the analyzer and not the Xbox One. To confirm this, I went through all permutations of connections with and without the Xbox One in the loop and still got exactly the same thing. They must be doing something special within the analyzer to keep it up out of the way of the normal CEC devices.
My conclusion, therefore, is that the Xbox One currently does not support HDMI CEC. Additionally, it is unclear to me if the hardware and HDMI chip set built into the Xbox One even support CEC since it did not even show up on the CEC bus during the polling process. That does not mean that CEC support may not be added through some sort of update, but it definitely is not working right now. As a side note (although I have not tested it), the PS4 is supposed to support CEC out of the box.
As some food for thought: Theoretically, CEC support, if it ever gets enabled, should include more than just the ability to control other devices. Since the Xbox One has a Blu-ray Disc player built in, it should obtain a Logical Address of 4 (or similar) as a CEC Playback Device (listed as DVD) so that other CEC-based devices can control that feature across the CEC bus – similar to Deck Control in the CEC One Touch Features listed earlier. No such luck I guess…
ONE LAST OBSERVATION
I still was confused how the Xbox One determined my TV’s make and model without my entering in the information. If it would have relied on CEC for controlling the TV, it simply would have communicated with the TV at the CEC Logical Address of 0 (CEC Device Type of TV), independent of the make or model. I ran through the device configuration setup on the Xbox One again to see if I missed something. There was no communication on the CEC bus during that process either.
I am going to make a wild assumption here, but I think it could be valid. I have not seen a vendor do this before, but it is a pretty neat idea if this is what they are doing.
I looked at the Extended Display Identification Data (EDID) supplied by the TV via my Kwikwai analyzer. Just to be clear, EDID is passed from the HDMI Sink to the HDMI Source over the HDMI Display Data Channel (DDC) lines (Pin 15 for Clock, Pin 16 for Data, and Pin 17 for Ground). EDID (and the associated E-EDID) is not sent through the CEC bus (Pin 13 with Pin 17 as Ground), so this theory does not imply that this discovery process relates to CEC at all.
As a RAW data structure, my Panasonic TC-P6350 plasma’s EDID looks like this:
When you parse the EDID out, this is what it means:
You can see that the Manufacturer is “MEI” (MEI is Mitsubishi Electric Industrial, the product name used by Panasonic) and the Model is a “C1A0” (which is a hex code for my specific model). You can see that it also provides some of the manufacture and firmware data.
Once again, this is all conjecture, but I assume the Xbox One took this data and sent it to some big IR code database in the cloud as part of the TV identification sequence it performs. It then got back an appropriate IR code for my specific TV. The setup process then stepped me through a few tests to confirm that it got the right code. The TV information in my device setup screen now shows a Code of T1941 listed next to the TV type, so that must be the associated IR code for my TV that it got back.
It is interesting to note that the setup configuration sequence could not determine my receiver type, although it tried. I had to enter the information manually. I did mention that it was an older component and probably did not supply any information. The manual entry process also took this manufacturer and model number information and sent it out to some IR code database in the cloud to get the IR code for my specific component. Pretty slick.
Since the set top box (a Motorola HD QIP 71001 from Verizon) would never be an HDMI Sink, it would not supply any EDID information. I had to enter my cable provider information manually. Interestingly, several of the control functions it tried to perform did not work, but it got did get the code right when I answered ‘no’ to the “did this function correctly?” questions. It now shows a Code of C1439 on my Xbox One Devices setup screen.
Just because, I also put my HDMI analyzer between the set top box and the Xbox One so the Xbox One would appear to be an HDMI Sink (Repeater) to the set top as the Source. CEC’s bus concept is completely different from the other wires making up an HDMI connection. The other wires (including the DDC lines) in the HDMI cable only communicate between a single Source and a single Sink (or through a Repeater). All devices incorporating CEC see all traffic from all of the other devices since it is a bus while the rest of the HDMI signals are from connector to connector only.
This is the EDID information passed back from the Xbox One:
I guess the Manufacturer Name is a legacy name left over from Microsoft Home (MSH). The supported video formats is interesting, too, but I am not going to get into that here.
About Derek R. Flickinger
Derek is an Electronics Concierge providing consulting and implementation services for manufacturers and consumer electronic installation companies on new technologies, products, and strategies related to standards-based Distributed Audio, Video, Communications, and Control (DAVCC) systems for the home and consumer market spaces. He is co-author of the book HDMI Uncensored: Inside HDMI available at http://hdmiuncensored.com. Derek’s long-term goal is to be instrumental in the development and deployment of entertainment systems on space stations and space colonies.