Enter Webz

The world’s first “web browser”
for the TiVo DVR.

By David Blackledge, original beta release in January 2013

Download a version* to run on your personal computer.

A public server is also available from EnterWebz.tv.

Why a Web Browser for the TiVo DVR?

Instant HME Apps for Many Websites

Launch other TiVo Apps

One-off pages for Other Apps

NOTICE

Credits

Warnings

Security

Enter Webz Features

Supported Page Contents

Basic Browser Functions

Special Features

Web Page Screen Features

Information Menu Page Features

Thumztak Page Features

Keyboard Page

Advanced

Technical Features

Basic HTML Rendering

CSS Stylesheet Support

Forms

Tables

Key TODO Items

Next Release

2014-12-25 (V 1.0) Release Notes

2014-11-28 Release Notes

2014-4-6 Release Notes

2014-2-10 Server Release Notes

2014-1-9 / First EnterWebz.tv Server Release Notes

2013-10-31 Release Notes

2013-2-5 Release Notes

2013-1-13 Release Notes

Why a Web Browser for the TiVo DVR?

Instant HME Apps for Many Websites

Especially mobile websites (m.website.com)

like:

Launch other TiVo Apps

Allows a user to start a regular TiVo App via a special link on a web page, or simply when you know the domain name for the App, but not the IP address usually required by “Manually add a server.”

Links to TiVo Apps or websites can be configured to to look like they are regular stand-alone TiVo Apps.

One-off pages for Other Apps

NOTICE  

Please report bugs at the tivocommunity forums or send me an email at david @ blackledge .com

You’re welcome to run it for your personal use, but may not run it on a public server.  

No warranties expressed or implied, etc.  Your use of this software is acknowledgement that you will not hold me responsible for any damage that may or may not result from your use of this software.  

You are hereby warned that it could possibly crash (reboot) your TiVo DVR.  Crashes are known (but rare) when the TiVo’s built-in webserver is activated while running any HME application - e.g. accessing the same TiVo’s web server via this app, or even just running any HME app while pyTiVo happens to be downloading content from the DVR.  Crashes are also known on web pages with content and layout that happens to be taxing to the TiVo’s capabilities.  This is a known problem on some Vimeo pages including the home page which has a very wide and fairly tall background image.

Credits

Enter Webz was written entirely by David Blackledge ( David @ Blackledge .com ) in his spare time starting in the summer of 2012.  The first beta release was in January of 2013.

Enter Webz uses:

The name, Enter Webz, is a combination of the action you’re performing when you select it on the TiVo (Entering the World Wide Web) and a variation on LOLspeak or 1337 for “Internet” (“Teh Interwebz”).

Warnings

The TiVo DVR’s HME interface that Enter Webz uses has severe limitations and stability issues.  As a result, any given web page may be formatted and arranged in such a way as to cause the TiVo to run out of memory and exit the app, run out of graphics memory and display content abnormally/off-color which may lead to the app exiiting or the TiVo DVR rebooting, or for any other related reasons or incompatible file formats the TiVo DVR may just reboot unexpectedly.

Consequently, your use of Enter Webz to display any web page or app is at your own risk.

It is recommended that you only access known “simple” websites, and do not venture into other areas of the websites.  If you choose to “surf the web” with Enter Webz, you should do so when you do not have a recording in progress on your DVR due the risk of a reboot and loss of at least 5-10 minutes of the recording.

You have been warned.  Enter Webz is provided to you free of charge.  Your use of Enter Webz acknowledges that you hold David Blackledge (and any other entities related to your use) harmless for any damage resulting from your use of this application.

Security

If running your own Enter Webz server in your own home network, Enter Webz is as secure as your network is with one exception.  Enter Webz passes http (not secure https) URLs to the TiVo to load resources (images, mp3 files, etc) even if the web page specified https.  This is a TiVo DVR limitation - either you get no image, or you use http.  Consequently, an attacker could see what file is getting displayed by the TiVo DVR as it is downloaded if he is watching your network traffic.

If you are using a public Enter Webz server, then security is lower.  You should act as though you have no privacy in your web browsing.  Your thumztaks (bookmarks) and cookies are stored on that server.  Also, all communication between the server and your TiVo (text to display, Remote control or Keyboard button presses, URLs) could be seen by an attacker watching your network traffic.

While an attack or other misuse of your data is unlikely, it is possible.  Keep this in mind when accessing sensitive websites or entering passwords.

Enter Webz Features

(known issues are in [brackets])

Supported Page Contents

Basic Browser Functions

Cookies via java.net.CookieHandler

        Cookies only persist with saved thumztaks (bookmarks)

        Cookies are refreshed in saved thumztaks on browser exit.

HTTP handling and HTML interpretation using Jsoup

        (bypasses Jsoup cookies so has to do own redirect handling)

        just a “bonk” if page fails for any reason

Optionally tells site it is an “AvantGo 3.0” compatible “Mobile” browser.

Will never support scripts (javascript), Java applets, Silverlight, plugins in general.

