Prevent Your Denon Receiver Turning On From Rogue Nvidia Shield CEC Requests

In theory HDMI’s CEC feature is great, as it gives HDMI devices the ability to do useful things such as turning on multiple HDMI devices with a single remote control. Of course, such a feature will inevitably feature bugs. A case in point is the Nvidia Shield which has often been reported to turn on other HDMI devices that should stay off. After getting ticked off by such issues one time too many, [Matt] decided to implement a network firewall project to prevent his receiver from getting messed with by the Shield.

The project is a Python-based network service that listens for the responsible rogue HDMI-CEC Zone 2 requests and talks with a Denon/Marantz receiver to prevent it from turning on unnecessarily. Of course, when you want these Zone 2 requests to do their thing you need to disable the script.

That said, HDMI-CEC is such a PITA that people keep running into issues like these over and over again, to the point where people are simply disabling the feature altogether. That said, Nvidia did recently release a Shield update that’s claimed to fix CEC issues, so maybe this is one CEC bug down already.

15 thoughts on “Prevent Your Denon Receiver Turning On From Rogue Nvidia Shield CEC Requests

  1. My fairly expensive Sony Bravia reportedly does CEC in firmware. The amusing part is evidently it loses it’s mind occasionally and has to reset itself to find it, resulting in a short, but very annoying, audio gap. Sometimes it got so bad that it would power cycle the TV.

    So, I disconnected the HDMI cable from my Yamaha AVR and ran aToslink fiber eliminating the issue. I did have to do some Home Assistant magic to be able to control the volume.

    I’ll look into the CEC blocker do hicky though.

  2. CEC is so frustrating because it’s a brilliantly simple protocol, and it’s well-thought-out to manage every possible scenario. The standards organization, IMO, did everything right. But no one implements it correctly! The nvidia shield is a special sore point for me…for example if you navigate away from the shield using the TV remote, then 5 minutes later the shield turns off the TV even though it’s not the active device. The protocol has a perfectly wonderful way to deal with this, which i verified using my raspberry pi that the TV supports properly…but this premium TV dongle doesn’t support it!

    And a lot of generations of Intel NUC send hardcoded CEC sequences in the BIOS, instead of interacting with the protocol in a robust way. If you aren’t in one of the two scenarios that intel anticipated, it simply doesn’t work. And a lot of HDMI devices just don’t CEC at all. And my HDMI hub (3-in 1-out) doesn’t pass-through CEC correctly, even though CEC perfectly anticipates these devices.

    And the raspberry pi!!! The pi legacy vchiq CEC has an abominably braindead implementation in the firmware, and they expose an interface to their dumb implementation instead of exposing the simple protocol itself, and userspace libcec has its own custom hacks to work around the idiocy in the pi firmware…i came up with a better characterization of the bugs, and a better custom hack. And then the moment i was done, of course, raspberry pi rewrote their firmware, making my interface useless. I hate pi so much y’all.

    1. I wonder if you used a CEC blocker, and then a CEC dongle like the SMLight SLWF-08 HDMI-CEC controller running ESPHome or the Pulse-Eight P8-USBCECv1 via USB, then you should be able to send EXACTLY the commands you actually want, and ignore the badly coded manufacturer commands.
      I have an issue with my Apple TV, connected to my receiver, who insists on always changing the source back to itself, when I’m just trying to play Xbox or something. And the worst thing is, it doesn’t even happen all the time, sometimes it behaves for weeks and then it randomly strikes again.

      1. yeah replicating the pulse8 (indulging in my not-invented-here disorder) was vaguely on my todo list but the fact of the matter is i trained my 13yo to push the hardware input select buttons instead :)

        1. “but the fact of the matter is i trained my 13yo to push the hardware input select buttons instead”

          Sounds like you implemented the most expensive and high-maintenance solution possible 🙂

        2. I wore my own bit-banged CEC stack for AVR (the microcontroller, not the home theater equipment) which was surprisingly easy and fun and effective. With CEC you can impersonate any device, so it basically gives you full standardized control over everything in your cabinet.

  3. I have a shield, and this issue has happened more since the update that reportedly fixes it than it did before. I guess I can’t expect much from a small indie company like NVIDIA.

Leave a Reply

Please be kind and respectful to help make the comments section excellent. (Comment Policy)

This site uses Akismet to reduce spam. Learn how your comment data is processed.