GTv-OS (AndroidTV)

From Exploitee.rs
Jump to: navigation, search

Overview

The Google TV operating system is based on Android 2.1 on a Linux 2.6.23 based kernel. The system enables security such as an NX (Non eXecutable) Stack and a chrooted chrome. Also making things difficult is the Operating Systems ability to push automatic updates without user intervention.

The Operating System currently provides the following "stock" applications

  • CNBC Real-Time
  • Gallery
  • Google Chrome
  • Logitech Help Assistant (Logitech Only)
  • Logitech Media Player (Logitech Only)
  • Logitech Vid HD (Logitech Only)
  • Napster
  • NBA Game Time
  • Netflix
  • Pandora
  • Settings
  • TV
  • Twitter

Gpl'd portions of the GoogleTV source can be found here

SDK/Toolchain Support

The Intel SDK Toolchain is available as part of Google's GPL release for the Google TV. The toolchain is required to compile code to run on the Linux operating system of the Logitech Revue. (Sony devices as well as other future devices are most likely also compatible with this toolchain but since we don't have these products to root we don't know yet.)

We have not yet documented a complete list of required dependencies but here are a few packages which might come in handy:

  • texinfo (we encountered some issues with certain supposedly supported versions of makeinfo but updating texinfo resolved this on most systems)
  • flex
  • bison
  • gawk -- Please note that some Ubuntu installs have mawk rather than the GNU awk (gawk); mawk is not compatible with the awk scripts in the Intel SDK
  • patch
  • gcc et al
  • build-essential (Ubuntu)

To simplify the toolchain setup, craigdroid created this script which simplifies the process of configuring a build system. After preparing the toolchain you will want to run the following commands (which are demo'd in the script) to establish your environment:

export CROSS_COMPILE=i686-cm-linux-
export LD_LIBRARY_PATH=~/googletv/sdk/i686-linux-elf/lib
export PATH=$PATH:~/googletv/sdk/i686-linux-elf/bin/

NDK Support

Although at present Google has not released a proper NDK for the platform, the Exploitee.rs team have combined the Intel SDK Toolchain from the Google TV Mirrored Source site with the work of the Android x86 project to provide unofficial support in the interim.

The entire process of setting up unofficial NDK support has been simplified into an easy to use script by craigdroid. The script has been tested on a few of our systems running CentOS 5.4 32-bit, as well as 32-bit and 64-bit editions of Ubuntu.

Since this is building the Intel toolchain automatically all of the caveats regarding the Intel SDK Toolchain apply here as well.

To automatically download, build and configure NDK support first save yourself some time and check the dependencies list in the SDK/Toolchain Support section and then from any users shell:

wget http://dl.dropbox.com/u/1886948/gtvhacker-NDK-installer.zip && unzip gtvhacker-NDK-installer.zip && ./gtvhacker-NDK-installer.sh

This will install the NDK to ~/googletv/ndk/ for the current user. Some guidance on how to use the NDK is provided upon completion of successful script execution.

Support For USB Serial Converters

The published kernel from the Google TV Mirrored Source site is configured to have built-in support FTDI single interface USB serial adapters as a serial console.

#
# USB Serial Converter support
#
CONFIG_USB_SERIAL=y
CONFIG_USB_SERIAL_CONSOLE=y
CONFIG_USB_SERIAL_GENERIC=y
CONFIG_USB_SERIAL_FTDI_SIO=y

This configuration has been verified via the proc.gz file of a Logitech Revue at its latest firmware revision (using the BreakVue hack). Here is the complete kernel configuration.

Please note however that by default init does not appear to run a shell on this console. This is the only adapter which we have identified to have built-in driver support.