That did cause me issues for a while, but then I discovered the Bouncy Castle crypto library. It needed a bit of work to get working on the phone, but it made it possible to connect. :-)

The next problem is that you need a client certificate (which the TiVo does check). I've not come across any obvious method by which TiVo (or Virgin Media) would enable you to get one. So you need to get hold of one of that will work from, err... somewhere else. <cough> ;-)

Anyway, once you've got that (and commented out a check that Bouncy Castle makes on the server certificate that the TiVo is using), then the MindRPC stuff can be used with no problem!

I've not mentioned it on this forum before, but my app is available here. I've only released it in the UK, as that's the only TiVo I've got access to.

Thanks for pointing out your mDNS package. I'd already spotted it over the summer, and I was thinking of switching to it for the WP8 version of my app, as the cobbled together solution I'm using at the moment seems to be a bit unreliable. It's nice that you found me, too!

Thanks for pointing out that Crypto library. I'll have to see if I can wrap a WinRT plain socket stream around it.

If you have it working in WP8, it must work though as WP8's SocketStream class is the same as Windows 8's.

Any chance you could share some code around getting your connection working?

Yes please do post the MitM related code. It would be interesting to try and figure out how the iPad app requests an MRS stream from series 4 and 5 TiVos.

No problem. At the moment it's referencing a library of mine that I'm not quite ready to open source (although I'm thinking of it). I'll have a look at making it more self contained tomorrow night and post it up somewhere.

Quote:

Originally Posted by moyekj

Also, for USA the RPC interface connects to TiVo port 1413 as a specific partnerId (3787). That partnerId only has access to very limited Mind operations (I'd say only 5% or less of them).

Interesting. Are you trying to do stuff that the iPad/Android apps can do, or more involved stuff? I've not tried doing anything particularly advanced yet.

From looking at the schema docs that used to be in the Android app I got the impression that they use the same protocol to communicate between the central servers and the TiVo itself, if not also between components on a single TiVo. If that's true then I wouldn't be at all surprised if only the components in the system that they consider "internal" are allowed to do the more advanced operations.

I'd been hoping that TiVo were going to open up a developer program where you could get your app certified, and a client cert & partnerId issued that would give you access to an agreed set of operations, but it looks like that's not going to happen anytime soon.

From looking at the schema docs that used to be in the Android app I got the impression that they use the same protocol to communicate between the central servers and the TiVo itself, if not also between components on a single TiVo. If that's true then I wouldn't be at all surprised if only the components in the system that they consider "internal" are allowed to do the more advanced operations.

I'd been hoping that TiVo were going to open up a developer program where you could get your app certified, and a client cert & partnerId issued that would give you access to an agreed set of operations, but it looks like that's not going to happen anytime soon.

Note that I think arantius with his TiVo Commander app did indeed get his own certificate to use with his app from TiVo, so although there's not an official developer program it looks like you can work something out. Certificate I'm using in kmttg expires in early 2014 so I'll have to figure something out to get a new one. It's much harder now that Android code is obfuscated to get password to go with a new certificate.

Here's just a few examples of operations that work via middlelmind.tivo.com but not port 1314 (i.e. the middlemind server has a bigger scope of operations available):
uiTransitionSearch
schemaNumberListGet
schemaElementGet
operationCountGet

Problem is all the really good operations that are intended to work with local Mind are obviously not available via tivo.com. Things like modifying channel lineup, modifying recorded show properties, etc.

Is there any reason why the mini platform would not support the Opera App Store?

Can we reasonably expect to see the browser implemented into a future software update?

The Mini already does run HTML5 - it has same software as the Roamios. You can bring up web pages on the Mini. Also my proof of concept HTML5 video player code I posted in this thread works for true video streaming to the Mini.

Yes, but it works fine in Chrome on the desktop. It's straight jQuery/Modernizr, which is why I thought it would work on the TiVo, pity.

Yes I think the built in browser has pretty minimal support for anything including audio and video tags right now. If there is an html5 version designed to run on TVs it would likely run on the TiVo. That being said I use the current Pandora client on the TiVo every day and it works fine for my needs.

Do these scripts still work, and in particular, I've got a roamio. I'm a complete novice at python, but I've programmed in other languages. I was hoping to use this script to as a guide to getting moyekj's script going (on post 73 of this thread) to send jumps.

Forgive me if later in this thread there are answers to this, I've spent the day reading this thread and the links trying to get the sample python program going. Since this is my 10th post, perhaps some of the hidden links will give me info I couldn't see before

TiVo caught wind of the reverse engineering and made things harder by introducing PKCS12 authentication with a client side certificate and password. Took quite a bit of detective work to figure out where the certificate was and the associated password, but eventually I figured it out and updated kmttg (Java code) to use. Since then TiVo has made it even harder by further obfuscating the Android app and so it's becoming increasingly more difficult. Certificate I'm currently using expires early next year which is an obstacle I'm not looking forward to overcoming (having to uncover new certificate and associated password will be much harder and likely will have to be done based on the iOS app which is itself pretty obfuscated as well).
Anyway, long story short, the python code would need SSL sockets with PKCS12 authentication which there has been no code posted for in this thread. (Likely is possible but nobody has posted working code for it here).

There's a faint possibility that TiVo may at some point provide an official SDK documenting the mindrpc protocol and providing some official mechanism to get your own certificate + password after registering the app with them. But TiVo has not shown any interest in promoting 3rd party development since they stopped encouraging open source HME development and their Flash-based SDK was a short-lived complete joke. So I don't have high hopes for anything significant to develop but hope I'm wrong.

TiVo caught wind of the reverse engineering and made things harder by introducing PKCS12 authentication ...

They TiVo-ized it. Even though kmttg and DVR Commander are both open source, the certificates are not and cannot be, so contributing patches is .. not straightforward.

Quote:

Originally Posted by moyekj

Anyway, long story short, the python code would need SSL sockets with PKCS12 authentication which there has been no code posted for in this thread. (Likely is possible but nobody has posted working code for it here).

It absolutely could work. I have a script I wrote for my own purposes which does it. But I can't (effectively) distribute it.

Quote:

Originally Posted by moyekj

There's a faint possibility that TiVo may at some point provide an official SDK documenting the mindrpc protocol ...

Don't hold your breath. A while back I was pointed at http://www.tivo.com/developers -- but now that's just a message saying that program is effectively dead. (And I don't think it ever went anywhere.)

It absolutely could work. I have a script I wrote for my own purposes which does it. But I can't (effectively) distribute it.

Hmmm, this appears to put a stop on my using the python script in a pipeline so I could write my own little "remote". The idea was this:

myprogram | python-script

Then myprogram could be coded in a language I know (tcl/tk). I figured I could hack the python script to read from stdin turning it into a driver for myprogram.

Sooooo, with that in mind, and the python script not working, I downloaded the latest source of kmttg, and with on the instructions for building it from source, I was able to get the latest version going with ease (and confirmed the new fractional minutes mod).

I then found in the code where I could add another command line option that would let me use kmttg as a driver. I only need to leverage on the code that sends forward/backward skips, plus pause and unpause.

The idea is to turn a wireless mouse into a remote controller with a scroll wheel and 2 buttons. I have written just such a program for driving the vlc media player.

But before I plunge ahead, however, I was wondering if this seems like a straight forward mod for kmttg. Any suggestions would be appreciated.

But there's no Python code to make RPCs besides the extremely trivial examples linked above that I know of. If all you want to do is simulate remote presses, I guess it's enough.

I think it's somewhat expensive to set up the SSL connection (for both client and server) so perhaps a daemon holding this connection would be best, if you want transient processes to be sending requests.

But there's no Python code to make RPCs besides the extremely trivial examples linked above that I know of. If all you want to do is simulate remote presses, I guess it's enough.

Well, not exactly keypresses (of the commands on the existing tivo remote), but rather to be able to skip forward and back quickly by about 5 seconds per mouse wheel click. This amount lets you still see a flow. It's for skipping through a show, not commercials - mouse clicks are for the instant ad skipping. E.G. in a football game, one might scroll from play to play. Much easier than groping a remote for ff and rew or replay etc. More fun! I've tried this out on a game I transferred to my computer and played back in vlc player.

Quote:

I think it's somewhat expensive to set up the SSL connection (for both client and server) so perhaps a daemon holding this connection would be best, if you want transient processes to be sending requests.

Yes, from what I could see in wireshark, there's about 20 or so packets per click on the skip button in kmttg. With the latest beta, I set up a 5 second skip and with quick mouse clicks to simulate how quickly I would be twirling the mouse wheel, it seems do-able.

With vlc player, I have to do an html request per skip. It's still fast enough, even with the remote on my laptop and the player on my media computer.

For tivo, Id make right click = pause, left click = 1.9 or 2.9 minute skip forward - perfect for either football or baseball - most of my viewing.

One somewhat tricky item is to bind to any mouse movement and keep the pointer in the center of your own window, so you don't lose focus when the mouse moves. Then you can just put the mouse down on the couch, like it was a regular remote. No need to take your eyes off what your watching. I usually just close the lid on my laptop. When I need to release the mouse, any keyboard key unlocks the mouse from my program.

Since I've already done all this in tcl, that's why I was thinking of a pipeline approach. Add a checkbox and a popup menu selection to my script and an exec call to create the pipe and I'm nearly done on the tcl side.

FYI, the 20.3.7 software update made things worse for HTML5. Now when you start a web page it no longer grabs focus by default, so I'm unable to scroll through any elements of the page or insert text, etc.

FYI, the 20.3.7 software update made things worse for HTML5. Now when you start a web page it no longer grabs focus by default, so I'm unable to scroll through any elements of the page or insert text, etc.

Series 4 units with 20.3.7 software now support HTML5 as well and have the same bug as with Roamios (not grabbing focus).

The YouTube html app runs fine on the Premiere now:http://www.youtube.com/tv
I ran it on my 2 tuner Premiere and while clearly slower than on a Roamio it was actually not too sluggish and very useable. My guess is TiVo is waiting for the general release of 20.3.7 software to be deployed before making it the default YouTube version for series 4 units.

Similar to YouTube it's a little sluggish on series 4 units but functional. So we might well get html version of Netflix along with YouTube on series 4 units when TiVo decides to flip the switch.
(I was wondering why on the Roamio it has "uiDestinationType":"flash", but that parameter is not needed at all and seems irrelevant given the special netflix uri - x-tivo:netflix).

FYI, the 20.3.7 software update made things worse for HTML5. Now when you start a web page it no longer grabs focus by default, so I'm unable to scroll through any elements of the page or insert text, etc.

20.3.8 software still has this bug and brought back one of the stupid HDUI wishlist issues again - so a step backwards.