<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.exploitee.rs/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=ASmig</id>
	<title>Exploitee.rs - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.exploitee.rs/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=ASmig"/>
	<link rel="alternate" type="text/html" href="https://wiki.exploitee.rs/index.php?title=Special:Contributions/ASmig"/>
	<updated>2026-05-07T11:07:39Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.45.0-alpha</generator>
	<entry>
		<id>https://wiki.exploitee.rs/index.php?title=Eject_Bug_Hack&amp;diff=750</id>
		<title>Eject Bug Hack</title>
		<link rel="alternate" type="text/html" href="https://wiki.exploitee.rs/index.php?title=Eject_Bug_Hack&amp;diff=750"/>
		<updated>2012-03-14T08:45:19Z</updated>

		<summary type="html">&lt;p&gt;ASmig: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Here is a git patch that consists of a script to detect and recover from the eject bug and the modification necessary to make that script be run as a service.  Nothing about this install process is automatic, though once installed it runs fully automatic.  If you don&#039;t know how to read a git patch, you&#039;d best learn how.  Improper application of the contents of this patch to your system could certainly brick it.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Description of what follows, to clarify why it is this way:&lt;br /&gt;
The patch can only be applied to a GTV by manually reading the patch and making the changes described within it by hand.  It&#039;s merely packaged as a git patch because, well, git is damn awesome and if you can read a git patch it&#039;s impossible for the meaning of it to be misunderstood.  Git patches are a detailed documenting of additions, deletions, and context.&lt;br /&gt;
&lt;br /&gt;
The patch is divided into sections, the top being a basic email header that serves to identify who, when, and what; following that is a list of files affected, including a line of +/- indicating quantity of insertions and deletions, and note of any new files added or old files deleted along with standard UNIX permissions for those files; following this, the diff of each file affected is included with the format described above.  Within the diff, any line that begins with a &amp;quot;+&amp;quot; is an inserted line.  Any line that begins with a &amp;quot;-&amp;quot; is a removed line (there are none here).  Lines around those lines are context.  The lines that begin with &amp;quot;@@&amp;quot; indicate which line numbers the context included in the patch should be found at, and what the line numbers should be after the changes.&lt;br /&gt;
&lt;br /&gt;
It was packaged this way for convenience of publishing the information.  I&#039;m told it can be applied via the patch command included in busybox on the rooted GTV.  Super cool.  Hopefully someone can fix up my crappy documentation with something a little more usable.&lt;br /&gt;
&lt;br /&gt;
Unformatted patch follows:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;From f5b9194ad7865bfdaf43ad676965ff77c5895465 Mon Sep 17 00:00:00 2001&lt;br /&gt;
From: Catrane &amp;lt;catrane@gtvhacker&amp;gt;&lt;br /&gt;
Date: Mon, 12 Mar 2012 23:21:14 -0500&lt;br /&gt;
Subject: [PATCH] Hack workaround to make disc eject work on rooted NSZ-GT1.&lt;br /&gt;
 Includes 60 second delay before activating as a safety&lt;br /&gt;
 window.&lt;br /&gt;
&lt;br /&gt;
---&lt;br /&gt;
 init.eagle.rc                      |    5 +++&lt;br /&gt;
 system/bin/eject_bug_workaround.sh |   53 ++++++++++++++++++++++++++++++++++++&lt;br /&gt;
 2 files changed, 58 insertions(+), 0 deletions(-)&lt;br /&gt;
 create mode 100644 system/bin/eject_bug_workaround.sh&lt;br /&gt;
&lt;br /&gt;
diff --git a/init.eagle.rc b/init.eagle.rc&lt;br /&gt;
index 2004d8a..685ce6f 100644&lt;br /&gt;
--- a/init.eagle.rc&lt;br /&gt;
+++ b/init.eagle.rc&lt;br /&gt;
@@ -329,6 +329,7 @@ on init&lt;br /&gt;
     setprop com.sony.btv.discplayer.enable 1&lt;br /&gt;
     export DISCPLAYER_KEEP_DMIX_ASIS true&lt;br /&gt;
     export DISCPLAYER_LOG_VERBOSE true&lt;br /&gt;
+    start ejectworkaround&lt;br /&gt;
 &lt;br /&gt;
   ## for lighttpd&lt;br /&gt;
     mkdir /var/log/lighttpd 0750 system system&lt;br /&gt;
@@ -439,6 +440,10 @@ service discplayer /system/bin/discplayer&lt;br /&gt;
     user root&lt;br /&gt;
     group system&lt;br /&gt;
 &lt;br /&gt;
+service ejectworkaround /system/bin/eject_bug_workaround.sh 60&lt;br /&gt;
+    user root&lt;br /&gt;
+    group system&lt;br /&gt;
+&lt;br /&gt;
 on property:com.sony.btv.discplayer.enable=1&lt;br /&gt;
     start discplayer&lt;br /&gt;
     start discservice&lt;br /&gt;
diff --git a/system/bin/eject_bug_workaround.sh b/system/bin/eject_bug_workaround.sh&lt;br /&gt;
new file mode 100644&lt;br /&gt;
index 0000000..1f4f282&lt;br /&gt;
--- /dev/null&lt;br /&gt;
+++ b/system/bin/eject_bug_workaround.sh&lt;br /&gt;
@@ -0,0 +1,53 @@&lt;br /&gt;
+#!/bin/sh&lt;br /&gt;
+&lt;br /&gt;
+# Reason:&lt;br /&gt;
+# There is a known problem that, for an unknown reason, disc eject fails on rooted NSZ-GT1 systems.&lt;br /&gt;
+# Side effects of this problem include the possibility that the disc is not ejected and in all cases&lt;br /&gt;
+# the problem that discs cannot be played after attempted eject.&lt;br /&gt;
+# Rebooting the system fixes the problem, but this solution eliminates the need for reboot.&lt;br /&gt;
+&lt;br /&gt;
+# Alternative solutions:&lt;br /&gt;
+# Restart the device via the power cord or ctrl-alt-del.&lt;br /&gt;
+&lt;br /&gt;
+# Caveats:&lt;br /&gt;
+# This fix does not detect the occurrence of any error, but rather occurrence of a known event which&lt;br /&gt;
+# reliably preceeds the error and is reliably followed by the error situation.&lt;br /&gt;
+# Error messages and odd behavior may be observed onscreen at the moment of eject, though none of&lt;br /&gt;
+# this causes any side-effects.&lt;br /&gt;
+&lt;br /&gt;
+# Stimulus:&lt;br /&gt;
+# From command: logcat -b main&lt;br /&gt;
+# Output: I DiscPlayerManager: onStartCommand: com.sony.btv.discplayer.EJECT_DISC&lt;br /&gt;
+&lt;br /&gt;
+# Response:&lt;br /&gt;
+# setprop com.sony.btv.discplayer.enable 0&lt;br /&gt;
+# busybox eject /dev/block/sr0&lt;br /&gt;
+# setprop com.sony.btv.discplayer.enable 1&lt;br /&gt;
+&lt;br /&gt;
+# Usage:&lt;br /&gt;
+#   eject_bug_workaround.sh &amp;amp;&lt;br /&gt;
+#   - Runs workaround in background.&lt;br /&gt;
+#   eject_bug_workaround.sh 600 &amp;amp;&lt;br /&gt;
+#   - Sleeps for 600 seconds before running, all in background.&lt;br /&gt;
+#   - Useful for ensuring a window of recovery in case any side-effects occur.&lt;br /&gt;
+&lt;br /&gt;
+if [ ! -z &amp;quot;$1&amp;quot; ]&lt;br /&gt;
+then&lt;br /&gt;
+   sleep $1&lt;br /&gt;
+fi&lt;br /&gt;
+&lt;br /&gt;
+LASTDECT=$(date)&lt;br /&gt;
+&lt;br /&gt;
+logcat -b main DiscPlayerManager:I *:S|busybox awk &#039;/onStartCommand: com.sony.btv.discplayer.EJECT_DISC/ {system(&amp;quot;echo onStartCommand: com.sony.btv.discplayer.EJECT_DISC&amp;quot;)}&#039;|while busybox awk &#039;/onStartCommand: com.sony.btv.discplayer.EJECT_DISC/ {exit 0}&#039;&lt;br /&gt;
+do&lt;br /&gt;
+   if [ &amp;quot;$LASTDECT&amp;quot; != &amp;quot;$(date)&amp;quot; ]&lt;br /&gt;
+   then&lt;br /&gt;
+       echo Detected eject failure.&lt;br /&gt;
+       setprop com.sony.btv.discplayer.enable 0&lt;br /&gt;
+       busybox eject /dev/block/sr0&lt;br /&gt;
+       setprop com.sony.btv.discplayer.enable 1&lt;br /&gt;
+       echo Eject failure repair complete.&lt;br /&gt;
+       LASTDECT=$(date)&lt;br /&gt;
+   fi&lt;br /&gt;
+done&lt;br /&gt;
+&lt;br /&gt;
-- &lt;br /&gt;
1.7.6.1&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Using busybox patch to apply this for you ===&lt;br /&gt;
&lt;br /&gt;
First off, make sure you have a good copy of the above patch saved in a file with UNIX end of line characters.  Google lead me to http://wiki.secondlife.com/wiki/How_to_avoid_DOS_line_endings_in_Windows_tools which may be of use to you non-Linux folks.  Once you have the patch saved as eject.patch, then follow these steps:&lt;br /&gt;
&lt;br /&gt;
# adb push eject.patch eject.patch&lt;br /&gt;
# adb shell&lt;br /&gt;
## busybox patch -p1 &amp;lt; eject.patch&lt;br /&gt;
## chmod 755 /system/bin/eject_bug_workaround.sh&lt;/div&gt;</summary>
		<author><name>ASmig</name></author>
	</entry>
	<entry>
		<id>https://wiki.exploitee.rs/index.php?title=Logitech_Revue_Technical&amp;diff=648</id>
		<title>Logitech Revue Technical</title>
		<link rel="alternate" type="text/html" href="https://wiki.exploitee.rs/index.php?title=Logitech_Revue_Technical&amp;diff=648"/>
		<updated>2011-12-05T09:47:22Z</updated>

		<summary type="html">&lt;p&gt;ASmig: /* I2C Busses */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Revue toc Inline}}&lt;br /&gt;