[should try to support Flash on TiVo Premiere]

Special Features

        Supports HD modes [needs mode choice in user settings] plus Maximize option

        Optional Picture-in-Picture (PIP) LiveTV on launch like TiVo HD menus

Custom support for “hme://” protocol to transition to other TiVo HME apps.

        [future? support user selection for multiple apps at a single site]

        launches TiVo’s [old] YouTube and Video Player apps when needed

[future: for other links transition to HME apps like my Google Maps app]

[future: secure HME server]

[future: save memory by consolidating same-style text rows to a single row]

Server mode - thumztaks in Apps group become TiVoConnect app entries

Web Page Screen Features

        top: Page Icon (if supported image type), Title, page info

bottom: Focused link destination in “status bar”

left side: Hints

right side: scrollbar

[No indication if server is secure.]

“Maximize” mode for TVs that have a small overscan area

        CLEAR = quit Enter Webz or text field clear

        PLAY = open thumztaks (bookmarks)

                [should launch player if focused on a known media URL]

        THUMBS UP/DOWN = save/remove thumztak

        INFO = open information menu

        ASPECT/ZOOM = toggle Mobile mode and reload or toggle PIP of playing video

        REVERSE = back or text field backspace

        SELECT or FORWARD = follow link or activate form field or open text field keyboard or textfield space (FORWARD)

        LEFT = back (see Information Menu to only use REVERSE)

        UP/DOWN/LEFT/RIGHT = navigate links & fields, small scroll of page

                [uses Bananas focus manager - needs a custom one]

                [shouldn’t scroll right when there is no more content to show]

        CHANNEL UP/DOWN = page scroll

        ADVANCE = bottom or top (bottom estimated then does any reflow) or text field dash

        SLOW = open Live TV Picture-in-Picture (PIP) or close PIP video/audio

        PAUSE = pause/unpause PIP video/audio (or quit Enter Webz if PIP is closed)

        1-9,0 = page-defined link shortcut or “zoom” font size (0=default) or text field input

REPLAY = reload or text field comma

        RECORD = make thumztak of focused link or text field period

        Action “B” = back

        Action “D” = Dimmer

Information Menu Page Features

Page Information and full-size Icon

Save thumztak of focused link

        Adjust display (maximize, brightness, save font size, table render/flatten) and redisplay

Adjust mode (mobile mode, interpretation mode) and reload

LEFT goes “back,” too or not.

Startup PIP options

Delete all cookies (Thumbs Down three times)

Thumztak Page Features

        Remembers Last Visited page

        “[Enter new webz URL]” - activates keyboard

                [should allow direct entry by slide remote without selecting keyboard]

        SELECT/RIGHT/FORWARD = load thumztak

        LEFT/REVERSE = back to page, or quit

        THUMBS DOWN = remove thumztak

        ENTER = edit thumztak page

edit name

change/create group (Apps/ and Apps/genre/ (music, photos, video) built-in)

numbers+ENTER(or SELECT) = enter new list position for this entry

        THUMBS UP = save “Last Visited” or featured link as a thumztak.

Keyboard Page

Keyboard page - text area:

        slide remote/USB/bluetooth keyboard support

cursor indicates where next letter will go

0-9 = type number

RECORD = type “.”

REVERSE = backspace

FORWARD = type a space

CLEAR = clear all text (press again to undo)

LEFT (at left edge)/PAUSE = Cancel entry

RIGHT (at right edge)/SELECT/ENTER = Complete entry

LEFT/RIGHT = move cursor one letter

ADVANCE = jump cursor to end or beginning

REPLAY = jump cursor back one word

THUMBS UP = capitalize letter after cursor and advance

turn on Caps or Capslock for next typed letter if at end of text

        [should be “next typed letter if at end OF WORD”]

THUMBS DOWN = downcase letter after cursor and advance, turn off Caps

UP/DOWN/CHANNEL = select Completions or Keyboard

Keyboard page - Completions:

        Top 10 Based on common english words and saved thumztak host names.

        1-9 = select completion

        UP/DOWN = navigate completions list

        SELECT/RIGHT = select focused completion

        DOWN (at bottom)/CHANNEL DOWN/PAUSE/CLEAR/ENTER/LEFT = select text area.

        REVERSE, FORWARD, REPLAY = same as text area

        THUMBS = Capitalize or ALL CAPS the completion

