Chromecast Open Source Code: Linux Kernel, Toolchain, Bootloader, and More
Google has made quite a stir by introducing Chromecast, and entering the HDMI TV Stick market. We already know the device is based on Marvell 88DE3005 SoC with 512 MB, and since the product are already been shipped to customers in the US, it was just a question of time before the release of the open source code, and everything you need appears to be available at https://code.google.com/p/chromecast-mirrored-source/
Let’s have a look at what we have in the different repositories:
- Wiki – Empty…
- Kernel – Linux 3.0.8 source code
- Prebuilt – Binary toolchain: arm-unknown-linux-gnueabi-4.5.3-glibc
- Toolchain – Source code for the toolchain above.
- External – Source code for alsa-libs, dnsmask, libexit and nss
- sdk – bootloader and DirecFB 1.6.1
- vendor – Looks like qt source used in some netflix app (not sure)
- Chromium – README explaining how you can download Chromecast Chromium source code: 1.8GB tarball + you need to contact Marvell to get some binary files.
I don’t have device, but I’ll try to build the Linux kernel anyway. I’m not sure it’s the correct method, but I believe it should work.
First let’s get the pre-built toolchain and the kernel source code:
mkdir ~/Chromecast cd ~/Chromecast git clone git clone https://code.google.com/p/chromecast-mirrored-source.prebuilt/ git clone https://code.google.com/p/chromecast-mirrored-source.kernel/
then I had to add the toolchain to my path, and install one missing dependency (lzop):
sudo apt-get install lzop
Now we’re ready to build the kernel with build_kernel.sh script that is said to be for the “Eureka” platform, probably the codename for Chromecast or some Marvell devkit. You need to select the SoC with this script: either “berlin” (mv88de31xx) or “anchovy” (mv88de30xx). Since Chromecast is based on 88DE3005, we’ll go with anchovy:
This command will build the kernel:
Image Name: Linux-3.0.8-g86f43ed Created: Sat Jul 27 15:29:44 2013 Image Type: ARM Linux Kernel Image (uncompressed) Data Size: 2487400 Bytes = 2429.10 kB = 2.37 MB Load Address: 01008000 Entry Point: 01008000 Image arch/arm/boot/uImage is ready
As well as perf tool (used for profiling). Upon completion the script will create kernel.tgz with the following files:
kernel/uImage kernel/COPYING kernel/zImage sdk/bin/perf
If you’ve got a Chromecast, and gave it a try (This may brick your device by the way), let me know how it went.