Yio Remote Community

Nvidia Shield Android TV?

Hello - Is anyone using their Yio remote with an Nvidia Shield Android TV box? If so, any tips? Thanks!

Not yet, but it’s pretty high on my TODO list. I recently got a new TV and another Nvidia Shield. But my whole home cinema setup broke apart since I didn’t want to invest in an UHD capable receiver yet… So I have to re-setup that first.
I hope the new Control4 support in the 8.2.2 shield experience update will somehow be usable outside their closed system and isn’t completely locked down. Native IP support to control the Shield would be great.

The ADB route sounds a bit of a hack job and doesn’t seem to be very stable. Does anyone have good experience with it?

Direct Bluetooth control could be another solution. The few Bluetooth things I tried on RPi in the past were of mixed results. Lots of issues, but that might very well be my lack of know how in that area.

Any other ideas?

Thanks for the response. Direct Bluetooth would great, mimicking the official remotes, but I wouldn’t know where to start on the Yio side

On the HA side, I’m wondering if that’s some way to connect the Shield behind a Universal Media Player template.

I’ve seen some HA integrations done with ADB. From what I’ve read, it seems to work for some people, but also causes plenty of issues for others. I’ll check my research notes tomorrow and post them here.

This looks promising, even though with ADB: Full Nvidia Shield Control using Home-Assistant/Hassio and Node-red | The Smarthome Book
Another option with an ESP32: GitHub - sparky3387/NVIDIAControlDevice: Control an NVIDIA Shield (Potentially other Android TV Devices)
Python: GitHub - stefan-sherwood/nvidia_shield_remote: Python class for controlling an Nvidia Shield over a network

I’ve started playing around with the Home Assistant androidtv integration with the built-in Python ADB implementation.
Sending commands from the HA developer tools works ok, but it’s not as snappy as using the original Shield TV remote. The initial command takes ~2 seconds, afterwards it’s below 1s. Not slow, but noticeable.

Test environment:

  • Latest Home Assistant Operating System on RPi4 4GB
  • Nvidia Shield TV 2019
  • Gigabit ethernet

As mentioned in the androidtv integration documentation, one can learn the native key events and send those. They are indeed faster, but come with a major drawback in my opinion:

  • Only works while the Shield TV remote is paired and active!
    Take out the battery and it doesn’t work anymore after a short while. It looks like the input event system is dynamically updated when the remote is connected.
  • Includes the Android device name of the Shield TV. In my case /dev/input/event5.
    This might change after a system upgrade or re-pairing the Shield TV remote.

For those interested, these are the native commands:

