Yio Remote Community

IR / TV remote integration

Let’s discuss ideas and implementation here about the remote entity, corresponding TV Remote UI and the related IR/dock integration.


I have spent yesterday and today refactoring the dock firmware code. Fixed some issues with the IR sending, but now everything works. Currently there’s support for raw IR codes and pronto codes. The dock can also learn the raw codes.

Spent some time today to quickly put together a demo how it works. I have just used the pronto codes found here:

Check the link below for a short demo:

The best source for IR-Codes I have found is GlobalCache.


I bought a GlobalCache device years ago and can download code for several devices every day.
Database contains 2 codes per command. First is also named “raw”, second is “pronto” :


461000,1,51,85,1355,85,1355,85,7123,85,1355,85,2792,85,2792,85,2792,85,2792, ...

0000 0009 0019 0015 0055 054B 0055 054B 0055 1BD3 0055 054B 0055 0AE8 0055 ... 

I found out that for example old B&O devices require the “raw” code as they use 455 kHz frequency, which is quite unusual.

Anyhow I think it is mainly a UI problem, constructed a UI based on supported features.

Looks like the first number in the raw format is the frequency. That’s exactly how I am sending the codes right now. This makes it really easy to integrate with this database.

Now that the backend part works, I am focusing on the UI :slight_smile:

IR capability is not a trendy technology but so necesary with AV device…

One detail I use to focus on is the “autorepeat” capability when sending IR. This is especially important when dealing with volume level. Does the YIO remote will handle this properly?

If you mean keep pressing the volume up button will increase the volume continuously until you release it, then yes.

Besides AV usage, IR always use on device like dyson, but dyson remote will change the ir code between first click and second click, and NEEO remote never do it right…

A bit of progress with the IR remote part. Channel list and switching. Programmable delay and switching pattern:


Hi marton

I’m really impressed by your project and I’m just one-click away from funding the kickstarter.
I’m planning to use the YIO remote as a replacement for my Logitech Harmony Remote in the long term.
In the harmony I have some activities that when I press a button it starts multiple devices and switches them to the correct channel etc. is something similiar planned for the YIO remote or is this already possible? If not, is it possible to send a command from home assistant to tell the remote to send an IR code? This way I could setup something on the Home Assistant side easily.

hi @Burningstone, thank you!

We have scenes on our todo list, so you will be able to do this in the future. It’s not yet implemented. We are taking one step at a time :slight_smile:

The Dock sends the IR codes and has a websocket API. So you can connect to it and send IR codes from there if you format them in the expected way.

Let me know if you have more questions!

That sounds perfect! Going to back this now! I need to read up on how to connect to the websocket API from Home Assistant, but at least I know that it is possible.

Will the remote control interface be manually configurable? Meaning I can set button x to send this IR code and set button y to send another IR code or will this be fixed per device? This would be nice as I control the volume through the AV receiver, but I control the channel selection through the cable-tv box and would be perfect to have both in the same interface, instead of switching from one remote control to the other just to change the volume.

I would also have a suggestion of creating a dynamic remote control, meaning that it shows a different remote control interface based on the currently active scene. Is this planned as well?

Thank you @Burningstone!

If I would do it, I would go about writing a custom component that connects to the dock. Just an idea :slight_smile:

The buttons are configurable, not yet from the UI, just by editing config.json. The UI is showing you the buttons/features that your device supports. You need to set the supported_features in the config, and the UI will adjust itself based on those. We have some basic logic for this and will improve as we move forward with the project.

We want to create a fusion/mixed remote as well. I have also the same use-case: I want to control my Apple TV, but change volume on my speakers. This needs quite a bit of thinking to get it right, but I hope we will get close. If you have any ideas, please feel free to share them :slight_smile:

To send different IR commands to a receiver and a TV is quite possible right now. You can map IR codes to features in the config:

"button_map": "POWER_TOGGLE",
"format": "pronto"
1 Like

Backed the project now and I’m looking forward now to start this journey next year :slight_smile:

If I connect via websocket would I also be able to detect when a button on the remote has been pressed? Or can you do multiple things on a button press? I’m asking because currently I dim the lights to full brighness when the “pause” button is pressed on the harmony remote and dim it down again when “play” is pressed.

For the dynamic remote control I was thinking of something like this:
You create a predefined button schema for each scene and assign the buttons to whatever you want in this scene and then it switches to this predefined schema once you activate the scene or if you are in another menu and you switch to the remote control menu while a scene is active it will also switch to this schema.

Fantastic! Thanks @Burningstone. I can’t wait to share the YIO Remote with you too!

In theory, you would be able to detect button presses if you modify the source code. We are not sending everything to the dock, because it’s not necessary and just burns the precious resources.

The buttons are dynamically assigned to currently active entities. For example when you have a light “open” then the up and down button dims the light up/down by 10%. If you have the climate open, then it adjusts the temperature.

There are globally assigned buttons, like volume. When a media player is playing, then no matter what is open or where you are in the UI, the volume buttons will change the volume of the active media player. This is overridden when you specifically open another media player or TV remote.

We have not implemented double presses yet, but with that, you would have a single button press, double button press and a long press to assign commands to. Some of these needs to be implemented still.

1 Like

Ok I understand.

This all sounds very nice and well thought!
Can you do something like:
If button X is pressed send an IR code AND turn on the light? Or if this doesn’t work I was thinking of maybe start a Home Assistant script on a button press and the script then turns on the light and sends a command to the remote to send an IR code.

One more questions. What is the behaviour of the globally assigned buttons in case multiple media players are active? I have multiple media players that can be active at the same time in different rooms.

That will be possible when we have scenes, but we haven’t really thought about how to implement those yet.

Triggering scripts in Home Assistant would be possible, but again, still needs to be implemented :slight_smile: There are a lot of tasks on our todo list and we are tackling them one by one, currently focusing on the core functionalities and backend.

There are pages in the mini media player, so only one media player is “in the front”. The volume controls that. If you swipe left/right to look at another media player, the volume will change the volume of that one.


Great work.
Can the IR commands also be controlled from the HA controller (HA, Homey, etc) This would alleviate needing to run scenes directly from the YIO remote for now as a virtual button on the Yio can trigger a program on the HA controller to send the IR commands from the YIO base

Thanks @AdrianLiteAutomation! Theoretically it’s possible, as the dock also has a websocket API.