Original Link: https://www.anandtech.com/show/7186/google-chromecast-review-an-awesome-35-hdmi-dongle
Google Chromecast Review - An Awesome $35 HDMI Dongle
by Brian Klug on July 29, 2013 9:45 PM EST- Posted in
- Media Player
- Smartphones
- Android
- Mobile
- HDMI
- Chrome
- Tablets
- Chromecast
So I have a confession to make – I didn’t hate the Nexus Q. While I didn’t necessarily love it and use it daily like a small minority of my peers did, I also didn’t immediately declare the product an unmitigated disaster like the vast majority of people. The fate of that product was so quickly decided that I hadn’t even begun writing my review when the whole thing was terminated. When I spoke with Googlers about Nexus Q, what was obvious to me was that the Q had begun as an audio-only product that later on had HDMI added, and that tiny bit of context made all the difference in understanding the choices behind it. I left the Nexus Q plugged into my AV Receiver up until the most recent set of Google Play apps killed functionality entirely.
Ultimately the price of the Nexus Q was its undoing ($299), not necessarily its functionality or even its somewhat awkward spherical form factor. The concept was relatively sound – a network-attached appliance that played back movies and music from Google’s servers directly, rather than streaming them from device to device on the same network. The Q ran Android 4.x atop an OMAP4460, literally the same platform as the then-flagship Galaxy Nexus, just sans cellular connectivity, which made it a logical choice.
The Nexus Q was killed off before other services could be added, but at a high level the Q’s functionality as a playback device rather than streaming endpoint carried onto its successor, the Chromecast.
The Chromecast is obviously everything the Q should’ve been. It’s a simple, small, $35 HDMI dongle, powered by USB, that’s designed to discreetly plug into the back of a TV. There’s been much talk about the power requirement of the Chromecast, USB is indeed required for operation, but just about every modern TV has USB ports on the side for attaching mass storage or powering accessories like this. In fact, the Chromecast’s form factor is already a popular one for Android-powered HDMI dongles and Miracast sinks, as well as a variety of other small appliances. I’ve confirmed with Google that MHL-HDMI is not in fact supported by the Chromecast, meaning it can’t be powered by a TV that includes the spec (which can deliver up to 500 mA at 5 V), straight HDMI can only supply 50 mA at 5V. I’ve yet to encounter a TV with MHL-HDMI myself, including on the 55-inch LCD TV I purchased just 3 months ago.
Inside the box for the Chromecast is the device itself, a relatively long microUSB cable, USB power supply, and HDMI extender. Funnily enough the USB power supply appears to be the exact same as the previous generation Motorola USB charger (5V, 850 mA), just with a different exterior – is this the first Motorola product out of Google proper?
The HDMI extender cable helps get the Chromecast behind a TV if you need to turn it 90 degrees or have an inset port with inadequate clearance like I do on my front-facing HDMI accessory port.
There’s not much to talk about regarding aesthetics of the Chromecast itself, it’s a dongle with a rounded bulge at one end, and HDMI port at the other. There’s a reset button on the side, microUSB port for power, and a status LED on top. On the bottom are regulatory markings. My only complaint about the Chromecast’s design is this status LED, which inexplicably is bright solid white whenever the device is on, making it distracting in a dark living room or bedroom. Nothing electrical tape can’t solve, but an inexplicably poor choice for a media center playback device given that bright LEDs are a known no-no.
The hardware is what it needs to be – small, simple, and conducive to the low price point. The Nexus Q was a solid bowling ball in comparison, primarily thanks to the analog audio amplifier and hardware it really didn’t need. By keeping unnecessary I/O to a minimum the Chromecast ends up being a nice and small streaming appliance.
Inside Chromecast
Inside the Chromecast it’s also a simple affair, I took a look at the FCC disclosure for the Chromecast which had internal images up right after the event, and noted inclusion of a Marvell 88DE3005 SoC and AzureWave NH–387 WiFi combo chip. On the backside is 512 MB of Micron DDR3L memory and 2 GB of flash. The antenna for the WiFi combo is printed on the PCB off to the side, there’s no diversity or anything special, just a single PCB antenna.
The Chromecast supports just 802.11b/g/n (2.4 GHz), sadly no 5 GHz is included. That’s somewhat alarming if you’re in an area where 2.4 GHz is congested to the point of being unusable (just about any major urban area), and even more so since streaming applications demand a good QoS for good experience. I have no doubt that 2.4 GHz-only was chosen for cost reasons here, but I would’ve gladly paid $5–10 more for 5 GHz and eliminating that as a potential problem.
Best I can tell, the Marvell 88DE3005 is a cut down, perhaps binned version of the 88DE3100 SoC that has shipped in Google TV for some time now with just a single CPU core enabled. Some hacking done by enthusiasts has confirmed from /proc/cpuinfo that only a single core is visible to the OS, and that the Chromecast also interestingly enough really runs Android, not Chrome, and includes a build.prop file like you’d expect an Android device to.
Google no doubt chose this Marvell SoC in part thanks to the presence of hardware VP8 decode, and I have no doubt YouTube on the device brings down VP8 versions of videos when available, and the Chrome tab to Chromecast streaming uses VP8 as well. Of course there’s hardware decode of H.264 High Profile onboard as well for Netflix and other YouTube videos without VP8 versions. Google lists the supported codecs on their Google Cast SDK page.
Back when the power situation was unknown and still steeped in conflicting information about HDMI power delivery (again, it can't be powered by MHL-HDMI ports which can supply up to 500 mA at present spec, and HDMI doesn't supply enough current, just 50mA), I set about measuring power. I have a handy USB power meter which sits in line with devices and shows a small graph as well as data on its OLED display. I stuck the meter in line between the microUSB power supply provided with Chromecast, and the Chromecast, and measured around 420 mA at peak while decoding either a 1080p Netflix stream or Chrome tab streamed to it, and around 250 mA at idle. All of those are at 5 V, so at peak the Chromecast draws around 2 watts, at idle around 1 watt. Of course if the Chromecast is plugged into your TV’s USB port, chances are when the TV is off power is cut to USB, so idle really is completely off. It’s obvious to me that Chromecast definitely leverages that hardware decoder for both VP8 and H.264 processing to get these very low power numbers.
How It works
Software setup on the Chromecast is simple and essentially out of band. When first plugged in, the Chromecast will form a wireless network of its own, the apps use WiFi AP discovery on the respective platforms, attach, set them up, then return you to the network you were attached to before.
Using the Android app is simplest, since the app then searches for networks, joins the Chromecast network, and lets you attach it to a network of your choice, enter the wireless credentials, and name it. The desktop apps work the same way – On OS X for example the app will automatically pull down the list of nearby networks, change wireless networks, program the Chromecast, then change back. This semi out-of-band pairing is so much better than forcing the user to tediously enter a password over a remote control, especially if you’ve chosen a secure wireless PSK with a lot of characters. Using the desktop or Android setup apps have worked flawlessly for me thus far.
One big use case for a lot of people (including myself) will be using the Chromecast while traveling. If the Chromecast doesn’t find the network you’ve previously attached it to, it goes into the beaconing mode and you’ll have to use setup again. Of course, if you’re in a hotel, that means you’ll need to join the Chromecast to a portable hotspot, the lack of any onboard browser means you’ll get stuck at the captive portal unless you clone your MAC address on a laptop, authenticate, then switch back. The travel use case works, it’s just subject to the same caveats that normally apply.
Chromecast also supports HDMI CEC (Consumer Electronic Control) and can turn on equipment and switch inputs to the appropriate one. I believe volume is a part of CEC as well, but that’s not supported, changing volume results in a bar popping up on-screen from the Chromecast.
The First of Two Modes
Chromecast offers two modes of operation – local streaming of the contents of a tab from chrome (encoded on the computer and sent over the network to the Chromecast directly), or the cloud to Chromecast playback of some URI. The first mode works only in Chrome right now with an extension that you’ll need to control YouTube, and Netflix from the browser on either PC, OS X, or the Chromebook Pixel. The only requirement is that Chromecast is on the same network you’re attached to.
When not casting, the Chromecast displays a simple ready to cast screen with the wireless network it is attached to, signal level, name, and backgrounds that cycle through 11 photos constantly. The iconography on the display moves around as well to prevent any burn in from happening. Chromecast is operated without a remote, all of the playback controls are exposed in the respective players.
The Chrome extension adds a Cast button to the YouTube player that lets you shoot a video over to it. It works flawlessly, there’s a list of the Chromecasts and tapping on one quickly makes the video play on it. Scrubbing through playback works, as does volume. One thing that’s missing from the desktop YouTube client is the ability to modify or add to the playback queue, you can only interrupt playback and immediately start playing a new video.
In Netflix on the desktop, you get a Cast button at bottom right whose functionality works the same way as it does in YouTube. Unlike YouTube however, after playback starts you can’t leave, you need to have the tab open somewhere for Netflix playback to continue if you’ve initiated it from the desktop. Scrubbing and subtitles work, but volume control doesn’t. Inexplicably the other Google Play services aren’t yet available from the web/desktop, like Google Play movies or music, though I can only assume they’re coming soon.
It’s obvious to me that the preferred interaction method is from the mobile apps, where there’s better support for the first party Google services – Netflix, YouTube, and Google Play.
Netflix on mobile works essentially how it does on the web player. There’s a cast button, and you can scrub through and control volume. On Android, the playback controls are also elevated above the lock screen thankfully, so it’s reasonable to the smartphone as your remote control.
YouTube playlists work only on smartphone and tablet, where you can add movies to a queue. The Cast button appears in YouTube and there’s a selection menu. Scrubbing through videos works, and there’s that add to queue button in the right places. YouTube control works well – it’s responsive and speedy. Google Play music and movies also get Cast buttons and have working scrubbing and volume control.
Playback control from the mobile devices and Chrome client works really well, initiating playback of media happens quickly and reliably, and scrubbing through things changes state quickly as well.
YouTube and Netflix both have the progressive quality feature enabled, and the Chromecast steps up through quality rather quickly for me, all the way to the maximum bitrates for each service. On Netflix, that’s up to the 1080p “Super HD” bitrate stream with 5.1 audio, which does work on the Chromecast. As far as I’m aware, that makes the Chromecast as of this writing the least expensive Super HD enabled Netflix player alone. On YouTube I suspect the VP8 streams are being used, and quality is likewise excellent.
At present the Chromecast is limited to just Google and Netflix (unless you use the Chrome tab, more on that in a second), however Google published a Cast SDK for developers to build functionality into their own services. Getting the Chromecast functionality working requires a sender (which discovers the Chromecasts, handles most of the work for status and controls), and receiver (which in the Cast SDK is a web app that gets launched and pulls down media and receives notifications).
Hopefully additional services like Spotify, Pandora, Vimeo, and maybe even games will leverage this and add Cast support.
Through Chrome
It’s impossible to expect every service to port their frontend to the Cast SDK, and for some services licensing issues might make that very difficult (Hulu, Amazon Prime, Vudu), or imposible, to say nothing about those who face technical restrictions (Flash). For that, there’s the other side of Chromecast, which works similar in practice to other screen mirroring standards (WiDi, Miracast, AirPlay Mirroring), and streams the content of a tab, and its audio, directly to the receiver. The plugin adds a Cast icon to Chrome, and there’s a tiny down arrow at the far right for selecting between current tab, audio mode, and if you’re lucky full screen (I don’t know why some see the full screen option and others don’t, neither my Retina MacBook Pro nor Windows 7 desktops see this option, but I’ve seen others show it).
There are three different options in settings for video quality, and since the video is encoded in software on the host, choosing between them will affect CPU use dramatically. I’ve backed out bitrates for the three settings: 5.0 Mbps for extreme (720p high bitrate), 3.0 Mbps for High (720p), 1.7 Mbps for Standard (480p), all seem to be VP8, especially given the fact that this is essentially WebRTC in practice.
There’s latency of about a second on the connection, and of course the occasional artifact during motion and a dropped frame or two (depending on connection quality), but it works surprisingly well.
HDMI Capture of Chrome Casted Tab
For a lot of services that don’t have Cast support this is the only way to get video across, it’s essentially AirPlay Mirroring but of a tab (or full screen if the setting is visible under that drop down). I’d love to see this functionality added to Chrome for Android or iOS if that’s possible as well, though those platforms really need VP8 hardware encode to make it tenable.
Conclusions
Chromecast is everything the Nexus Q should’ve been. As its spiritual successor, the Chromecast finally delivers on the promise of an accessory to the Google Play and Chrome ecosystem for the TV. Chromecast works, and it works well, the Netflix and YouTube apps I’ve used from Android since getting it are quick to control the playback functions and reliably discover the Chromecast all the time.
After spending a week tearing my hair out over Miracast (which frankly has the worst interoperability in the entire industry), having Chromecast actually just work was a breath of fresh air. The Chromecast cloud-to-cast architecture makes a lot more sense than other models which try to decode on the phone, then re-encode and ship it over the same network, doubling compression artifacts, increasing battery drain, and requiring good signal. I can see why Google would not even bother including Miracast on the Chromecast at this point, and without a vast improvement to Miracast I frankly don’t even want it anymore.
For the price, the Chromecast is an amazing device that plays surprisingly well with the services it’s compatible with, and for everything else there’s always that browser tab streaming mode. I’d like to see more services added, but for now I’m totally pleased with how it works, so much so that I already bought a second Chromecast to hook up my second 55-inch TV.