# Reverse Engineering HME v49



## davidblackledge (Sep 9, 2008)

Well, starting with wmcbrine's discovery and subsequent documentation we now know that HME works differently if you report a higher version number... in this case, minor version 49.

After enabling it, I found the app I was working on stopped working. I'm now getting invalid parameter errors for a simple createStream call, I believe it is. The errors stop when I go back to V40.

Apparently we now have a full-on reverse engineering job ahead of us. We "can" support the TiVo Slide Remote and USB Keyboards fully... but until we get more documentation we can't have all the old functionality working. If I had the time, I'd work it, but I know this is a challenge some of you enjoy and hopefully have some time for.... So, please have at it, and keep us informed (and ideally, post results on the Wiki ;] )


----------



## davidblackledge (Sep 9, 2008)

Wait a minute... I gave up on Java SDK 1.4.1e a long time ago, but it does implement v45 instead of v40, and does add some sort of map of parameters for stream resources... maybe that's all I'm looking for. Can anybody verify this?


----------



## wmcbrine (Aug 2, 2003)

Yeah, that's the only other difference I'm seeing so far -- if I report the version as 0.49 and tack an empty dictionary onto the end of the stream creation command, it seems to work fine. Needs more testing, though.

I have to imagine that there are meaningful protocol changes in each numbered version, but who knows if we can ever discover them?


----------



## davidblackledge (Sep 9, 2008)

Thanks.
By the way... in case you never perused this part of the Java SDK 1.4.1e, a little hint is there on the use of the dictionary in the stream creation:

```
* The parameters necessary to play the stream, once it has 
     * been located. Most commonly, this includes authentication keys.
```


----------



## wmcbrine (Aug 2, 2003)

A very little hint, yes. Really small.  Unless you got more out of that passage than I did?

I did see it before. I'd previously decided not to bump the HME level reported by HME for Python, since I had no data on the new stream parameters and didn't know what else might have changed. This keyboard support is the first thing that motivates me to do it.


----------



## davidblackledge (Sep 9, 2008)

wmcbrine said:


> A very little hint, yes. Really small.  Unless you got more out of that passage than I did?


Well, the one thing I infer from it is streams using a URL that expects authentication (and would fail before) would probably work if credentials were passed via the map as (probably) "username" and "password"

It's not a situation I've run into yet, but it'd be fun to try it out.

I would hope that any needed header parameters in a connection request could be passed that way, too, but that's probably just wishful thinking.


----------