&lt;br /&gt;
== Update Procedure ==&lt;br /&gt;
&lt;br /&gt;
Place new update labelled &amp;quot;update.zip&amp;quot; on a USB drive, with a single partition (ie, 1st partition on a USB disk, so say &amp;quot;/dev/sdc1&amp;quot;) &lt;br /&gt;
&lt;br /&gt;
Insert into Revue in the Right most USB port (if looking at the back, closest to the power jack)&lt;br /&gt;
&lt;br /&gt;
Boot into recovery mode:&lt;br /&gt;
&lt;br /&gt;
#Plug in the box, once the fan goes low, hold the sync button. Box should reboot, keep the sync button held until image on screen.&lt;br /&gt;
#Once you see the Arrow on your screen, using your keyboard press Alt+L - usually once or twice until Formatting DATA: shows on the screen, and does not go away (&#039;&#039;&#039;Note: The key combination has changed for updates after b42732&#039;&#039;&#039;)&lt;br /&gt;
#You can then update the box, with a newer update. Downgrading fails however due to a date check.&lt;br /&gt;
&lt;br /&gt;
== Firmware Links ==&lt;br /&gt;
&lt;br /&gt;
*http://android.clients.google.com/packages/ota/logitech_ka/439c26f6af05.mp-signed-ota_update-b39389.zip&lt;br /&gt;
*http://android.clients.google.com/packages/ota/logitech_ka/52057d168e2b.mp-signed-ota_update-b39953.zip&lt;br /&gt;
*http://android.clients.google.com/packages/ota/logitech_ka/c9914396d183.mp-signed-ota_update-b42449.zip&lt;br /&gt;
*http://android.clients.google.com/packages/ota/logitech_ka/9504d579bade.mp-signed-ota_update-b42732.zip&lt;br /&gt;
*http://android.clients.google.com/packages/ota/logitech_ka/d0d70a7753a8.mp-signed-ota_update-b47773.zip&lt;br /&gt;
*http://android.clients.google.com/packages/ota/logitech_ka/4d9b9425b17f.mp-signed-ota_update-b49116.zip&lt;br /&gt;
*http://android.clients.google.com/packages/ota/logitech_ka/f008beb34df8.mp-signed-ota_update-b51795.zip&lt;br /&gt;
&lt;br /&gt;
== Kernel Revisions ==&lt;br /&gt;
For details of the Revue kernel, refer to [[Logitech Revue Kernel]]&lt;br /&gt;
&lt;br /&gt;
*Initial kernel observed on the Revue (?): 2.6.23.18-gc0a9a5fb (richard@sayan) (gcc version 4.1.2) #3 PREEMPT Sat Jul 31 15:32:56 PDT 2010&lt;br /&gt;
*439c26f6af05.mp-signed-ota_update-b39389: 2.6.23.18-g5fd8f46f (richard@mtdoom) #249 PREEMPT Tue Oct 5 09:55:20 BST 2010&lt;br /&gt;
*52057d168e2b.mp-signed-ota_update-b39953: 2.6.23.18-g5fd8f46f (richard@mtdoom) #249 PREEMPT Tue Oct 5 09:55:20 BST 2010&lt;br /&gt;
*c9914396d183.mp-signed-ota_update-b42449: 2.6.23.18-g5bba1a13 (sameer@sayan) #24 PREEMPT Fri Nov 19 11:13:31 PST 2010&lt;br /&gt;
&lt;br /&gt;
== SDK/Toolchain Support ==&lt;br /&gt;
&lt;br /&gt;
The [http://googletv-mirrored-source.googlecode.com/hg/intel-sdk/intel-sdk-toolchain.tar.bz2?r=27705a482273e3a34e8bcdbfb4fdad9afcd65e93 Intel SDK Toolchain] is available as part of Google&#039;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&#039;t have these products to root we don&#039;t know yet.)&lt;br /&gt;
&lt;br /&gt;
We have not yet documented a complete list of required dependencies but here are a few packages which might come in handy:&lt;br /&gt;
*texinfo (we encountered some issues with certain supposedly supported versions of makeinfo but updating texinfo resolved this on most systems)&lt;br /&gt;
*flex&lt;br /&gt;
*bison&lt;br /&gt;
*awk&lt;br /&gt;
*patch&lt;br /&gt;
*gcc et al&lt;br /&gt;
*build-essential (Ubuntu)&lt;br /&gt;
&lt;br /&gt;
To simplify the toolchain setup, craigdroid created [http://dl.dropbox.com/u/1886948/gtvhacker-NDK-installer.zip 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&#039;d in the script) to establish your environment:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
export CROSS_COMPILE=i686-linux-cm-&lt;br /&gt;
export LD_LIBRARY_PATH=~/googletv/sdk/i686-linux-elf/lib&lt;br /&gt;
export PATH=$PATH:~/googletv/sdk/i686-linux-elf/bin/&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== NDK Support ==&lt;br /&gt;
&lt;br /&gt;
Although at present Google has not released a proper NDK for the platform, the gtvhacker team have combined the Intel SDK Toolchain from the [http://code.google.com/p/googletv-mirrored-source/ Google TV Mirrored Source site] with the work of the [http://www.android-x86.org/ Android x86] project to provide unofficial support in the interim.&lt;br /&gt;
&lt;br /&gt;
The entire process of setting up unofficial NDK support has been simplified into an [http://dl.dropbox.com/u/1886948/gtvhacker-NDK-installer.zip 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.  &lt;br /&gt;
&lt;br /&gt;
Since this is building the Intel toolchain automatically all of the caveats regarding the Intel SDK Toolchain apply here as well.&lt;br /&gt;
&lt;br /&gt;
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:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
wget http://dl.dropbox.com/u/1886948/gtvhacker-NDK-installer.zip &amp;amp;&amp;amp; unzip gtvhacker-NDK-installer.zip &amp;amp;&amp;amp; ./gtvhacker-NDK-installer.sh&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
== Flash Hard Drive ==&lt;br /&gt;
&lt;br /&gt;
The Revue has an internal hard drive stored on an sdram chip (flash memory).  It contains the complete file system for the Revue as well as the user data (if their is not external storage provided).  More information about the layout of this file system can be found [[ GTV_FileSystem | File System Details.]]&lt;br /&gt;
&lt;br /&gt;
== Serial Output ==&lt;br /&gt;
&lt;br /&gt;
The logitech revue board contains a UART1 port on the front of the board which before receiving the boxes initial updates is active. In order to communicate with UART port you will need a USB to TTL adapter (or board that does a similar conversion). &lt;br /&gt;
&lt;br /&gt;
The pins operate at 3.3v and the port at 9600 baud with the following pinout:&lt;br /&gt;
&lt;br /&gt;
[http://i.imgur.com/xJHay.jpg UART Pinout]&lt;br /&gt;
&lt;br /&gt;
Serial output&lt;br /&gt;
&lt;br /&gt;
via: http://googletv.pastebin.com/233dZqZx&lt;br /&gt;
[[Pasted Locally]]&lt;br /&gt;
&lt;br /&gt;
== PIC Access ==&lt;br /&gt;
*There is a standard PIC access port to the right of the UART1 port. It can be accessed via a standard PIC Kit Debug board (Tested with version 2). The port has read/write access but the code is pulled from the chip as .hex file and is unreadable thus far.&lt;br /&gt;
&lt;br /&gt;
*The pinout starting from the left (pin with white square around it) corresponds to pin 1 or Vpp.The remaining pins follow the same layout. [http://www.ianstedman.co.uk/Projects/TK3_PICKit2_adaptor/Pickit2_pinout.png PIC Pinout]&lt;br /&gt;
&lt;br /&gt;
[http://googletv.pastebin.com/PBWRCAqB PIC Hex Dump] [[Local PIC Hex Dump]]&lt;br /&gt;
&lt;br /&gt;
[http://dl.dropbox.com/u/217678/Bootloader%20from%20PIC.TXT PIC Disassembly]&lt;br /&gt;
&lt;br /&gt;
== Updates ==&lt;br /&gt;
The updates contain a full set of system files (changed and unchanged), including a boot.img and a recovery.img&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;boot.img&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The thread at [http://forum.xda-developers.com/showpost.php?p=8844074&amp;amp;postcount=80 xda-developer] has the process to extract from the .img files (thx bftb0):&lt;br /&gt;
&lt;br /&gt;
&amp;quot;the &amp;quot;boot.img&amp;quot; file is in (little-endian) &amp;quot;squashfs&amp;quot; format and unpacks just fine using &amp;quot;unsquashfs&amp;quot; from the (Ubuntu 8.0.04 LTS) squashfs-tools package.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039; recovery.img&lt;br /&gt;
&lt;br /&gt;
system/boot/recovery.img is a standard Android boot image with some extra garbage (0x580 bytes) at the front. Remove it like so:&lt;br /&gt;
  dd if=system/boot/recovery.img bs=1408 skip=1 &amp;gt; recovery-ungarbaged.img&lt;br /&gt;
Unpack that like a normal Android boot image. Something like [http://android-dls.com/files/linux/split_bootimg.zip this Perl script] works well.&lt;br /&gt;
&lt;br /&gt;
The kernel (system/boot/kernel) is also a boot image with the same extra garbage at the front.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Odex files&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The .odex files can be extracted by using the following guide [http://code.google.com/p/smali/wiki/DeodexInstructions Deodex Instructions]&lt;br /&gt;
&lt;br /&gt;
== Open Ports ==&lt;br /&gt;
List nmap ports&lt;br /&gt;
&lt;br /&gt;
Normal Mode, hooked to a Dish Network DVR (622) via WiFi:&lt;br /&gt;
&lt;br /&gt;
*Nmap scan report for LogitechRevue (192.168.1.142)&lt;br /&gt;
*Host is up (0.060s latency).&lt;br /&gt;
*Not shown: 65528 closed ports&lt;br /&gt;
*PORT      STATE SERVICE&lt;br /&gt;
*53/tcp    open  domain&lt;br /&gt;
*1100/tcp  open  unknown&lt;br /&gt;
*5222/tcp  open  unknown -- [http://xmpp.org/ Extensible Messaging and Presence Protocol (XMPP) Service (http://xmpp.org/)]&lt;br /&gt;
*5223/tcp  open  unknown -- SSL port for [http://xmpp.org/ XMPP]&lt;br /&gt;
*9551/tcp  open  unknown -- [[AnyMote]] Pairing Service through IpRemoteControlService -- SSL handshake requests cert and logs show errors from [[AnyMote]]&lt;br /&gt;
*9552/tcp  open  unknown -- [[AnyMote]] Connection Port&lt;br /&gt;
*35832/tcp open  unknown&lt;br /&gt;
&lt;br /&gt;
Also of course, with root - port 5555, for ADB!&lt;br /&gt;
&lt;br /&gt;
== Available Pinouts ==&lt;br /&gt;
*UART1 --&amp;gt; Console (Bottom left = +3v3, Bottom right = interface TX, Top left = interface RX, Top right = GND) [http://i.imgur.com/xJHay.jpg UART Pinout]&lt;br /&gt;
*J3 --&amp;gt; PIC Chip Access (Pin 1 = VPP/MCLR, Pin 2 = VDD, Pin 3 = VSS, Pin 4 = ICSPDAT/PGD, Pin 5 = ICSPCLK/PGC, Pin 6 = Auxiliary)&lt;br /&gt;
*J4 --&amp;gt; Fan (Pin 1 = GND, Pin 2 = VCC +5v, Pins 3-4 = Sense/Control)&lt;br /&gt;
*J13 --&amp;gt; Unknown (Power for SATA?) - (Pin 1 = ?, Pin 2 = GND, Pin 3 = GND, Pin 4 = 5v)&lt;br /&gt;
*J20 --&amp;gt; I2C (Top left = GND, Top right = ?, Bottom left = SDA, Bottom right = SCL), I2C lines are also on XDP1 reachable, lines are without pullups and no activity is visible&lt;br /&gt;
*J24 --&amp;gt; Unknown (Pin 1 = 3.3, Pin 2 = ?, Pin 3 = ?, Pin 4 = GND)&lt;br /&gt;
*J66 --&amp;gt; (Pin1 = +3V3, Pin2 = IR-reciever to PIC PIN41, Pin3 = GND, Pin4 = D7 LED(green) to PIC PIN2, Pin6 = GND, Pin7 = D8 LED(green) to PIC PIN38, Pin8 = GND, Pin9 = IR-leds to PIC PIN37, Pin10 = 12V) Numbered from bottom left&lt;br /&gt;
*J67 --&amp;gt; USB (Pin 1 = GND, Pin 2 = D-, Pin 3 = D+, Pin 4 = FREE, Pin 5 = VCC +5V) used for RF daughter board. [http://www.chrispix.com/googleTV.jpg IMG]&lt;br /&gt;
*J68 --&amp;gt; USB (Pin 1 = VCC +5v, Pin 4 = GND, Pin 5 = NC) to WiFi module&lt;br /&gt;
*J69 --&amp;gt; USB Pinout like J67&lt;br /&gt;
*SATA1 --&amp;gt; SATA Pinout (Pin 1 = GND, Pin 2 = TXP / A+ , Pin 3 = TXN / A-, Pin 4 = GND , Pin 5 = RXN / B-, Pin 6 = RXP / B+ , Pin 7 = GND)&lt;br /&gt;
*SW1 --&amp;gt; Unknown Push Button Switch (Facing button, left = GND, right = ?)&lt;br /&gt;
*SW2 --&amp;gt; Sync Push Button Switch (Facing button, left = GND, right = GPIO somewhere?)&lt;br /&gt;
*XDP1 --&amp;gt; Intel XDP Debug Adapter [http://software.intel.com/sites/products/documentation/hpc/atom/application/device_driver_debugging.pdf Information on XDP Debugging] [ftp://download.intel.com/design/Pentium4/guides/31337301.pdf Page 23 Pinout]&lt;br /&gt;
&lt;br /&gt;
== Volume Management Configuration ==&lt;br /&gt;
Similar to other android based products, external storage can be attached and the device will attempt to mount it to /sdcard as per the following vold.conf:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
volume_sdcard {&lt;br /&gt;
    # NOTE: This path is overbroad and will capture any device on the&lt;br /&gt;
    # tatung3/tatung4 external PCI bus.  This needs to be fixed, in conjunction&lt;br /&gt;
    # with vold changes to handle logical device names (DEVPATH names are not&lt;br /&gt;
    # static, unfortunately.)&lt;br /&gt;
    media_path     /devices/pci0000:00/0000:00:01.0/0000:01:0d.1/usb2/&lt;br /&gt;
    media_type     scsi&lt;br /&gt;
    mount_point    /sdcard&lt;br /&gt;
    read_only      true&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note the interesting comment about the media_path as well as the read_only=true attribute.&lt;br /&gt;
&lt;br /&gt;
== I2C Busses ==&lt;br /&gt;
=== HDMI out ===&lt;br /&gt;
traffic observed&lt;br /&gt;
&lt;br /&gt;
=== XDP &amp;amp; J20 ===&lt;br /&gt;
No pull-up is present so no members can assert traffic.&lt;br /&gt;
&lt;br /&gt;
=== IDT 6V49061 (another programmable multi-output clock?) ===&lt;br /&gt;
Pin 43 = CLK, Pin 42 = SDA&lt;br /&gt;
&lt;br /&gt;
Found devices at:&lt;br /&gt;
0xD4(0x6A W) 0xD5(0x6A R) &lt;br /&gt;
&lt;br /&gt;
Brief register description in /etc/platform_config/ce4100/platform_config.hcfg line 73&lt;br /&gt;
&lt;br /&gt;
=== IDT ICS9LPRS525AGLF (CK505) &amp;amp; Silicon Image Sil9135 [http://www.ti.com/general/docs/lit/getliterature.tsp?baseLiteratureNumber=SPRUER0&amp;amp;track=no TI I2C Datasheet] ===&lt;br /&gt;
Found devices at:&lt;br /&gt;
0x60(0x30 W) 0x61(0x30 R) 0x68(0x34 W) 0x69(0x34 R) 0xD2(0x69 W) 0xD3(0x69 R) &lt;br /&gt;
&lt;br /&gt;
0x30 - The following 256 byte read comes from 0x61 after writing a single data byte (0x00) to 0x60.  The Bus Pirate command is [0x60,0x00[0x61,r:256] with output reformatted here:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
0000000: 0100 3591 0400 0000 0480 3400 0000 0000  ..5.......4.....&lt;br /&gt;
0000010: 0000 0000 0000 0000 0000 b4d3 f514 c4ff  ................&lt;br /&gt;
0000020: ffff ffff ffff ffbf 7fff ffff ffff 8000  ................&lt;br /&gt;
0000030: 0000 0000 0000 0001 0000 0000 0000 0000  ................&lt;br /&gt;
0000040: 0000 0000 0000 0000 0000 0000 0000 0000  ................&lt;br /&gt;
0000050: e001 230a 0100 0001 0000 0000 0000 0000  ..#.............&lt;br /&gt;
0000060: 0000 03e4 0000 0000 0000 0000 0000 0000  ................&lt;br /&gt;
0000070: 0000 0000 0000 0000 0006 0000 0100 0000  ................&lt;br /&gt;
0000080: 0020 083a 5a3a 3a3a 9a36 0001 0400 0000  . .:Z:::.6......&lt;br /&gt;
0000090: 0000 0000 00da 0002 0aba dafa 0060 0000  .............`..&lt;br /&gt;
00000a0: 0022 0755 0000 0000 0000 0000 0000 0000  .&amp;quot;.U............&lt;br /&gt;
00000b0: 0000 0000 0000 0000 0000 0000 0101 01ff  ................&lt;br /&gt;
00000c0: ff01 0001 0001 0000 0000 0000 0000 0000  ................&lt;br /&gt;
00000d0: 0000 0000 0000 1000 0000 0000 0000 0001  ................&lt;br /&gt;
00000e0: 2345 6789 abcd effe dcba 9876 5432 10f0  #Eg........vT2..&lt;br /&gt;
00000f0: e1d2 c300 0000 0000 0001 0000 0000 0000  ................&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
0x34 - The following 256 byte read comes from 0x69 after writing a single data byte (0x00) to 0x68.  The Bus Pirate command is [0x68,0x00[0x69,r:256] with output reformatted here:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
0000000: 0000 5200 0000 000c 0000 0000 683c 0100  ..R.........h&amp;lt;..&lt;br /&gt;
0000010: 3000 060f 0000 0011 0c00 001c 3005 0005  0...........0...&lt;br /&gt;
0000020: 0715 17ff 7f00 4001 e418 0000 0002 0200  ......@.........&lt;br /&gt;
0000030: 010b 0000 0006 0000 0c00 0002 0101 c7ed  ................&lt;br /&gt;
0000040: 0000 0000 0000 0000 0000 0000 0000 0000  ................&lt;br /&gt;
0000050: 0000 0000 0000 0000 0000 0000 0000 0000  ................&lt;br /&gt;
0000060: 0000 0000 0000 0000 0000 0000 0000 0000  ................&lt;br /&gt;
0000070: 0000 0000 0000 0000 0000 0000 0000 0083  ................&lt;br /&gt;
0000080: 0000 0000 0000 0000 0000 0000 0000 0000  ................&lt;br /&gt;
0000090: 0000 0000 0000 0000 0000 0000 0000 0000  ................&lt;br /&gt;
00000a0: 0000 0000 0000 0000 0000 0000 0000 0000  ................&lt;br /&gt;
00000b0: 0000 0000 0000 0000 0000 0000 0000 0085  ................&lt;br /&gt;
00000c0: 0000 0000 0000 0000 0000 0000 0000 0000  ................&lt;br /&gt;
00000d0: 0000 0000 0000 0000 0000 0000 0000 0000  ................&lt;br /&gt;
00000e0: 0000 0000 0000 0000 0000 0000 0000 0000  ................&lt;br /&gt;
00000f0: 0000 0000 0000 0000 0000 0000 0000 0004  ................&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
0x69 (CK505) initialization on boot looks something like:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[0xD2+0x02+][0xD3+0x1A+][0xD2+0x02+0x05][0xD2+0x00+0x01+]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Later in boot, some jumbled traffic is observed, but the target seen here does not ACK scans or explicit requests matching the sniffed traffic.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[0xA0+0x00-0xA1+0x00-0xFD-0xFB-0xF7-0xEF-0xDF-0x80+0x35-[0x5A+0xA4+0x00+0x00+0x00+0x00+0x00+0x85+0x00-[0x03+]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Microchip PIC24FJ64GA004 ===&lt;br /&gt;
No traffic recognizable via Bus Pirate&lt;br /&gt;
&lt;br /&gt;
[[Category:Logitech Revue]]&lt;br /&gt;
[[Category:Logitech Revue|Technical]]&lt;/div&gt;</summary>
		<author><name>ASmig</name></author>
	</entry>
	<entry>
		<id>https://wiki.exploitee.rs/index.php?title=Logitech_Revue_Technical&amp;diff=647</id>
		<title>Logitech Revue Technical</title>
		<link rel="alternate" type="text/html" href="https://wiki.exploitee.rs/index.php?title=Logitech_Revue_Technical&amp;diff=647"/>
		<updated>2011-12-05T09:26:36Z</updated>

		<summary type="html">&lt;p&gt;ASmig: /* IDT ICS9LPRS525AGLF (CK505) &amp;amp; Intel CE4150 (Atom) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Revue toc Inline}}&lt;br /&gt;
&lt;br /&gt;
== Update Procedure ==&lt;br /&gt;
&lt;br /&gt;
Place new update labelled &amp;quot;update.zip&amp;quot; on a USB drive, with a single partition (ie, 1st partition on a USB disk, so say &amp;quot;/dev/sdc1&amp;quot;) &lt;br /&gt;
&lt;br /&gt;
Insert into Revue in the Right most USB port (if looking at the back, closest to the power jack)&lt;br /&gt;
&lt;br /&gt;
Boot into recovery mode:&lt;br /&gt;
&lt;br /&gt;
#Plug in the box, once the fan goes low, hold the sync button. Box should reboot, keep the sync button held until image on screen.&lt;br /&gt;
#Once you see the Arrow on your screen, using your keyboard press Alt+L - usually once or twice until Formatting DATA: shows on the screen, and does not go away (&#039;&#039;&#039;Note: The key combination has changed for updates after b42732&#039;&#039;&#039;)&lt;br /&gt;
#You can then update the box, with a newer update. Downgrading fails however due to a date check.&lt;br /&gt;
&lt;br /&gt;
== Firmware Links ==&lt;br /&gt;
&lt;br /&gt;
*http://android.clients.google.com/packages/ota/logitech_ka/439c26f6af05.mp-signed-ota_update-b39389.zip&lt;br /&gt;
*http://android.clients.google.com/packages/ota/logitech_ka/52057d168e2b.mp-signed-ota_update-b39953.zip&lt;br /&gt;
*http://android.clients.google.com/packages/ota/logitech_ka/c9914396d183.mp-signed-ota_update-b42449.zip&lt;br /&gt;
*http://android.clients.google.com/packages/ota/logitech_ka/9504d579bade.mp-signed-ota_update-b42732.zip&lt;br /&gt;
*http://android.clients.google.com/packages/ota/logitech_ka/d0d70a7753a8.mp-signed-ota_update-b47773.zip&lt;br /&gt;
*http://android.clients.google.com/packages/ota/logitech_ka/4d9b9425b17f.mp-signed-ota_update-b49116.zip&lt;br /&gt;
*http://android.clients.google.com/packages/ota/logitech_ka/f008beb34df8.mp-signed-ota_update-b51795.zip&lt;br /&gt;
&lt;br /&gt;
== Kernel Revisions ==&lt;br /&gt;
For details of the Revue kernel, refer to [[Logitech Revue Kernel]]&lt;br /&gt;
&lt;br /&gt;
*Initial kernel observed on the Revue (?): 2.6.23.18-gc0a9a5fb (richard@sayan) (gcc version 4.1.2) #3 PREEMPT Sat Jul 31 15:32:56 PDT 2010&lt;br /&gt;
*439c26f6af05.mp-signed-ota_update-b39389: 2.6.23.18-g5fd8f46f (richard@mtdoom) #249 PREEMPT Tue Oct 5 09:55:20 BST 2010&lt;br /&gt;
*52057d168e2b.mp-signed-ota_update-b39953: 2.6.23.18-g5fd8f46f (richard@mtdoom) #249 PREEMPT Tue Oct 5 09:55:20 BST 2010&lt;br /&gt;
*c9914396d183.mp-signed-ota_update-b42449: 2.6.23.18-g5bba1a13 (sameer@sayan) #24 PREEMPT Fri Nov 19 11:13:31 PST 2010&lt;br /&gt;
&lt;br /&gt;
== SDK/Toolchain Support ==&lt;br /&gt;
&lt;br /&gt;
The [http://googletv-mirrored-source.googlecode.com/hg/intel-sdk/intel-sdk-toolchain.tar.bz2?r=27705a482273e3a34e8bcdbfb4fdad9afcd65e93 Intel SDK Toolchain] is available as part of Google&#039;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&#039;t have these products to root we don&#039;t know yet.)&lt;br /&gt;
&lt;br /&gt;
We have not yet documented a complete list of required dependencies but here are a few packages which might come in handy:&lt;br /&gt;
*texinfo (we encountered some issues with certain supposedly supported versions of makeinfo but updating texinfo resolved this on most systems)&lt;br /&gt;
*flex&lt;br /&gt;
*bison&lt;br /&gt;
*awk&lt;br /&gt;
*patch&lt;br /&gt;
*gcc et al&lt;br /&gt;
*build-essential (Ubuntu)&lt;br /&gt;
&lt;br /&gt;
To simplify the toolchain setup, craigdroid created [http://dl.dropbox.com/u/1886948/gtvhacker-NDK-installer.zip 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&#039;d in the script) to establish your environment:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
export CROSS_COMPILE=i686-linux-cm-&lt;br /&gt;
export LD_LIBRARY_PATH=~/googletv/sdk/i686-linux-elf/lib&lt;br /&gt;
export PATH=$PATH:~/googletv/sdk/i686-linux-elf/bin/&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== NDK Support ==&lt;br /&gt;
&lt;br /&gt;
Although at present Google has not released a proper NDK for the platform, the gtvhacker team have combined the Intel SDK Toolchain from the [http://code.google.com/p/googletv-mirrored-source/ Google TV Mirrored Source site] with the work of the [http://www.android-x86.org/ Android x86] project to provide unofficial support in the interim.&lt;br /&gt;
&lt;br /&gt;
The entire process of setting up unofficial NDK support has been simplified into an [http://dl.dropbox.com/u/1886948/gtvhacker-NDK-installer.zip 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.  &lt;br /&gt;
&lt;br /&gt;
Since this is building the Intel toolchain automatically all of the caveats regarding the Intel SDK Toolchain apply here as well.&lt;br /&gt;
&lt;br /&gt;
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:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
wget http://dl.dropbox.com/u/1886948/gtvhacker-NDK-installer.zip &amp;amp;&amp;amp; unzip gtvhacker-NDK-installer.zip &amp;amp;&amp;amp; ./gtvhacker-NDK-installer.sh&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
== Flash Hard Drive ==&lt;br /&gt;
&lt;br /&gt;
The Revue has an internal hard drive stored on an sdram chip (flash memory).  It contains the complete file system for the Revue as well as the user data (if their is not external storage provided).  More information about the layout of this file system can be found [[ GTV_FileSystem | File System Details.]]&lt;br /&gt;
&lt;br /&gt;
== Serial Output ==&lt;br /&gt;
&lt;br /&gt;
The logitech revue board contains a UART1 port on the front of the board which before receiving the boxes initial updates is active. In order to communicate with UART port you will need a USB to TTL adapter (or board that does a similar conversion). &lt;br /&gt;
&lt;br /&gt;
The pins operate at 3.3v and the port at 9600 baud with the following pinout:&lt;br /&gt;
&lt;br /&gt;
[http://i.imgur.com/xJHay.jpg UART Pinout]&lt;br /&gt;
&lt;br /&gt;
Serial output&lt;br /&gt;
&lt;br /&gt;
via: http://googletv.pastebin.com/233dZqZx&lt;br /&gt;
[[Pasted Locally]]&lt;br /&gt;
&lt;br /&gt;
== PIC Access ==&lt;br /&gt;
*There is a standard PIC access port to the right of the UART1 port. It can be accessed via a standard PIC Kit Debug board (Tested with version 2). The port has read/write access but the code is pulled from the chip as .hex file and is unreadable thus far.&lt;br /&gt;
&lt;br /&gt;
*The pinout starting from the left (pin with white square around it) corresponds to pin 1 or Vpp.The remaining pins follow the same layout. [http://www.ianstedman.co.uk/Projects/TK3_PICKit2_adaptor/Pickit2_pinout.png PIC Pinout]&lt;br /&gt;
&lt;br /&gt;
[http://googletv.pastebin.com/PBWRCAqB PIC Hex Dump] [[Local PIC Hex Dump]]&lt;br /&gt;
&lt;br /&gt;
[http://dl.dropbox.com/u/217678/Bootloader%20from%20PIC.TXT PIC Disassembly]&lt;br /&gt;
&lt;br /&gt;
== Updates ==&lt;br /&gt;
The updates contain a full set of system files (changed and unchanged), including a boot.img and a recovery.img&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;boot.img&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The thread at [http://forum.xda-developers.com/showpost.php?p=8844074&amp;amp;postcount=80 xda-developer] has the process to extract from the .img files (thx bftb0):&lt;br /&gt;
&lt;br /&gt;
&amp;quot;the &amp;quot;boot.img&amp;quot; file is in (little-endian) &amp;quot;squashfs&amp;quot; format and unpacks just fine using &amp;quot;unsquashfs&amp;quot; from the (Ubuntu 8.0.04 LTS) squashfs-tools package.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039; recovery.img&lt;br /&gt;
&lt;br /&gt;
system/boot/recovery.img is a standard Android boot image with some extra garbage (0x580 bytes) at the front. Remove it like so:&lt;br /&gt;
  dd if=system/boot/recovery.img bs=1408 skip=1 &amp;gt; recovery-ungarbaged.img&lt;br /&gt;
Unpack that like a normal Android boot image. Something like [http://android-dls.com/files/linux/split_bootimg.zip this Perl script] works well.&lt;br /&gt;
&lt;br /&gt;
The kernel (system/boot/kernel) is also a boot image with the same extra garbage at the front.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Odex files&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The .odex files can be extracted by using the following guide [http://code.google.com/p/smali/wiki/DeodexInstructions Deodex Instructions]&lt;br /&gt;
&lt;br /&gt;
== Open Ports ==&lt;br /&gt;
List nmap ports&lt;br /&gt;
&lt;br /&gt;
Normal Mode, hooked to a Dish Network DVR (622) via WiFi:&lt;br /&gt;
&lt;br /&gt;
*Nmap scan report for LogitechRevue (192.168.1.142)&lt;br /&gt;
*Host is up (0.060s latency).&lt;br /&gt;
*Not shown: 65528 closed ports&lt;br /&gt;
*PORT      STATE SERVICE&lt;br /&gt;
*53/tcp    open  domain&lt;br /&gt;
*1100/tcp  open  unknown&lt;br /&gt;
*5222/tcp  open  unknown -- [http://xmpp.org/ Extensible Messaging and Presence Protocol (XMPP) Service (http://xmpp.org/)]&lt;br /&gt;
*5223/tcp  open  unknown -- SSL port for [http://xmpp.org/ XMPP]&lt;br /&gt;
*9551/tcp  open  unknown -- [[AnyMote]] Pairing Service through IpRemoteControlService -- SSL handshake requests cert and logs show errors from [[AnyMote]]&lt;br /&gt;
*9552/tcp  open  unknown -- [[AnyMote]] Connection Port&lt;br /&gt;
*35832/tcp open  unknown&lt;br /&gt;
&lt;br /&gt;
Also of course, with root - port 5555, for ADB!&lt;br /&gt;
&lt;br /&gt;
== Available Pinouts ==&lt;br /&gt;
*UART1 --&amp;gt; Console (Bottom left = +3v3, Bottom right = interface TX, Top left = interface RX, Top right = GND) [http://i.imgur.com/xJHay.jpg UART Pinout]&lt;br /&gt;
*J3 --&amp;gt; PIC Chip Access (Pin 1 = VPP/MCLR, Pin 2 = VDD, Pin 3 = VSS, Pin 4 = ICSPDAT/PGD, Pin 5 = ICSPCLK/PGC, Pin 6 = Auxiliary)&lt;br /&gt;
*J4 --&amp;gt; Fan (Pin 1 = GND, Pin 2 = VCC +5v, Pins 3-4 = Sense/Control)&lt;br /&gt;
*J13 --&amp;gt; Unknown (Power for SATA?) - (Pin 1 = ?, Pin 2 = GND, Pin 3 = GND, Pin 4 = 5v)&lt;br /&gt;
*J20 --&amp;gt; I2C (Top left = GND, Top right = ?, Bottom left = SDA, Bottom right = SCL), I2C lines are also on XDP1 reachable, lines are without pullups and no activity is visible&lt;br /&gt;
*J24 --&amp;gt; Unknown (Pin 1 = 3.3, Pin 2 = ?, Pin 3 = ?, Pin 4 = GND)&lt;br /&gt;
*J66 --&amp;gt; (Pin1 = +3V3, Pin2 = IR-reciever to PIC PIN41, Pin3 = GND, Pin4 = D7 LED(green) to PIC PIN2, Pin6 = GND, Pin7 = D8 LED(green) to PIC PIN38, Pin8 = GND, Pin9 = IR-leds to PIC PIN37, Pin10 = 12V) Numbered from bottom left&lt;br /&gt;
*J67 --&amp;gt; USB (Pin 1 = GND, Pin 2 = D-, Pin 3 = D+, Pin 4 = FREE, Pin 5 = VCC +5V) used for RF daughter board. [http://www.chrispix.com/googleTV.jpg IMG]&lt;br /&gt;
*J68 --&amp;gt; USB (Pin 1 = VCC +5v, Pin 4 = GND, Pin 5 = NC) to WiFi module&lt;br /&gt;
*J69 --&amp;gt; USB Pinout like J67&lt;br /&gt;
*SATA1 --&amp;gt; SATA Pinout (Pin 1 = GND, Pin 2 = TXP / A+ , Pin 3 = TXN / A-, Pin 4 = GND , Pin 5 = RXN / B-, Pin 6 = RXP / B+ , Pin 7 = GND)&lt;br /&gt;
*SW1 --&amp;gt; Unknown Push Button Switch (Facing button, left = GND, right = ?)&lt;br /&gt;
*SW2 --&amp;gt; Sync Push Button Switch (Facing button, left = GND, right = GPIO somewhere?)&lt;br /&gt;
*XDP1 --&amp;gt; Intel XDP Debug Adapter [http://software.intel.com/sites/products/documentation/hpc/atom/application/device_driver_debugging.pdf Information on XDP Debugging] [ftp://download.intel.com/design/Pentium4/guides/31337301.pdf Page 23 Pinout]&lt;br /&gt;
&lt;br /&gt;
== Volume Management Configuration ==&lt;br /&gt;
Similar to other android based products, external storage can be attached and the device will attempt to mount it to /sdcard as per the following vold.conf:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
volume_sdcard {&lt;br /&gt;
    # NOTE: This path is overbroad and will capture any device on the&lt;br /&gt;
    # tatung3/tatung4 external PCI bus.  This needs to be fixed, in conjunction&lt;br /&gt;
    # with vold changes to handle logical device names (DEVPATH names are not&lt;br /&gt;
    # static, unfortunately.)&lt;br /&gt;
    media_path     /devices/pci0000:00/0000:00:01.0/0000:01:0d.1/usb2/&lt;br /&gt;
    media_type     scsi&lt;br /&gt;
    mount_point    /sdcard&lt;br /&gt;
    read_only      true&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note the interesting comment about the media_path as well as the read_only=true attribute.&lt;br /&gt;
&lt;br /&gt;
== I2C Busses ==&lt;br /&gt;
=== HDMI out ===&lt;br /&gt;
traffic observed&lt;br /&gt;
&lt;br /&gt;
=== XDP &amp;amp; J20 ===&lt;br /&gt;
No pull-up is present so no members can assert traffic.&lt;br /&gt;
&lt;br /&gt;
=== IDT 6V49061 (another programmable multi-output clock?) ===&lt;br /&gt;
Pin 43 = CLK, Pin 42 = SDA&lt;br /&gt;
&lt;br /&gt;
Found devices at:&lt;br /&gt;
0xD4(0x6A W) 0xD5(0x6A R) &lt;br /&gt;
&lt;br /&gt;
Brief register description in /etc/platform_config/ce4100/platform_config.hcfg line 73&lt;br /&gt;
&lt;br /&gt;
=== IDT ICS9LPRS525AGLF (CK505) &amp;amp; Intel CE4150 (Atom) ===&lt;br /&gt;
Found devices at:&lt;br /&gt;
0x60(0x30 W) 0x61(0x30 R) 0x68(0x34 W) 0x69(0x34 R) 0xD2(0x69 W) 0xD3(0x69 R) &lt;br /&gt;
&lt;br /&gt;
0x30 - The following 256 byte read comes from 0x61 after writing a single data byte (0x00) to 0x60.  The Bus Pirate command is [0x60,0x00[0x61,r:256] with output reformatted here:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
0000000: 0100 3591 0400 0000 0480 3400 0000 0000  ..5.......4.....&lt;br /&gt;
0000010: 0000 0000 0000 0000 0000 b4d3 f514 c4ff  ................&lt;br /&gt;
0000020: ffff ffff ffff ffbf 7fff ffff ffff 8000  ................&lt;br /&gt;
0000030: 0000 0000 0000 0001 0000 0000 0000 0000  ................&lt;br /&gt;
0000040: 0000 0000 0000 0000 0000 0000 0000 0000  ................&lt;br /&gt;
0000050: e001 230a 0100 0001 0000 0000 0000 0000  ..#.............&lt;br /&gt;
0000060: 0000 03e4 0000 0000 0000 0000 0000 0000  ................&lt;br /&gt;
0000070: 0000 0000 0000 0000 0006 0000 0100 0000  ................&lt;br /&gt;
0000080: 0020 083a 5a3a 3a3a 9a36 0001 0400 0000  . .:Z:::.6......&lt;br /&gt;
0000090: 0000 0000 00da 0002 0aba dafa 0060 0000  .............`..&lt;br /&gt;
00000a0: 0022 0755 0000 0000 0000 0000 0000 0000  .&amp;quot;.U............&lt;br /&gt;
00000b0: 0000 0000 0000 0000 0000 0000 0101 01ff  ................&lt;br /&gt;
00000c0: ff01 0001 0001 0000 0000 0000 0000 0000  ................&lt;br /&gt;
00000d0: 0000 0000 0000 1000 0000 0000 0000 0001  ................&lt;br /&gt;
00000e0: 2345 6789 abcd effe dcba 9876 5432 10f0  #Eg........vT2..&lt;br /&gt;
00000f0: e1d2 c300 0000 0000 0001 0000 0000 0000  ................&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
0x34 - The following 256 byte read comes from 0x69 after writing a single data byte (0x00) to 0x68.  The Bus Pirate command is [0x68,0x00[0x69,r:256] with output reformatted here:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
0000000: 0000 5200 0000 000c 0000 0000 683c 0100  ..R.........h&amp;lt;..&lt;br /&gt;
0000010: 3000 060f 0000 0011 0c00 001c 3005 0005  0...........0...&lt;br /&gt;
0000020: 0715 17ff 7f00 4001 e418 0000 0002 0200  ......@.........&lt;br /&gt;
0000030: 010b 0000 0006 0000 0c00 0002 0101 c7ed  ................&lt;br /&gt;
0000040: 0000 0000 0000 0000 0000 0000 0000 0000  ................&lt;br /&gt;
0000050: 0000 0000 0000 0000 0000 0000 0000 0000  ................&lt;br /&gt;
0000060: 0000 0000 0000 0000 0000 0000 0000 0000  ................&lt;br /&gt;
0000070: 0000 0000 0000 0000 0000 0000 0000 0083  ................&lt;br /&gt;
0000080: 0000 0000 0000 0000 0000 0000 0000 0000  ................&lt;br /&gt;
0000090: 0000 0000 0000 0000 0000 0000 0000 0000  ................&lt;br /&gt;
00000a0: 0000 0000 0000 0000 0000 0000 0000 0000  ................&lt;br /&gt;
00000b0: 0000 0000 0000 0000 0000 0000 0000 0085  ................&lt;br /&gt;
00000c0: 0000 0000 0000 0000 0000 0000 0000 0000  ................&lt;br /&gt;
00000d0: 0000 0000 0000 0000 0000 0000 0000 0000  ................&lt;br /&gt;
00000e0: 0000 0000 0000 0000 0000 0000 0000 0000  ................&lt;br /&gt;
00000f0: 0000 0000 0000 0000 0000 0000 0000 0004  ................&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
0x69 (CK505) initialization on boot looks something like:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[0xD2+0x02+][0xD3+0x1A+][0xD2+0x02+0x05][0xD2+0x00+0x01+]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Later in boot, some jumbled traffic is observed, but the target seen here does not ACK scans or explicit requests matching the sniffed traffic.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[0xA0+0x00-0xA1+0x00-0xFD-0xFB-0xF7-0xEF-0xDF-0x80+0x35-[0x5A+0xA4+0x00+0x00+0x00+0x00+0x00+0x85+0x00-[0x03+]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Microchip PIC24FJ64GA004 ===&lt;br /&gt;
No traffic recognizable via Bus Pirate&lt;br /&gt;
&lt;br /&gt;
[[Category:Logitech Revue]]&lt;br /&gt;
[[Category:Logitech Revue|Technical]]&lt;/div&gt;</summary>
		<author><name>ASmig</name></author>
	</entry>
	<entry>
		<id>https://wiki.exploitee.rs/index.php?title=Logitech_Revue_Hardware&amp;diff=646</id>
		<title>Logitech Revue Hardware</title>
		<link rel="alternate" type="text/html" href="https://wiki.exploitee.rs/index.php?title=Logitech_Revue_Hardware&amp;diff=646"/>
		<updated>2011-12-05T08:42:14Z</updated>

		<summary type="html">&lt;p&gt;ASmig: /* Specs */ added GL850G and IDT 6V49061&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:Revue-advert.gif|250px|left|thumb]]&lt;br /&gt;
{{Revue toc Inline}}&lt;br /&gt;
This page will be dedicated to the hardware specifications, descriptions, and information related to the Logitech Revue.&lt;br /&gt;
&lt;br /&gt;
The Revue was initially released October 21st 2010 (with official availability on the 25th) in the United States.  The Revue was released initially as a pass-through device meant to  augment your initial set top box connection to your display device.  For customers using the &amp;quot;DISH Network&amp;quot; Satellite subscription television service, integration was available that allowed the Revue to communicate directly with the satellite receiver/set top box.  For all other devices, an IR blaster was used to simulate remote control commands as a means to communicate between the Revue and the STB hardware.&lt;br /&gt;
&lt;br /&gt;
== Specs ==&lt;br /&gt;
*Intel Atom CE4150 1.2 GHz processor, with a 400 MHz GPU   &lt;br /&gt;
*Gigabyte GA-SBKAN2 motherboard&lt;br /&gt;
*Samsung K9F8G08U0M 1 GB NAND Flash (Single Level Cell) [http://www.samsung.com/global/system/business/semiconductor/product/2007/6/11/NANDFlash/SLC_LargeBlock/8Gbit/K9F8G08U0M/ds_k9f8g08x0m_rev10.pdf Datasheet] [http://zenosec.com/gtv/revue/ds_k9f8g08x0m_rev10.pdf Mirror]&lt;br /&gt;
*Hynix H27UBG8T2ATR 4 GB NAND Flash (Multiple Level Cell) [http://www.szyuda88.com/uploadfile/cfile/201061714220663.pdf Datasheet]&lt;br /&gt;
*Silicon Image Sil9135 HDMI 1.3 Receiver [http://dl.dropbox.com/u/217678/Silicon%20Image%20Sil9135%20Info.pdf  Chip Information] [http://focus.tij.co.jp/jp/lit/an/spraav4/spraav4.pdf Datasheet from TI]&lt;br /&gt;
*Nanya NT5CB128M8CN-CG 1 GB DDR3 SDRAM (1 Gb X 8) [http://dl.dropbox.com/u/217678/NTC-DDR3-1G-C-V58B-12-12-5.pdf Datasheet]&lt;br /&gt;
*Realtek Semiconductor RTL8201N 10/100M PHYceiver [http://realtek.info/pdf/RTL8201N_1-1.pdf Datasheet]&lt;br /&gt;
*Microchip PIC24FJ64GA004-I/PT 16-bit microcontroller [http://ww1.microchip.com/downloads/en/DeviceDoc/39881c.pdf Datasheet]&lt;br /&gt;
*Phison S2251-50 USB to Flash Controller (Datasheet not available to end users according to manufacture)&lt;br /&gt;
*IDT ICS9LPRS525AGLF Clock for CPU [http://dl.dropbox.com/u/217678/9LPRS525.pdf Datasheet]&lt;br /&gt;
*IDT 6V49061 Clock for audio/video?&lt;br /&gt;
*Genesys Logic GL850G USB Hub [http://www.genesyslogic.com/manage/upfile/12052255151.pdf Datasheet]&lt;br /&gt;
&lt;br /&gt;
The Logitech Revue was recently torndown and had its [http://www.ifixit.com/Teardown/Logitech-Revue-Teardown/3788/1 inners revealed].&lt;br /&gt;
Direct link to the higher resolution picture of the [http://guide-images.ifixit.net/igi/5jWUcNNOrDvXZqEy.huge motherboard].&lt;br /&gt;
&lt;br /&gt;
SemiAccurate has a populated board similar to the one in the Revue: http://www.semiaccurate.com/2010/06/04/gigabyte-has-google-tv-ready-motherboard/&lt;br /&gt;
&lt;br /&gt;
== Usage ==&lt;br /&gt;
Samsung K9F8G08U0M 1 GB NAND Flash&lt;br /&gt;
*Used for storage of bootloader, kernel, boot flash graphics, Linux OS etc..&lt;br /&gt;
&lt;br /&gt;
Hynix H27UBG8T2ATR 4 GB NAND Flash (Long Term Storage)&lt;br /&gt;
*Used for persistent storage, device is /dev/sda - possible to override with an external USB drive&lt;br /&gt;
&lt;br /&gt;
Microchip PIC24FJ64GA004-I/PT 16-bit microcontroller &lt;br /&gt;
*Used to handle IR input/output for remotes/IR blasters and possible interface with wireless keyboard&lt;br /&gt;
*System reboot/powerdown&lt;br /&gt;
*Possibly HDMI CEC &lt;br /&gt;
&lt;br /&gt;
Silicon Image Sil9135 HDMI 1.3 Receiver&lt;br /&gt;
*Used to process video to and from HDMI ports as well as audio over HDMI and SPDIF&lt;br /&gt;
*Supports DTS even though the Revue does not (An update can probably enable this feature)&lt;br /&gt;
&lt;br /&gt;
IDT ICS9LPRS525AGLF Clock for CPU&lt;br /&gt;
*Provides a clock for the Intel Atom CPU&lt;br /&gt;
[[Category:Logitech Revue|Hardware]]&lt;/div&gt;</summary>
		<author><name>ASmig</name></author>
	</entry>
	<entry>
		<id>https://wiki.exploitee.rs/index.php?title=Logitech_Revue_Technical&amp;diff=645</id>
		<title>Logitech Revue Technical</title>
		<link rel="alternate" type="text/html" href="https://wiki.exploitee.rs/index.php?title=Logitech_Revue_Technical&amp;diff=645"/>
		<updated>2011-12-05T08:32:15Z</updated>

		<summary type="html">&lt;p&gt;ASmig: /* I2C Busses */ rough draft&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Revue toc Inline}}&lt;br /&gt;
&lt;br /&gt;
== Update Procedure ==&lt;br /&gt;
&lt;br /&gt;
Place new update labelled &amp;quot;update.zip&amp;quot; on a USB drive, with a single partition (ie, 1st partition on a USB disk, so say &amp;quot;/dev/sdc1&amp;quot;) &lt;br /&gt;
&lt;br /&gt;
Insert into Revue in the Right most USB port (if looking at the back, closest to the power jack)&lt;br /&gt;
&lt;br /&gt;
Boot into recovery mode:&lt;br /&gt;
&lt;br /&gt;
#Plug in the box, once the fan goes low, hold the sync button. Box should reboot, keep the sync button held until image on screen.&lt;br /&gt;
#Once you see the Arrow on your screen, using your keyboard press Alt+L - usually once or twice until Formatting DATA: shows on the screen, and does not go away (&#039;&#039;&#039;Note: The key combination has changed for updates after b42732&#039;&#039;&#039;)&lt;br /&gt;
#You can then update the box, with a newer update. Downgrading fails however due to a date check.&lt;br /&gt;
&lt;br /&gt;
== Firmware Links ==&lt;br /&gt;
&lt;br /&gt;
*http://android.clients.google.com/packages/ota/logitech_ka/439c26f6af05.mp-signed-ota_update-b39389.zip&lt;br /&gt;
*http://android.clients.google.com/packages/ota/logitech_ka/52057d168e2b.mp-signed-ota_update-b39953.zip&lt;br /&gt;
*http://android.clients.google.com/packages/ota/logitech_ka/c9914396d183.mp-signed-ota_update-b42449.zip&lt;br /&gt;
*http://android.clients.google.com/packages/ota/logitech_ka/9504d579bade.mp-signed-ota_update-b42732.zip&lt;br /&gt;
*http://android.clients.google.com/packages/ota/logitech_ka/d0d70a7753a8.mp-signed-ota_update-b47773.zip&lt;br /&gt;
*http://android.clients.google.com/packages/ota/logitech_ka/4d9b9425b17f.mp-signed-ota_update-b49116.zip&lt;br /&gt;
*http://android.clients.google.com/packages/ota/logitech_ka/f008beb34df8.mp-signed-ota_update-b51795.zip&lt;br /&gt;
&lt;br /&gt;
== Kernel Revisions ==&lt;br /&gt;
For details of the Revue kernel, refer to [[Logitech Revue Kernel]]&lt;br /&gt;
&lt;br /&gt;
*Initial kernel observed on the Revue (?): 2.6.23.18-gc0a9a5fb (richard@sayan) (gcc version 4.1.2) #3 PREEMPT Sat Jul 31 15:32:56 PDT 2010&lt;br /&gt;
*439c26f6af05.mp-signed-ota_update-b39389: 2.6.23.18-g5fd8f46f (richard@mtdoom) #249 PREEMPT Tue Oct 5 09:55:20 BST 2010&lt;br /&gt;
*52057d168e2b.mp-signed-ota_update-b39953: 2.6.23.18-g5fd8f46f (richard@mtdoom) #249 PREEMPT Tue Oct 5 09:55:20 BST 2010&lt;br /&gt;
*c9914396d183.mp-signed-ota_update-b42449: 2.6.23.18-g5bba1a13 (sameer@sayan) #24 PREEMPT Fri Nov 19 11:13:31 PST 2010&lt;br /&gt;
&lt;br /&gt;
== SDK/Toolchain Support ==&lt;br /&gt;
&lt;br /&gt;
The [http://googletv-mirrored-source.googlecode.com/hg/intel-sdk/intel-sdk-toolchain.tar.bz2?r=27705a482273e3a34e8bcdbfb4fdad9afcd65e93 Intel SDK Toolchain] is available as part of Google&#039;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&#039;t have these products to root we don&#039;t know yet.)&lt;br /&gt;
&lt;br /&gt;
We have not yet documented a complete list of required dependencies but here are a few packages which might come in handy:&lt;br /&gt;
*texinfo (we encountered some issues with certain supposedly supported versions of makeinfo but updating texinfo resolved this on most systems)&lt;br /&gt;
*flex&lt;br /&gt;
*bison&lt;br /&gt;
*awk&lt;br /&gt;
*patch&lt;br /&gt;
*gcc et al&lt;br /&gt;
*build-essential (Ubuntu)&lt;br /&gt;
&lt;br /&gt;
To simplify the toolchain setup, craigdroid created [http://dl.dropbox.com/u/1886948/gtvhacker-NDK-installer.zip 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&#039;d in the script) to establish your environment:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
export CROSS_COMPILE=i686-linux-cm-&lt;br /&gt;
export LD_LIBRARY_PATH=~/googletv/sdk/i686-linux-elf/lib&lt;br /&gt;
export PATH=$PATH:~/googletv/sdk/i686-linux-elf/bin/&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== NDK Support ==&lt;br /&gt;
&lt;br /&gt;
Although at present Google has not released a proper NDK for the platform, the gtvhacker team have combined the Intel SDK Toolchain from the [http://code.google.com/p/googletv-mirrored-source/ Google TV Mirrored Source site] with the work of the [http://www.android-x86.org/ Android x86] project to provide unofficial support in the interim.&lt;br /&gt;
&lt;br /&gt;
The entire process of setting up unofficial NDK support has been simplified into an [http://dl.dropbox.com/u/1886948/gtvhacker-NDK-installer.zip 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.  &lt;br /&gt;
&lt;br /&gt;
Since this is building the Intel toolchain automatically all of the caveats regarding the Intel SDK Toolchain apply here as well.&lt;br /&gt;
&lt;br /&gt;
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:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
wget http://dl.dropbox.com/u/1886948/gtvhacker-NDK-installer.zip &amp;amp;&amp;amp; unzip gtvhacker-NDK-installer.zip &amp;amp;&amp;amp; ./gtvhacker-NDK-installer.sh&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
== Flash Hard Drive ==&lt;br /&gt;
&lt;br /&gt;
The Revue has an internal hard drive stored on an sdram chip (flash memory).  It contains the complete file system for the Revue as well as the user data (if their is not external storage provided).  More information about the layout of this file system can be found [[ GTV_FileSystem | File System Details.]]&lt;br /&gt;
&lt;br /&gt;
== Serial Output ==&lt;br /&gt;
&lt;br /&gt;
The logitech revue board contains a UART1 port on the front of the board which before receiving the boxes initial updates is active. In order to communicate with UART port you will need a USB to TTL adapter (or board that does a similar conversion). &lt;br /&gt;
&lt;br /&gt;
The pins operate at 3.3v and the port at 9600 baud with the following pinout:&lt;br /&gt;
&lt;br /&gt;
[http://i.imgur.com/xJHay.jpg UART Pinout]&lt;br /&gt;
&lt;br /&gt;
Serial output&lt;br /&gt;
&lt;br /&gt;
via: http://googletv.pastebin.com/233dZqZx&lt;br /&gt;
[[Pasted Locally]]&lt;br /&gt;
&lt;br /&gt;
== PIC Access ==&lt;br /&gt;
*There is a standard PIC access port to the right of the UART1 port. It can be accessed via a standard PIC Kit Debug board (Tested with version 2). The port has read/write access but the code is pulled from the chip as .hex file and is unreadable thus far.&lt;br /&gt;
&lt;br /&gt;
*The pinout starting from the left (pin with white square around it) corresponds to pin 1 or Vpp.The remaining pins follow the same layout. [http://www.ianstedman.co.uk/Projects/TK3_PICKit2_adaptor/Pickit2_pinout.png PIC Pinout]&lt;br /&gt;
&lt;br /&gt;
[http://googletv.pastebin.com/PBWRCAqB PIC Hex Dump] [[Local PIC Hex Dump]]&lt;br /&gt;
&lt;br /&gt;
[http://dl.dropbox.com/u/217678/Bootloader%20from%20PIC.TXT PIC Disassembly]&lt;br /&gt;
&lt;br /&gt;
== Updates ==&lt;br /&gt;
The updates contain a full set of system files (changed and unchanged), including a boot.img and a recovery.img&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;boot.img&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The thread at [http://forum.xda-developers.com/showpost.php?p=8844074&amp;amp;postcount=80 xda-developer] has the process to extract from the .img files (thx bftb0):&lt;br /&gt;
&lt;br /&gt;
&amp;quot;the &amp;quot;boot.img&amp;quot; file is in (little-endian) &amp;quot;squashfs&amp;quot; format and unpacks just fine using &amp;quot;unsquashfs&amp;quot; from the (Ubuntu 8.0.04 LTS) squashfs-tools package.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039; recovery.img&lt;br /&gt;
&lt;br /&gt;
system/boot/recovery.img is a standard Android boot image with some extra garbage (0x580 bytes) at the front. Remove it like so:&lt;br /&gt;
  dd if=system/boot/recovery.img bs=1408 skip=1 &amp;gt; recovery-ungarbaged.img&lt;br /&gt;
Unpack that like a normal Android boot image. Something like [http://android-dls.com/files/linux/split_bootimg.zip this Perl script] works well.&lt;br /&gt;
&lt;br /&gt;
The kernel (system/boot/kernel) is also a boot image with the same extra garbage at the front.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Odex files&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The .odex files can be extracted by using the following guide [http://code.google.com/p/smali/wiki/DeodexInstructions Deodex Instructions]&lt;br /&gt;
&lt;br /&gt;
== Open Ports ==&lt;br /&gt;
List nmap ports&lt;br /&gt;
&lt;br /&gt;
Normal Mode, hooked to a Dish Network DVR (622) via WiFi:&lt;br /&gt;
&lt;br /&gt;
*Nmap scan report for LogitechRevue (192.168.1.142)&lt;br /&gt;
*Host is up (0.060s latency).&lt;br /&gt;
*Not shown: 65528 closed ports&lt;br /&gt;
*PORT      STATE SERVICE&lt;br /&gt;
*53/tcp    open  domain&lt;br /&gt;
*1100/tcp  open  unknown&lt;br /&gt;
*5222/tcp  open  unknown -- [http://xmpp.org/ Extensible Messaging and Presence Protocol (XMPP) Service (http://xmpp.org/)]&lt;br /&gt;
*5223/tcp  open  unknown -- SSL port for [http://xmpp.org/ XMPP]&lt;br /&gt;
*9551/tcp  open  unknown -- [[AnyMote]] Pairing Service through IpRemoteControlService -- SSL handshake requests cert and logs show errors from [[AnyMote]]&lt;br /&gt;
*9552/tcp  open  unknown -- [[AnyMote]] Connection Port&lt;br /&gt;
*35832/tcp open  unknown&lt;br /&gt;
&lt;br /&gt;
Also of course, with root - port 5555, for ADB!&lt;br /&gt;
&lt;br /&gt;
== Available Pinouts ==&lt;br /&gt;
*UART1 --&amp;gt; Console (Bottom left = +3v3, Bottom right = interface TX, Top left = interface RX, Top right = GND) [http://i.imgur.com/xJHay.jpg UART Pinout]&lt;br /&gt;
*J3 --&amp;gt; PIC Chip Access (Pin 1 = VPP/MCLR, Pin 2 = VDD, Pin 3 = VSS, Pin 4 = ICSPDAT/PGD, Pin 5 = ICSPCLK/PGC, Pin 6 = Auxiliary)&lt;br /&gt;
*J4 --&amp;gt; Fan (Pin 1 = GND, Pin 2 = VCC +5v, Pins 3-4 = Sense/Control)&lt;br /&gt;
*J13 --&amp;gt; Unknown (Power for SATA?) - (Pin 1 = ?, Pin 2 = GND, Pin 3 = GND, Pin 4 = 5v)&lt;br /&gt;
*J20 --&amp;gt; I2C (Top left = GND, Top right = ?, Bottom left = SDA, Bottom right = SCL), I2C lines are also on XDP1 reachable, lines are without pullups and no activity is visible&lt;br /&gt;
*J24 --&amp;gt; Unknown (Pin 1 = 3.3, Pin 2 = ?, Pin 3 = ?, Pin 4 = GND)&lt;br /&gt;
*J66 --&amp;gt; (Pin1 = +3V3, Pin2 = IR-reciever to PIC PIN41, Pin3 = GND, Pin4 = D7 LED(green) to PIC PIN2, Pin6 = GND, Pin7 = D8 LED(green) to PIC PIN38, Pin8 = GND, Pin9 = IR-leds to PIC PIN37, Pin10 = 12V) Numbered from bottom left&lt;br /&gt;
*J67 --&amp;gt; USB (Pin 1 = GND, Pin 2 = D-, Pin 3 = D+, Pin 4 = FREE, Pin 5 = VCC +5V) used for RF daughter board. [http://www.chrispix.com/googleTV.jpg IMG]&lt;br /&gt;
*J68 --&amp;gt; USB (Pin 1 = VCC +5v, Pin 4 = GND, Pin 5 = NC) to WiFi module&lt;br /&gt;
*J69 --&amp;gt; USB Pinout like J67&lt;br /&gt;
*SATA1 --&amp;gt; SATA Pinout (Pin 1 = GND, Pin 2 = TXP / A+ , Pin 3 = TXN / A-, Pin 4 = GND , Pin 5 = RXN / B-, Pin 6 = RXP / B+ , Pin 7 = GND)&lt;br /&gt;
*SW1 --&amp;gt; Unknown Push Button Switch (Facing button, left = GND, right = ?)&lt;br /&gt;
*SW2 --&amp;gt; Sync Push Button Switch (Facing button, left = GND, right = GPIO somewhere?)&lt;br /&gt;
*XDP1 --&amp;gt; Intel XDP Debug Adapter [http://software.intel.com/sites/products/documentation/hpc/atom/application/device_driver_debugging.pdf Information on XDP Debugging] [ftp://download.intel.com/design/Pentium4/guides/31337301.pdf Page 23 Pinout]&lt;br /&gt;
&lt;br /&gt;
== Volume Management Configuration ==&lt;br /&gt;
Similar to other android based products, external storage can be attached and the device will attempt to mount it to /sdcard as per the following vold.conf:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
volume_sdcard {&lt;br /&gt;
    # NOTE: This path is overbroad and will capture any device on the&lt;br /&gt;
    # tatung3/tatung4 external PCI bus.  This needs to be fixed, in conjunction&lt;br /&gt;
    # with vold changes to handle logical device names (DEVPATH names are not&lt;br /&gt;
    # static, unfortunately.)&lt;br /&gt;
    media_path     /devices/pci0000:00/0000:00:01.0/0000:01:0d.1/usb2/&lt;br /&gt;
    media_type     scsi&lt;br /&gt;
    mount_point    /sdcard&lt;br /&gt;
    read_only      true&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note the interesting comment about the media_path as well as the read_only=true attribute.&lt;br /&gt;
&lt;br /&gt;
== I2C Busses ==&lt;br /&gt;
=== HDMI out ===&lt;br /&gt;
traffic observed&lt;br /&gt;
&lt;br /&gt;
=== XDP &amp;amp; J20 ===&lt;br /&gt;
No pull-up is present so no members can assert traffic.&lt;br /&gt;
&lt;br /&gt;
=== IDT 6V49061 (another programmable multi-output clock?) ===&lt;br /&gt;
Pin 43 = CLK, Pin 42 = SDA&lt;br /&gt;
&lt;br /&gt;
Found devices at:&lt;br /&gt;
0xD4(0x6A W) 0xD5(0x6A R) &lt;br /&gt;
&lt;br /&gt;
Brief register description in /etc/platform_config/ce4100/platform_config.hcfg line 73&lt;br /&gt;
&lt;br /&gt;
=== IDT ICS9LPRS525AGLF (CK505) &amp;amp; Intel CE4150 (Atom) ===&lt;br /&gt;
Found devices at:&lt;br /&gt;
0x60(0x30 W) 0x61(0x30 R) 0x68(0x34 W) 0x69(0x34 R) 0xD2(0x69 W) 0xD3(0x69 R) &lt;br /&gt;
&lt;br /&gt;
0x30 read:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
0000000: 0100 3591 0400 0000 0480 3400 0000 0000  ..5.......4.....&lt;br /&gt;
0000010: 0000 0000 0000 0000 0000 b4d3 f514 c4ff  ................&lt;br /&gt;
0000020: ffff ffff ffff ffbf 7fff ffff ffff 8000  ................&lt;br /&gt;
0000030: 0000 0000 0000 0001 0000 0000 0000 0000  ................&lt;br /&gt;
0000040: 0000 0000 0000 0000 0000 0000 0000 0000  ................&lt;br /&gt;
0000050: e001 230a 0100 0001 0000 0000 0000 0000  ..#.............&lt;br /&gt;
0000060: 0000 03e4 0000 0000 0000 0000 0000 0000  ................&lt;br /&gt;
0000070: 0000 0000 0000 0000 0006 0000 0100 0000  ................&lt;br /&gt;
0000080: 0020 083a 5a3a 3a3a 9a36 0001 0400 0000  . .:Z:::.6......&lt;br /&gt;
0000090: 0000 0000 00da 0002 0aba dafa 0060 0000  .............`..&lt;br /&gt;
00000a0: 0022 0755 0000 0000 0000 0000 0000 0000  .&amp;quot;.U............&lt;br /&gt;
00000b0: 0000 0000 0000 0000 0000 0000 0101 01ff  ................&lt;br /&gt;
00000c0: ff01 0001 0001 0000 0000 0000 0000 0000  ................&lt;br /&gt;
00000d0: 0000 0000 0000 1000 0000 0000 0000 0001  ................&lt;br /&gt;
00000e0: 2345 6789 abcd effe dcba 9876 5432 10f0  #Eg........vT2..&lt;br /&gt;
00000f0: e1d2 c300 0000 0000 0001 0000 0000 0000  ................&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
0x34 read:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
0000000: 0000 5200 0000 000c 0000 0000 683c 0100  ..R.........h&amp;lt;..&lt;br /&gt;
0000010: 3000 060f 0000 0011 0c00 001c 3005 0005  0...........0...&lt;br /&gt;
0000020: 0715 17ff 7f00 4001 e418 0000 0002 0200  ......@.........&lt;br /&gt;
0000030: 010b 0000 0006 0000 0c00 0002 0101 c7ed  ................&lt;br /&gt;
0000040: 0000 0000 0000 0000 0000 0000 0000 0000  ................&lt;br /&gt;
0000050: 0000 0000 0000 0000 0000 0000 0000 0000  ................&lt;br /&gt;
0000060: 0000 0000 0000 0000 0000 0000 0000 0000  ................&lt;br /&gt;
0000070: 0000 0000 0000 0000 0000 0000 0000 0083  ................&lt;br /&gt;
0000080: 0000 0000 0000 0000 0000 0000 0000 0000  ................&lt;br /&gt;
0000090: 0000 0000 0000 0000 0000 0000 0000 0000  ................&lt;br /&gt;
00000a0: 0000 0000 0000 0000 0000 0000 0000 0000  ................&lt;br /&gt;
00000b0: 0000 0000 0000 0000 0000 0000 0000 0085  ................&lt;br /&gt;
00000c0: 0000 0000 0000 0000 0000 0000 0000 0000  ................&lt;br /&gt;
00000d0: 0000 0000 0000 0000 0000 0000 0000 0000  ................&lt;br /&gt;
00000e0: 0000 0000 0000 0000 0000 0000 0000 0000  ................&lt;br /&gt;
00000f0: 0000 0000 0000 0000 0000 0000 0000 0004  ................&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
0x69 (CK505)&lt;br /&gt;
&lt;br /&gt;
=== Microchip PIC24FJ64GA004 ===&lt;br /&gt;
No traffic recognizable via Bus Pirate&lt;br /&gt;
&lt;br /&gt;
[[Category:Logitech Revue]]&lt;br /&gt;
[[Category:Logitech Revue|Technical]]&lt;/div&gt;</summary>
		<author><name>ASmig</name></author>
	</entry>
	<entry>
		<id>https://wiki.exploitee.rs/index.php?title=Logitech_Revue_Technical&amp;diff=644</id>
		<title>Logitech Revue Technical</title>
		<link rel="alternate" type="text/html" href="https://wiki.exploitee.rs/index.php?title=Logitech_Revue_Technical&amp;diff=644"/>
		<updated>2011-12-05T07:54:03Z</updated>

		<summary type="html">&lt;p&gt;ASmig: New section for I2C stuff&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Revue toc Inline}}&lt;br /&gt;
&lt;br /&gt;
== Update Procedure ==&lt;br /&gt;
&lt;br /&gt;
Place new update labelled &amp;quot;update.zip&amp;quot; on a USB drive, with a single partition (ie, 1st partition on a USB disk, so say &amp;quot;/dev/sdc1&amp;quot;) &lt;br /&gt;
&lt;br /&gt;
Insert into Revue in the Right most USB port (if looking at the back, closest to the power jack)&lt;br /&gt;
&lt;br /&gt;
Boot into recovery mode:&lt;br /&gt;
&lt;br /&gt;
#Plug in the box, once the fan goes low, hold the sync button. Box should reboot, keep the sync button held until image on screen.&lt;br /&gt;
#Once you see the Arrow on your screen, using your keyboard press Alt+L - usually once or twice until Formatting DATA: shows on the screen, and does not go away (&#039;&#039;&#039;Note: The key combination has changed for updates after b42732&#039;&#039;&#039;)&lt;br /&gt;
#You can then update the box, with a newer update. Downgrading fails however due to a date check.&lt;br /&gt;
&lt;br /&gt;
== Firmware Links ==&lt;br /&gt;
&lt;br /&gt;
*http://android.clients.google.com/packages/ota/logitech_ka/439c26f6af05.mp-signed-ota_update-b39389.zip&lt;br /&gt;
*http://android.clients.google.com/packages/ota/logitech_ka/52057d168e2b.mp-signed-ota_update-b39953.zip&lt;br /&gt;
*http://android.clients.google.com/packages/ota/logitech_ka/c9914396d183.mp-signed-ota_update-b42449.zip&lt;br /&gt;
*http://android.clients.google.com/packages/ota/logitech_ka/9504d579bade.mp-signed-ota_update-b42732.zip&lt;br /&gt;
*http://android.clients.google.com/packages/ota/logitech_ka/d0d70a7753a8.mp-signed-ota_update-b47773.zip&lt;br /&gt;
*http://android.clients.google.com/packages/ota/logitech_ka/4d9b9425b17f.mp-signed-ota_update-b49116.zip&lt;br /&gt;
*http://android.clients.google.com/packages/ota/logitech_ka/f008beb34df8.mp-signed-ota_update-b51795.zip&lt;br /&gt;
&lt;br /&gt;
== Kernel Revisions ==&lt;br /&gt;
For details of the Revue kernel, refer to [[Logitech Revue Kernel]]&lt;br /&gt;
&lt;br /&gt;
*Initial kernel observed on the Revue (?): 2.6.23.18-gc0a9a5fb (richard@sayan) (gcc version 4.1.2) #3 PREEMPT Sat Jul 31 15:32:56 PDT 2010&lt;br /&gt;
*439c26f6af05.mp-signed-ota_update-b39389: 2.6.23.18-g5fd8f46f (richard@mtdoom) #249 PREEMPT Tue Oct 5 09:55:20 BST 2010&lt;br /&gt;
*52057d168e2b.mp-signed-ota_update-b39953: 2.6.23.18-g5fd8f46f (richard@mtdoom) #249 PREEMPT Tue Oct 5 09:55:20 BST 2010&lt;br /&gt;
*c9914396d183.mp-signed-ota_update-b42449: 2.6.23.18-g5bba1a13 (sameer@sayan) #24 PREEMPT Fri Nov 19 11:13:31 PST 2010&lt;br /&gt;
&lt;br /&gt;
== SDK/Toolchain Support ==&lt;br /&gt;
&lt;br /&gt;
The [http://googletv-mirrored-source.googlecode.com/hg/intel-sdk/intel-sdk-toolchain.tar.bz2?r=27705a482273e3a34e8bcdbfb4fdad9afcd65e93 Intel SDK Toolchain] is available as part of Google&#039;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&#039;t have these products to root we don&#039;t know yet.)&lt;br /&gt;
&lt;br /&gt;
We have not yet documented a complete list of required dependencies but here are a few packages which might come in handy:&lt;br /&gt;
*texinfo (we encountered some issues with certain supposedly supported versions of makeinfo but updating texinfo resolved this on most systems)&lt;br /&gt;
*flex&lt;br /&gt;
*bison&lt;br /&gt;
*awk&lt;br /&gt;
*patch&lt;br /&gt;
*gcc et al&lt;br /&gt;
*build-essential (Ubuntu)&lt;br /&gt;
&lt;br /&gt;
To simplify the toolchain setup, craigdroid created [http://dl.dropbox.com/u/1886948/gtvhacker-NDK-installer.zip 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&#039;d in the script) to establish your environment:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
export CROSS_COMPILE=i686-linux-cm-&lt;br /&gt;
export LD_LIBRARY_PATH=~/googletv/sdk/i686-linux-elf/lib&lt;br /&gt;
export PATH=$PATH:~/googletv/sdk/i686-linux-elf/bin/&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== NDK Support ==&lt;br /&gt;
&lt;br /&gt;
Although at present Google has not released a proper NDK for the platform, the gtvhacker team have combined the Intel SDK Toolchain from the [http://code.google.com/p/googletv-mirrored-source/ Google TV Mirrored Source site] with the work of the [http://www.android-x86.org/ Android x86] project to provide unofficial support in the interim.&lt;br /&gt;
&lt;br /&gt;
The entire process of setting up unofficial NDK support has been simplified into an [http://dl.dropbox.com/u/1886948/gtvhacker-NDK-installer.zip 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.  &lt;br /&gt;
&lt;br /&gt;
Since this is building the Intel toolchain automatically all of the caveats regarding the Intel SDK Toolchain apply here as well.&lt;br /&gt;
&lt;br /&gt;
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:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
wget http://dl.dropbox.com/u/1886948/gtvhacker-NDK-installer.zip &amp;amp;&amp;amp; unzip gtvhacker-NDK-installer.zip &amp;amp;&amp;amp; ./gtvhacker-NDK-installer.sh&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
== Flash Hard Drive ==&lt;br /&gt;
&lt;br /&gt;
The Revue has an internal hard drive stored on an sdram chip (flash memory).  It contains the complete file system for the Revue as well as the user data (if their is not external storage provided).  More information about the layout of this file system can be found [[ GTV_FileSystem | File System Details.]]&lt;br /&gt;
&lt;br /&gt;
== Serial Output ==&lt;br /&gt;
&lt;br /&gt;
The logitech revue board contains a UART1 port on the front of the board which before receiving the boxes initial updates is active. In order to communicate with UART port you will need a USB to TTL adapter (or board that does a similar conversion). &lt;br /&gt;
&lt;br /&gt;
The pins operate at 3.3v and the port at 9600 baud with the following pinout:&lt;br /&gt;
&lt;br /&gt;
[http://i.imgur.com/xJHay.jpg UART Pinout]&lt;br /&gt;
&lt;br /&gt;
Serial output&lt;br /&gt;
&lt;br /&gt;
via: http://googletv.pastebin.com/233dZqZx&lt;br /&gt;
[[Pasted Locally]]&lt;br /&gt;
&lt;br /&gt;
== PIC Access ==&lt;br /&gt;
*There is a standard PIC access port to the right of the UART1 port. It can be accessed via a standard PIC Kit Debug board (Tested with version 2). The port has read/write access but the code is pulled from the chip as .hex file and is unreadable thus far.&lt;br /&gt;
&lt;br /&gt;
*The pinout starting from the left (pin with white square around it) corresponds to pin 1 or Vpp.The remaining pins follow the same layout. [http://www.ianstedman.co.uk/Projects/TK3_PICKit2_adaptor/Pickit2_pinout.png PIC Pinout]&lt;br /&gt;
&lt;br /&gt;
[http://googletv.pastebin.com/PBWRCAqB PIC Hex Dump] [[Local PIC Hex Dump]]&lt;br /&gt;
&lt;br /&gt;
[http://dl.dropbox.com/u/217678/Bootloader%20from%20PIC.TXT PIC Disassembly]&lt;br /&gt;
&lt;br /&gt;
== Updates ==&lt;br /&gt;
The updates contain a full set of system files (changed and unchanged), including a boot.img and a recovery.img&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;boot.img&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The thread at [http://forum.xda-developers.com/showpost.php?p=8844074&amp;amp;postcount=80 xda-developer] has the process to extract from the .img files (thx bftb0):&lt;br /&gt;
&lt;br /&gt;
&amp;quot;the &amp;quot;boot.img&amp;quot; file is in (little-endian) &amp;quot;squashfs&amp;quot; format and unpacks just fine using &amp;quot;unsquashfs&amp;quot; from the (Ubuntu 8.0.04 LTS) squashfs-tools package.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039; recovery.img&lt;br /&gt;
&lt;br /&gt;
system/boot/recovery.img is a standard Android boot image with some extra garbage (0x580 bytes) at the front. Remove it like so:&lt;br /&gt;
  dd if=system/boot/recovery.img bs=1408 skip=1 &amp;gt; recovery-ungarbaged.img&lt;br /&gt;
Unpack that like a normal Android boot image. Something like [http://android-dls.com/files/linux/split_bootimg.zip this Perl script] works well.&lt;br /&gt;
&lt;br /&gt;
The kernel (system/boot/kernel) is also a boot image with the same extra garbage at the front.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Odex files&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The .odex files can be extracted by using the following guide [http://code.google.com/p/smali/wiki/DeodexInstructions Deodex Instructions]&lt;br /&gt;
&lt;br /&gt;
== Open Ports ==&lt;br /&gt;
List nmap ports&lt;br /&gt;
&lt;br /&gt;
Normal Mode, hooked to a Dish Network DVR (622) via WiFi:&lt;br /&gt;
&lt;br /&gt;
*Nmap scan report for LogitechRevue (192.168.1.142)&lt;br /&gt;
*Host is up (0.060s latency).&lt;br /&gt;
*Not shown: 65528 closed ports&lt;br /&gt;
*PORT      STATE SERVICE&lt;br /&gt;
*53/tcp    open  domain&lt;br /&gt;
*1100/tcp  open  unknown&lt;br /&gt;
*5222/tcp  open  unknown -- [http://xmpp.org/ Extensible Messaging and Presence Protocol (XMPP) Service (http://xmpp.org/)]&lt;br /&gt;
*5223/tcp  open  unknown -- SSL port for [http://xmpp.org/ XMPP]&lt;br /&gt;
*9551/tcp  open  unknown -- [[AnyMote]] Pairing Service through IpRemoteControlService -- SSL handshake requests cert and logs show errors from [[AnyMote]]&lt;br /&gt;
*9552/tcp  open  unknown -- [[AnyMote]] Connection Port&lt;br /&gt;
*35832/tcp open  unknown&lt;br /&gt;
&lt;br /&gt;
Also of course, with root - port 5555, for ADB!&lt;br /&gt;
&lt;br /&gt;
== Available Pinouts ==&lt;br /&gt;
*UART1 --&amp;gt; Console (Bottom left = +3v3, Bottom right = interface TX, Top left = interface RX, Top right = GND) [http://i.imgur.com/xJHay.jpg UART Pinout]&lt;br /&gt;
*J3 --&amp;gt; PIC Chip Access (Pin 1 = VPP/MCLR, Pin 2 = VDD, Pin 3 = VSS, Pin 4 = ICSPDAT/PGD, Pin 5 = ICSPCLK/PGC, Pin 6 = Auxiliary)&lt;br /&gt;
*J4 --&amp;gt; Fan (Pin 1 = GND, Pin 2 = VCC +5v, Pins 3-4 = Sense/Control)&lt;br /&gt;
*J13 --&amp;gt; Unknown (Power for SATA?) - (Pin 1 = ?, Pin 2 = GND, Pin 3 = GND, Pin 4 = 5v)&lt;br /&gt;
*J20 --&amp;gt; I2C (Top left = GND, Top right = ?, Bottom left = SDA, Bottom right = SCL), I2C lines are also on XDP1 reachable, lines are without pullups and no activity is visible&lt;br /&gt;
*J24 --&amp;gt; Unknown (Pin 1 = 3.3, Pin 2 = ?, Pin 3 = ?, Pin 4 = GND)&lt;br /&gt;
*J66 --&amp;gt; (Pin1 = +3V3, Pin2 = IR-reciever to PIC PIN41, Pin3 = GND, Pin4 = D7 LED(green) to PIC PIN2, Pin6 = GND, Pin7 = D8 LED(green) to PIC PIN38, Pin8 = GND, Pin9 = IR-leds to PIC PIN37, Pin10 = 12V) Numbered from bottom left&lt;br /&gt;
*J67 --&amp;gt; USB (Pin 1 = GND, Pin 2 = D-, Pin 3 = D+, Pin 4 = FREE, Pin 5 = VCC +5V) used for RF daughter board. [http://www.chrispix.com/googleTV.jpg IMG]&lt;br /&gt;
*J68 --&amp;gt; USB (Pin 1 = VCC +5v, Pin 4 = GND, Pin 5 = NC) to WiFi module&lt;br /&gt;
*J69 --&amp;gt; USB Pinout like J67&lt;br /&gt;
*SATA1 --&amp;gt; SATA Pinout (Pin 1 = GND, Pin 2 = TXP / A+ , Pin 3 = TXN / A-, Pin 4 = GND , Pin 5 = RXN / B-, Pin 6 = RXP / B+ , Pin 7 = GND)&lt;br /&gt;
*SW1 --&amp;gt; Unknown Push Button Switch (Facing button, left = GND, right = ?)&lt;br /&gt;
*SW2 --&amp;gt; Sync Push Button Switch (Facing button, left = GND, right = GPIO somewhere?)&lt;br /&gt;
*XDP1 --&amp;gt; Intel XDP Debug Adapter [http://software.intel.com/sites/products/documentation/hpc/atom/application/device_driver_debugging.pdf Information on XDP Debugging] [ftp://download.intel.com/design/Pentium4/guides/31337301.pdf Page 23 Pinout]&lt;br /&gt;
&lt;br /&gt;
== Volume Management Configuration ==&lt;br /&gt;
Similar to other android based products, external storage can be attached and the device will attempt to mount it to /sdcard as per the following vold.conf:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
volume_sdcard {&lt;br /&gt;
    # NOTE: This path is overbroad and will capture any device on the&lt;br /&gt;
    # tatung3/tatung4 external PCI bus.  This needs to be fixed, in conjunction&lt;br /&gt;
    # with vold changes to handle logical device names (DEVPATH names are not&lt;br /&gt;
    # static, unfortunately.)&lt;br /&gt;
    media_path     /devices/pci0000:00/0000:00:01.0/0000:01:0d.1/usb2/&lt;br /&gt;
    media_type     scsi&lt;br /&gt;
    mount_point    /sdcard&lt;br /&gt;
    read_only      true&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note the interesting comment about the media_path as well as the read_only=true attribute.&lt;br /&gt;
&lt;br /&gt;
== I2C Busses ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Logitech Revue]]&lt;br /&gt;
[[Category:Logitech Revue|Technical]]&lt;/div&gt;</summary>
		<author><name>ASmig</name></author>
	</entry>
	<entry>
		<id>https://wiki.exploitee.rs/index.php?title=Logitech_Revue_Technical&amp;diff=643</id>
		<title>Logitech Revue Technical</title>
		<link rel="alternate" type="text/html" href="https://wiki.exploitee.rs/index.php?title=Logitech_Revue_Technical&amp;diff=643"/>
		<updated>2011-12-05T05:59:49Z</updated>

		<summary type="html">&lt;p&gt;ASmig: /* Available Pinouts */ A little sorting and some additions&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Revue toc Inline}}&lt;br /&gt;
&lt;br /&gt;
== Update Procedure ==&lt;br /&gt;
&lt;br /&gt;
Place new update labelled &amp;quot;update.zip&amp;quot; on a USB drive, with a single partition (ie, 1st partition on a USB disk, so say &amp;quot;/dev/sdc1&amp;quot;) &lt;br /&gt;
&lt;br /&gt;
Insert into Revue in the Right most USB port (if looking at the back, closest to the power jack)&lt;br /&gt;
&lt;br /&gt;
Boot into recovery mode:&lt;br /&gt;
&lt;br /&gt;
#Plug in the box, once the fan goes low, hold the sync button. Box should reboot, keep the sync button held until image on screen.&lt;br /&gt;
#Once you see the Arrow on your screen, using your keyboard press Alt+L - usually once or twice until Formatting DATA: shows on the screen, and does not go away (&#039;&#039;&#039;Note: The key combination has changed for updates after b42732&#039;&#039;&#039;)&lt;br /&gt;
#You can then update the box, with a newer update. Downgrading fails however due to a date check.&lt;br /&gt;
&lt;br /&gt;
== Firmware Links ==&lt;br /&gt;
&lt;br /&gt;
*http://android.clients.google.com/packages/ota/logitech_ka/439c26f6af05.mp-signed-ota_update-b39389.zip&lt;br /&gt;
*http://android.clients.google.com/packages/ota/logitech_ka/52057d168e2b.mp-signed-ota_update-b39953.zip&lt;br /&gt;
*http://android.clients.google.com/packages/ota/logitech_ka/c9914396d183.mp-signed-ota_update-b42449.zip&lt;br /&gt;
*http://android.clients.google.com/packages/ota/logitech_ka/9504d579bade.mp-signed-ota_update-b42732.zip&lt;br /&gt;
*http://android.clients.google.com/packages/ota/logitech_ka/d0d70a7753a8.mp-signed-ota_update-b47773.zip&lt;br /&gt;
*http://android.clients.google.com/packages/ota/logitech_ka/4d9b9425b17f.mp-signed-ota_update-b49116.zip&lt;br /&gt;
*http://android.clients.google.com/packages/ota/logitech_ka/f008beb34df8.mp-signed-ota_update-b51795.zip&lt;br /&gt;
&lt;br /&gt;
== Kernel Revisions ==&lt;br /&gt;
For details of the Revue kernel, refer to [[Logitech Revue Kernel]]&lt;br /&gt;
&lt;br /&gt;
*Initial kernel observed on the Revue (?): 2.6.23.18-gc0a9a5fb (richard@sayan) (gcc version 4.1.2) #3 PREEMPT Sat Jul 31 15:32:56 PDT 2010&lt;br /&gt;
*439c26f6af05.mp-signed-ota_update-b39389: 2.6.23.18-g5fd8f46f (richard@mtdoom) #249 PREEMPT Tue Oct 5 09:55:20 BST 2010&lt;br /&gt;
*52057d168e2b.mp-signed-ota_update-b39953: 2.6.23.18-g5fd8f46f (richard@mtdoom) #249 PREEMPT Tue Oct 5 09:55:20 BST 2010&lt;br /&gt;
*c9914396d183.mp-signed-ota_update-b42449: 2.6.23.18-g5bba1a13 (sameer@sayan) #24 PREEMPT Fri Nov 19 11:13:31 PST 2010&lt;br /&gt;
&lt;br /&gt;
== SDK/Toolchain Support ==&lt;br /&gt;
&lt;br /&gt;
The [http://googletv-mirrored-source.googlecode.com/hg/intel-sdk/intel-sdk-toolchain.tar.bz2?r=27705a482273e3a34e8bcdbfb4fdad9afcd65e93 Intel SDK Toolchain] is available as part of Google&#039;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&#039;t have these products to root we don&#039;t know yet.)&lt;br /&gt;
&lt;br /&gt;
We have not yet documented a complete list of required dependencies but here are a few packages which might come in handy:&lt;br /&gt;
*texinfo (we encountered some issues with certain supposedly supported versions of makeinfo but updating texinfo resolved this on most systems)&lt;br /&gt;
*flex&lt;br /&gt;
*bison&lt;br /&gt;
*awk&lt;br /&gt;
*patch&lt;br /&gt;
*gcc et al&lt;br /&gt;
*build-essential (Ubuntu)&lt;br /&gt;
&lt;br /&gt;
To simplify the toolchain setup, craigdroid created [http://dl.dropbox.com/u/1886948/gtvhacker-NDK-installer.zip 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&#039;d in the script) to establish your environment:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
export CROSS_COMPILE=i686-linux-cm-&lt;br /&gt;
export LD_LIBRARY_PATH=~/googletv/sdk/i686-linux-elf/lib&lt;br /&gt;
export PATH=$PATH:~/googletv/sdk/i686-linux-elf/bin/&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== NDK Support ==&lt;br /&gt;
&lt;br /&gt;
Although at present Google has not released a proper NDK for the platform, the gtvhacker team have combined the Intel SDK Toolchain from the [http://code.google.com/p/googletv-mirrored-source/ Google TV Mirrored Source site] with the work of the [http://www.android-x86.org/ Android x86] project to provide unofficial support in the interim.&lt;br /&gt;
&lt;br /&gt;
The entire process of setting up unofficial NDK support has been simplified into an [http://dl.dropbox.com/u/1886948/gtvhacker-NDK-installer.zip 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.  &lt;br /&gt;
&lt;br /&gt;
Since this is building the Intel toolchain automatically all of the caveats regarding the Intel SDK Toolchain apply here as well.&lt;br /&gt;
&lt;br /&gt;
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:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
wget http://dl.dropbox.com/u/1886948/gtvhacker-NDK-installer.zip &amp;amp;&amp;amp; unzip gtvhacker-NDK-installer.zip &amp;amp;&amp;amp; ./gtvhacker-NDK-installer.sh&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
== Flash Hard Drive ==&lt;br /&gt;
&lt;br /&gt;
The Revue has an internal hard drive stored on an sdram chip (flash memory).  It contains the complete file system for the Revue as well as the user data (if their is not external storage provided).  More information about the layout of this file system can be found [[ GTV_FileSystem | File System Details.]]&lt;br /&gt;
&lt;br /&gt;
== Serial Output ==&lt;br /&gt;
&lt;br /&gt;
The logitech revue board contains a UART1 port on the front of the board which before receiving the boxes initial updates is active. In order to communicate with UART port you will need a USB to TTL adapter (or board that does a similar conversion). &lt;br /&gt;
&lt;br /&gt;
The pins operate at 3.3v and the port at 9600 baud with the following pinout:&lt;br /&gt;
&lt;br /&gt;
[http://i.imgur.com/xJHay.jpg UART Pinout]&lt;br /&gt;
&lt;br /&gt;
Serial output&lt;br /&gt;
&lt;br /&gt;
via: http://googletv.pastebin.com/233dZqZx&lt;br /&gt;
[[Pasted Locally]]&lt;br /&gt;
&lt;br /&gt;
== PIC Access ==&lt;br /&gt;
*There is a standard PIC access port to the right of the UART1 port. It can be accessed via a standard PIC Kit Debug board (Tested with version 2). The port has read/write access but the code is pulled from the chip as .hex file and is unreadable thus far.&lt;br /&gt;
&lt;br /&gt;
*The pinout starting from the left (pin with white square around it) corresponds to pin 1 or Vpp.The remaining pins follow the same layout. [http://www.ianstedman.co.uk/Projects/TK3_PICKit2_adaptor/Pickit2_pinout.png PIC Pinout]&lt;br /&gt;
&lt;br /&gt;
[http://googletv.pastebin.com/PBWRCAqB PIC Hex Dump] [[Local PIC Hex Dump]]&lt;br /&gt;
&lt;br /&gt;
[http://dl.dropbox.com/u/217678/Bootloader%20from%20PIC.TXT PIC Disassembly]&lt;br /&gt;
&lt;br /&gt;
== Updates ==&lt;br /&gt;
The updates contain a full set of system files (changed and unchanged), including a boot.img and a recovery.img&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;boot.img&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The thread at [http://forum.xda-developers.com/showpost.php?p=8844074&amp;amp;postcount=80 xda-developer] has the process to extract from the .img files (thx bftb0):&lt;br /&gt;
&lt;br /&gt;
&amp;quot;the &amp;quot;boot.img&amp;quot; file is in (little-endian) &amp;quot;squashfs&amp;quot; format and unpacks just fine using &amp;quot;unsquashfs&amp;quot; from the (Ubuntu 8.0.04 LTS) squashfs-tools package.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039; recovery.img&lt;br /&gt;
&lt;br /&gt;
system/boot/recovery.img is a standard Android boot image with some extra garbage (0x580 bytes) at the front. Remove it like so:&lt;br /&gt;
  dd if=system/boot/recovery.img bs=1408 skip=1 &amp;gt; recovery-ungarbaged.img&lt;br /&gt;
Unpack that like a normal Android boot image. Something like [http://android-dls.com/files/linux/split_bootimg.zip this Perl script] works well.&lt;br /&gt;
&lt;br /&gt;
The kernel (system/boot/kernel) is also a boot image with the same extra garbage at the front.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Odex files&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The .odex files can be extracted by using the following guide [http://code.google.com/p/smali/wiki/DeodexInstructions Deodex Instructions]&lt;br /&gt;
&lt;br /&gt;
== Open Ports ==&lt;br /&gt;
List nmap ports&lt;br /&gt;
&lt;br /&gt;
Normal Mode, hooked to a Dish Network DVR (622) via WiFi:&lt;br /&gt;
&lt;br /&gt;
*Nmap scan report for LogitechRevue (192.168.1.142)&lt;br /&gt;
*Host is up (0.060s latency).&lt;br /&gt;
*Not shown: 65528 closed ports&lt;br /&gt;
*PORT      STATE SERVICE&lt;br /&gt;
*53/tcp    open  domain&lt;br /&gt;
*1100/tcp  open  unknown&lt;br /&gt;
*5222/tcp  open  unknown -- [http://xmpp.org/ Extensible Messaging and Presence Protocol (XMPP) Service (http://xmpp.org/)]&lt;br /&gt;
*5223/tcp  open  unknown -- SSL port for [http://xmpp.org/ XMPP]&lt;br /&gt;
*9551/tcp  open  unknown -- [[AnyMote]] Pairing Service through IpRemoteControlService -- SSL handshake requests cert and logs show errors from [[AnyMote]]&lt;br /&gt;
*9552/tcp  open  unknown -- [[AnyMote]] Connection Port&lt;br /&gt;
*35832/tcp open  unknown&lt;br /&gt;
&lt;br /&gt;
Also of course, with root - port 5555, for ADB!&lt;br /&gt;
&lt;br /&gt;
== Available Pinouts ==&lt;br /&gt;
*UART1 --&amp;gt; Console (Bottom left = +3v3, Bottom right = interface TX, Top left = interface RX, Top right = GND) [http://i.imgur.com/xJHay.jpg UART Pinout]&lt;br /&gt;
*J3 --&amp;gt; PIC Chip Access (Pin 1 = VPP/MCLR, Pin 2 = VDD, Pin 3 = VSS, Pin 4 = ICSPDAT/PGD, Pin 5 = ICSPCLK/PGC, Pin 6 = Auxiliary)&lt;br /&gt;
*J4 --&amp;gt; Fan (Pin 1 = GND, Pin 2 = VCC +5v, Pins 3-4 = Sense/Control)&lt;br /&gt;
*J13 --&amp;gt; Unknown (Power for SATA?) - (Pin 1 = ?, Pin 2 = GND, Pin 3 = GND, Pin 4 = 5v)&lt;br /&gt;
*J20 --&amp;gt; I2C (Top left = GND, Top right = ?, Bottom left = SDA, Bottom right = SCL), I2C lines are also on XDP1 reachable, lines are without pullups and no activity is visible&lt;br /&gt;
*J24 --&amp;gt; Unknown (Pin 1 = 3.3, Pin 2 = ?, Pin 3 = ?, Pin 4 = GND)&lt;br /&gt;
*J66 --&amp;gt; (Pin1 = +3V3, Pin2 = IR-reciever to PIC PIN41, Pin3 = GND, Pin4 = D7 LED(green) to PIC PIN2, Pin6 = GND, Pin7 = D8 LED(green) to PIC PIN38, Pin8 = GND, Pin9 = IR-leds to PIC PIN37, Pin10 = 12V) Numbered from bottom left&lt;br /&gt;
*J67 --&amp;gt; USB (Pin 1 = GND, Pin 2 = D-, Pin 3 = D+, Pin 4 = FREE, Pin 5 = VCC +5V) used for RF daughter board. [http://www.chrispix.com/googleTV.jpg IMG]&lt;br /&gt;
*J68 --&amp;gt; USB (Pin 1 = VCC +5v, Pin 4 = GND, Pin 5 = NC) to WiFi module&lt;br /&gt;
*J69 --&amp;gt; USB Pinout like J67&lt;br /&gt;
*SATA1 --&amp;gt; SATA Pinout (Pin 1 = GND, Pin 2 = TXP / A+ , Pin 3 = TXN / A-, Pin 4 = GND , Pin 5 = RXN / B-, Pin 6 = RXP / B+ , Pin 7 = GND)&lt;br /&gt;
*SW1 --&amp;gt; Unknown Push Button Switch (Facing button, left = GND, right = ?)&lt;br /&gt;
*SW2 --&amp;gt; Sync Push Button Switch (Facing button, left = GND, right = GPIO somewhere?)&lt;br /&gt;
*XDP1 --&amp;gt; Intel XDP Debug Adapter [http://software.intel.com/sites/products/documentation/hpc/atom/application/device_driver_debugging.pdf Information on XDP Debugging] [ftp://download.intel.com/design/Pentium4/guides/31337301.pdf Page 23 Pinout]&lt;br /&gt;
[[Category:Logitech Revue]]&lt;br /&gt;
&lt;br /&gt;
== Volume Management Configuration ==&lt;br /&gt;
Similar to other android based products, external storage can be attached and the device will attempt to mount it to /sdcard as per the following vold.conf:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
volume_sdcard {&lt;br /&gt;
    # NOTE: This path is overbroad and will capture any device on the&lt;br /&gt;
    # tatung3/tatung4 external PCI bus.  This needs to be fixed, in conjunction&lt;br /&gt;
    # with vold changes to handle logical device names (DEVPATH names are not&lt;br /&gt;
    # static, unfortunately.)&lt;br /&gt;
    media_path     /devices/pci0000:00/0000:00:01.0/0000:01:0d.1/usb2/&lt;br /&gt;
    media_type     scsi&lt;br /&gt;
    mount_point    /sdcard&lt;br /&gt;
    read_only      true&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note the interesting comment about the media_path as well as the read_only=true attribute.&lt;br /&gt;
[[Category:Logitech Revue|Technical]]&lt;/div&gt;</summary>
		<author><name>ASmig</name></author>
	</entry>
</feed>