Button Command
Up sendevent /dev/input/event5 4 4 786498 && sendevent /dev/input/event5 1 103 1 && sendevent /dev/input/event5 3 40 0 && sendevent /dev/input/event5 3 42 1 && sendevent /dev/input/event5 0 0 0 && sendevent /dev/input/event5 3 40 1 && sendevent /dev/input/event5 3 42 0 && sendevent /dev/input/event5 0 0 0 && sendevent /dev/input/event5 4 4 786498 && sendevent /dev/input/event5 1 103 0 && sendevent /dev/input/event5 0 0 0
Down sendevent /dev/input/event5 4 4 786499 && sendevent /dev/input/event5 1 108 1 && sendevent /dev/input/event5 3 40 0 && sendevent /dev/input/event5 3 42 1 && sendevent /dev/input/event5 0 0 0 && sendevent /dev/input/event5 3 40 1 && sendevent /dev/input/event5 3 42 0 && sendevent /dev/input/event5 0 0 0 && sendevent /dev/input/event5 4 4 786499 && sendevent /dev/input/event5 1 108 0 && sendevent /dev/input/event5 0 0 0
Left sendevent /dev/input/event5 4 4 786500 && sendevent /dev/input/event5 1 105 1 && sendevent /dev/input/event5 3 40 0 && sendevent /dev/input/event5 3 42 1 && sendevent /dev/input/event5 0 0 0 && sendevent /dev/input/event5 3 40 1 && sendevent /dev/input/event5 3 42 0 && sendevent /dev/input/event5 0 0 0 && sendevent /dev/input/event5 4 4 786500 && sendevent /dev/input/event5 1 105 0 && sendevent /dev/input/event5 0 0 0
Right sendevent /dev/input/event5 4 4 786501 && sendevent /dev/input/event5 1 106 1 && sendevent /dev/input/event5 3 40 0 && sendevent /dev/input/event5 3 42 1 && sendevent /dev/input/event5 0 0 0 && sendevent /dev/input/event5 3 40 1 && sendevent /dev/input/event5 3 42 0 && sendevent /dev/input/event5 0 0 0 && sendevent /dev/input/event5 4 4 786501 && sendevent /dev/input/event5 1 106 0 && sendevent /dev/input/event5 0 0 0
Select sendevent /dev/input/event5 4 4 786497 && sendevent /dev/input/event5 1 353 1 && sendevent /dev/input/event5 3 40 0 && sendevent /dev/input/event5 3 42 1 && sendevent /dev/input/event5 0 0 0 && sendevent /dev/input/event5 3 40 1 && sendevent /dev/input/event5 3 42 0 && sendevent /dev/input/event5 0 0 0 && sendevent /dev/input/event5 4 4 786497 && sendevent /dev/input/event5 1 353 0 && sendevent /dev/input/event5 0 0 0
Back sendevent /dev/input/event5 4 4 786980 && sendevent /dev/input/event5 1 158 1 && sendevent /dev/input/event5 3 40 0 && sendevent /dev/input/event5 3 42 1 && sendevent /dev/input/event5 0 0 0 && sendevent /dev/input/event5 3 40 1 && sendevent /dev/input/event5 3 42 0 && sendevent /dev/input/event5 0 0 0 && sendevent /dev/input/event5 4 4 786980 && sendevent /dev/input/event5 1 158 0 && sendevent /dev/input/event5 0 0 0
Home sendevent /dev/input/event5 4 4 786979 && sendevent /dev/input/event5 1 172 1 && sendevent /dev/input/event5 3 40 0 && sendevent /dev/input/event5 3 42 1 && sendevent /dev/input/event5 0 0 0 && sendevent /dev/input/event5 3 40 1 && sendevent /dev/input/event5 3 42 0 && sendevent /dev/input/event5 0 0 0 && sendevent /dev/input/event5 4 4 786979 && sendevent /dev/input/event5 1 172 0 && sendevent /dev/input/event5 0 0 0
Menu sendevent /dev/input/event5 4 4 786496 && sendevent /dev/input/event5 1 139 1 && sendevent /dev/input/event5 3 40 0 && sendevent /dev/input/event5 3 42 1 && sendevent /dev/input/event5 0 0 0 && sendevent /dev/input/event5 3 40 1 && sendevent /dev/input/event5 3 42 0 && sendevent /dev/input/event5 0 0 0 && sendevent /dev/input/event5 4 4 786496 && sendevent /dev/input/event5 1 139 0 && sendevent /dev/input/event5 0 0 0
Play sendevent /dev/input/event5 4 4 786637 && sendevent /dev/input/event5 1 164 1 && sendevent /dev/input/event5 3 40 0 && sendevent /dev/input/event5 3 42 1 && sendevent /dev/input/event5 0 0 0 && sendevent /dev/input/event5 3 40 1 && sendevent /dev/input/event5 3 42 0 && sendevent /dev/input/event5 0 0 0 && sendevent /dev/input/event5 4 4 786637 && sendevent /dev/input/event5 1 164 0 && sendevent /dev/input/event5 0 0 0
Forward sendevent /dev/input/event5 4 4 786611 && sendevent /dev/input/event5 1 208 1 && sendevent /dev/input/event5 3 40 0 && sendevent /dev/input/event5 3 42 1 && sendevent /dev/input/event5 0 0 0 && sendevent /dev/input/event5 3 40 1 && sendevent /dev/input/event5 3 42 0 && sendevent /dev/input/event5 0 0 0 && sendevent /dev/input/event5 4 4 786611 && sendevent /dev/input/event5 1 208 0 && sendevent /dev/input/event5 0 0 0
Rewind sendevent /dev/input/event5 4 4 786612 && sendevent /dev/input/event5 1 168 1 && sendevent /dev/input/event5 3 40 0 && sendevent /dev/input/event5 3 42 1 && sendevent /dev/input/event5 0 0 0 && sendevent /dev/input/event5 3 40 1 && sendevent /dev/input/event5 3 42 0 && sendevent /dev/input/event5 0 0 0 && sendevent /dev/input/event5 4 4 786612 && sendevent /dev/input/event5 1 168 0 && sendevent /dev/input/event5 0 0 0
Mic learn_sendevent’ from media_player.shield_tv_wohnzimmer: 'sendevent /dev/input/event5 4 4 786977 && sendevent /dev/input/event5 1 217 1 && sendevent /dev/input/event5 3 40 0 && sendevent /dev/input/event5 3 42 1 && sendevent /dev/input/event5 0 0 0 && sendevent /dev/input/event5 3 40 1 && sendevent /dev/input/event5 3 42 0 && sendevent /dev/input/event5 0 0 0 && sendevent /dev/input/event5 4 4 786977 && sendevent /dev/input/event5 1 217 0 && sendevent /dev/input/event5 0 0 0
Netfflix sendevent /dev/input/event5 4 4 786872 && sendevent /dev/input/event5 1 393 1 && sendevent /dev/input/event5 3 40 0 && sendevent /dev/input/event5 3 42 1 && sendevent /dev/input/event5 0 0 0 && sendevent /dev/input/event5 3 40 1 && sendevent /dev/input/event5 3 42 0 && sendevent /dev/input/event5 0 0 0 && sendevent /dev/input/event5 4 4 786872 && sendevent /dev/input/event5 1 393 0 && sendevent /dev/input/event5 0 0 0

Notes:

  • /dev/input/eventX: X might be another number, depending on the paired input devices.
  • The two sendevent commands with 7868XXX seem to be optional. It also worked without them
  • The third parameter of sendevent is the decimal Linux input event code.

I should have spent a few more bucks for the Pro version. This would come with USB ports allowing to hookup an IR receiver or an esp32 keyboard emulator.

Next task: I’ll map the whole thing to the YIO remote entity and see if it’s usable or not.