Control TiVo box over telnet


Well, I used the IP address as the hostname as it wouldn’t pick it up using the box name for some reason - though I don’t have a virgintivo.yaml, so I’m guessing that might be why now! I’ll put that in place and give it a go.

Interestingly, the “guide” command works for me, but nothing else. Not sure what that’s all about?


Top of my virgintivo.yaml looks like this

- platform: virgintivo

default_is_show: false
#show_packages: Free-to-air,Player,Mix,Fun,Full House,Premium,Pay-per-view
show_packages: Full House
default_is_hd: true
scan_interval: 5
name: Virgin V6
force_hd: true

But it doesn’t like that - I get this error: “end of the stream or a document separator is expected at line 2, column 1:
default_is_show: false


I presume that you do not have to have a virgintivo.xml if you put all of the content into your configuration.yaml - but I do it that way.
In my configuration.yaml I have
media_player: !include virgintivo.yaml

The top of my virgintivo.yaml looks like this:

  - platform: virgintivo
    default_is_show: false
    #show_packages: Free-to-air,Player,Mix,Fun,Full House,Premium,Pay-per-view
    show_packages: Full House
    default_is_hd: true
    scan_interval: 7
        name: VirginLounge
        host: TIVO-C1234567812345678
        force_hd: true
        name: VirginBedroom
        host: TIVO-C1234567812345678.lan
        force_hd: true
      picture_refresh: 30
        name: Virgin Media Previews
        package: Mix

and it is important that the name: field is used in the entity_id automations.yaml

  - alias: BBC 1
      - platform: state
        to: 'on'
        entity_id: switch.101_virgin
      - service: media_player.select_source
         entity_id: media_player.virginlounge
         source: BBC One
      - service: homeassistant.turn_off
        entity_id: switch.101_virgin

In your case you have “Virgin V6” so either remove the space and use in the automations.yaml
entity_id: media_player.virginv6
or perhaps leave it live it is and use
entity_id: media_player.virgin_v6

For your error when loading virgintivo.yaml … check the spaces at the start of the lines.


I didn’t have the virgintivo and it all fit together - apart from actually working when I tried the automations/switches (other than guide as I say). Though I’m going to do it your way as it seems a lot tidier.

I don’t have any spaces at the beginning of the virgintivo.yaml though, that’s what’s puzzling me.

I’m gonna strip everything out beyond the actual component and give it another go because my setup clearly isn’t working properly.


You need the spaces - look at mine.


Ah. Got you. I did have a space to begin with, which threw up an error, then I took it out, and got the same error… but it looks like I hadn’t put the correct amount of space in I guess.

I’m not particularly experienced with these things, I’m trying to learn as I go along.


Okay so I’ve come to validate my configuration, but it’s now giving me this error " Configuration invalidCHECK CONFIG

Platform not found: media_player.virginv6"

But I don’t know where it isn’t finding this? I’ve got that as the platform name in the virgintivo.yaml - or is there somewhere else it needs to be as well? Sorry if I’m being really thick here, like I say I’m new to this and I’m not really sure where I’m going.


Did you take the space out between “Virgin” and “V6” in your virgintivo.yaml ?


Yep, this is how it looks now.

  • platform: virginv6
    default_is_show: false
    #show_packages: Free-to-air,Player,Mix,Fun,Full House,Premium,Pay-per-view
    show_packages: Full House
    default_is_hd: true
    scan_interval: 7
    name: virginv6
    force_hd: true

The bullet point is a hyphen in my yaml file, not sure what I’ve done to make it go like that on this post, but anyway.


The “platform” at the top should be “virgintivo”


Ah, I stupidly thought that had to be the same as my entity ID… Will have a look at that a little later and see if I have any joy, thanks.


Another set of channel changes …

This time it is UKTV channels that have moved around
Dave ja vu 211 -> 131
Dave HD 194 -> 227
Gold+1 190 -> 194
alibi+1 130 -> 191
alibi HD 200 -> 226
W +1 131 -> 190
W HD 191 -> 211
Really 129 -> 128
Drama 128 -> 130
Yesterday 245 -> 129
Yesterday +1 246 -> 200
Eden 247 -> 245
Eden +1 248 -> 246
Eden HD 249 -> 247
GoodFood +1 279 -> 280
GoodFood HD 280 -> 279


Thanks Paul. I’m away at the moment with very limited access to technology, but I’ll update when I get back at Christmas. Or if someone else wants to update on Git, I hopefully can approve the pull from here.


OK - have made the changes and sent a Pull request.
Note - I did not change the spreadsheet in the resources directory for 2 reasons:

  1. I suspect that there is a master source for the data in the later tabs
  2. I don’t have Excel and have macros disabled in OpenOffice so not sure that it would have done its magic for me

However, I can see what it is trying to do and certainly has the potential to make channel maintenance much easy than my copy/pasting.

A thought on the TiVo files - I changed them as well … but if the switches in there used channel names rather than numbers for the switches then it would only need changes for new/removed channels and not for renumbering.

Note - the non-HD versions of BT Sport channels have gone as well so I did them at the same time.

Their current set-up of BBC1/BBC2 HD/non-HD being different in different parts of the UK is a pain so I did not change what you had done there.


Great add-on and thread guys! Is there anyway to send the command to change HDMI source? (accessed on the virgin remote control by holiding down the TV button for a few seconds)


Interesting - I didn’t know about that one.
(I have set the remote to control the TV as well)
Just tried it and it did pop up the list of sources from the TV … but I could not find a way to navigate through the list without using the TV remote. Is there a trick?
If it is the remote doing it itself - because it has been told what the TV is then I don’t think that this plugin will be able to do it … but if it is the Virgin box triggering it through HDMI CEC … then maybe it would be possible.

According to this post on Virgin Community forums, it should be possible to move through the sources using the up/down buttons on TiVo/V6 remote but did not work for me.
Also - it times out on the TV before holding down the TV button on the TiVo/V6 remote has a chance to do anything else.


Afraid not. In this instance the V6 remote is sending IR commands to the TV in order to change the source (based on having been set up in the universal remote settings page on the box). It’s not using CEC or anything else clever that can be used by the component.

That said, there is a rather obscure bit of functionality that I built into the component for controlling other media devices. Look at channels 901 - 903 in the example.yaml. If your TV is already set up in Home Assistant, you might be able to use this to change sources on your TV. I use it for controlling an HDMI matrix switch but no reason why it can’t be used for other devices. Your mileage will definitely vary though and it’ll only work if your TV source is already controllable via Home Assistant.


this is prob a really stupid question but…

i’m trying to install/setup this but im hitting a problem.

the instructions say

“Drop the file into the custom_components/media_player directory.
Edit your configuration file to add the virgintivo platform to the media_player: section.”

i dont have a dir “Custom_components/media_player/…” to place the file into. do i have to create it somewhere?

ive added the following snippit to my configuration.yaml

media_player: !include media_player.yaml

and in that file is

platform: virgintivo
default_is_show: false
show_packages: Free-to-air,Player,Mix,Fun,Full House,Premium,Pay-per-view
default_is_hd: true
scan_interval: 1 
    name: Virgin
    host: TIVO-C680000229B2663
    force_hd: true

so where do I put the file ?

thank you all in advance for your help


Create the custom_components folder in the same directory as your configuration.yaml lives.



I’ll give that a try and hopefully get it all up and running soon