1. This site uses cookies. By continuing to use this site, you are agreeing to our use of cookies. Learn More.

Something actually happening on TiVo Developer Channel

Discussion in 'Developers Corner' started by moyekj, Jul 23, 2014.

  1. moyekj

    moyekj Well-Known Member

    11,141
    31
    Jan 23, 2006
    Mission...
    Something is actually happening for "TiVo Developer Channel" web page:
    http://developer.tivo.com/

    I had to sign in to actually see something and there's a section called "Interactive I/O Docs" only visible after logging in. Not sure I understand exactly what it's all about but maybe someone with time on their hands can explore some more.
     
  2. davidblackledge

    davidblackledge Registered l√úser

    466
    0
    Sep 9, 2008
    NM
    Without logging in I can see
    http://developer.tivo.com/docs/read/tivo_control_apis_program/3_TiVo_Control_API_Program_Overview
    the tivo control apis documents...and those were all modified 4 weeks ago.
    It's all the "mind" stuff.
     
  3. moyekj

    moyekj Well-Known Member

    11,141
    31
    Jan 23, 2006
    Mission...
    Yes, looks like all that stuff is new. I wish I had more time to look into some of it to see if there is anything beyond what already has been reverse engineered, but I won't have time to look into it for a while...

    EDIT: At least it looks like there may be an official way to get SSL certificate + password for interacting with MindRPC without having to use tough reverse engineering methods of existing TiVo apps.
     
  4. telemark

    telemark New Member

    1,544
    1
    Nov 12, 2013
    Is it clear, whether different credentials unlock different levels of control?

    I don't see how they'll issue keys for OSS without others reusing them.

    I'm Not saying that closed source / compiled software is immune. But the hardware implementations the docs contemplate, at least they can pretend it's secured.
     
  5. moyekj

    moyekj Well-Known Member

    11,141
    31
    Jan 23, 2006
    Mission...
    Yes, different credentials have different access levels for different partnerIds for sure. Using the Android and/or iOS PKCS12 certificates only gives me access to a limited set of MindRPC operations. The vast majority of operations return the following when trying to execute an unauthorized operation:

    "The active partner ID does not have access to the operation."

    So it looks like when partnerId credentials are generated there is a very specific set of operations that are allowed, so TiVo has full control over who gets permissions to do what. It would be wonderful to discover/reverse engineer a certificate + password for a partnerId with full access to all operations if there is one...
     
  6. moyekj

    moyekj Well-Known Member

    11,141
    31
    Jan 23, 2006
    Mission...
    The TiVo Control API Reference document on page 5 I think accidentally gives the wrong uri for "uiNavigate" operation for coming out of standby mode:
    "x-tivo:classicui:restartDvr"

    I didn't know about that one and as I suspected it takes you to the reboot screen where you have to confirm using 3 thumbs down, enter. So in next kmttg release I'm taking advantage of this by having a macro to implement a "Reboot" button from kmttg (the macro automatically includes the 3 thumbs down, enter sequence as well). This will allow me to reboot series 4 or later DVRs from anywhere I have internet access which will be useful combined with the existing "Network Connect" button.

    The list of documented operations in the above PDF is VERY minimal and nothing I didn't already know about, so doesn't look like TiVo intends to give us extensive control of a TiVo with this initiative (hardly surprised).
     
  7. Sep 3, 2014 #7 of 10
    telemark

    telemark New Member

    1,544
    1
    Nov 12, 2013
  8. moyekj

    moyekj Well-Known Member

    11,141
    31
    Jan 23, 2006
    Mission...
    Some interesting commands related to streaming are now there, such as:
    streamingConnectionType
    streamingDeviceType
    streamingRequirements

    Via RPC "schemaElementGet" operation I'm able to collect some info on the above structures, but there's no indication anywhere I could find on how to go about starting a stream, etc. Interesting that "webPlayer" is part of streamingDeviceType.

    streamingConnectionType
    Code:
    {
       "rootElementName": "streamingConnectionType",
       "levelOfDetail": "medium",
       "IsFinal": true,
       "rootElementType": "enum",
       "enum": [{
          "description": "\n      Connection types available for streaming.\n    ",
          "name": "streamingConnectionType",
          "item": [
             {
                "description": "\n        Wide Area Network.\n      ",
                "name": "wan",
                "type": "enumItem"
             },
             {
                "description": "\n        Wireless connection (typically 802.11) to a router.\n      ",
                "name": "wifi",
                "type": "enumItem"
             },
             {
                "description": "\n        Available on any connectionType\n      ",
                "name": "any",
                "type": "enumItem"
             }
          ],
          "isFrozen": true,
          "type": "enum"
       }],
       "type": "schemaElement"
    }
    
    streamingDeviceType
    Code:
    {
       "rootElementName": "streamingDeviceType",
       "levelOfDetail": "medium",
       "IsFinal": true,
       "rootElementType": "enum",
       "enum": [{
          "isPersistent": true,
          "description": "\n      Device types available for streaming.\n    ",
          "name": "streamingDeviceType",
          "item": [
             {
                "description": "Phone running the Android operating system.",
                "name": "androidPhone",
                "type": "enumItem"
             },
             {
                "description": "High end phone running the Android operating system.",
                "name": "androidPhoneHigh",
                "type": "enumItem",
                "firstVersion": 11
             },
             {
                "description": "Low end phone running the Android operating system.",
                "name": "androidPhoneLow",
                "type": "enumItem",
                "firstVersion": 11
             },
             {
                "description": "Tablet running the Android operating system.",
                "name": "androidTablet",
                "type": "enumItem"
             },
             {
                "description": "High end tablet running the Android operating system.",
                "name": "androidTabletHigh",
                "type": "enumItem",
                "firstVersion": 11
             },
             {
                "description": "Low end tablet running the Android operating system.",
                "name": "androidTabletLow",
                "type": "enumItem",
                "firstVersion": 11
             },
             {
                "description": "Apple iPad.",
                "name": "iPad",
                "type": "enumItem"
             },
             {
                "description": "Apple iPhone.",
                "name": "iPhone",
                "type": "enumItem"
             },
             {
                "description": "Browser-based media player.",
                "name": "webPlayer",
                "type": "enumItem"
             },
             {
                "description": "\n        Set Top Box.\n      ",
                "name": "stb",
                "type": "enumItem"
             },
             {
                "description": "\n        Any mobile device.\n      ",
                "name": "mobileDevice",
                "type": "enumItem"
             },
             {
                "description": "\n        Any device.\n      ",
                "name": "any",
                "type": "enumItem"
             },
             {
                "alias": ["TVA_XBOX"],
                "description": "\n        An Xbox.\n      ",
                "name": "xbox",
                "type": "enumItem",
                "firstVersion": 12
             },
             {
                "description": "\n        Any nPVR device.\n      ",
                "name": "npvr",
                "type": "enumItem",
                "firstVersion": 13
             },
             {
                "description": "\n        Any Fire device.\n      ",
                "name": "fireDevice",
                "type": "enumItem",
                "firstVersion": 14
             },
             {
                "description": "\n        Any iOS device.\n      ",
                "name": "iosDevice",
                "type": "enumItem",
                "firstVersion": 14
             },
             {
                "description": "\n        Any Android device.\n      ",
                "name": "androidDevice",
                "type": "enumItem",
                "firstVersion": 14
             }
          ],
          "isFrozen": true,
          "type": "enum"
       }],
       "type": "schemaElement"
    }
    
    streamingRequirements
    Code:
    {
       "rootElementName": "streamingRequirements",
       "structure": [{
          "description": "\n       Contains streaming settings, typically defined by a linear provider\n       for a station.\n     ",
          "name": "streamingRequirements",
          "isFrozen": true,
          "fieldDefinition": [
             {
                "levelOfDetail": "low",
                "description": "\n        Streaming capabilities that are not allowed.\n        \n        Default: A streamingCapability is allowed unless specifically\n        listed as a Streaming Restriction.\n      ",
                "name": "streamingRestriction",
                "maxOccurs": "unbounded",
                "valueType": "streamingCapability",
                "type": "fieldDefinition",
                "minOccurs": 0
             },
             {
                "levelOfDetail": "low",
                "description": "\n        Device streaming restrictions (i.e. not allowed).\n        \n        Default: If not present, there are no device restrictions\n        defined (by the linear provider for this station).  If\n        multiple restrictions are present, the restrictions are the\n        union of all conditions.\n      ",
                "name": "streamingRestrictedOn",
                "maxOccurs": "unbounded",
                "valueType": "streamingAvailableOn",
                "type": "fieldDefinition",
                "minOccurs": 0
             }
          ],
          "type": "structure"
       }],
       "levelOfDetail": "medium",
       "IsFinal": true,
       "rootElementType": "structure",
       "type": "schemaElement"
    }
    
     
  9. bradleys

    bradleys It'll be fine....

    3,687
    4
    Oct 31, 2007
    This is very interesting. At a glance, this looks more like streaming connections from TiVo to external devices as opposed to streaming apps on TiVo.
     

Share This Page