The Chromecast has identity issues. It may be based on Android, but it updates like Chrome. The device ships on the stable channel, but it's possible to switch it beta and dev channels. These options are progressively bleeding edge, but this comes at the obvious sacrifice of stability, and there's a strong risk of bricking your device. Granted, it's only $35, far cheaper than breaking a smartphone or tablet.

Disclaimer: Android Police isn't responsible for any harm to your device - proceed at your own risk. : Android Police isn't responsible for any harm to your device - proceed at your own risk.

You need root first, then manually push the zips to update, at which point you'll be switched to the respective channel. It's not clear what's new right now, but this is definitely risky business. Here are the steps, fresh from developer Jay Lee.

1. Get root on your Chromecast. Follow the steps at: http://goo.gl/C2qKmS

2. telnet into your Chromecast and to get beta-channel run:

cd /cache

/system/bin/busybox wget -O ota.zip http://goo.gl/53l5sA

or for dev-channel:

cd /cache

/system/bin/busybox wget -O ota.zip http://goo.gl/JVkHhl

stable-channel would be:

cd /cache

/system/bin/busybox wget -O ota.zip http://goo.gl/3yy01K

3. From another Linux system run:

curl -X POST -H "Content-Type: application/json" -d '{"params": "ota"}'http://192.168.1.5:8008/setup/reboot -v

Remember to replace 192.168.1.5 with your actual Chromecast IP address. After your Chromecast automatically reboots, you will be on the newer build and channel. You will lose root every time you switch channels, just like you do for Android OTAs.

Here are the files contained within the OTA:

\META-INF\com\android\metadata \META-INF\com\google\android\update-binary \META-INF\com\google\android\updater-script \bootloader.eureka-b3 \boot.img \system.img \META-INF\MANIFEST.MF \ota.prop \META-INF\CERT.RSA \META-INF\CERT.SF

And here's what's in the updater script.

assert(!less_than_int(1374790134, getprop("ro.build.date.utc"))); assert(getprop("ro.product.device") == "anchovy" || getprop("ro.build.product") == "anchovy"); assert(getprop("ro.hardware") == "eureka-b3"); show_progress(0.800000, 35); write_raw_image(package_extract_file("system.img"), "rootfs"); show_progress(0.100000, 4); write_raw_image(package_extract_file("boot.img"), "kernel"); show_progress(0.100000, 4); assert(package_extract_file("bootloader.eureka-b3", "/tmp/bootloader.img"), run_program("/bin/flash_bootloader", "eureka-b3", "/tmp/bootloader.img"), delete("/tmp/bootloader.img")); delete("/cache/ota.zip"); # fix permission of /factory partition, make files readable to all. mount("yaffs2", "MTD", "factory_store", "/tmp/factory"); set_perm_recursive(0, 0, 0555, 0444, "/tmp/factory"); # Fix the client key file names on some devices. getprop("ro.hardware") == "eureka-b1" && symlink("client.key.nd.bin", "/tmp/factory/client.key.bin"); # Delete left over files from key programming getprop("ro.hardware") == "eureka-b1" && delete("/tmp/factory/otp.pkg"); getprop("ro.hardware") == "eureka-b1" && delete("/tmp/factory/custk.img"); unmount("/tmp/factory");

$35 is still $35, so if you aren't willing to throw that money away, you might want to leave your Chromecast alone. For an in-depth look of what it can do out of the box, here's our review.

Via: Liliputing

Source: Google+