Keyboard page - keyboard:

        common sequences in top row, vowels in second row

        UP/DOWN/LEFT/RIGHT = navigate keyboard

        UP (at top)/CHANNEL UP/PAUSE/CLEAR/ENTER = select text area

        THUMBS UP = Capitalize next selection (Capslock if pressed twice)

        THUMBS DOWN = cancel capitalization

        1-9 = select completion (type # if completions are off)

        REVERSE/FORWARD/ADVANCE/REPLAY = same as text area

        

Advanced

Accepts some parameters on launch or transition

        launcher.txt accepts two parameters which are the starting URL and the App title

        URL “file:groupName/subgroupName” starts in that thumztak group page.

                (simulate server with entries for file:Apps and each file:Apps/genre)

        transition URL (from another App or TiVoConnect listing) accepts params:

Returns page title and URL on transition back (for e.g. Google Authentication)

[future: accept compressed HTML content in transition data map for instant display or partial content (e.g. RSS feed entry)]

hme: URLs link to TiVo HME apps from a bookmark or website

URLs use a host, optional port, (partial) path, and optional query.

host domain name is translated to ip address

ip is asked for an HTTP TiVoConnect XML file

TiVoConnect is searched for an entry whose path starts with the hme: URL’s path.  This is used for the transition (if no path, chooses first entry)

If no TiVoConnect file, transitions to host IP, port, and path supplied [currently this only supports http, not https]

Query is included on transition URL as well as passed in as a transition data map

Example: hme://mydomain.com/hmeapp?name=value first translates mydomain.com to ip 98.76.54.320 and downloads http://98.76.54.320/TiVoConnect which contains app entry http://123.456.789.10:7288/hmeapp_official (a match for “hmeapp”) so the TiVo transitions to http://123.456.789.10:7288/hmeapp_official?name=value with a data map of {“name”=”value”}

Technical Features

(known issues are in [brackets])

Basic HTML Rendering

        Images (PNG, GIF, animated GIF, JPG, max 3000x1700?)

                [when not blocked by website due to remote loading]

                [no proxy-based work around for remote loading blocks or >1k url lengths or large images or unsupported image formats]

                pauses rendering to load image size when needed

                displays “alt” text and error when image fails

                        [text doesn’t persist after scrolling]

                        [?errors not displayed if image size was known]

                        [untested handling of redirect (HTTP 301 & 302) errors]

        Fonts - basic font family support including 3 custom fonts uploaded as needed.

Replaces some unsupported characters (that would display a “box”)

[some “box” characters are still present, especially foreign languages]

[Only rudimentary framesets or iframe support - displayed as links]

[no underlining or other line-based text-decoration for links or anything else]

[sometimes page is blank for no reason - reload and it works]

Auto-Refresh can be scheduled by page or HTTP header. [should disable TiVo idle timeout]

Supports “BASE” tag to change relative urls [should also support Content-Location header and relative URLs for both]

Jumps to URL’s #section in page (anchor name or id reference)

        “instant” load of new page if it is a #section of the current page.

CSS Stylesheet Support

(push-down via Jsoup css selector querying)

support for @media and @import

user-selected “tv” (default), “handheld,” or “screen” as media interpretation type

[no proper support for media queries (width, etc)]

Handles CSS Specificity rules and built-in user-agent stylesheet for defaults.

        [doesn’t properly support inheritance]

display:none skips rendering

support for background, list, color, align, font (size, italic, bold, family [sort of])

        [background images are flakey across multiple text rows]

        [background images don’t support attach=scroll, iffy support of repeat/position]

                [repeat only supported via scaling - to reduce # of views]

                [scaling doesn’t persist after scrolling?]

        [backgrounds may use too much memory - need option to turn it off]

        [list-style-type only supports numbers/alpha with “#” as bullet]

[“display:” only has simple support for block/inline]

[incomplete url support (must be relative to the CSS source, not page. url() formats]

[need to support white-space:nowrap (and NOBR tag)]

Forms

[WARNING not a secure HME server currently - keyboard from TiVo to Enter Webz could be watched.  If site is secure, form submission is still secure]

Custom form field look & feel

Fields not fully supported:

Text field control:

direct input with remote (good for numeric fields)

        0-9, REC=”.”, ADV=”-”, REP=”,”, REV=backspace, FOR=space, Clear

direct keybaord input with Slide Remote/USB/bluetooth keyboard

SELECT: open keyboard screen

(“password” just shows some *’s when set)
[TODO: press ENTER key to submit button-less forms (e.g. search fields)]

“Button” tag renders as HTML in gray raised area [should look like regular buttons]

[select list backdrop highlight gets hidden behind most page content]

[select list doesn’t handle disabled OPTIONs]

“Disabled” fields are transparent [doesn’t work for button tag?]

[Some form submissions aren’t working as expected]

Tables

        Can be turned off

        [nested tables don’t work well, currently]

        adapts column widths for small content

                [isn’t handled well for nested tables]

                [sometimes end up with just a single tiny column containing all content]

                [last column is usually wrong]

        [generally forces one screen width, instead of needed width plus scrolling]

        [no borders]

        [iffy handling of colspan, no handling of rowspan]


Key TODO Items

Next Release

2014-12-25 (V 1.0) Release Notes

2014-11-28 Release Notes

2014-6-7 Release Notes

2014-4-6 Release Notes

2014-2-10 Server Release Notes

2014-1-9 / First EnterWebz.tv Server Release Notes

2013-10-31 Release Notes

2013-2-5 Release Notes

2013-1-13 Release Notes