The backordered TUAW Chromecast finally arrived yesterday evening from Google. We apologize for the delay in this write-up, but we simply didn't have a unit to test with.
I felt, that for the sake of celebrating our native blog culture, I had to give it a proper unboxing. The Chromecast ships in a rather nice box, with the cast unit on top and the power cord and "bits" underneath. An internal flap offered getting started directions, while a firm plastic insert held the dongle itself. While not quite Apple-level of packaging (and despite a rather odd smell that pervades the box), the packaging was clean and professional.
Getting the $35 unit working involved several quick and easy steps. First, I plugged the dongle into a HDMI port. Google provides a small HDMI extension cord -- and I mean small, perhaps 3" long -- in the box.
Use this if you need to keep plugging and unplugging your dongle on a regular basis, so you can travel with it. The cord provides an easier access point, especially when reaching around the back of large television sets.
Next, I plugged the unit into power. You must supply that power through a micro-USB port, the standard these days for many devices especially in Europe. Google provided an in-box wall plug for this, but I tested as well with a USB hub and with a portable battery pack.
In fact, the reason I ended up using these workarounds is that in the heavily tech area of my office, I experienced major interference when using the plug. Switching to battery or hub cleared up the reception immediately.
Testing on our family TV, which is where I performed the initial setup and exploration, offered no similar charger issues. It was only when I brought the unit down to explore iOS development that I encountered problems. I'm using a standard USB 3 hub to power the now office-based Chromecast.
You must, of course, switch your TV input to the dongle's active HDMI port to begin setup. There you're greeted by a screen prompting you to connect to google.com/chromecast/setup. I did this on my Mountain Lion Mac, downloading both a standalone Chromecast configuration app and a Chrome browser specific plugin. I had to confirm a 4-character connection code, as you might with a Bluetooth connection, provide my SSID and password details, and was quickly ready to rock and roll.
I honestly am not quite sure how the unit was able to announce itself and connect without using my Wi-Fi network, which is password protected. The Wi-Fi setup was the last part of the setup and my upstairs TV was well out of what I consider normal Bluetooth range when communication first began. It's a mystery that I'd love to unravel.
[Update: Commenter SaintNicster unpacks this process for us. "The Chromecast, when first initialized, creates an ad-hoc WiFi network with the device you're using for setup. The setup process breaks the current WiFi session temporarily and then connects to the Chromecast. The setup then copies the previous WiFi information and sends that to the device. Once it has this information, the ad-hoc network is disabled and it reconnects to the normal WiFi." Thanks!]
In all, the entire setup process took maybe a few minutes. It was really quick and very easy to get through to the "ready to cast" screen that greets you. As an OS X user, you'll want to work in the Chrome browser, for which I installed a Cast extension. After adding this, a Cast button appears at the top-right of every browser page.
This button lets you select a Chromecast unit (yes, ours is called "Maisy"; my son picked the name), choose playback options and reach a help menu. The in-browser options are pretty simple. This is where you choose a projection quality and enable or disable fullscreen zoom and browser resizing.
As you cast, your active Chrome browser tab mirrors to the Chromecast unit, appearing on the connected TV. You switch tabs or end casting using the browser pop-up. I found this feature to be occasionally buggy (yes, it's a beta).
I found that when Chrome is experiencing too many yellow warnings for this pop-up, you can try quitting and restarting the browser and unplugging/replugging the dongle. When working properly, the Stop casting and Cast buttons apply instantly.
At times, you do want to stop casting to reduce the load on your local Wi-Fi network. The Stop casting button enables you to do this. The Cast this tab button lets you switch between tabs without closing them.
To test, I loaded up a variety of media including movies, music, and PDF documents into Chrome. They all played over quickly without issue and minimal delay. That said, if you cast over text, I recommend using the Extreme 720p high bitrate option. Without it, text looks unacceptably jaggy, especially when displayed on large screens. Movies worked far better. My son happily watched Hotel Transylvania over Chromecast until bedtime.
Since I casted a browser, the audio file I opened and played appeared as an embed. Similarly, when I visited Spotify, I had to watch the static web page. I'm pretty sure this isn't an ideal experience for my TV's screen health, assuming if I had kept listening over time as I did chores or used the treadmill.
As I mentioned earlier, one of my first tasks involved creating a custom iOS app to play to my Chromecast. I initially assumed I could use the Elgato EyeTV as I do with my Apple TV. EyeTV enables me to place the HDTV input side-by-side on my desktop with my dev work. For whatever reason, I could not get it to work with the Chromecast. EyeTV went into an infinite "adjusting to new mode" loop, attempting to display 1080p at 60fps, and never synced to or displayed the cast data. Although I tried down-streaming to 480p and up-streaming to 720p, I just couldn't get this to work.
Instead, I ended up using my second monitor in normal TV mode. Although prettier than a squeezed and delayed EyeTV, this made it impossible to take direct screenshots of the device in action.
The final piece of the OS X-based Chromecast puzzle is the standalone app that enables you to manage your devices from a single place. Here, you can set up Wi-Fi, name your Chromecast, set a time zone, force a reboot, and factory reset a Chromecast (for return to Google or resale). It's also where you find one-button access to download the Google Cast browser extension.
To my surprise and delight, I discovered my iPhone was already cast-ready. The latest version of the YouTube app easily found and transmitted to my Chromecast. I was able to set up a not-for-distribution sample app using Xcode and the developer API and start sending data that way as well.
After finding my unit's MAC address, I quickly discovered (courtesy of OS X command line port scanning) that it communicates on port 8008. That discovery led me to the Chromecast hacks community on Google plus.
With several weeks head start, these (mostly Java) developers have been pushing the Chromecast's capabilities, mostly on Android. They've reversed the Remote Application Media Protocol (RAMP) used by the device to the point where they have custom apps running:
Sample Java source code for general device access is now available on github. Hopefully this will be quickly ported to standard C, enabling Mac-based casting. I'm particularly excited about potential VLC extensions. On the iOS side of things, now that I have an actual device to work with, it will be interesting to explore (time permitting!) how to push development beyond the grab-and-send-a-URL point I"m currently at.
From a consumer-only point of view, for just 35 dollars, I found the Chromecast to be a really nice receiver solution for our family. I plan to use it extensively with my Mac/EyeTV setup. Instead of having to watch my recordings on the Mac in my office, I can now transmit those through the Chrome browser up to our (much nicer) HDTV. I can also see this being used for travel, as I mentioned in an earlier post.
The video transmission quality was excellent, except when eldest daughter decided to start watching Crunchyroll episodes simultaneously over the same Wi-Fi network. A bit of shouting and bribery helped us negotiate those waters. Unlike Apple TV, Chromecast does not offer an Ethernet port.
While we could watch and transmit Amazon Prime videos from Chrome (we're not Netflix subscribers, which offers its own iOS app with built-in support) with their somewhat dubious transmission quality, we could not get iTunes rentals to play over without extreme hackery. (I will spare you the details of the hackery. Suffice it to say that it involved Apple TV, Eye TV, and a lot of time.)
In the end, was it worth the $35? Yes. Will I keep using this device past the review period? Yes. Is it as good as Apple TV? It's not a real competitor, and it fills its own niche quite nicely. The Chromecast extends desktop media playback to an external HDTV and it does that well.