<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>Hacking the 2Wire</title>
	<atom:link href="http://hackingbtbusinesshub.wordpress.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://hackingbtbusinesshub.wordpress.com</link>
	<description>Discovering the inner intrigue of the 2Wire modem family</description>
	<lastBuildDate>Sat, 18 May 2013 19:18:07 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
<cloud domain='hackingbtbusinesshub.wordpress.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://s2.wp.com/i/buttonw-com.png</url>
		<title>Hacking the 2Wire</title>
		<link>http://hackingbtbusinesshub.wordpress.com</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://hackingbtbusinesshub.wordpress.com/osd.xml" title="Hacking the 2Wire" />
	<atom:link rel='hub' href='http://hackingbtbusinesshub.wordpress.com/?pushpress=hub'/>
		<item>
		<title>Re-programming the 2Wire NAND flash IC</title>
		<link>http://hackingbtbusinesshub.wordpress.com/2012/10/25/reprogramming-the-2wire-nand-flash-ic/</link>
		<comments>http://hackingbtbusinesshub.wordpress.com/2012/10/25/reprogramming-the-2wire-nand-flash-ic/#comments</comments>
		<pubDate>Thu, 25 Oct 2012 21:09:12 +0000</pubDate>
		<dc:creator>asbokid</dc:creator>
				<category><![CDATA[ECC]]></category>
		<category><![CDATA[Electronics]]></category>
		<category><![CDATA[Error Correcting Code]]></category>
		<category><![CDATA[Flash Translation Layer]]></category>
		<category><![CDATA[ftl]]></category>
		<category><![CDATA[Hamming Code]]></category>
		<category><![CDATA[NAND flash]]></category>
		<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[XML]]></category>

		<guid isPermaLink="false">http://hackingbtbusinesshub.wordpress.com/?p=2802</guid>
		<description><![CDATA[Californian hacker RyanC suggested another method for unlocking the 2Wires:  re-purposing a SmartMedia or xD-Picture card reader to program the NAND flash memory. [1] The SmartMedia format uses the standard ONFI command set for reading and programming the NAND flash. The xD-Picture specs are slightly more involved, being a superset of ONFI. Simple, so far? 2Wire, [&#8230;]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=hackingbtbusinesshub.wordpress.com&#038;blog=26735029&#038;post=2802&#038;subd=hackingbtbusinesshub&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p>Californian hacker <a title="RyanC" href="https://plus.google.com/102161594653790479451" target="_blank"><strong><em>RyanC</em></strong></a> suggested another method for unlocking the 2Wires:  re-purposing a <em>SmartMedia</em> or <em>xD-Picture</em> card reader to program the NAND flash memory. [1]</p>
<p>The <em>SmartMedia</em> format uses the standard ONFI command set for reading and programming the NAND flash. The <em>xD-Picture</em> specs are slightly more involved, being a superset of ONFI.</p>
<p>Simple, so far?</p>
<p>2Wire, however, has its own flash translation layer (FTL) to hold the logical-to-physical block mapping.  This mapping data is stored in the out-of-band (OOB) area of the NAND page.  Unfortunately, the average flash card reader cannot program arbitrary data to the OOB area, so can&#8217;t be used to reprogram a 2Wire flash.  All is not lost though..</p>
<p>Aside the professional NAND programmers costing $2000 or more, there is one consumer-grade NAND controller IC which offers raw read and write access to all areas of the flash device. The IC, codenamed the <em><strong>Alauda</strong>, </em>is something of a mystery. No one is even sure who developed it, but it was probably on behalf of <em>Fuji</em> and/or <em>Olympus</em>.</p>
<p>The <em>Alauda</em> IC has a USB peripheral controller to interface very simply with the PC. This allows easy transfer of control messages and page data to the raw NAND device.  And it doesn&#8217;t matter if the NAND chip is embedded in a camera card, or in a TSOP48 surface mount package, as in the case of the 2Wire.</p>
<p>It was perhaps <em><b><a href="http://busydizzys.com/index.php/2010/12/24/reading-embedded-flash-chips-nand-tsop-without-removal" target="_NEW">BrendanU</a></b></em> who first publicly documented the capabilities of Alauda-based card readers. [2] An open source kernel driver was then developed for the Alauda by legendary Linux hacker <a title="Daniel Drake" href="http://www.reactivated.net/weblog/" target="_blank"><strong><em>Daniel Drake</em></strong></a>.[3]   <a title="Cory1492" href="http://www.xboxhacker.org/index.php?action=profile;u=15891" target="_blank"><strong><em>Cory1492</em></strong></a>, a well-known XBox and PSP hacker, ported Daniel&#8217;s code, and built it against the userspace USB library, <em>libusb</em>. [4]   Cory&#8217;s efforts have made the tool available for most Unix platforms and even for Microsoft Windows.</p>
<div class="wp-caption aligncenter" style="width: 543px"><a href="http://hackingbtbusinesshub.files.wordpress.com/2012/10/alauda_reader-3.jpg"><img class="    " title="alauda_reader.3" alt="" src="http://hackingbtbusinesshub.files.wordpress.com/2012/10/alauda_reader-3.jpg?w=533&#038;h=518" width="533" height="518" /></a><p class="wp-caption-text">Alauda NAND flash controller harnessed to TSOP48 cradle<br />256Mbit NAND from 2Wire board loose beneath<br />(click to enlarge)</p></div>
<div id="attachment_2829" class="wp-caption aligncenter" style="width: 483px"><a href="http://hackingbtbusinesshub.files.wordpress.com/2012/10/alauda-ic.jpg"><img class=" wp-image-2829 " title="alauda-ic" alt="" src="http://hackingbtbusinesshub.files.wordpress.com/2012/10/alauda-ic.jpg?w=473&#038;h=344" width="473" height="344" /></a><p class="wp-caption-text">The <em><strong>Alauda</strong></em> NAND controller IC<br />(click to enlarge)</p></div>
<p>The plan to exploit this hack and hardware was described earlier.  Briefly:</p>
<ul>
<li>Gently lift the NAND flash IC off the PCB with a hot-air gun;</li>
<li>Dump contents with a NAND reader. For reasons above, the Alauda IC is ideal;</li>
<li>Rewrite “initd” XML table to re-enable secure shell daemon. See: <a href="http://pastebin.com/ss8sqMdu" target="_NEW">http://pastebin.com/ss8sqMdu</a></li>
<li>Rewrite “user” XML table with new root password. See: <a href="http://pastebin.com/gucCEM3H" target="_NEW">http://pastebin.com/gucCEM3H</a></li>
<li>Update ECC in OOB areas of all modified pages. See: <a href="http://hackingbtbusinesshub.wordpress.com/2012/03/12/2wires-nand-flash-error-correcting-code-ecc/" target="_NEW">http://hack..error-correcting-code-ecc/</a></li>
<li>Re-program the modified NAND pages;</li>
<li>Re-install NAND IC on the 2Wire PCB;</li>
<li>Fingers crossed and boot!</li>
</ul>
<div id="attachment_2873" class="wp-caption aligncenter" style="width: 498px"><a href="http://hackingbtbusinesshub.files.wordpress.com/2012/10/alauda_readnand2.png"><img class=" wp-image-2873  " title="alauda_readnand2" alt="" src="http://hackingbtbusinesshub.files.wordpress.com/2012/10/alauda_readnand2.png?w=488&#038;h=818" width="488" height="818" /></a><p class="wp-caption-text">Userspace tool for <strong><em>Alauda</em></strong> NAND reader by <strong><em>Cory1492</em></strong></p></div>
<p><strong>UPDATE:</strong></p>
<p>This method was just trialled several times. While the NAND reading and writing works fine, the 2Wire board still won&#8217;t boot with our modified firmware image. The device just hangs with a solid red LED.</p>
<p>The search for that elusive 2Wire hack continues!</p>
<p>As for the NAND hack in general, it could be very useful in a range of other applications. Whether for unlocking routers, digital TV set-top boxes, or for reflashing PC BIOS chips, etc.</p>
<p>EDIT:</p>
<p>There are some more notes in the comments below. In the dueness of time, it can be properly documented and referenced.  The beauty of this NAND reader is that it costs scarcely $10 to make.</p>
<p>[1] <a href="https://plus.google.com/102161594653790479451/posts" target="_blank">https://plus.google.com/102161594653790479451/posts</a><br />
[2] <a href="http://www.uchobby.com/index.php/2007/05/05/read-embedded-flash-chips/">http://www.uchobby.com/index.php/2007/05/05/read-embedded-flash-chips/</a><br />
[3] <a href="http://www.reactivated.net/weblog/" target="_blank">http://www.reactivated.net/weblog/</a><br />
[4] <span style="text-decoration:line-through;"><a href="http://www.xboxhacker.org/index.php?action=profile;u=15891" target="_blank">http://www.xboxhacker.org/index.php?action=profile;u=15891</a></span> <span style="color:#ff0000;">DEAD LINK</span><br />
Mirrored at <a href="http://docs.google.com/folder/d/0B6wW18mYskvBOWE2OGQ5NzAtZjc4ZS00MjNkLWE5ODAtMjZkMjYwZTZkMmVj/edit" target="_NEW">http://docs.google.com/folder/d/0B6wW18mYskvBOWE2OGQ5NzAtZjc4ZS00MjNkLWE5ODAtMjZkMjYwZTZkMmVj/edit</a></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/hackingbtbusinesshub.wordpress.com/2802/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/hackingbtbusinesshub.wordpress.com/2802/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=hackingbtbusinesshub.wordpress.com&#038;blog=26735029&#038;post=2802&#038;subd=hackingbtbusinesshub&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://hackingbtbusinesshub.wordpress.com/2012/10/25/reprogramming-the-2wire-nand-flash-ic/feed/</wfw:commentRss>
		<slash:comments>42</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/40874fd91544f3d43ba71ff0e699cdbe?s=96&#38;d=monsterid&#38;r=G" medium="image">
			<media:title type="html">asbokid</media:title>
		</media:content>

		<media:content url="http://hackingbtbusinesshub.files.wordpress.com/2012/10/alauda_reader-3.jpg" medium="image">
			<media:title type="html">alauda_reader.3</media:title>
		</media:content>

		<media:content url="http://hackingbtbusinesshub.files.wordpress.com/2012/10/alauda-ic.jpg" medium="image">
			<media:title type="html">alauda-ic</media:title>
		</media:content>

		<media:content url="http://hackingbtbusinesshub.files.wordpress.com/2012/10/alauda_readnand2.png" medium="image">
			<media:title type="html">alauda_readnand2</media:title>
		</media:content>
	</item>
		<item>
		<title>Suitable Mini Edge Card Socket?</title>
		<link>http://hackingbtbusinesshub.wordpress.com/2012/10/22/suitable-mini-edge-card-socket/</link>
		<comments>http://hackingbtbusinesshub.wordpress.com/2012/10/22/suitable-mini-edge-card-socket/#comments</comments>
		<pubDate>Mon, 22 Oct 2012 19:42:28 +0000</pubDate>
		<dc:creator>asbokid</dc:creator>
				<category><![CDATA[Electronics]]></category>
		<category><![CDATA[JTAG]]></category>

		<guid isPermaLink="false">http://hackingbtbusinesshub.wordpress.com/?p=2784</guid>
		<description><![CDATA[Earlier, we had great difficulty finding a connector to fit the JTAG/I2C port on the 2Wire PCBs. In the end, something usable was fashioned out of a Sullins PCIe edge card socket. However, the connector below could be a better, low-cost solution. Connector specialist, Samtec, stocks the MEC-1 series socket and it looks very promising [&#8230;]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=hackingbtbusinesshub.wordpress.com&#038;blog=26735029&#038;post=2784&#038;subd=hackingbtbusinesshub&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p>Earlier, we had great difficulty finding a connector to fit the JTAG/I2C port on the 2Wire PCBs. In the end, something usable was fashioned out of a <em>Sullins</em> PCIe edge card socket. However, the connector below could be a better, low-cost solution.</p>
<p>Connector specialist, <em><strong>Samtec</strong></em>, stocks the <em><strong>MEC-1</strong></em> series socket and it looks very promising for hacking the <em>2Wire</em>. [1] [2]    Infact, it may be the very connector that <em>2Wire / Pace</em> uses to re-flash and unbrick these devices.</p>
<div id="attachment_2785" class="wp-caption aligncenter" style="width: 418px"><a href="http://hackingbtbusinesshub.files.wordpress.com/2012/10/mec1-16-seriesb.jpg"><img class=" wp-image-2790 " title="MEC1-16 SERIESb" alt="" src="http://hackingbtbusinesshub.files.wordpress.com/2012/10/mec1-16-seriesb.jpg?w=408&#038;h=408" height="408" width="408" /></a><p class="wp-caption-text">Samtec MEC1-108-02-F-D-A</p></div>
<div class="wp-caption aligncenter" style="width: 403px"><img class="   " title="http://hackingbtbusinesshub.files.wordpress.com/2012/01/2wirecardedgepinout_800px.jpg?w=393&#038;h=368" alt="" src="http://hackingbtbusinesshub.files.wordpress.com/2012/01/2wirecardedgepinout_800px.jpg?w=393&#038;h=368" height="368" width="393" /><p class="wp-caption-text">The 1.0mm pitch dual row card edge connector</p></div>
<p>[1] <a href="http://www.samtec.com/documents/webfiles/pdf/MEC1.PDF" target="_NEW">http://www.samtec.com/documents/webfiles/pdf/MEC1.PDF</a><br />
[2] <a href="http://hackingbtbusinesshub.files.wordpress.com/2012/10/320918.pdf" target="_NEW">http://hackingbtbusinesshub.files.wordpress.com/2012/10/320918.pdf</a></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/hackingbtbusinesshub.wordpress.com/2784/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/hackingbtbusinesshub.wordpress.com/2784/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=hackingbtbusinesshub.wordpress.com&#038;blog=26735029&#038;post=2784&#038;subd=hackingbtbusinesshub&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://hackingbtbusinesshub.wordpress.com/2012/10/22/suitable-mini-edge-card-socket/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/40874fd91544f3d43ba71ff0e699cdbe?s=96&#38;d=monsterid&#38;r=G" medium="image">
			<media:title type="html">asbokid</media:title>
		</media:content>

		<media:content url="http://hackingbtbusinesshub.files.wordpress.com/2012/10/mec1-16-seriesb.jpg" medium="image">
			<media:title type="html">MEC1-16 SERIESb</media:title>
		</media:content>

		<media:content url="http://hackingbtbusinesshub.files.wordpress.com/2012/01/2wirecardedgepinout_800px.jpg" medium="image">
			<media:title type="html">http://hackingbtbusinesshub.files.wordpress.com/2012/01/2wirecardedgepinout_800px.jpg</media:title>
		</media:content>
	</item>
		<item>
		<title>PCB photo of 2Wire 2701HGV-E</title>
		<link>http://hackingbtbusinesshub.wordpress.com/2012/04/06/pcb-photo-of-2wire-2701hgv-e/</link>
		<comments>http://hackingbtbusinesshub.wordpress.com/2012/04/06/pcb-photo-of-2wire-2701hgv-e/#comments</comments>
		<pubDate>Fri, 06 Apr 2012 19:36:22 +0000</pubDate>
		<dc:creator>asbokid</dc:creator>
				<category><![CDATA[2701]]></category>
		<category><![CDATA[Ares]]></category>
		<category><![CDATA[Electronics]]></category>
		<category><![CDATA[Pace plc]]></category>
		<category><![CDATA[Teardown]]></category>
		<category><![CDATA[TM3260]]></category>
		<category><![CDATA[TriMedia]]></category>

		<guid isPermaLink="false">http://hackingbtbusinesshub.wordpress.com/?p=2746</guid>
		<description><![CDATA[Below is a nice clear photograph of the PCB in a 2Wire 2701HGV-E. The photo is attributed to &#8216;seya&#8216;, a contributor to a discussion thread on right.com.cn, a Chinese language web forum. [1]: We can see that the 2701HGV-E is driven by a 2Wire Ares, a TriMedia five-issue slot VLIW CPU.   On the DSL [&#8230;]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=hackingbtbusinesshub.wordpress.com&#038;blog=26735029&#038;post=2746&#038;subd=hackingbtbusinesshub&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p>Below is a nice clear photograph of the PCB in a <em>2Wire 2701HGV-E</em>.</p>
<p>The photo is attributed to &#8216;<em>seya</em>&#8216;, a contributor to a discussion thread on <em>right.com.cn</em>, a Chinese language web forum. [1]:</p>
<p>We can see that the <em>2701HGV-E</em> is driven by a <em>2Wire Ares, a TriMedia</em> five-issue slot VLIW CPU.   On the DSL side, the <em>2701HGV-E</em> has a <em>SiLabs</em> SI3112-ZM1  ADSL2+ AFE and Line Driver.    It also has a USB peripheral port which isn&#8217;t present on the BT-issue <em>2701HGV-C</em>.</p>
<p><em>Pace plc</em> (new owner of <em>2Wire Inc</em>)  has published an incomplete list of 2Wire models in the <em>Home Gateway</em> family. [2]</p>
<div id="attachment_2747" class="wp-caption aligncenter" style="width: 310px"><a href="http://hackingbtbusinesshub.files.wordpress.com/2012/04/2701hgv-e.png"><img class=" wp-image-2747  " title="2701hgv-e" src="http://hackingbtbusinesshub.files.wordpress.com/2012/04/2701hgv-e.png?w=300&#038;h=264" alt="" width="300" height="264" /></a><p class="wp-caption-text">PCB of the 2Wire 2701HGV-E  (click to enlarge)</p></div>
<p>[1] <a title="http://www.right.com.cn/forum/thread-40668-1-1.html" href="http://www.right.com.cn/forum/thread-40668-1-1.html" target="_blank">http://www.right.com.cn/forum/thread-40668-1-1.html</a><br />
[2] <a title="http://www.pace.com/universal/gateways/2wire/gateway-platforms/models-and-specs/" href="http://www.pace.com/universal/gateways/2wire/gateway-platforms/models-and-specs/" target="_blank">http://www.pace.com/universal/gateways/2wire/gateway-platforms/models-and-specs/</a></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/hackingbtbusinesshub.wordpress.com/2746/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/hackingbtbusinesshub.wordpress.com/2746/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=hackingbtbusinesshub.wordpress.com&#038;blog=26735029&#038;post=2746&#038;subd=hackingbtbusinesshub&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://hackingbtbusinesshub.wordpress.com/2012/04/06/pcb-photo-of-2wire-2701hgv-e/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/40874fd91544f3d43ba71ff0e699cdbe?s=96&#38;d=monsterid&#38;r=G" medium="image">
			<media:title type="html">asbokid</media:title>
		</media:content>

		<media:content url="http://hackingbtbusinesshub.files.wordpress.com/2012/04/2701hgv-e.png?w=300" medium="image">
			<media:title type="html">2701hgv-e</media:title>
		</media:content>
	</item>
		<item>
		<title>Very Long Instruction Word Architectures, the ELI-512, and the success of VLIW today</title>
		<link>http://hackingbtbusinesshub.wordpress.com/2012/03/17/very-long-instruction-word-architectures-and-the-eli-512/</link>
		<comments>http://hackingbtbusinesshub.wordpress.com/2012/03/17/very-long-instruction-word-architectures-and-the-eli-512/#comments</comments>
		<pubDate>Sat, 17 Mar 2012 04:07:54 +0000</pubDate>
		<dc:creator>asbokid</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[VLIW]]></category>

		<guid isPermaLink="false">http://hackingbtbusinesshub.wordpress.com/?p=2713</guid>
		<description><![CDATA[If John Hennessy is the grandfather of the RISC architecture, then Joseph Fisher must the grandfather of VLIW. Linked below is Fisher&#8217;s seminal paper on VLIW from 1983, &#8220;Very Long Instruction Word Architectures and the ELI-512&#8220;.  [1] ABSTRACT By compiling ordinary scientific applications programs with a radical technique called trace scheduling, we are generating code [&#8230;]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=hackingbtbusinesshub.wordpress.com&#038;blog=26735029&#038;post=2713&#038;subd=hackingbtbusinesshub&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p>If John Hennessy is the grandfather of the RISC architecture, then Joseph Fisher must the grandfather of VLIW.</p>
<div id="attachment_2714" class="wp-caption aligncenter" style="width: 351px"><a href="http://hackingbtbusinesshub.files.wordpress.com/2012/03/joseph_fisher.jpg"><img class=" wp-image-2714 " title="joseph_fisher" src="http://hackingbtbusinesshub.files.wordpress.com/2012/03/joseph_fisher.jpg?w=341&#038;h=388" alt="" width="341" height="388" /></a><p class="wp-caption-text">Joseph Fisher, grandfather of VLIW</p></div>
<p>Linked below is Fisher&#8217;s seminal paper on VLIW from 1983, &#8220;<em>Very Long Instruction Word Architectures and the ELI-512</em>&#8220;.  [1]</p>
<blockquote><p><strong>ABSTRACT</strong> By compiling ordinary scientific applications programs with a radical technique called trace scheduling, we are generating code for a parallel machine that will run these programs faster than an equivalent sequential machine-we expect 10 to 30 times faster.</p></blockquote>
<p>Wind forward a quarter century to Spring 2009, and Fisher and colleagues Paolo Faraboschi and Cliff Young authored the article <em>&#8220;VLIW Processors: From Blue Sky to Best Buy</em>&#8221; for IEEE magazine <em>Solid State Circuits</em>: [2]</p>
<blockquote><p><strong>ABSTRACT</strong> Very long instruction word (VLIW) is an architectural style that one of the authors—Josh Fisher—proposed about 30 years ago to speed up computers and otherwise enhance their performance. Those listening to Fisher’s first public “blue-sky” expositions of this technology in the early 1980s did not generally expect it to succeed. Indeed, they would have been stunned to hear of the success these processors are enjoying today, especially as embedded processors, designed to perform special-purpose functions, usually in real time, in some kind of hardware.</p></blockquote>
<p>[1] <a title="http://inst.cs.berkeley.edu/~n252/paper/p263-fisher.pdf" href="http://inst.cs.berkeley.edu/~n252/paper/p263-fisher.pdf" target="_blank">http://inst.cs.berkeley.edu/~n252/paper/p263-fisher.pdf</a></p>
<p>[2] <a title="http://sites.google.com/site/paolofaraboschi/vliwbluesky2.pdf?attredirects=0" href="http://sites.google.com/site/paolofaraboschi/vliwbluesky2.pdf?attredirects=0" target="_blank">http://sites.google.com/site/paolofaraboschi/vliwbluesky2.pdf</a></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/hackingbtbusinesshub.wordpress.com/2713/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/hackingbtbusinesshub.wordpress.com/2713/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=hackingbtbusinesshub.wordpress.com&#038;blog=26735029&#038;post=2713&#038;subd=hackingbtbusinesshub&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://hackingbtbusinesshub.wordpress.com/2012/03/17/very-long-instruction-word-architectures-and-the-eli-512/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/40874fd91544f3d43ba71ff0e699cdbe?s=96&#38;d=monsterid&#38;r=G" medium="image">
			<media:title type="html">asbokid</media:title>
		</media:content>

		<media:content url="http://hackingbtbusinesshub.files.wordpress.com/2012/03/joseph_fisher.jpg?w=263" medium="image">
			<media:title type="html">joseph_fisher</media:title>
		</media:content>
	</item>
		<item>
		<title>2701HGV-C RSA-1024 private key</title>
		<link>http://hackingbtbusinesshub.wordpress.com/2012/03/14/2701hgv-c-rsa-1024-private-key/</link>
		<comments>http://hackingbtbusinesshub.wordpress.com/2012/03/14/2701hgv-c-rsa-1024-private-key/#comments</comments>
		<pubDate>Wed, 14 Mar 2012 04:19:49 +0000</pubDate>
		<dc:creator>asbokid</dc:creator>
				<category><![CDATA[2701]]></category>
		<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://hackingbtbusinesshub.wordpress.com/?p=2702</guid>
		<description><![CDATA[Another XML config table has been extracted from the firmware image of a 2Wire 2701HGV-C. This is the root RSA private key, broken down into its components. The hexdump of the private key can be broken down into its components: [1] [1] http://etherhack.co.uk/asymmetric/docs/rsa_1024.html<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=hackingbtbusinesshub.wordpress.com&#038;blog=26735029&#038;post=2702&#038;subd=hackingbtbusinesshub&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p>Another XML config table has been extracted from the firmware image of a 2Wire 2701HGV-C.  This is the root RSA private key,  broken down into its components.</p>
<pre class="brush: plain; title: ; notranslate">
    &lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;
    &lt;CM VERS=&quot;1&quot;&gt;
      &lt;TABLE NAME=&quot;keys&quot; B=&quot;6.3.9.41&quot; B0=&quot;6&quot; B1=&quot;3&quot; B2=&quot;9&quot; B3=&quot;41&quot;&gt;
        &lt;ROW ID=&quot;0&quot;&gt;
          &lt;P N=&quot;type&quot; T=&quot;S&quot;&gt;root_rsa&lt;/P&gt;
          &lt;P N=&quot;key_len&quot; T=&quot;U&quot;&gt;0x00000262&lt;/P&gt;
          &lt;P N=&quot;key_data&quot; T=&quot;VB&quot;&gt;
            02623082025e02010002818100ee6fe39369ab015ea885a9f91dc032f5a0b425
            aac3ce42b384108f1d6a84e29b5f7d8ef3c16899bc65a6a3c8cf55cc26e6b1f9
            569d431709e683f22cefa730429c405794d99c681619857909c4879ed8d57e39
            701ef41760a3b5837acbcf8a29118ecefdd6c378cff3e69ba284b96da238dfa1
            dc93ac0e0c8654680eda269a9d020301000102818018b3248b0fc634351f1601
            9e99d360340bbabdb02bea810461a8e97a6d9f686e19fd42c2c385576fa9c412
            7169f1045dff45ee8367751cbcdcd14c54155b67673be2452417af5231c3455f
            a48e50799f23a71f5285a22860520b62bb04d2b2edbfce29d3093813003fd0a7
            d2fafef0f51344b42298f309ab13454ac79c525cad024100f892f234d33420b5
            72a2f146f5378140426e42d8c9454c343ff49aa9118f187a405bd524b20b32f6
            ecc418df2ef6bfe83143cad9bfd8a4716285c28c9b968b83024100f58f6aca98
            3573f1ffb84cf06685664622617d2f431ad3ad6928299fc7fcf4bd3b5019bde0
            fdf2f408a58f5562958b3922940e8b2d352a8dcb244794e7f2c75f0241008435
            5bff7eaa060f9be650600642bc4b1a4a1ce1c2c349d1ac8683d01297c2541b70
            fc7fa4f6d1e7856c9331f97fa1f87463733bb78f197f79005dc67d6667d30241
            0082f80d1324ff4d69c2e3ff5530b8f185728ce081b69eb64b850c80b6d1a95e
            b716cd700d4fd4e221ba02e361bd04d98e8d9cbded091d9426b03417619a1c68
            ad024100b124ef836c3b3e881e89ae688bb29ab551e523036dd704c7de25d9aa
            f2a3f4c4cdf68440970787265064097f00a913c9280052a43df21c8e3246d726
            1faf87fc
          &lt;/P&gt;
        &lt;/ROW&gt;
      &lt;/TABLE&gt;
    &lt;/CM&gt;
</pre>
<p>The hexdump of the private key can be broken down into its components: [1]</p>
<pre class="brush: plain; title: ; notranslate">
RSA 1024-bit private key:

key length:
0262

header:
3082025e  (0x3082 == ASN.1 Sequence)

separator:
0201 (0x02 == integer and 0x01 == 1 byte long)

algorithm version:
00  (0x00 == algorithm version zero)

separator:
028181 (0x02 == integer and 0x81 == 129 bytes long)

modulus:  (129 byte modulus, starts with a null (0x00) - remove this)
00  
ee6fe39369ab015ea885a9f91dc032f5
a0b425aac3ce42b384108f1d6a84e29b
5f7d8ef3c16899bc65a6a3c8cf55cc26
e6b1f9569d431709e683f22cefa73042
9c405794d99c681619857909c4879ed8
d57e39701ef41760a3b5837acbcf8a29
118ecefdd6c378cff3e69ba284b96da2
38dfa1dc93ac0e0c8654680eda269a9d

separator:
0203  (0x02 == integer and 0x03 == 3 bytes long)

public exponent:  (3 bytes)
010001  (integer value 65537, Fermat Number F4)

separator:
028180  (0x02 == integer and 0x80 == 128 bytes long)

private exponent: (128 byte)
18b3248b0fc634351f16019e99d36034
0bbabdb02bea810461a8e97a6d9f686e
19fd42c2c385576fa9c4127169f1045d
ff45ee8367751cbcdcd14c54155b6767
3be2452417af5231c3455fa48e50799f
23a71f5285a22860520b62bb04d2b2ed
bfce29d3093813003fd0a7d2fafef0f5
1344b42298f309ab13454ac79c525cad

separator:
0241 (0x02 == integer and 0x41 == 65 bytes long)

prime1:  (65 bytes - starts with a null - remove this)
00
f892f234d33420b572a2f146f5378140
426e42d8c9454c343ff49aa9118f187a
405bd524b20b32f6ecc418df2ef6bfe8
3143cad9bfd8a4716285c28c9b968b83

separator:
0241  (0x02 == integer and 0x41 == 65 bytes long) 

prime2: (65 bytes - starts with a null - remove this)
00
f58f6aca983573f1ffb84cf066856646
22617d2f431ad3ad6928299fc7fcf4bd
3b5019bde0fdf2f408a58f5562958b39
22940e8b2d352a8dcb244794e7f2c75f

separator:
0241  (0x02 == integer and 0x41 == 65 bytes long) 

exponent1: (65 bytes - starts with a null - remove this)
00
84355bff7eaa060f9be650600642bc4b
1a4a1ce1c2c349d1ac8683d01297c254
1b70fc7fa4f6d1e7856c9331f97fa1f8
7463733bb78f197f79005dc67d6667d3

separator:
0241  (0x02 == integer and 0x41 == 65 bytes long) 

exponent2: (65 bytes - starts with a null - remove this)
00
82f80d1324ff4d69c2e3ff5530b8f185
728ce081b69eb64b850c80b6d1a95eb7
16cd700d4fd4e221ba02e361bd04d98e
8d9cbded091d9426b03417619a1c68ad

separator:
0241  (0x02 == integer and 0x41 == 65 bytes long) 

coefficient: (65 bytes - starts with a null - remove this)
00
b124ef836c3b3e881e89ae688bb29ab5
51e523036dd704c7de25d9aaf2a3f4c4
cdf68440970787265064097f00a913c9
280052a43df21c8e3246d7261faf87fc
</pre>
<p>[1] <a href="http://etherhack.co.uk/asymmetric/docs/rsa_1024.html" title="http://etherhack.co.uk/asymmetric/docs/rsa_1024.html" target="_blank">http://etherhack.co.uk/asymmetric/docs/rsa_1024.html</a></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/hackingbtbusinesshub.wordpress.com/2702/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/hackingbtbusinesshub.wordpress.com/2702/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=hackingbtbusinesshub.wordpress.com&#038;blog=26735029&#038;post=2702&#038;subd=hackingbtbusinesshub&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://hackingbtbusinesshub.wordpress.com/2012/03/14/2701hgv-c-rsa-1024-private-key/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/40874fd91544f3d43ba71ff0e699cdbe?s=96&#38;d=monsterid&#38;r=G" medium="image">
			<media:title type="html">asbokid</media:title>
		</media:content>
	</item>
		<item>
		<title>2Wire&#8217;s NAND Flash Error Correcting Code (ECC)</title>
		<link>http://hackingbtbusinesshub.wordpress.com/2012/03/12/2wires-nand-flash-error-correcting-code-ecc/</link>
		<comments>http://hackingbtbusinesshub.wordpress.com/2012/03/12/2wires-nand-flash-error-correcting-code-ecc/#comments</comments>
		<pubDate>Mon, 12 Mar 2012 02:24:52 +0000</pubDate>
		<dc:creator>asbokid</dc:creator>
				<category><![CDATA[ECC]]></category>
		<category><![CDATA[Error Correcting Code]]></category>
		<category><![CDATA[Flash Translation Layer]]></category>
		<category><![CDATA[ftl]]></category>
		<category><![CDATA[Hamming Code]]></category>
		<category><![CDATA[NAND flash]]></category>

		<guid isPermaLink="false">http://hackingbtbusinesshub.wordpress.com/?p=2674</guid>
		<description><![CDATA[Earlier we developed TriMedia code to dump the contents of the NAND flash device on the 2Wire boards. [1] The diagram below illustrates the organisation of a NAND flash memory array. In addition to a main data page area (usually 512 bytes), NAND devices also have a small &#8216;Spare Area&#8217; of extra bytes per flash [&#8230;]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=hackingbtbusinesshub.wordpress.com&#038;blog=26735029&#038;post=2674&#038;subd=hackingbtbusinesshub&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p>Earlier we developed <em>TriMedia</em> code to dump the contents of the NAND flash device on the 2Wire boards. [1]</p>
<p>The diagram below illustrates the organisation of a NAND flash memory array. In addition to a main data page area (usually 512 bytes), NAND devices also have a small &#8216;Spare Area&#8217; of extra bytes per flash page. In small NAND arrays, this &#8216;Spare Area&#8217; typically holds 16 bytes.</p>
<div id="attachment_2675" class="wp-caption aligncenter" style="width: 431px"><a href="http://hackingbtbusinesshub.files.wordpress.com/2012/03/nandflashdiagram.png"><img class=" wp-image-2675 " title="nandflashdiagram" src="http://hackingbtbusinesshub.files.wordpress.com/2012/03/nandflashdiagram.png?w=421&#038;h=469" alt="" width="421" height="469" /></a><p class="wp-caption-text">NAND Memory Array Organisation</p></div>
<p>This is what that NAND flash Spare Area looks like in a 2Wire 2701HGV:</p>
<pre class="brush: plain; title: ; notranslate">
$ xxd -g4 2701HGV-C_6.3.9.41_nand_full_oob_dump_2.img | cut -c10-44 | ./parsehex
[...]
0199200: c0cf 3c55 24ff 69a5 00ff ff96 0600 ff99  ..&lt;U$.i.........
0199400: 003f fcc0 24ff cc30 00ff ff96 0600 ff99  .?..$..0........
0199600: c3cc 0c3f 24ff c0c0 00ff ff96 0600 ff99  ...?$...........
0199800: a699 693f 24ff cf3c 00ff ff96 0600 ff99  ..i?$..&lt;........
0199a00: 0030 0cfc 24ff c33c 00ff ff96 0600 ff99  .0..$..&lt;........
[...]
</pre>
<p>The NAND Spare Area is also known as the <em>redundancy</em> area or the <em>out-of-band</em> (OOB) area of the flash page. Manufacturers use the area to store bad block information, to hold mapping data for the flash translation layer, and to store <em>Error Correction Code</em> (ECC)</p>
<p>The NAND spare area of the <em>2Wire 2701HGV</em> router was found to include the check bits of ECC.</p>
<p>The ECC scheme used by <em>2Wire</em> is based on a <em><strong>Hamming Code</strong></em> algorithm.</p>
<p>In a <em><strong>Hamming Code</strong></em> algorithm, the NAND page (aka the data block) is divided into various partitions &#8211; halves, quarters, eighths, even and odd rows and columns, and so on. Parity bits are calculated for each partition of the data block. These become the ECC bits.</p>
<p>The <em><strong>Hamming</strong></em> scheme allows an individual bit in error to be identified and corrected. The scheme can also detect (but not correct) a second errored bit in the same data block.</p>
<p>In <em>2Wire</em>&#8216;s modified <em><strong>Hamming Code</strong></em> algorithm, a data block of 256 bytes is used. This is half the size of a small NAND flash page (512 bytes).   22-bits are used for calculating the various row and column ECC parities for each 256 byte block. However, in 2Wire&#8217;s modified scheme, an additional check bit is used for the column parity ECC byte for each of those blocks. This means that for every 256 byte data block, the scheme uses 23 bits to hold all of the ECC parity bits. Three bytes are needed to store those 23 bits, leaving, it seems, one bit of those three bytes unused.</p>
<p>The 2Wire configuration of ECC requires in total six bytes from the out-of-band area for every 512 byte NAND page.</p>
<p>We examined ECC algorithms from <em>NetBSD/Atmel</em>, <em>Numonyx/Micron</em> and from <em>Frans Meulenbroeks</em> of <em>Philips NV</em>. However, no algorithm worked &#8216;out of the box&#8217;. Because of that extra bit for overall column parity, the ECC scheme used by 2Wire is slightly different to anything we could find published.  Instead, the existing ECC algorithms for calculation, detection and correction were slightly tweaked.</p>
<p>It was <em>Meulenbroeks</em>&#8216; code which we selected for tweaking, because of its simplicity and its elegance.[2]  <em>Meulenbroeks</em> uses this code as his foundation for discussing the speed optimisations of ECC algorithms. However, we chose to use his unoptimised algorithm because it is so easy to follow. And on a quad core AMD64 it&#8217;s not that slow either. The code takes a fraction of a second to calculate the ECCs for all the sectors in a 32MByte NAND image.</p>
<pre class="brush: plain; title: ; notranslate">
//  Modified from Linux kernel docs..  asbokid 2012
//  GPL v.3
//  Author: Frans Meulenbroeks
//  Copyright (C) 2008 Koninklijke Philips Electronics NV.

const char parity[256] = {
    0, 1, 1, 0, 1, 0, 0, 1, 1, 0, 0, 1, 0, 1, 1, 0,
    1, 0, 0, 1, 0, 1, 1, 0, 0, 1, 1, 0, 1, 0, 0, 1,
    1, 0, 0, 1, 0, 1, 1, 0, 0, 1, 1, 0, 1, 0, 0, 1,
    0, 1, 1, 0, 1, 0, 0, 1, 1, 0, 0, 1, 0, 1, 1, 0,
    1, 0, 0, 1, 0, 1, 1, 0, 0, 1, 1, 0, 1, 0, 0, 1,
    0, 1, 1, 0, 1, 0, 0, 1, 1, 0, 0, 1, 0, 1, 1, 0,
    0, 1, 1, 0, 1, 0, 0, 1, 1, 0, 0, 1, 0, 1, 1, 0,
    1, 0, 0, 1, 0, 1, 1, 0, 0, 1, 1, 0, 1, 0, 0, 1,
    1, 0, 0, 1, 0, 1, 1, 0, 0, 1, 1, 0, 1, 0, 0, 1,
    0, 1, 1, 0, 1, 0, 0, 1, 1, 0, 0, 1, 0, 1, 1, 0,
    0, 1, 1, 0, 1, 0, 0, 1, 1, 0, 0, 1, 0, 1, 1, 0,
    1, 0, 0, 1, 0, 1, 1, 0, 0, 1, 1, 0, 1, 0, 0, 1,
    0, 1, 1, 0, 1, 0, 0, 1, 1, 0, 0, 1, 0, 1, 1, 0,
    1, 0, 0, 1, 0, 1, 1, 0, 0, 1, 1, 0, 1, 0, 0, 1,
    1, 0, 0, 1, 0, 1, 1, 0, 0, 1, 1, 0, 1, 0, 0, 1,
    0, 1, 1, 0, 1, 0, 0, 1, 1, 0, 0, 1, 0, 1, 1, 0
};

void meul_ecc1_2wire(const unsigned char *buf, unsigned char *code)
{
    int i;
    const unsigned char *bp = buf;
    unsigned char cur, par;
    unsigned char rp0, rp1, rp2, rp3, rp4, rp5, rp6, rp7;
    unsigned char rp8, rp9, rp10, rp11, rp12, rp13, rp14, rp15;

    par = 0; rp0 = 0; rp1 = 0; rp2 = 0; rp3 = 0;
    rp4 = 0; rp5 = 0; rp6 = 0; rp7 = 0;
    rp8 = 0; rp9 = 0; rp10 = 0; rp11 = 0;
    rp12 = 0; rp13 = 0; rp14 = 0; rp15 = 0;

    for (i = 0; i &lt; 256; i++) {
        cur = *bp++;
        par ^= cur;
        if (i &amp; 0x01) rp1 ^= cur; else rp0 ^= cur;
        if (i &amp; 0x02) rp3 ^= cur; else rp2 ^= cur;
        if (i &amp; 0x04) rp5 ^= cur; else rp4 ^= cur;
        if (i &amp; 0x08) rp7 ^= cur; else rp6 ^= cur;
        if (i &amp; 0x10) rp9 ^= cur; else rp8 ^= cur;
        if (i &amp; 0x20) rp11 ^= cur; else rp10 ^= cur;
        if (i &amp; 0x40) rp13 ^= cur; else rp12 ^= cur;
        if (i &amp; 0x80) rp15 ^= cur; else rp14 ^= cur;
    }
    code[0] =
        (parity[rp7] &lt;&lt; 7) |
        (parity[rp6] &lt;&lt; 6) |
        (parity[rp5] &lt;&lt; 5) |
        (parity[rp4] &lt;&lt; 4) |
        (parity[rp3] &lt;&lt; 3) |
        (parity[rp2] &lt;&lt; 2) |
        (parity[rp1] &lt;&lt; 1) |
        (parity[rp0]);
    code[1] =
        (parity[rp15] &lt;&lt; 7) |
        (parity[rp14] &lt;&lt; 6) |
        (parity[rp13] &lt;&lt; 5) |
        (parity[rp12] &lt;&lt; 4) |
        (parity[rp11] &lt;&lt; 3) |
        (parity[rp10] &lt;&lt; 2) |
        (parity[rp9]  &lt;&lt; 1) |
        (parity[rp8]);
    code[2] =
        (parity[par &amp; 0xf0] &lt;&lt; 7) |
        (parity[par &amp; 0x0f] &lt;&lt; 6) |
        (parity[par &amp; 0xcc] &lt;&lt; 5) |
        (parity[par &amp; 0x33] &lt;&lt; 4) |
        (parity[par &amp; 0xaa] &lt;&lt; 3) |
        (parity[par &amp; 0x55] &lt;&lt; 2) |
        (parity[par &amp; 0x00] &lt;&lt; 1) |
        (parity[par &amp; 0xff]);       // asbokid added for 2wire

/*  code[0] = ~code[0];
    code[1] = ~code[1];             // asbokid removed for 2wire
    code[2] = ~code[2];  */
}
</pre>
<p>In tests the algorithm works fine on the 2Wire NAND contents. It correctly calculates the ECC for each data block and checks it against the stored ECC code in the out-of-band area of the NAND:</p>
<pre class="brush: plain; title: ; notranslate">
$ gcc -o nanddumpparse nanddumpparse.c 2wire_ecc.c

$ ./nanddumpparse
Usage: ./nanddumpparse nandimage.bin  nandimage.oob

$ ./nanddumpparse 2701HGV-C_6.3.9.41_nand_full_dump_2.img 2701HGV-C_6.3.9.41_nand_full_oob_dump_2.img

Read 33554432 bytes of NAND data from 2701HGV-C_6.3.9.41_nand_full_dump_2.img
Read 1048576 bytes of NAND OOB from 2701HGV-C_6.3.9.41_nand_full_oob_dump_2.img

[...]
Offset 0030000 - [bytes 000-255] : ECC1(stored) = c3:30:0c; ECC1(calc) = c3:30:0c;    ECC okay
Offset 0030100 - [bytes 256-511] : ECC2(stored) = 95:56:65; ECC2(calc) = 95:56:65;    ECC okay
Offset 0030200 - [bytes 000-255] : ECC1(stored) = fc:fc:f0; ECC1(calc) = fc:fc:f0;    ECC okay
Offset 0030300 - [bytes 256-511] : ECC2(stored) = a6:59:95; ECC2(calc) = a6:59:95;    ECC okay
Offset 0030400 - [bytes 000-255] : ECC1(stored) = 30:f0:3c; ECC1(calc) = 30:f0:3c;    ECC okay
Offset 0030500 - [bytes 256-511] : ECC2(stored) = fc:0f:00; ECC2(calc) = fc:0f:00;    ECC okay
Offset 0030600 - [bytes 000-255] : ECC1(stored) = 96:a9:55; ECC1(calc) = 96:a9:55;    ECC okay
Offset 0030700 - [bytes 256-511] : ECC2(stored) = a5:a6:65; ECC2(calc) = a5:a6:65;    ECC okay
Offset 0030800 - [bytes 000-255] : ECC1(stored) = 66:56:69; ECC1(calc) = 66:56:69;    ECC okay
Offset 0030900 - [bytes 256-511] : ECC2(stored) = f0:0f:fc; ECC2(calc) = f0:0f:fc;    ECC okay
Offset 0030a00 - [bytes 000-255] : ECC1(stored) = 99:56:69; ECC1(calc) = 99:56:69;    ECC okay
Offset 0030b00 - [bytes 256-511] : ECC2(stored) = 5a:56:59; ECC2(calc) = 5a:56:59;    ECC okay
Offset 0030c00 - [bytes 000-255] : ECC1(stored) = 3c:3f:00; ECC1(calc) = 3c:3f:00;    ECC okay
Offset 0030d00 - [bytes 256-511] : ECC2(stored) = 95:56:65; ECC2(calc) = 95:56:65;    ECC okay
Offset 0030e00 - [bytes 000-255] : ECC1(stored) = 65:69:95; ECC1(calc) = 65:69:95;    ECC okay
[...]
Offset 1ffbd00 - [bytes 256-511] : ECC2(stored) = 30:f0:30; ECC2(calc) = 30:f0:30;    ECC okay
Offset 1ffbe00 - [bytes 000-255] : ECC1(stored) = 6a:66:65; ECC1(calc) = 6a:66:65;    ECC okay
Offset 1ffbf00 - [bytes 256-511] : ECC2(stored) = 9a:66:95; ECC2(calc) = 9a:66:95;    ECC okay

ECC Errors: CORRECTABLE 0; UNCORRECTABLE 0
Page Utilisation: USED 30199; FREED 2979, ERASED 32347; TOTAL 65536
$
</pre>
<p>The ECC code patched for 2Wire flash contents can be downloaded from [3].</p>
<p>The 16-byte Spare Area is also safeguarded against corruption. This is achieved through a simple <em>modulo-256</em> checksum which is performed on bytes [8:14] of the Spare Area.</p>
<p>Using the Spare Area excerpt below, the <em>mod-256</em> checksum is (0&#215;00+0xff+0xff+0&#215;96+0&#215;06+0&#215;00+0xff) % 0&#215;100 = 0&#215;99, which is then stored in byte 15 of the Spare Area.</p>
<pre class="brush: plain; title: ; notranslate">
$ xxd -g4 2701HGV-C_6.3.9.41_nand_full_oob_dump_2.img | cut -c10-44 | ./parsehex
[...]
0199200: c0cf 3c55 24ff 69a5 00ff ff96 0600 ff99  ..&lt;U$.i.........
[...]
</pre>
<p>It was important to discover and document the ECC scheme used by <em>2Wire</em>. When the flash contents are modified, the ECC check bits must be re-calculated for every modified flash page. We can move on now to examine the other elements in the Out-of-Band flash area.</p>
<p>For those interested, more general information on <em><strong>Hamming Code</strong></em> for ECC in NAND Flash can be found in [4] [5] [6] [7] [8]</p>
<p>[1] <a title="http://hackingbtbusinesshub.wordpress.com/2012/01/14/the-flash-header-of-an-ares-based-2wire-2701hgv-c/" href="http://hackingbtbusinesshub.wordpress.com/2012/01/14/the-flash-header-of-an-ares-based-2wire-2701hgv-c/" target="_blank">http://hackingbtbusinesshub.wordpress.com/2012/01/14/the-flash-header-of-an-ares-based-2wire-2701hgv-c/</a><br />
[2] <a title="http://lxr.linux.no/#linux+v3.2.9/Documentation/mtd/nand_ecc.txt" href="http://lxr.linux.no/#linux+v3.2.9/Documentation/mtd/nand_ecc.txt" target="_blank">http://lxr.linux.no/#linux+v3.2.9/Documentation/mtd/nand_ecc.txt</a><br />
[3] <a title="http://docs.google.com/leaf?id=0B6wW18mYskvBX2JOenVYMVBUWDJYSGlVQ000UTBCQQ" href="http://docs.google.com/leaf?id=0B6wW18mYskvBX2JOenVYMVBUWDJYSGlVQ000UTBCQQ" target="_blank">http://docs.google.com/leaf?id=0B6wW18mYskvBX2JOenVYMVBUWDJYSGlVQ000UTBCQQ</a><br />
[4] <a title="http://www.cypress.com/?docID=19134" href="http://www.cypress.com/?docID=19134" target="_blank">http://www.cypress.com/?docID=19134</a><br />
[5] <a title="http://www.latticesemi.com/dynamic/view_document.cfm?document_id=9622" href="http://www.latticesemi.com/dynamic/view_document.cfm?document_id=9622" target="_blank">http://www.latticesemi.com/dynamic/view_document.cfm?document_id=9622</a><br />
[6] <a title="http://www.elenota.pl/datasheet_download/44776/AN1823" href="http://www.elenota.pl/datasheet_download/44776/AN1823" target="_blank">http://www.elenota.pl/datasheet_download/44776/AN1823</a><br />
[7] <a title="http://www.micron.com/~/media/Documents/Products/Technical%20Note/NAND%20Flash/tn2908_NAND_hamming_ECC_code.ashx" href="http://www.micron.com/~/media/Documents/Products/Technical%20Note/NAND%20Flash/tn2908_NAND_hamming_ECC_code.ashx" target="_blank">http://www.micron.com/~/media/Documents/Products/Technical%20Note/NAND%20Flash/tn2908_NAND_hamming_ECC_code.ashx</a><br />
[8] <a title="http://www.elnec.com/sw/samsung_ecc_algorithm_for_256b.pdf" href="http://www.elnec.com/sw/samsung_ecc_algorithm_for_256b.pdf" target="_blank">http://www.elnec.com/sw/samsung_ecc_algorithm_for_256b.pdf</a></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/hackingbtbusinesshub.wordpress.com/2674/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/hackingbtbusinesshub.wordpress.com/2674/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=hackingbtbusinesshub.wordpress.com&#038;blog=26735029&#038;post=2674&#038;subd=hackingbtbusinesshub&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://hackingbtbusinesshub.wordpress.com/2012/03/12/2wires-nand-flash-error-correcting-code-ecc/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/40874fd91544f3d43ba71ff0e699cdbe?s=96&#38;d=monsterid&#38;r=G" medium="image">
			<media:title type="html">asbokid</media:title>
		</media:content>

		<media:content url="http://hackingbtbusinesshub.files.wordpress.com/2012/03/nandflashdiagram.png" medium="image">
			<media:title type="html">nandflashdiagram</media:title>
		</media:content>
	</item>
		<item>
		<title>2701HGV-C system services XML config file</title>
		<link>http://hackingbtbusinesshub.wordpress.com/2012/03/09/2701hgv-c-network-services-config-file/</link>
		<comments>http://hackingbtbusinesshub.wordpress.com/2012/03/09/2701hgv-c-network-services-config-file/#comments</comments>
		<pubDate>Fri, 09 Mar 2012 22:38:13 +0000</pubDate>
		<dc:creator>asbokid</dc:creator>
				<category><![CDATA[Flash Translation Layer]]></category>
		<category><![CDATA[ftl]]></category>
		<category><![CDATA[NAND flash]]></category>
		<category><![CDATA[XML]]></category>

		<guid isPermaLink="false">http://hackingbtbusinesshub.wordpress.com/?p=2660</guid>
		<description><![CDATA[While poking around in the flash dump images of the 2701HGV-C to discover the FTL mapping algorithm, a number of XML config files were unearthed. One of those XML files is listed below. It contains the system services that are started at boot time. Some of those services are shown as &#8220;DISABLED&#8221;. One such service [&#8230;]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=hackingbtbusinesshub.wordpress.com&#038;blog=26735029&#038;post=2660&#038;subd=hackingbtbusinesshub&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p>While poking around in the flash dump images of the 2701HGV-C to discover the FTL mapping algorithm, a number of XML config files were unearthed.</p>
<p>One of those XML files is listed below. It contains the system services that are started at boot time.  Some of those services are shown as &#8220;DISABLED&#8221;.  One such service is sshd, the secure shell daemon.  See element ROW ID=&#8221;15&#8243; below.</p>
<p>sshd is presumably present for remote management. It would be great if it could be re-enabled to allow LAN-side shell access to the 2Wire.</p>
<p>Before that is possible, several things need doing:</p>
<ul>
<li>the flash block(s) holding that XML file needs to be erased and re-written with the enabling config element.</li>
<li>the out-of-band ECC bytes need to be re-written to reflect the new content of the data block</li>
<li>a new ssh key pair must be generated for the sshd server</li>
<li>the flash block(s) holding those keys need identifying, erasing and re-writing.</li>
</ul>
<pre class="brush: plain; title: ; notranslate">
&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;
&lt;CM VERS=&quot;1&quot;&gt;
  &lt;TABLE NAME=&quot;initd&quot; B=&quot;6.3.9.41&quot; B0=&quot;6&quot; B1=&quot;3&quot; B2=&quot;9&quot; B3=&quot;41&quot;&gt;
    &lt;ROW ID=&quot;0&quot;&gt;
      &lt;P N=&quot;name&quot; T=&quot;S&quot;&gt;mifd&lt;/P&gt;
      &lt;P N=&quot;path&quot; T=&quot;S&quot;&gt;/usr/bin/mifd&lt;/P&gt;
      &lt;P N=&quot;status&quot; T=&quot;ENUM&quot;&gt;ENABLED&lt;/P&gt;
      &lt;P N=&quot;type&quot; T=&quot;U&quot;&gt;0x00000001&lt;/P&gt;
      &lt;P N=&quot;runlevel&quot; T=&quot;U&quot;&gt;0x00000004&lt;/P&gt;
      &lt;P N=&quot;args&quot; T=&quot;M&quot;&gt;&lt;/P&gt;
    &lt;/ROW&gt;
    &lt;ROW ID=&quot;1&quot;&gt;
      &lt;P N=&quot;name&quot; T=&quot;S&quot;&gt;pkgd&lt;/P&gt;
      &lt;P N=&quot;path&quot; T=&quot;S&quot;&gt;/usr/bin/pkgd&lt;/P&gt;
      &lt;P N=&quot;status&quot; T=&quot;ENUM&quot;&gt;ENABLED&lt;/P&gt;
      &lt;P N=&quot;type&quot; T=&quot;U&quot;&gt;0x00000001&lt;/P&gt;
      &lt;P N=&quot;runlevel&quot; T=&quot;U&quot;&gt;0x00000004&lt;/P&gt;
      &lt;P N=&quot;args&quot; T=&quot;M&quot;&gt;&lt;/P&gt;
    &lt;/ROW&gt;
    &lt;ROW ID=&quot;2&quot;&gt;
      &lt;P N=&quot;name&quot; T=&quot;S&quot;&gt;pkgc&lt;/P&gt;
      &lt;P N=&quot;path&quot; T=&quot;S&quot;&gt;/usr/bin/pkgc&lt;/P&gt;
      &lt;P N=&quot;status&quot; T=&quot;ENUM&quot;&gt;ENABLED&lt;/P&gt;
      &lt;P N=&quot;type&quot; T=&quot;U&quot;&gt;0x00000002&lt;/P&gt;
      &lt;P N=&quot;runlevel&quot; T=&quot;U&quot;&gt;0x00000004&lt;/P&gt;
      &lt;P N=&quot;args&quot; T=&quot;M&quot;&gt;
        &lt;E N=&quot;arg1&quot;&gt;00032d5200&lt;/E&gt;
        &lt;E N=&quot;arg2&quot;&gt;000773797374656d00&lt;/E&gt;
        &lt;E N=&quot;arg3&quot;&gt;00032d5400&lt;/E&gt;
        &lt;E N=&quot;arg4&quot;&gt;000433303000&lt;/E&gt;
      &lt;/P&gt;
    &lt;/ROW&gt;
    &lt;ROW ID=&quot;3&quot;&gt;
      &lt;P N=&quot;name&quot; T=&quot;S&quot;&gt;pkgc&lt;/P&gt;
      &lt;P N=&quot;path&quot; T=&quot;S&quot;&gt;/usr/bin/pkgc&lt;/P&gt;
      &lt;P N=&quot;status&quot; T=&quot;ENUM&quot;&gt;ENABLED&lt;/P&gt;
      &lt;P N=&quot;type&quot; T=&quot;U&quot;&gt;0x00000002&lt;/P&gt;
      &lt;P N=&quot;runlevel&quot; T=&quot;U&quot;&gt;0x00000004&lt;/P&gt;
      &lt;P N=&quot;args&quot; T=&quot;M&quot;&gt;
        &lt;E N=&quot;arg1&quot;&gt;00032d5200&lt;/E&gt;
        &lt;E N=&quot;arg2&quot;&gt;0007636f6e66696700&lt;/E&gt;
        &lt;E N=&quot;arg3&quot;&gt;00032d5400&lt;/E&gt;
        &lt;E N=&quot;arg4&quot;&gt;000433303000&lt;/E&gt;
        &lt;E N=&quot;arg5&quot;&gt;00032d4d00&lt;/E&gt;
      &lt;/P&gt;
    &lt;/ROW&gt;
    &lt;ROW ID=&quot;4&quot;&gt;
      &lt;P N=&quot;name&quot; T=&quot;S&quot;&gt;login&lt;/P&gt;
      &lt;P N=&quot;path&quot; T=&quot;S&quot;&gt;/usr/bin/login&lt;/P&gt;
      &lt;P N=&quot;status&quot; T=&quot;ENUM&quot;&gt;ENABLED&lt;/P&gt;
      &lt;P N=&quot;type&quot; T=&quot;U&quot;&gt;0x00000001&lt;/P&gt;
      &lt;P N=&quot;runlevel&quot; T=&quot;U&quot;&gt;0x00000004&lt;/P&gt;
      &lt;P N=&quot;args&quot; T=&quot;M&quot;&gt;&lt;/P&gt;
    &lt;/ROW&gt;
    &lt;ROW ID=&quot;5&quot;&gt;
      &lt;P N=&quot;name&quot; T=&quot;S&quot;&gt;syslogd&lt;/P&gt;
      &lt;P N=&quot;path&quot; T=&quot;S&quot;&gt;/usr/bin/syslogd&lt;/P&gt;
      &lt;P N=&quot;status&quot; T=&quot;ENUM&quot;&gt;ENABLED&lt;/P&gt;
      &lt;P N=&quot;type&quot; T=&quot;U&quot;&gt;0x00000001&lt;/P&gt;
      &lt;P N=&quot;runlevel&quot; T=&quot;U&quot;&gt;0x00000004&lt;/P&gt;
      &lt;P N=&quot;args&quot; T=&quot;M&quot;&gt;&lt;/P&gt;
    &lt;/ROW&gt;
    &lt;ROW ID=&quot;6&quot;&gt;
      &lt;P N=&quot;name&quot; T=&quot;S&quot;&gt;lmd&lt;/P&gt;
      &lt;P N=&quot;path&quot; T=&quot;S&quot;&gt;/usr/bin/lmd&lt;/P&gt;
      &lt;P N=&quot;status&quot; T=&quot;ENUM&quot;&gt;ENABLED&lt;/P&gt;
      &lt;P N=&quot;type&quot; T=&quot;U&quot;&gt;0x00000001&lt;/P&gt;
      &lt;P N=&quot;runlevel&quot; T=&quot;U&quot;&gt;0x00000005&lt;/P&gt;
      &lt;P N=&quot;args&quot; T=&quot;M&quot;&gt;&lt;/P&gt;
    &lt;/ROW&gt;
    &lt;ROW ID=&quot;7&quot;&gt;
      &lt;P N=&quot;name&quot; T=&quot;S&quot;&gt;nodesd&lt;/P&gt;
      &lt;P N=&quot;path&quot; T=&quot;S&quot;&gt;/usr/bin/nodesd&lt;/P&gt;
      &lt;P N=&quot;status&quot; T=&quot;ENUM&quot;&gt;ENABLED&lt;/P&gt;
      &lt;P N=&quot;type&quot; T=&quot;U&quot;&gt;0x00000001&lt;/P&gt;
      &lt;P N=&quot;runlevel&quot; T=&quot;U&quot;&gt;0x00000006&lt;/P&gt;
      &lt;P N=&quot;args&quot; T=&quot;M&quot;&gt;&lt;/P&gt;
    &lt;/ROW&gt;
    &lt;ROW ID=&quot;8&quot;&gt;
      &lt;P N=&quot;name&quot; T=&quot;S&quot;&gt;dhcpd&lt;/P&gt;
      &lt;P N=&quot;path&quot; T=&quot;S&quot;&gt;/usr/bin/dhcpd&lt;/P&gt;
      &lt;P N=&quot;status&quot; T=&quot;ENUM&quot;&gt;ENABLED&lt;/P&gt;
      &lt;P N=&quot;type&quot; T=&quot;U&quot;&gt;0x00000001&lt;/P&gt;
      &lt;P N=&quot;runlevel&quot; T=&quot;U&quot;&gt;0x00000006&lt;/P&gt;
      &lt;P N=&quot;args&quot; T=&quot;M&quot;&gt;&lt;/P&gt;
    &lt;/ROW&gt;
    &lt;ROW ID=&quot;9&quot;&gt;
      &lt;P N=&quot;name&quot; T=&quot;S&quot;&gt;named&lt;/P&gt;
      &lt;P N=&quot;path&quot; T=&quot;S&quot;&gt;/usr/bin/named&lt;/P&gt;
      &lt;P N=&quot;status&quot; T=&quot;ENUM&quot;&gt;ENABLED&lt;/P&gt;
      &lt;P N=&quot;type&quot; T=&quot;U&quot;&gt;0x00000001&lt;/P&gt;
      &lt;P N=&quot;runlevel&quot; T=&quot;U&quot;&gt;0x00000006&lt;/P&gt;
      &lt;P N=&quot;args&quot; T=&quot;M&quot;&gt;&lt;/P&gt;
    &lt;/ROW&gt;
    &lt;ROW ID=&quot;10&quot;&gt;
      &lt;P N=&quot;name&quot; T=&quot;S&quot;&gt;rpcbind&lt;/P&gt;
      &lt;P N=&quot;path&quot; T=&quot;S&quot;&gt;/usr/bin/rpcbind&lt;/P&gt;
      &lt;P N=&quot;status&quot; T=&quot;ENUM&quot;&gt;DISABLED&lt;/P&gt;
      &lt;P N=&quot;type&quot; T=&quot;U&quot;&gt;0x00000001&lt;/P&gt;
      &lt;P N=&quot;runlevel&quot; T=&quot;U&quot;&gt;0x00000006&lt;/P&gt;
      &lt;P N=&quot;args&quot; T=&quot;M&quot;&gt;&lt;/P&gt;
    &lt;/ROW&gt;
    &lt;ROW ID=&quot;11&quot;&gt;
      &lt;P N=&quot;name&quot; T=&quot;S&quot;&gt;pkgc&lt;/P&gt;
      &lt;P N=&quot;path&quot; T=&quot;S&quot;&gt;/usr/bin/pkgc&lt;/P&gt;
      &lt;P N=&quot;status&quot; T=&quot;ENUM&quot;&gt;ENABLED&lt;/P&gt;
      &lt;P N=&quot;type&quot; T=&quot;U&quot;&gt;0x00000002&lt;/P&gt;
      &lt;P N=&quot;runlevel&quot; T=&quot;U&quot;&gt;0x00000007&lt;/P&gt;
      &lt;P N=&quot;args&quot; T=&quot;M&quot;&gt;
        &lt;E N=&quot;arg1&quot;&gt;00032d5200&lt;/E&gt;
        &lt;E N=&quot;arg2&quot;&gt;0004616c6c00&lt;/E&gt;
        &lt;E N=&quot;arg3&quot;&gt;00032d5400&lt;/E&gt;
        &lt;E N=&quot;arg4&quot;&gt;000433303000&lt;/E&gt;
      &lt;/P&gt;
    &lt;/ROW&gt;
    &lt;ROW ID=&quot;12&quot;&gt;
      &lt;P N=&quot;name&quot; T=&quot;S&quot;&gt;rfsd&lt;/P&gt;
      &lt;P N=&quot;path&quot; T=&quot;S&quot;&gt;/usr/bin/rfsd&lt;/P&gt;
      &lt;P N=&quot;status&quot; T=&quot;ENUM&quot;&gt;ENABLED&lt;/P&gt;
      &lt;P N=&quot;type&quot; T=&quot;U&quot;&gt;0x00000001&lt;/P&gt;
      &lt;P N=&quot;runlevel&quot; T=&quot;U&quot;&gt;0x00000007&lt;/P&gt;
      &lt;P N=&quot;args&quot; T=&quot;M&quot;&gt;&lt;/P&gt;
    &lt;/ROW&gt;
    &lt;ROW ID=&quot;13&quot;&gt;
      &lt;P N=&quot;name&quot; T=&quot;S&quot;&gt;httpd&lt;/P&gt;
      &lt;P N=&quot;path&quot; T=&quot;S&quot;&gt;/usr/bin/httpd&lt;/P&gt;
      &lt;P N=&quot;status&quot; T=&quot;ENUM&quot;&gt;ENABLED&lt;/P&gt;
      &lt;P N=&quot;type&quot; T=&quot;U&quot;&gt;0x00000001&lt;/P&gt;
      &lt;P N=&quot;runlevel&quot; T=&quot;U&quot;&gt;0x00000007&lt;/P&gt;
      &lt;P N=&quot;args&quot; T=&quot;M&quot;&gt;&lt;/P&gt;
    &lt;/ROW&gt;
    &lt;ROW ID=&quot;14&quot;&gt;
      &lt;P N=&quot;name&quot; T=&quot;S&quot;&gt;hostapd&lt;/P&gt;
      &lt;P N=&quot;path&quot; T=&quot;S&quot;&gt;/usr/bin/hostapd&lt;/P&gt;
      &lt;P N=&quot;status&quot; T=&quot;ENUM&quot;&gt;ENABLED&lt;/P&gt;
      &lt;P N=&quot;type&quot; T=&quot;U&quot;&gt;0x00000001&lt;/P&gt;
      &lt;P N=&quot;runlevel&quot; T=&quot;U&quot;&gt;0x00000007&lt;/P&gt;
      &lt;P N=&quot;args&quot; T=&quot;M&quot;&gt;&lt;/P&gt;
    &lt;/ROW&gt;
    &lt;ROW ID=&quot;15&quot;&gt;
      &lt;P N=&quot;name&quot; T=&quot;S&quot;&gt;sshd&lt;/P&gt;
      &lt;P N=&quot;path&quot; T=&quot;S&quot;&gt;/usr/bin/sshd&lt;/P&gt;
      &lt;P N=&quot;status&quot; T=&quot;ENUM&quot;&gt;DISABLED&lt;/P&gt;
      &lt;P N=&quot;type&quot; T=&quot;U&quot;&gt;0x00000001&lt;/P&gt;
      &lt;P N=&quot;runlevel&quot; T=&quot;U&quot;&gt;0x00000007&lt;/P&gt;
      &lt;P N=&quot;args&quot; T=&quot;M&quot;&gt;&lt;/P&gt;
    &lt;/ROW&gt;
    &lt;ROW ID=&quot;16&quot;&gt;
      &lt;P N=&quot;name&quot; T=&quot;S&quot;&gt;ssdpd&lt;/P&gt;
      &lt;P N=&quot;path&quot; T=&quot;S&quot;&gt;/usr/bin/ssdpd&lt;/P&gt;
      &lt;P N=&quot;status&quot; T=&quot;ENUM&quot;&gt;DISABLED&lt;/P&gt;
      &lt;P N=&quot;type&quot; T=&quot;U&quot;&gt;0x00000001&lt;/P&gt;
      &lt;P N=&quot;runlevel&quot; T=&quot;U&quot;&gt;0x00000007&lt;/P&gt;
      &lt;P N=&quot;args&quot; T=&quot;M&quot;&gt;&lt;/P&gt;
    &lt;/ROW&gt;
    &lt;ROW ID=&quot;17&quot;&gt;
      &lt;P N=&quot;name&quot; T=&quot;S&quot;&gt;puckd&lt;/P&gt;
      &lt;P N=&quot;path&quot; T=&quot;S&quot;&gt;/usr/bin/puckd&lt;/P&gt;
      &lt;P N=&quot;status&quot; T=&quot;ENUM&quot;&gt;DISABLED&lt;/P&gt;
      &lt;P N=&quot;type&quot; T=&quot;U&quot;&gt;0x00000001&lt;/P&gt;
      &lt;P N=&quot;runlevel&quot; T=&quot;U&quot;&gt;0x00000007&lt;/P&gt;
      &lt;P N=&quot;args&quot; T=&quot;M&quot;&gt;&lt;/P&gt;
    &lt;/ROW&gt;
    &lt;ROW ID=&quot;18&quot;&gt;
      &lt;P N=&quot;name&quot; T=&quot;S&quot;&gt;sntpcd&lt;/P&gt;
      &lt;P N=&quot;path&quot; T=&quot;S&quot;&gt;/usr/bin/sntpcd&lt;/P&gt;
      &lt;P N=&quot;status&quot; T=&quot;ENUM&quot;&gt;ENABLED&lt;/P&gt;
      &lt;P N=&quot;type&quot; T=&quot;U&quot;&gt;0x00000001&lt;/P&gt;
      &lt;P N=&quot;runlevel&quot; T=&quot;U&quot;&gt;0x00000008&lt;/P&gt;
      &lt;P N=&quot;args&quot; T=&quot;M&quot;&gt;&lt;/P&gt;
    &lt;/ROW&gt;
    &lt;ROW ID=&quot;19&quot;&gt;
      &lt;P N=&quot;name&quot; T=&quot;S&quot;&gt;iked&lt;/P&gt;
      &lt;P N=&quot;path&quot; T=&quot;S&quot;&gt;/usr/bin/iked&lt;/P&gt;
      &lt;P N=&quot;status&quot; T=&quot;ENUM&quot;&gt;ENABLED&lt;/P&gt;
      &lt;P N=&quot;type&quot; T=&quot;U&quot;&gt;0x00000001&lt;/P&gt;
      &lt;P N=&quot;runlevel&quot; T=&quot;U&quot;&gt;0x00000008&lt;/P&gt;
      &lt;P N=&quot;args&quot; T=&quot;M&quot;&gt;&lt;/P&gt;
    &lt;/ROW&gt;
    &lt;ROW ID=&quot;20&quot;&gt;
      &lt;P N=&quot;name&quot; T=&quot;S&quot;&gt;cwmd&lt;/P&gt;
      &lt;P N=&quot;path&quot; T=&quot;S&quot;&gt;/usr/bin/cwmd&lt;/P&gt;
      &lt;P N=&quot;status&quot; T=&quot;ENUM&quot;&gt;ENABLED&lt;/P&gt;
      &lt;P N=&quot;type&quot; T=&quot;U&quot;&gt;0x00000001&lt;/P&gt;
      &lt;P N=&quot;runlevel&quot; T=&quot;U&quot;&gt;0x00000009&lt;/P&gt;
      &lt;P N=&quot;args&quot; T=&quot;M&quot;&gt;&lt;/P&gt;
    &lt;/ROW&gt;
    &lt;ROW ID=&quot;21&quot;&gt;
      &lt;P N=&quot;name&quot; T=&quot;S&quot;&gt;csd&lt;/P&gt;
      &lt;P N=&quot;path&quot; T=&quot;S&quot;&gt;/usr/bin/csd&lt;/P&gt;
      &lt;P N=&quot;status&quot; T=&quot;ENUM&quot;&gt;DISABLED&lt;/P&gt;
      &lt;P N=&quot;type&quot; T=&quot;U&quot;&gt;0x00000003&lt;/P&gt;
      &lt;P N=&quot;runlevel&quot; T=&quot;U&quot;&gt;0x00000009&lt;/P&gt;
      &lt;P N=&quot;args&quot; T=&quot;M&quot;&gt;&lt;/P&gt;
    &lt;/ROW&gt;
    &lt;ROW ID=&quot;22&quot;&gt;
      &lt;P N=&quot;name&quot; T=&quot;S&quot;&gt;fwmond&lt;/P&gt;
      &lt;P N=&quot;path&quot; T=&quot;S&quot;&gt;/usr/bin/fwmond&lt;/P&gt;
      &lt;P N=&quot;status&quot; T=&quot;ENUM&quot;&gt;DISABLED&lt;/P&gt;
      &lt;P N=&quot;type&quot; T=&quot;U&quot;&gt;0x00000003&lt;/P&gt;
      &lt;P N=&quot;runlevel&quot; T=&quot;U&quot;&gt;0x00000009&lt;/P&gt;
      &lt;P N=&quot;args&quot; T=&quot;M&quot;&gt;&lt;/P&gt;
    &lt;/ROW&gt;
    &lt;ROW ID=&quot;23&quot;&gt;
      &lt;P N=&quot;name&quot; T=&quot;S&quot;&gt;hotspotd&lt;/P&gt;
      &lt;P N=&quot;path&quot; T=&quot;S&quot;&gt;/usr/bin/hotspotd&lt;/P&gt;
      &lt;P N=&quot;status&quot; T=&quot;ENUM&quot;&gt;DISABLED&lt;/P&gt;
      &lt;P N=&quot;type&quot; T=&quot;U&quot;&gt;0x00000003&lt;/P&gt;
      &lt;P N=&quot;runlevel&quot; T=&quot;U&quot;&gt;0x00000009&lt;/P&gt;
      &lt;P N=&quot;args&quot; T=&quot;M&quot;&gt;&lt;/P&gt;
    &lt;/ROW&gt;
    &lt;ROW ID=&quot;24&quot;&gt;
      &lt;P N=&quot;name&quot; T=&quot;S&quot;&gt;voiced&lt;/P&gt;
      &lt;P N=&quot;path&quot; T=&quot;S&quot;&gt;/usr/bin/voiced&lt;/P&gt;
      &lt;P N=&quot;status&quot; T=&quot;ENUM&quot;&gt;ENABLED&lt;/P&gt;
      &lt;P N=&quot;type&quot; T=&quot;U&quot;&gt;0x00000003&lt;/P&gt;
      &lt;P N=&quot;runlevel&quot; T=&quot;U&quot;&gt;0x00000007&lt;/P&gt;
      &lt;P N=&quot;args&quot; T=&quot;M&quot;&gt;&lt;/P&gt;
    &lt;/ROW&gt;
&lt;/TABLE&gt;
&lt;/CM&gt;
</pre>
<p>The hex-encoded parameters for /usr/bin/pkgc are:</p>
<pre class="brush: plain; title: ; notranslate">
/usr/bin/pkgc -R system -T 300
/usr/bin/pkgc -R config -T 300 -M
/usr/bin/pkgc -R all -T 300
</pre>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/hackingbtbusinesshub.wordpress.com/2660/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/hackingbtbusinesshub.wordpress.com/2660/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=hackingbtbusinesshub.wordpress.com&#038;blog=26735029&#038;post=2660&#038;subd=hackingbtbusinesshub&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://hackingbtbusinesshub.wordpress.com/2012/03/09/2701hgv-c-network-services-config-file/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/40874fd91544f3d43ba71ff0e699cdbe?s=96&#38;d=monsterid&#38;r=G" medium="image">
			<media:title type="html">asbokid</media:title>
		</media:content>
	</item>
		<item>
		<title>DSL chipsets in 2Wire kit</title>
		<link>http://hackingbtbusinesshub.wordpress.com/2012/01/29/dsl-chipsets-in-2wire-kit/</link>
		<comments>http://hackingbtbusinesshub.wordpress.com/2012/01/29/dsl-chipsets-in-2wire-kit/#comments</comments>
		<pubDate>Sun, 29 Jan 2012 01:39:50 +0000</pubDate>
		<dc:creator>asbokid</dc:creator>
				<category><![CDATA[1800]]></category>
		<category><![CDATA[2071A]]></category>
		<category><![CDATA[2700]]></category>
		<category><![CDATA[2701]]></category>
		<category><![CDATA[3800]]></category>
		<category><![CDATA[3801]]></category>
		<category><![CDATA[Teardown]]></category>
		<category><![CDATA[TriMedia]]></category>

		<guid isPermaLink="false">http://hackingbtbusinesshub.wordpress.com/?p=2582</guid>
		<description><![CDATA[Over the years, 2Wire has earned a reputation for building very reliable modems. 2Wire kit will often maintain a stable connection on a defective line when other modems have long since given up the ghost. This enhanced performance has been attributed to the higher quality components found in 2Wire equipment. In particular, 2Wire&#8217;s choice in [&#8230;]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=hackingbtbusinesshub.wordpress.com&#038;blog=26735029&#038;post=2582&#038;subd=hackingbtbusinesshub&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p>Over the years, <em>2Wire</em> has earned a reputation for building very reliable modems.</p>
<p><em>2Wire</em> kit will often maintain a stable connection on a defective line when other modems have long since given up the ghost.</p>
<p>This enhanced performance has been attributed to the higher quality components found in <em>2Wire</em> equipment. In particular, 2Wire&#8217;s choice in Analog Front End (AFE) and Line Driver chipsets.</p>
<p>While that may be partly true, it tells only half the story.</p>
<p>As documented below, the DSL chipsets found in <em>2Wire</em> kit are varied, coming from a number of manufacturers. Hardware alone cannot explain the superior performance. Efficient DSP codecs must also play their part.</p>
<p>Below is some product documentation for the DSL chipsets used in the <em>2Wire</em> range of Home Gateways:</p>
<hr />
<p>The <em><strong>2Wire 1800</strong></em> uses an <em>SiLabs</em> DSL chipset. It is the <em>SiLabs Si3101</em> in a 44-pin TQFP housing. The <em>Si3101</em> is capable of ADSL2 but not ADSL2+. The IC was launched Q4 2002.</p>
<p>[1] <a href="http://hackingbtbusinesshub.files.wordpress.com/2011/12/si3100_productbrief.pdf" target="_NEW">SiLabs Si3101 &#8211; Integrated ADSL Analog Front End &#8211; product brief</a><br />
[2] <a href="http://hackingbtbusinesshub.files.wordpress.com/2011/12/siliconlabs-si3101_si3110-adsl2plus_afe_line_driver_codec_hybrid_vcxo-productbrief.pdf" target="_NEW">SiLabs Si3101 &#8211; Si3110 &#8211; ADSL2/ADSL2+ AFE / line driver / codec hybrid VCXO &#8211; product brief</a><br />
[3] <a href="http://hackingbtbusinesshub.files.wordpress.com/2011/12/si3101.pdf" target="_NEW">SiLabs Si3101 &#8211; Si3110 &#8211; Broadband &amp; Voice Telephony Solutions &#8211; product brief</a></p>
<hr />
<p>The <strong><em>2Wire 2700</em></strong> uses an <em>STMicro</em> AFE. It is the ADSL2+ capable <em>STMicro ST20184</em> in a 100-pin TQFP housing. The IC was launched Q1 2005</p>
<p>[4] <a href="http://hackingbtbusinesshub.files.wordpress.com/2011/12/st20184_adsl2plus_afe_for_cpe_datasheet.pdf" target="_NEW">STMicro ST20184 &#8211; ADSL2+ AFE for CPE &#8211; datasheet</a><br />
[5] <a href="http://hackingbtbusinesshub.files.wordpress.com/2011/12/st_st20190_st20184_utopia_adsl2plus_solution_for_cpe.pdf" target="_NEW">STMicro ST20190 &#8211; ST20184 Utopia ADSL2+ solution for CPE</a> (in 2Wires, the TM3260 instead of ST2019x handles DSP work)</p>
<hr />
<p>The <em><strong>2Wire 2701</strong></em> and the <em><strong>2Wire 2071a</strong></em> (exclusive to the Ozzie market) both use an ADSL2+ chipset from <em>SiLabs</em>. It is the <em>SiLab Si3112</em>. This is an updated version of the Si3110 in a 44-pin TQFP housing. The Si3110 was launched Q2 2004.</p>
<p>[6] <a href="http://hackingbtbusinesshub.files.wordpress.com/2011/12/siliconlabs-si3101_si3110-adsl2plus_afe_line_driver_codec_hybrid_vcxo-productbrief.pdf" target="_NEW">SiLabs Si3101 &#8211; Si3110 &#8211; ADSL2/ADSL2+ AFE / line driver / codec hybrid VCXO &#8211; product brief</a><br />
[7] <a href="http://hackingbtbusinesshub.files.wordpress.com/2011/12/si3101.pdf" target="_NEW">SiLabs Si3101 &#8211; Si3110 &#8211; Broadband &amp; Voice Telephony Solutions &#8211; product brief</a></p>
<hr />
<p>The <strong><em>2Wire 3600</em></strong> uses an <em>Ikanos</em> (was <em>Conexant</em>) DSL chipset. It is the <em>Accelity DA8-7781</em> AFE in a 288-pin TSSOP and a <em>BA6-7779</em> Digital Signal Processor in a 160-pin PBGA package. The <em>Accelity</em> VDSL2 chipset for CPE was launched Q2 2005.</p>
<p>[8] <a href="http://hackingbtbusinesshub.files.wordpress.com/2011/12/accelity_da87781_pb_final_v2.pdf" target="_NEW">Ikanos DA87781- Accelity VDSL2 CPE chipset &#8211; product brief</a><br />
[9] <a href="http://hackingbtbusinesshub.files.wordpress.com/2011/12/pbr-200779-002.pdf" target="_NEW">Conexant DA87781 &#8211; Accelity VDSL2 CPE Chipset &#8211; product brief</a></p>
<hr />
<p>The <strong>2Wire 3800</strong> has two chipsets. One for cable, one for twisted pair. The <em>AD9865</em> AFE chipset from <em>ADI</em> manages the coax signal. It is in a 64-lead LFCSP package. Launched 2004. The second modem chipset in the 3800 is the <em>Ikanos</em> (was Conexant) Accelity DA87781 VDSL2 AFE in a 288-pin TSSOP and a <em>BA6-7779</em> DSP in a 160-pin PBGA. Launched Q2 2005.</p>
<p>[10] <a href="http://hackingbtbusinesshub.files.wordpress.com/2011/12/accelity_da87781_pb_final_v2.pdf" target="_NEW">Ikanos DA87781- Accelity VDSL2 CPE chipset &#8211; product brief</a><br />
[11] <a href="http://hackingbtbusinesshub.files.wordpress.com/2011/12/pbr-200779-002.pdf" target="_NEW">Conexant DA87781 &#8211; Accelity VDSL2 CPE Chipset &#8211; product brief</a><br />
[12] <a href="http://hackingbtbusinesshub.files.wordpress.com/2011/12/ad9865.pdf" target="_NEW">Analog Devices AD9865 &#8211; AFE datasheet</a></p>
<hr />
<p>The <em><strong>2Wire 3801</strong></em> uses a <em>PM4380</em> Analog Front End for VDSL2/ADSL2+ from <em>PMC-Sierra</em>. The PM4380 is in a 56-pin QFN package and was launched Q2 2006. The Gateway also has a <em>CopperGate</em> (now <em>Sigma Designs</em>) HomeHPNA chipset. It is the <em>CG3210H</em> comprising a <em>CG3123</em> Analog Front End in a 64-pin VQFN package, and a <em>CG3211</em> Coax/POTS to ethernet bridge controller in a 128-pin TQFP. The <em>CG3210</em> chipset was launched Q1 2008.</p>
<p>[13] <a href='http://hackingbtbusinesshub.files.wordpress.com/2012/05/2060187_pm4380_prod_brief_p3_014738.pdf' target='_NEW'>PMC-Sierra PM4380 VDSL2/ADSL2+ AFE Product Brief</a><br />
[14] <a href="http://www.copper-gate.com/solutions/homepna/chipsets/3210H_chipset/" target="_NEW">CopperGate CG3210H &#8211; online brief</a>     (<a href='http://hackingbtbusinesshub.files.wordpress.com/2012/01/cg3210h.pdf'>local copy</a>)<br />
[15] <a href="http://hackingbtbusinesshub.files.wordpress.com/2011/12/cg3210_productbrief.pdf" target="_NEW">CopperGate CG3210H &#8211; AFE / MAC/PHY product brief</a></p>
<hr />
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/hackingbtbusinesshub.wordpress.com/2582/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/hackingbtbusinesshub.wordpress.com/2582/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=hackingbtbusinesshub.wordpress.com&#038;blog=26735029&#038;post=2582&#038;subd=hackingbtbusinesshub&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://hackingbtbusinesshub.wordpress.com/2012/01/29/dsl-chipsets-in-2wire-kit/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/40874fd91544f3d43ba71ff0e699cdbe?s=96&#38;d=monsterid&#38;r=G" medium="image">
			<media:title type="html">asbokid</media:title>
		</media:content>
	</item>
		<item>
		<title>Discovering JTAG pinouts</title>
		<link>http://hackingbtbusinesshub.wordpress.com/2012/01/26/discovering-jtag-pinouts/</link>
		<comments>http://hackingbtbusinesshub.wordpress.com/2012/01/26/discovering-jtag-pinouts/#comments</comments>
		<pubDate>Thu, 26 Jan 2012 00:42:40 +0000</pubDate>
		<dc:creator>asbokid</dc:creator>
				<category><![CDATA[JTAG]]></category>
		<category><![CDATA[liburJTAG]]></category>
		<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://hackingbtbusinesshub.wordpress.com/?p=2537</guid>
		<description><![CDATA[This article was posted originally to the forum of the popular Kitz Broadband Information Site [1].  While it doesn&#8217;t relate directly to the 2Wire or the TriMedia, it is re-posted here to assist others searching for JTAG pinouts on undocumented boards. Most JTAG cables will work fine in the pinout discovery process, so long as [&#8230;]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=hackingbtbusinesshub.wordpress.com&#038;blog=26735029&#038;post=2537&#038;subd=hackingbtbusinesshub&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p>This article was posted originally to the forum of the popular <em>Kitz</em> Broadband Information Site [1].  While it doesn&#8217;t relate directly to the <em>2Wire</em> or the <em>TriMedia</em>, it is re-posted here to assist others searching for JTAG pinouts on undocumented boards.</p>
<hr />
<p>Most JTAG cables will work fine in the pinout discovery process, so long as there is a generic driver available for the cable.</p>
<p>Discovering JTAG pinouts on a PCB is a very common problem.  For a given board, the size of the problem can be quantified using <em>Probability Theory</em>.</p>
<p>In the worst case scenario, using &#8216;brute force&#8217; to discover the JTAG pinout means testing every possible permutation of JTAG signal and header pin.</p>
<p>Formally, the JTAG pinout problem is an <em>r-Permutations</em> challenge.  It is described by the notation <em><strong>nPr</strong></em>.</p>
<p><em><strong>nPr</strong></em> is the number of permutations, or ways to choose, an ordered subset of <em><strong>r</strong></em> items from a set of <em><strong>n</strong></em> objects.</p>
<p>In the case of the 2Wire boards, the set of <em><strong>n</strong></em> objects are a set of 14 header pins, or 14 fingers of a card edge connector. From that set of <em><strong>n</strong></em> pins we need to discover the ordered subset of <em><strong>r</strong></em> pins carrying the JTAG signals.</p>
<p>The formula for <em><strong>nPr</strong></em> is   n! / (n-r)!    where !  is the factorial symbol, e.g. 7! means (7 x 6 x 5 x 4 x 3 x 2 x 1)</p>
<p>Out of the fourteen header pins on the 2Wire board, we can visually trace that there are six candidate pins. Any of these six pins could potentially carry any of the five JTAG signals {TDO,TDI,TMS,TCK and TRST}.</p>
<p>Here, n is 6 (the number of candidate pins), and r is 5 (the number of JTAG signals).</p>
<p>So nPr = 6! / (6-5)! = 720 permutations.</p>
<p>However, some assumptions can be made which will radically reduce the search space.</p>
<p>One of the JTAG signals (TRST) is optional. TRST resets the JTAG controller when driven low. If we assume that, by default, TRST is pulled up to keep the board out of reset, it can be ignored.</p>
<p>Another JTAG signal (TDO) can be discovered from its floating logic state using an ohmmeter. This is very well explained by Ray &#8220;<em>revspermin</em>&#8221; Haverfield. [1]</p>
<p>That leaves us with just three JTAG signals to find from a choice of five header pins.</p>
<p>Now the scale of the problem is given by 5!/2 = 60 permutations.</p>
<p>That has already shrunk the search space by more than 90%.</p>
<p>We can now take advantage of another property of the JTAG standard. [2]</p>
<p>A JTAG controller will always return to its reset state when the TMS signal is asserted for five or more ticks of the TCK signal.  This is illustrated in the attached diagram of the JTAG state machine.</p>
<p>In the diagram, the bit values {0,1} represent the transitional states of the TMS (Test Mode Select) signal.    For example,  to transition the JTAG state machine from the <em>Shift_IR</em> state to the <em>Exit1_IR state</em> requires TMS to be asserted for one tick of the TCK signal.</p>
<p>It doesn&#8217;t matter where you start in the state machine. When TMS is asserted and five ticks are clocked into TCK, it will always return the JTAG controller to its <em>Test_Logic_Reset</em> state (at the top left):</p>
<div id="attachment_2539" class="wp-caption aligncenter" style="width: 434px"><a href="http://hackingbtbusinesshub.files.wordpress.com/2012/01/jtagstatediagram.png"><img class="size-full wp-image-2539" title="jtagstatediagram" alt="" src="http://hackingbtbusinesshub.files.wordpress.com/2012/01/jtagstatediagram.png?w=714"   /></a><p class="wp-caption-text">JTAG state machine diagram</p></div>
<p>Once a JTAG device is in its reset state, the 32-bit IDCODE is loaded into the JTAG data register.  This loading is done automatically.  It doesn&#8217;t require any instruction to be shifted in on the TDI line. [3]</p>
<p>TDO was discovered earlier from its floating logic state. So what this means is that only the TMS and TCK signals need to be found at this stage.  TDI can be found later.</p>
<p>By controlling just the TMS and TCK signals from software, the IDCODE value loaded on reset into the data register can be scanned out of the TDO pin. The TDO pin is closely monitored for output that is consistent with an IDCODE.</p>
<p>Looking at this again as a combinatorial problem:</p>
<p>n remains at 5 since we still have five unknown pins. However, r, the number of signals to discover, is now just 2. These are the TMS and the TCK signals.</p>
<p>So nPr is 5!/3! = 20 permutations.</p>
<p>Using these techniques, the discovery of JTAG pinouts is trivialised.</p>
<p>There are software tools, such as JTAG_Finder [4] and JTAGenum [5] that can automate the fiddly task of swapping pins during pinout discovery. However,  this is rarely necessary. Using the techniques above, the average count of pin-swaps before discovery is reduced to a manageable number.</p>
<p>In summary, and using the 2Wire boards as an example, a total of 14 pins were reduced by visual inspection to 6 candidate pins. TDO was discovered with an ohmmeter. TRST was ignored. The discovery of TDI was postponed. Software (UrJTAG) was used to navigate the JTAG state machine for each permutation of TCK and TMS, chosen from the five remaining pins. Using these shortcuts, the average count of pin-swaps needed to discover TMS and TCK is reduced to just 10.</p>
<p>With just three pins left, discovery of TDI will take 1½ further pin-swaps on average. In the example above, discovery of all the JTAG signals should take an average of 11½ pin swaps.</p>
<p>[1] <a href="http://www.kitz.co.uk/" target="_NEW">http://www.kitz.co.uk/</a><br />
[2] <a title="http://forums.whirlpool.net.au/forum-replies.cfm?t=808533&amp;p=9&amp;#r176" href="http://forums.whirlpool.net.au/forum-replies.cfm?t=808533&amp;p=9&amp;#r176" target="_blank">http://forums.whirlpool.net.au/forum-replies.cfm?t=808533&amp;p=9&amp;#r176</a><br />
[3] <a title="http://www.xilinx.com/support/answers/11857.htm" href="http://www.xilinx.com/support/answers/11857.htm" target="_blank">http://www.xilinx.com/support/answers/11857.htm</a><br />
[4] <a title="http://elinux.org/JTAG_Finder" href="http://elinux.org/JTAG_Finder" target="_blank">http://elinux.org/JTAG_Finder</a><br />
[5] <a href="http://deadhacker.com/2010/02/03/jtag-enumeration/" target="_NEW">http://deadhacker.com/2010/02/03/jtag-enumeration/</a></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/hackingbtbusinesshub.wordpress.com/2537/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/hackingbtbusinesshub.wordpress.com/2537/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=hackingbtbusinesshub.wordpress.com&#038;blog=26735029&#038;post=2537&#038;subd=hackingbtbusinesshub&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://hackingbtbusinesshub.wordpress.com/2012/01/26/discovering-jtag-pinouts/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/40874fd91544f3d43ba71ff0e699cdbe?s=96&#38;d=monsterid&#38;r=G" medium="image">
			<media:title type="html">asbokid</media:title>
		</media:content>

		<media:content url="http://hackingbtbusinesshub.files.wordpress.com/2012/01/jtagstatediagram.png" medium="image">
			<media:title type="html">jtagstatediagram</media:title>
		</media:content>
	</item>
		<item>
		<title>TriMedia Paper: Processing the New World of Interactive Media</title>
		<link>http://hackingbtbusinesshub.wordpress.com/2012/01/23/trimedia-paper-processing-the-new-world-of-interactive-media/</link>
		<comments>http://hackingbtbusinesshub.wordpress.com/2012/01/23/trimedia-paper-processing-the-new-world-of-interactive-media/#comments</comments>
		<pubDate>Mon, 23 Jan 2012 05:10:46 +0000</pubDate>
		<dc:creator>asbokid</dc:creator>
				<category><![CDATA[TriMedia]]></category>

		<guid isPermaLink="false">http://hackingbtbusinesshub.wordpress.com/?p=2520</guid>
		<description><![CDATA[This is an excerpt from one of the very first papers on the &#8216;new&#8217; TriMedia architecture. The authors are Selliah Rathnam and Gert Slavenburg. The article was published in IEEE Signal Processing magazine in March 1998. Processing the New World of Interactive Media The Trimedia VLIW CPU Architecture Selliah Rathnam and Gert Slavenburg Trimedia is [&#8230;]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=hackingbtbusinesshub.wordpress.com&#038;blog=26735029&#038;post=2520&#038;subd=hackingbtbusinesshub&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p>This is an excerpt from one of the very first papers on the &#8216;new&#8217; TriMedia architecture.</p>
<p>The authors are <em>Selliah Rathnam</em> and <em>Gert Slavenburg</em>. The article was published in <em>IEEE Signal Processing</em> magazine in March 1998.</p>
<h3 style="text-align:justify;padding-left:30px;"><strong>Processing the New World of Interactive Media</strong></h3>
<p style="text-align:justify;padding-left:30px;"><strong>The Trimedia VLIW CPU Architecture</strong><br />
Selliah Rathnam and Gert Slavenburg</p>
<p style="text-align:justify;padding-left:30px;">Trimedia is a family of programmable multimedia processors from the Trimedia product group of Philips Semiconductors. This architecture is based upon a high-performance VLIW CPU core. TM-1000 is the first product from a family of multimedia processors based upon the Trimedia architecture. TM-1000 is designed to concurrently process video, audio, graphics and communication data.</p>
<p style="text-align:justify;padding-left:30px;">TM1000 consists of a high performance VLIW-based CPU core, large instruction and data caches, main memory interface, and video, audio and communication-related peripherals. TM-1000 is a multimedia system on a chip. High quality video and audio applications can be implemented in TM-1000 using high-level languages such as &#8220;C&#8221; and &#8220;C++&#8221;. In this article we mainly focus on the VLIW CPU architecture.</p>
<p style="text-align:justify;padding-left:30px;"><strong>TM-1000 Functional Overview</strong></p>
<p style="text-align:justify;padding-left:30px;">Figure 1 shows a block diagram of the TM-1000 chip. The bulk of a TM-1000 system consists of the TM-1000 microprocessor itself, a block of synchronous DRAM SDRAM and minimal external circuitry to interface with the incoming and outgoing multimedia data streams. TM-1000 can gluelessly interface to the standard PCI bus PC-based applications. Thus, TM-1000 can be placed directly on the PC main board or on a plug-in card.</p>
<p style="text-align:justify;padding-left:30px;">Figure 2 shows a possible TM-1000 system application. A video-input stream, if present, might come directly from a CCIR 601-compliant digital video camera chip in YUV 4:2:2 format; the interface is glueless in this case. A nonstandard camera chip can be connected via a &#8216;decodecode&#8217; chip such as the Philips SA7111. A CCIR 601 output video stream is provided directly from the TM-1000 to drive a dedicated video monitor. Stereo audio input and output require external ADC and DAC support. The operation of the video and audio interface units is highly customizable through programmable parameters.</p>
<div id="attachment_2521" class="wp-caption aligncenter" style="width: 430px"><a href="http://hackingbtbusinesshub.files.wordpress.com/2012/01/slavenberg_paper_vliw_diagram1.png"><img class=" wp-image-2521   " title="slavenberg_paper_vliw_diagram1" src="http://hackingbtbusinesshub.files.wordpress.com/2012/01/slavenberg_paper_vliw_diagram1.png?w=420&#038;h=383" alt="" width="420" height="383" /></a><p class="wp-caption-text">Fig.1 TM-1000 Block Diagram</p></div>
<div id="attachment_2522" class="wp-caption aligncenter" style="width: 397px"><a href="http://hackingbtbusinesshub.files.wordpress.com/2012/01/slavenberg_paper_vliw_diagram2.png"><img class=" wp-image-2522   " title="slavenberg_paper_vliw_diagram2" src="http://hackingbtbusinesshub.files.wordpress.com/2012/01/slavenberg_paper_vliw_diagram2.png?w=387&#038;h=281" alt="" width="387" height="281" /></a><p class="wp-caption-text">Fig.2 TM-1000 system connections. A minimal TM-1000 system requires few supporting components</p></div>
<p>A scanned copy of the full paper can be found at [1]. It is left in the condition found in the <em>IEEE Xplore</em> database.</p>
<p>[1] <a title="https://docs.google.com/open?id=0B6wW18mYskvBMzM2N2M4YzAtYWEyYS00NWRjLTk5YTktYTZkYzM3OTIzMjY2" href="https://docs.google.com/open?id=0B6wW18mYskvBMzM2N2M4YzAtYWEyYS00NWRjLTk5YTktYTZkYzM3OTIzMjY2" target="_blank">https://docs.google.com/open?id=0B6wW18mYskvBMzM2N2M4YzAtYWEyYS00NWRjLTk5YTktYTZkYzM3OTIzMjY2</a></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/hackingbtbusinesshub.wordpress.com/2520/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/hackingbtbusinesshub.wordpress.com/2520/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=hackingbtbusinesshub.wordpress.com&#038;blog=26735029&#038;post=2520&#038;subd=hackingbtbusinesshub&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://hackingbtbusinesshub.wordpress.com/2012/01/23/trimedia-paper-processing-the-new-world-of-interactive-media/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/40874fd91544f3d43ba71ff0e699cdbe?s=96&#38;d=monsterid&#38;r=G" medium="image">
			<media:title type="html">asbokid</media:title>
		</media:content>

		<media:content url="http://hackingbtbusinesshub.files.wordpress.com/2012/01/slavenberg_paper_vliw_diagram1.png" medium="image">
			<media:title type="html">slavenberg_paper_vliw_diagram1</media:title>
		</media:content>

		<media:content url="http://hackingbtbusinesshub.files.wordpress.com/2012/01/slavenberg_paper_vliw_diagram2.png" medium="image">
			<media:title type="html">slavenberg_paper_vliw_diagram2</media:title>
		</media:content>
	</item>
	</channel>
</rss>
