Home > Chromium OS, Linux, Marvell Armada, Testing > Chromecast Open Source Code: Linux Kernel, Toolchain, Bootloader, and More

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/

Chromecast_Menuconfig

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):

export PATH=$PATH:~/Chromecast/chromecast-mirrored-source.prebuilt/toolchain/arm-unknown-linux-gnueabi-4.5.3-glibc/bin/
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:

./build_kernel.sh 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.

Digg This
Reddit This
Stumble Now!
Buzz This
Vote on DZone
Share on Facebook
Bookmark this on Delicious
Kick It on DotNetKicks.com
Share on LinkedIn
Bookmark this on Technorati
Post on Twitter

  1. pszab
    July 27th, 2013 at 17:52 | #1

    Yepp :)

  2. mj
    July 27th, 2013 at 19:04 | #2

    And if you want to play,
    Python program that emulates ChromeCast device:
    https://github.com/dz0ny/leapcast

  3. Mark
    July 27th, 2013 at 23:38 | #3

    I wonder what’s different between this SoC and the 88DE3100 used on their GoogleTV platform. Hopefully it’s not a reduction to single-core CPU. The Armada line also has very impressive VPU capabilities.

  4. deets
  5. July 28th, 2013 at 09:49 | #5

    @deets
    So the processor is single core. I’m quite confused with the claim the OS is Android, as Google did release Chromium for the platform…

  6. Anthrox
    July 28th, 2013 at 11:52 | #6

    my understanding its chromium as it more lightweight would be nice to see if this software could be ported to the likes of the raspberry pi

  7. Harley
    July 29th, 2013 at 22:33 | #7

    Would be great to have XBMC for Android with HDMI CEC support on this device!

  8. octacore
    July 31st, 2013 at 03:04 | #8

    These old Armada single core SoC are fine for what they are and indeed have a dual SATA block,PCIE and fast Ethernet included (its unfortunate that these internal blocks are NOT brought out to the PCB thought as standard to make all these types of kit far more useful) unlike the more modern Arm Cortex SoC , however their missing functionality being lacking the now generic and far faster NEON SimD ,only having the far weaker old SSE mobile SIMD from Intel legacy inside and only have USB2.0 so not able to make anything close to that PCiE potentials speed for external Io or anyway to make use of that generic included SATA block and that as real shame….

    OC the question remains when will the real Cortex also get a generic PCiE and SATA IP block to make those SoC usable for fast DIY NAS and the like beating today’s lame Intel SoC offering in all the lower cost Has today.

  9. mj
    August 8th, 2013 at 11:15 | #9

    @mj
    Hackaday commenters have instructions on how to make the Leapcast work – http://hackaday.com/2013/08/02/leapcast-emulates-chromecast-in-your-chrome-browser/#comments

  10. HHN
    October 29th, 2013 at 07:27 | #10

    Is there anyway to run the binary inside a virtual machine like qemu so we can tinker around with the code? What is the kernel config screen at the top of this page. Looks like some sort of emulation of the software being run.

  1. July 29th, 2013 at 05:37 | #1