Ok, sure, now I get that. From a Home Assistant perspective, I believe atvremote
should not be needed at all since the functionality should be implemented with corresponding Home Assistant domain functionality. If anything is missing, we should try to implement that in Home Assistant. Catching up with functionality is something I’ve been working on lately, so most things should be in place.
The general idea with pyatv is that you have an API to do things, e.g. play, pause, metadata, launch apps, change volume, etc. Then you have protocols that implement that functionality. Generally, there’s not one protocol that supports all features. Only Companion supports app launching for instance. Internally, pyatv will pick the most appropriate protocol automatically for each feature depending on what you have set up (e.g. provided credentials for). The pairing API tells you if a particular protocol requires pairing or not. So, Home Assistant will look at all the protocols supported by a device when you add it and allow you to pair them one by one to set up as many protocols as possible. That’s how you get as much functionality out of pyatv as possible.
It should be populated, assuming you have Companion set up. If you don’t, try removing the device and add it again. The config flow will let you know when you are pairing Companion.