Skip to content
A python based remote control for Sky+HD boxes updated to Picasso
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Type Name Latest commit message Commit time
Failed to load latest commit information.


A python based remote control for Sky+HD boxes updated to Picasso.

Based on Craig Heffner's Miranda, which is currently on Google Code and licensed under GPLv3.

How does it work?

Since Sky's Picasso update for Sky+HD boxes earlier this year, the Sky+HD box (DRX890 and DRX895, at present) boxes expose a DNLA server which, until the recent iPad application, was for an unknown reason.

This DNLA server exposes 5 control endpoints that can be used to control the Sky+ box over IP.

Miranda is a UPnP browser that lets you browse a UPnP client, and while the Sky+HD box requires a few specific changes to work with it, it pretty much does the job of browsing available methods, and lets you send things to it.

SkyRemote makes this a bit easier, by completely automating the detection of a Sky+HD box and loading the relative xml files to provide the data, and giving a simple "control" command which allows you to perform any of the "SkyPlay" control endpoint methods.

To run the script, you'll need python installed. You already have this if you're on a mac, and probably on linux too. Then you can run:


These available "control" commands are currently:

  • GetMediaInfo_Ext
  • X_NDS_SetUserPIN Send the user's PIN (Used to unlock pre-watershed channels and recorded programming)
  • Play Equivalent of "Play" button (prompts for play speed, can be used to fast forward)
  • Pause Equivalent of "Pause" button
  • GetPositionInfo
  • GetMediaInfo
  • GetTransportInfo
  • Stop Equivalent of "Stop" button
  • GetDeviceCapabilities
  • Next
  • X_NDS_GetCACondition
  • SetAVTransportURI
  • GetTransportSettings
  • Seek
  • GetCurrentTransportActions
  • Previous

Please excuse any undocumented functions, I'm still figuring all this out. You'll be prompted for any required arguments.

So, for example, if you wanted to send a "Pause" command, you can just run:

control pause


If you understnad these things, you can view the full, complete list of endpoints which are exposed by this using the command:

host details 0

You can then send a raw command with:

host send 0 SkyControl [SkyPlay|SkyRC2|SkyCM2] <command>

More information on the Sky DNLA Remote service is on my blog, at


Check the FAQ on the Wiki

You can’t perform that action at this time.