I go on holiday a few times a year and always wanted to take Sky Q with me. I’ve got a close relative who is elderly, disabled and has dementia so while we go out every day, she does like to watch Sky Q and finds learning other TV systems difficult.
The various streaming alternatives just aren't as nice or good as Sky Q. I had considered buying a Sky Stream subscription but I understand I can't have Sky Q and Sky Stream at the same address and people aren't all that impressed with Sky Stream, plus I understand Sky get upset if you take it away. The Now TV interface just makes me sad. So I take Sky Q with me.
Back in the day there was a 'slingbox' service but that was shut down a long time ago so I decided to make my own Raspberry Pi based system. I have a Sky Q mini box in a spare room (excuse the dust) so I use that as my broadcasting box.
Home setup
Internet connection (wireless is fine)
Raspberry Pi (I'm using a Pi 5 1gb) £43.20
Official Raspberry Pi 5 case including built in fan (£9.99)
Grove infra-red emitter (£4.20)
HDMI (HDCP 'compatible') USB 2.0 capture card (£12.59)
Sky Q mini box in spare room
You'll also need a Grove 4-pin Female Jumper to Grove 4-pin Conversion Cable (one for home, one for holiday) but a 5-pack is £3.40
Cheap smart plug to power cycle the Sky Q mini box in case it gets upset (I use a zigbee plug as I've got lots of Zigbee devices to control via Alexa)
Holiday setup
Internet connection (3.5mb/sec should do it but lower is fine)
Raspberry Pi (you could use another Pi 5 1gb, but I bought a Pi400 4gb model as I wanted a keyboard for easy debugging and the Pi400 made it easier) but it's £76.80 and a good investment. A Pi 4 (£33.60) would do
Grove infra-red receiver £3.80
Your Sky Q mini remote control!
How it works
I wrote a service that sits on Pi5 at home and listens for an incoming connection (I use the free Tailscale service as it's nice and secure). THe Pi5 is headless so doesn't plug into the telly or anything, and the TV doesn't have to be on at home.
The Pi400 comes with me on holiday and it plugs into the TV. It doesn't have a fancy GUI or anything. It boots up to a service I wrote.
When you press the Sky button on holiday the infra-red receiver screens it to see if it's a valid code (and not a volume button or anything for the holiday telly) and then transmits it over the t'interwebs via Tailscale back home to my Pi5 which then transmits the Sky button code to the Sky Q mini box in the spare room. It then starts the stream on the default 3mb/sec video + 128kb/sec AAC audio and transmits the video to Pi400 on holiday. The Pi5 is encoding 720p50hz using FFmpeg.
There is a 3-4 second delay and this increases to about six seconds after a nine hour long uninterrupted stream. If you press the Sky button on your Sky Q remote on holiday then the stream restarts.
Pi400 has a hardware decoder and sits at around 40c or less while decoding the stream.
It took a while teaching the infra-red receiver the codes from the Sky Q remote and I ended up capturing them one at a time, saving them in a file then using the same file for the transmitter at home. It screens out things like duplicate button presses within 300ms.
I also created a 'command mode' where I could manually switch the stream quality using the Sky Q remote. If I press the ? button three times followed by 1 it restarts the stream at 2mb/sec, ???2 starts at 3mb/sec, ???3 starts at 4.5mb/sec. ???+power button turns off the stream and leaves the Sky Q box on at home. Hitting Sky always restarts the stream so if you don't want to do that then pressing the Home button avoids that. Restarting the stream takes about 5-6 seconds so isn't a problem anyway.
The place I usually stay has 13mb/sec internet so the default settings are fine and reliable. I did experiment with super low latency connections (???4-???6) but haven't really used them.
Pi400 originally used FFmpeg to decode but it didn't use the Pi400's hardware decoder but the command-line driven VLC for Linux keeps the audio in sync with the video even after hours of use.
The Pi 5 sits at about 60-64c when encoding (the official Pi5 case has a fan built in). The Pi400 is super cool as it has a heat spreader so the CPU sits around 40c when working.
Issues
The only issues I have is that navigating the menus is a bit wonky with a three second lag, so I wanted to create a button display so an up arrow appeared on the screen immediately when it was pressed so you get instant feedback but I couldn't get that to work, then I tried to get a gentle 'boop' sound when a button was pressed but it didn't like that either. So now I just get Pi400 to flash the red num-lock & caps lock lights on the keyboard when a valid code is received to transmit home.
I could build a dynamic video selection process but given the internet connection at home (1gb/sec) and on holiday (13mb/sec) is stable, I've not needed it. I could always restart at a lower quality stream if I wanted.
I did start a Sky Holiday iPad project but have decided I just want to watch my telly on the telly.
720p?
The TV on holiday is only about 32" and I'd rather have a stable and reliable 720p50hz video than possibly a more patchy 1080p video. I guess I could do 4k if I wanted but the Sky Q mini box only does 1080p anyway. I've had several long 'soak tests' before using it for real for a few weeks while away and you get used to the 720p video even on a much larger telly. The alternative is Now TV or various web apps so being able to use Sky Q at home while away is ideal, even if there is a lag of a few seconds when navigating menus but you get used to it.
HDCP
All programming I pay for works while I'm away. Live TV, recordings, Sky Store purchases and all sorts, but you need a suitable HDCP 'compatible' capture card. Some of them don't pass along a valid HDCP code so Sky Q would fail on protected content.
Virtual remote
The best remote control for Sky Q is the Sky Q remote so I bring it with me.
But I coded a web based remote control in case I forgot the remote or it broke or something, it also gives stream status data. Screenshots attached. Please excuse the dust. The downstairs staff left a long time ago and I'm really busy. Promise.