It's small and silent, sports an array of ports on the back but only one tiny white LED on the front, and it can help you spend hours of time in front of your TV -- and it runs Linux. It's the Netflix Player from embedded device specialist Roku, and we got our hands on it for a review of the service and the hardware.
Netflix began delivering on-demand video in January 2007, restricting viewers to watching content through Internet Explorer on Windows. The "Watch Instantly" option uses DRM-encumbered Windows Media Video to lock out all non-Windows Media Player plug-ins (including licensed media players such as Fluendo's WMV codecs). The in-browser player includes minimal playback controls, and the service is built-in to all existing Netflix accounts. Subscribers on plans that include a fixed number of discs per month are alloted a fixed number of hours through the Watch Instantly service; subscribers on unlimited disc plans can watch an unlimited number of Watch Instantly programs.
The Netflix Player hardware product debuted in May 2008, marketed jointly by Netflix and device manufacturer Roku. Roku has a history of making Linux-based home entertainment products, most notably the SoundBridge networked streaming audio receiver.
Player hardware and setup
The Netflix Player itself is a fanless, driveless embedded Linux system that runs a custom playback environment. The box has Ethernet and 802.11b/g Wi-Fi connectivity; HDMI, Component, Composite, S-Video, and optical audio output; and a simple nine-button infrared remote control. It contains 64MB of RAM, which it uses to buffer the video stream in case of network interruptions.
Setup requires an active Internet connection and a PC with which you can log in to your Netflix account during the process in order to enter an activation code. The setup process itself is intended to be a no-brainer, which typically means there is also no way to troubleshoot when things go wrong.
Unfortunately the first step in the process is the one most likely to go south: connecting to the Internet. The box's Wi-Fi is capable of connecting to WEP, WPA, and WPA2 encrypted networks, including networks with a hidden SSID. It uses DHCP to get an IP address and DNS servers, so you must have a DHCP server on your local network.
The trouble comes after the box retrieves its settings from the DHCP server. The on-screen wizard says "connecting to the Internet," then, for many people, reports failure. In this step the box actually tries to ping a particular server at Netflix, moviecontrol.netflix.com. According to the Roku forums, there are several tricks you can try to fix the problem, including shutting down your router's firewall, changing your NAT settings, not having an Ethernet cable plugged in while using Wi-Fi, changing your router's DNS servers, and plugging the Roku box directly into your WAN connection.
The first thing this generation of devices does once it passes the connection test is download and install a firmware update. The newer (1.x-series) firmware reportedly has greatly improved networking compared to the factory-installed version (0.4). Once I discovered all of this info via the forums, it was not hard to try a few alternatives and get the issue solved, but it is still a big wart on the first-run experience.
The rest of the setup process is trivial; you tie your player to your Netflix account by logging in to Netflix on a PC and entering the code provided by the player. You can adjust sound and aspect ratio settings on the player, but for the most part it does not require any further attention.
After setup is complete, the player's main screen displays a list of the titles on your Netflix queue that are available through Watch Instantly. Right now, that adds up to about one out of every 10 Netflix titles. The balance is higher on older films than new releases, but it is clear that the service is still in its early stages. Unlike your DVD queue, you can watch any item in your Watch Instantly lineup at any time. You can also rate the titles listed and delete them, but to add new items you must visit the Netflix Web site with another computer.
Whenever you start a title, the player displays a "retrieving" progress meter while it buffers the first few minutes of content. Once it starts playing, you can press pause or use the fast-forward and rewind buttons to seek to another point in the video. However, since the video is streamed on demand, you can skip forward or backward, but whenever you press play at the desired point, you have to wait for the requested video to buffer -- even if you have only rewound for a few seconds.
For the most part, seeking in the video works without incident, but on more than one occasion the player got confused. Either I would pause playback, and when I hit play again it would start up at a different point in the video, or I would fast-forward, and when I hit play it would pick up from the point I had last watched, not the new location.
Currently the player displays only 480p video with two-channel sound, but this is a limitation imposed by the content at Netflix. Roku says the hardware is capable of playing surround sound and HD video, and will automatically do so once Netflix offers such content through Watch Instantly.
I tested the player using my primary TV, a 90-inch DLP projector. At that scale, compression artifacts are clearly visible. The video signal may be 480p, but both macro-blocking and "mosquito noise" artifacts due to the WMV compression format make the visual quality inferior to the MPEG-2 used on a DVD. On a smaller screen, of course, those effects would undoubtedly be less distracting.
Another factor to consider is that Watch Instantly is designed to be a lower tier of service than disc-based rentals, as demonstrated by the fact that the only part of the title delivered to the player is the main feature -- you'll get none of the behind-the-scenes documentaries, outtakes, or director's commentaries of the original DVD, and no subtitles or additional languages. One multi-disc TV series I watched even had several episodes marked as unavailable with the words "this episode is available on the DVD only." There is no technical reason Netflix could not offer additional content for each title; the interface supports multiple episodes per disc for TV series DVDs.
The network is the playback box
Finally, the player depends on buffering a constant stream of video from the Netflix server. As long as the video comes in sufficiently fast, the box's 64MB buffer suffices -- but when throughput slows, playback stops suddenly and the "now loading" progress meter reappears. Under poor network conditions, this happens repeatedly and without warning. That gets old fast.
The box reports current conditions on a one-to-four scale labeled "Internet connection," which is described in the documentation as a measure of your home network's throughput. The trouble is that, in reality, "Internet connection" appears to measure only the connection speed to the Netflix streaming server (a fact you can measure with other tools while the player is reporting trouble downloading video), and the Netflix server gets bogged down, especially during prime time.
I have only seen the connection speed crest above level two once, and that was in the morning during initial setup. In practice, it usually stays between one and two, and at times the performance at level one is so bad that the box spends more than a minute at a time buffering, only to complete the task with less than one minute's worth of new video. Even pausing playback under conditions like those doesn't help, since the box only stores a fixed amount in its buffer; once that is exhausted, you are back to stop-and-go traffic.
I don't know how Netflix distributes the load from its servers, but until it makes a major upgrade, my advice is that when you find your box spending more time buffering than playing, you might as well give up and try again at a different time of day.
On the aisle
Overall, the Netflix Player is a worthwhile product for the cinema fan. The company has every right to fear the demise of its by-mail disc delivery business, and it speaks well that it is adding video-on-demand itself rather than waiting for a competitor to reach the market first.
Most of my complaints about this product and its service lie on Netflix' side, not Roku's: the network congestion, the limited selection (of titles and of features), the inability to browse or add titles to your queue through the player itself. There are a few negatives in Roku's column, such as the networking woes during initial setup and the occasional hiccup when fast-forwarding or rewinding. The poor choice of WMV as a video codec is certainly Netflix's. In my paranoid moments, I suspect Netflix chose it solely for its DRM lock-out features; as competition arises, I hope other factors will motivate a re-evaluation of codec selection.
Still, even with its flaws, the player and its bundled service is hard to beat from a consumer's standpoint. You are not beholden to a single studio or service provider's selection as you are with pay-per-view and video-on-demand from a cable company. The one-time-only $99 price tag is easily cheaper than monthly-fee-based services. And given that this product is a new venture for Netflix, its network issues may be attributable to startup pains.
But let's be honest: the real reason Linux.com readers have scrolled down this far is to find out just how hackable the box is.
Right now, the Roku Netflix Player and Watch Instantly are tied together, but that may be about to change. Roku has already stated that the box will be updated to work with other video-on-demand services this year, although it remains tight-lipped about which ones. And the Netflix site has undergone an intriguing change of wording since the Roku player's launch; the Instantly to your TV link now speaks of "Netflix ready devices" instead of just the Roku player itself.
Which additional services the Roku hardware will support is the subject of much discussion on the Roku forums. It depends on which services the player could support. Forum users have already disassembled the device and taken pictures of its internals. Roku employees made a forum thread on the subject sticky and have been kind enough to openly answer technical questions about the hardware.
According to that discussion, the player is based on the STB225 set-top box platform designed by NXP. At the center is a chip called the Nexperia Multi Format Source decoder PNX8935, which combines a 32-bit MIPS processor and a dedicated video decoder supporting multiple codecs, including H.264. The reference STB225 boards have SATA and USB capabilities. The Wi-Fi daughtercard in the Roku box uses up the USB header, but there are several other headers that have yet to be identified. Roku engineers say that the box uses HDCP on the HDMI connection, which might limit its hackability.
On the software side, Roku has released the source code to all of the free software used inside the box, including the Linux environment and bootloader. Roku has done the same for its other Linux-based home entertainment products, even releasing software development kits.
Roku's vice president of consumer products says that the company plans to release an SDK next year that will allow developers to build for the Netflix Player platform, but would not disclose any details. He does say that the SDK will open up the platform to additional video services, including those that are third-party and non-commercial.
The lack of on-board storage (short of serious hardware hacking) appears to be a limiting factor so far. The platform's dedicated HD-capable video decoding chip means that even with its low-power processor and modest RAM, the box could in theory serve as a front end for MythTV or another such package. But we will likely have to wait for the boxes to reach the hands of additional enterprising tinkerers before we find out. So far, the players are in such short supply that few of the interested parties on the Roku forum have been willing to break out the screwdriver and disassemble their own.
Roku has always been friendly toward the free software community in the past -- in addition to providing easy-to-find links to GPL source code, it regularly answers developers' questions, provides specifications and protocol documentation, and permits free discussion on its forums. You can see the fruits of the relationship in the third-party add-ons for Roku's SoundBridge and the active developer forum.
Whether you are a Netflix addict or not, Roku's friendly cooperation with the open source community and the promise of an SDK add up to a good environment in which to explore video-on-demand. The Netflix Player is a good product now; opening it up to additional services will make it better, and working with the development community will make it even better still.