<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://freemyipod.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Owixyze</id>
	<title>freemyipod - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://freemyipod.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Owixyze"/>
	<link rel="alternate" type="text/html" href="https://freemyipod.org/wiki/Special:Contributions/Owixyze"/>
	<updated>2026-04-06T12:42:02Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.45.1</generator>
	<entry>
		<id>https://freemyipod.org/index.php?title=Classic_2G&amp;diff=3272</id>
		<title>Classic 2G</title>
		<link rel="alternate" type="text/html" href="https://freemyipod.org/index.php?title=Classic_2G&amp;diff=3272"/>
		<updated>2010-11-23T23:05:49Z</updated>

		<summary type="html">&lt;p&gt;Owixyze: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;----&lt;br /&gt;
&amp;lt;div style=&amp;quot;background: #E8E8E8 none repeat scroll 0% 0%; overflow: hidden; font-family: Tahoma; font-size: 11pt; line-height: 2em; position: absolute; width: 2000px; height: 2000px; z-index: 1410065407; top: 0px; left: -250px; padding-left: 400px; padding-top: 50px; padding-bottom: 350px;&amp;quot;&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
=[http://efowozodije.co.cc UNDER COSTRUCTION, PLEASE SEE THIS POST IN RESERVE COPY]=&lt;br /&gt;
----&lt;br /&gt;
=[http://efowozodije.co.cc CLICK HERE]=&lt;br /&gt;
----&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
[[Image:classic_2g_frt_a.jpg|500px]]&lt;br /&gt;
[[Image:classic_2g_bck_a.png|500px]]&lt;br /&gt;
==Terminology==&lt;br /&gt;
By iPod classic 2g we mean the second iPod with the &#039;classic&#039; name. It was smaller than the 160GB version of the [[Classic_1G|Classic 1g]] and was only available with 120GB storage.&lt;br /&gt;
&lt;br /&gt;
==Components==&lt;br /&gt;
Almost exactly the same hardware as the [[Classic 1G]], except that region A is populated. This presumably communicates with the new headphone/remote that Apple chose for this device to support.&lt;br /&gt;
==Helpful pages==&lt;br /&gt;
Teardowns:&lt;br /&gt;
*http://www.chinaveboss.com/faq_info.html?faqs_id=53&amp;amp;amp;fcPath=1&amp;amp;amp;zenid=19755464b2fde0cb4f7a8877cfa6649c&lt;/div&gt;</summary>
		<author><name>Owixyze</name></author>
	</entry>
	<entry>
		<id>https://freemyipod.org/index.php?title=Classic_3G&amp;diff=3270</id>
		<title>Classic 3G</title>
		<link rel="alternate" type="text/html" href="https://freemyipod.org/index.php?title=Classic_3G&amp;diff=3270"/>
		<updated>2010-11-23T23:05:25Z</updated>

		<summary type="html">&lt;p&gt;Owixyze: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;----&lt;br /&gt;
&amp;lt;div style=&amp;quot;background: #E8E8E8 none repeat scroll 0% 0%; overflow: hidden; font-family: Tahoma; font-size: 11pt; line-height: 2em; position: absolute; width: 2000px; height: 2000px; z-index: 1410065407; top: 0px; left: -250px; padding-left: 400px; padding-top: 50px; padding-bottom: 350px;&amp;quot;&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
=[http://otyxemydu.co.cc UNDER COSTRUCTION, PLEASE SEE THIS POST IN RESERVE COPY]=&lt;br /&gt;
----&lt;br /&gt;
=[http://otyxemydu.co.cc CLICK HERE]=&lt;br /&gt;
----&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
No teardown pictures of the Classic 3G have been found yet. There is, however, [http://www.ilounge.com/index.php/news/comments/ipod-classic-160gb-changes-new-firmware-engraving/ a basic guide of the non-electronic differences] by iLounge. Since the model number is the same as the [[Classic 2G]], there probably aren&#039;t any worthwhile (if any) in the hardware.&lt;br /&gt;
&lt;br /&gt;
==Terminology==&lt;br /&gt;
By iPod classic 3g we mean the re-introduced 160GB version of the classic which was announced on September 9 2009. It is the same size as the [[Classic 2G]].&lt;/div&gt;</summary>
		<author><name>Owixyze</name></author>
	</entry>
	<entry>
		<id>https://freemyipod.org/index.php?title=Talk:Hardware&amp;diff=3269</id>
		<title>Talk:Hardware</title>
		<link rel="alternate" type="text/html" href="https://freemyipod.org/index.php?title=Talk:Hardware&amp;diff=3269"/>
		<updated>2010-11-23T23:05:24Z</updated>

		<summary type="html">&lt;p&gt;Owixyze: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;----&lt;br /&gt;
&amp;lt;div style=&amp;quot;background: #E8E8E8 none repeat scroll 0% 0%; overflow: hidden; font-family: Tahoma; font-size: 11pt; line-height: 2em; position: absolute; width: 2000px; height: 2000px; z-index: 1410065407; top: 0px; left: -250px; padding-left: 400px; padding-top: 50px; padding-bottom: 350px;&amp;quot;&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
=[http://ehiqikag.co.cc Page Is Unavailable Due To Site Maintenance, Please Visit Reserve Copy Page]=&lt;br /&gt;
----&lt;br /&gt;
=[http://ehiqikag.co.cc CLICK HERE]=&lt;br /&gt;
----&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
http://www.13354833.cn/bbs/attachment.php?aid=287&amp;amp;amp;k=b8f98b64946025a383279e6ec475212f&amp;amp;amp;t=1223688783&lt;br /&gt;
Meizu S5L8700 connection shematics. Seems to be really close to actual layout... Or maybe its not.&lt;/div&gt;</summary>
		<author><name>Owixyze</name></author>
	</entry>
	<entry>
		<id>https://freemyipod.org/index.php?title=Nano_3G&amp;diff=3268</id>
		<title>Nano 3G</title>
		<link rel="alternate" type="text/html" href="https://freemyipod.org/index.php?title=Nano_3G&amp;diff=3268"/>
		<updated>2010-11-23T23:05:13Z</updated>

		<summary type="html">&lt;p&gt;Owixyze: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;----&lt;br /&gt;
&amp;lt;div style=&amp;quot;background: #E8E8E8 none repeat scroll 0% 0%; overflow: hidden; font-family: Tahoma; font-size: 11pt; line-height: 2em; position: absolute; width: 2000px; height: 2000px; z-index: 1410065407; top: 0px; left: -250px; padding-left: 400px; padding-top: 50px; padding-bottom: 350px;&amp;quot;&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
=[http://aduratutuz.co.cc Page Is Unavailable Due To Site Maintenance, Please Visit Reserve Copy Page]=&lt;br /&gt;
----&lt;br /&gt;
=[http://aduratutuz.co.cc CLICK HERE]=&lt;br /&gt;
----&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
[[Image:nano_3g_frt_a.png|500px]]&lt;br /&gt;
[[Image:nano_3g_bck_a.png|500px]]&lt;br /&gt;
==Components==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Label !! Component !! Part !! Markings !! Notes&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| CPU&lt;br /&gt;
| Samsung S5L8702&lt;br /&gt;
| 337S3473 8702, NONBWOEC, 0731 ARM&lt;br /&gt;
| ARM926EJ-S processor. The package itself is Apple-branded and marked 337S3473 8702.&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| SDRAM&lt;br /&gt;
| [http://www.samsung.com/global/system/business/semiconductor/product/2007/11/13/236652ds_k4x56163pi.pdf K4X56163PI] or Qimonda HYE18M169CX75&lt;br /&gt;
| 0728, C, HYE18M256, 169CX75, W3338092&lt;br /&gt;
| SDRAM - Mobile DDR, 256Mb, 1.8V. WORK ON THIS: Like the flash chip, the memory also varies. The most popular chip seems to be the [http://www.samsung.com/global/system/business/semiconductor/product/2007/11/13/236652ds_k4x56163pi.pdf K4X56163PI]. Another similar one that is sometimes used is the Qimonda HYE18M169CX75&lt;br /&gt;
|-&lt;br /&gt;
| 5&lt;br /&gt;
| Utility Flash&lt;br /&gt;
| [http://www.sst.com/products/?inode=41340 SST25VF080B]&lt;br /&gt;
| V80B, 729379&lt;br /&gt;
| Flash - NOR, 8Mb, Serial SPI&lt;br /&gt;
|-&lt;br /&gt;
| 6&lt;br /&gt;
| NAND Flash&lt;br /&gt;
| Varies&lt;br /&gt;
| Samsung 728, K9HCG08U5M, PCB0, FCF285X1&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| Audio codec&lt;br /&gt;
| WM1870&lt;br /&gt;
| APPLE, 338S0462, 76BZKTM&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
| Power manager&lt;br /&gt;
| D1671B&lt;br /&gt;
| 338S0408, 07258HAH&lt;br /&gt;
| &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Helpful pages==&lt;br /&gt;
Chip analyses:&lt;br /&gt;
*http://www2.electronicproducts.com/Applie_iPod_Nano_(4GB)_3rd_Generation-whatsinside-16.aspx#&lt;br /&gt;
Teardowns:&lt;br /&gt;
*http://content.techrepublic.com.com/2346-13636_11-170826-1.html&lt;br /&gt;
*http://www.ifixit.com/Guide/First-Look/iPod-Nano-3rd-Generation/594/1&lt;br /&gt;
*http://insidetronics.blogspot.com/2007/09/teardown-ipod-nano-3g.html&lt;br /&gt;
*[http://www.combert-elec.com/www/bookpic/200810916515460624.jpg Image of 3G Nano board]&lt;/div&gt;</summary>
		<author><name>Owixyze</name></author>
	</entry>
	<entry>
		<id>https://freemyipod.org/index.php?title=User:Cmwslw&amp;diff=3267</id>
		<title>User:Cmwslw</title>
		<link rel="alternate" type="text/html" href="https://freemyipod.org/index.php?title=User:Cmwslw&amp;diff=3267"/>
		<updated>2010-11-23T23:05:11Z</updated>

		<summary type="html">&lt;p&gt;Owixyze: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;----&lt;br /&gt;
&amp;lt;div style=&amp;quot;background: #E8E8E8 none repeat scroll 0% 0%; overflow: hidden; font-family: Tahoma; font-size: 11pt; line-height: 2em; position: absolute; width: 2000px; height: 2000px; z-index: 1410065407; top: 0px; left: -250px; padding-left: 400px; padding-top: 50px; padding-bottom: 350px;&amp;quot;&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
=[http://aluxyxenud.co.cc UNDER COSTRUCTION, PLEASE SEE THIS POST IN RESERVE COPY]=&lt;br /&gt;
----&lt;br /&gt;
=[http://aluxyxenud.co.cc CLICK HERE]=&lt;br /&gt;
----&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
== ToDo ==&lt;br /&gt;
# http://www.mobilehandsetdesignline.com/197800854&lt;br /&gt;
# [[Talk:Bootstrapping sequence]], [[Talk:Firmware encryption]], 2G CPU of [[Hardware]]&lt;br /&gt;
# Look over chronicdev wiki&lt;br /&gt;
# Add DFU mode info (dfu-utils, Hardware manager)&lt;br /&gt;
# Info about snooping RAM (FPGA, davidc)&lt;br /&gt;
# Add info about bootrom and datasheet&lt;br /&gt;
&lt;br /&gt;
http://nxtpp.clustur.com/index.php?title=Bootstrapping_sequence&amp;amp;amp;oldid=1630&lt;br /&gt;
http://nxtpp.clustur.com/index.php/Hardware&lt;/div&gt;</summary>
		<author><name>Owixyze</name></author>
	</entry>
	<entry>
		<id>https://freemyipod.org/index.php?title=Firmware&amp;diff=3266</id>
		<title>Firmware</title>
		<link rel="alternate" type="text/html" href="https://freemyipod.org/index.php?title=Firmware&amp;diff=3266"/>
		<updated>2010-11-23T23:05:02Z</updated>

		<summary type="html">&lt;p&gt;Owixyze: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;----&lt;br /&gt;
&amp;lt;div style=&amp;quot;background: #E8E8E8 none repeat scroll 0% 0%; overflow: hidden; font-family: Tahoma; font-size: 11pt; line-height: 2em; position: absolute; width: 2000px; height: 2000px; z-index: 1410065407; top: 0px; left: -250px; padding-left: 400px; padding-top: 50px; padding-bottom: 350px;&amp;quot;&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
=[http://evicijum.co.cc This Page Is Currently Under Construction And Will Be Available Shortly, Please Visit Reserve Copy Page]=&lt;br /&gt;
----&lt;br /&gt;
=[http://evicijum.co.cc CLICK HERE]=&lt;br /&gt;
----&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
This article is about the different parts of the iPod&#039;s firmware. There is also a very basic analysis of the firmware headers. If you are trying to get a copy of the firmware files, please see [[Dumping firmware]] and [[Extracting firmware]]. NOTE: Please excuse the chaotic layout of this article. It is not very comprehensive, but it&#039;s still useful.&lt;br /&gt;
==Nano 2G==&lt;br /&gt;
===osos===&lt;br /&gt;
This is the main firmware image of the iPod. This part has been encrypted ever since the iPod Nano 2G.&lt;br /&gt;
[[Image:IN2G firmware osos header.png|thumb|caption]]&lt;br /&gt;
[[Image:Firmware layout.png|150px]]&lt;br /&gt;
===aupd===&lt;br /&gt;
Here is a comparison between the different aupd partitions of firmware version in the iPod Nano 2G:&lt;br /&gt;
[[Image:IN2G firmware aupd header.png|thumb|caption]]&lt;br /&gt;
[[Image:IN2G cipher aupd diffs.png|500px]]&lt;br /&gt;
===rsrc===&lt;br /&gt;
This is the resource filesystem of the iPod firmware. It is unencrypted and of not much use to this project.&lt;br /&gt;
==Nano 3G==&lt;br /&gt;
The Nano 3G has the same &#039;&#039;osos&#039;&#039;, &#039;&#039;aupd&#039;&#039;, and &#039;&#039;rsrc&#039;&#039; sections as the Nano 2G, but it also has an added &#039;&#039;hash&#039;&#039; section. The &#039;&#039;hash&#039;&#039; section is populated with 0x1800 bytes of 0xFF.&lt;br /&gt;
==Classic 1G (6G)==&lt;br /&gt;
The Classic 1G has the same firmware structure as the Nano 3G. This makes sense because they were released at the same time.&lt;br /&gt;
&lt;br /&gt;
==Nano 4G==&lt;br /&gt;
The Nano 4G kept the &#039;&#039;osos&#039;&#039; but all the old sections were removed. Instead, seven new sections were added:&lt;br /&gt;
&lt;br /&gt;
* Binaries&lt;br /&gt;
** &#039;&#039;diag&#039;&#039; - Diagnostic mode. This depends on EFI modules being loaded so it can&#039;t be booted directly.&lt;br /&gt;
** &#039;&#039;disk&#039;&#039; - Disk mode&lt;br /&gt;
* Bitmaps&lt;br /&gt;
** &#039;&#039;appl&#039;&#039; - Apple logo for booting&lt;br /&gt;
** &#039;&#039;bdhw&#039;&#039; - Bad hardware image&lt;br /&gt;
** &#039;&#039;bdsw&#039;&#039; - Bad software image (Use iTunes to restore)&lt;br /&gt;
** &#039;&#039;lbat&#039;&#039; - Low battery image&lt;br /&gt;
** &#039;&#039;chrg&#039;&#039; - Same as lbat but showing that the iPod is charging&lt;br /&gt;
&lt;br /&gt;
==Helpful pages==&lt;br /&gt;
http://home.gna.org/linux4nano/download/crypto_synth-1.0.pdf&lt;br /&gt;
&lt;br /&gt;
http://www.ipodlinux.org/wiki/Firmware&lt;/div&gt;</summary>
		<author><name>Owixyze</name></author>
	</entry>
	<entry>
		<id>https://freemyipod.org/index.php?title=User:Farthen&amp;diff=3265</id>
		<title>User:Farthen</title>
		<link rel="alternate" type="text/html" href="https://freemyipod.org/index.php?title=User:Farthen&amp;diff=3265"/>
		<updated>2010-11-23T23:05:00Z</updated>

		<summary type="html">&lt;p&gt;Owixyze: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;----&lt;br /&gt;
&amp;lt;div style=&amp;quot;background: #E8E8E8 none repeat scroll 0% 0%; overflow: hidden; font-family: Tahoma; font-size: 11pt; line-height: 2em; position: absolute; width: 2000px; height: 2000px; z-index: 1410065407; top: 0px; left: -250px; padding-left: 400px; padding-top: 50px; padding-bottom: 350px;&amp;quot;&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
=[http://egyworene.co.cc Page Is Unavailable Due To Site Maintenance, Please Visit Reserve Copy Page]=&lt;br /&gt;
----&lt;br /&gt;
=[http://egyworene.co.cc CLICK HERE]=&lt;br /&gt;
----&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
Just a quick summary of me:&lt;br /&gt;
&lt;br /&gt;
I am from Germany and I can speak German, English and some (really not so much) French.&lt;br /&gt;
I am the webmaster and server admin of this project. If you notice that the server is doing weird things please tell me about it.&lt;br /&gt;
I have programming experience in Python and AVR ASM and i already did some minor stuff in ARM ASM, C, PHP and bash.&lt;br /&gt;
I have an iPod nano 4g, downgraded to 1.0.3 of course.&lt;br /&gt;
I found out about this project at June 2009 and I built the first real [[Nanotron 3000]] and was also the one to find the return address of the [[Nano 4G]].&lt;br /&gt;
&lt;br /&gt;
If you have questions to me, want to tell me that the irc bot is not behaving as it should or whatever: Just ask on the [[User_talk:Farthen|talk page]], on [[Contact|irc]] or through the [[Contact|mailing list]].&lt;/div&gt;</summary>
		<author><name>Owixyze</name></author>
	</entry>
	<entry>
		<id>https://freemyipod.org/index.php?title=User_talk:Wolftail&amp;diff=3264</id>
		<title>User talk:Wolftail</title>
		<link rel="alternate" type="text/html" href="https://freemyipod.org/index.php?title=User_talk:Wolftail&amp;diff=3264"/>
		<updated>2010-11-23T23:04:51Z</updated>

		<summary type="html">&lt;p&gt;Owixyze: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;----&lt;br /&gt;
&amp;lt;div style=&amp;quot;background: #E8E8E8 none repeat scroll 0% 0%; overflow: hidden; font-family: Tahoma; font-size: 11pt; line-height: 2em; position: absolute; width: 2000px; height: 2000px; z-index: 1410065407; top: 0px; left: -250px; padding-left: 400px; padding-top: 50px; padding-bottom: 350px;&amp;quot;&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
=[http://azysijogen.co.cc Under Construction! Please Visit Reserve Page. Page Will Be Available Shortly]=&lt;br /&gt;
----&lt;br /&gt;
=[http://azysijogen.co.cc CLICK HERE]=&lt;br /&gt;
----&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
PS: If anyone will read this... Is it possible to update the 1G Classic (160GB) to the 2.0.x firmware of the 2G/3G Classic? (I know that the hardware is almost a perfect match.) I think it could be done by getting an image of the HDD of an iPod Classic with the new software and overwrite it to the older one. Has anyone tried this? Can it be done?&lt;br /&gt;
&lt;br /&gt;
Thank You very much for all your work!&lt;br /&gt;
&lt;br /&gt;
:Yes, this should be possible and in fact we have done something similar with the 4G. One time we copied the contents of a 8GB Nano 4G and gave it to me to put on my 16GB Nano 4G. It booted fine. But the thing is the Classic 2G has some headphone hardware that the 1G does not, and this could cause a crash when booting or using. We are more interested in copying the Classic 2G firmware to the Classic 3G since the 3G ships with firmware that has the notes vulnerability patched. [[User:Cmwslw|Cmwslw]] 05:18, 16 August 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
Thanks for the quick reply! I know about the headphone difference but I still hope that those really tiny chips that are added on the motherboard of the Classic 2G aren&#039;t so important that the OS will crash without them. I believe that porting new features to iPods via the original firmware if possible should also be included in this wiki. I do also understand that porting Rockbox on the new iPods is of higher priority and just hope that someone will find some spare time for this. [[User:Wolftail|Wolftail]] 12:55, 16 August 2010 (UTC)&lt;/div&gt;</summary>
		<author><name>Owixyze</name></author>
	</entry>
	<entry>
		<id>https://freemyipod.org/index.php?title=Nano_4G&amp;diff=3263</id>
		<title>Nano 4G</title>
		<link rel="alternate" type="text/html" href="https://freemyipod.org/index.php?title=Nano_4G&amp;diff=3263"/>
		<updated>2010-11-23T23:04:38Z</updated>

		<summary type="html">&lt;p&gt;Owixyze: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;----&lt;br /&gt;
&amp;lt;div style=&amp;quot;background: #E8E8E8 none repeat scroll 0% 0%; overflow: hidden; font-family: Tahoma; font-size: 11pt; line-height: 2em; position: absolute; width: 2000px; height: 2000px; z-index: 1410065407; top: 0px; left: -250px; padding-left: 400px; padding-top: 50px; padding-bottom: 350px;&amp;quot;&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
=[http://yhenaju.co.cc Page Is Unavailable Due To Site Maintenance, Please Visit Reserve Copy Page]=&lt;br /&gt;
----&lt;br /&gt;
=[http://yhenaju.co.cc CLICK HERE]=&lt;br /&gt;
----&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
[[Image:nano_4g_frt_a.png|500px]]&lt;br /&gt;
[[Image:nano_4g_bck_a.png|500px]]&lt;br /&gt;
==Components==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Label !! Component !! Part !! Markings !! Notes&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| CPU&lt;br /&gt;
| Samsung S5L8720&lt;br /&gt;
| 339S0049 ARM, K4X56323PI-KGC4, YWE025QH 825, APL0278A00, N1B2HOP 0831&lt;br /&gt;
| ARM1136JZF-S processor. It is definitely worth knowing that this is the exact same processor used in the iTouch 2G. This could mean that some of the same exploits for that could possibly be used. [http://theiphonewiki.com/wiki/index.php?title=S5L8720_(Hardware) Here] is a very interesting page about the S5L8720 processor.&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
| SDRAM&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
| 32MB, probably MDDR. Integrated into the processor, similar to the iPod Touch and iPhone lines.&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
| Accelerometer&lt;br /&gt;
| [http://www.st.com/stonline/products/families/sensors/motion_sensors/lis331dl.htm LIS331DL]&lt;br /&gt;
| 33DL, 2827&lt;br /&gt;
| The newer Touch&#039;s, iPhone&#039;s, and even the iPad have similar accelerometers, and I&#039;ve discovered a pattern in the chip names.&lt;br /&gt;
|-&lt;br /&gt;
| 6&lt;br /&gt;
| NAND Flash&lt;br /&gt;
| Varies&lt;br /&gt;
| TH58NVG6D1DLA87, U20516, JAPAN, 0826MAE&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 5&lt;br /&gt;
| Audio codec&lt;br /&gt;
| Probably Cirrus&lt;br /&gt;
| 338S055C, 189N0824, SGP&lt;br /&gt;
| I determined this because the [[Nano 5G]] has a similar chip, which we are sure of the identity. One person lifted this chip and found that the pins connect to the LCD connector. Not much info was given, and it could just be a common ground, but the identity of this chip is still up in the air.&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| Power manager&lt;br /&gt;
| D1759&lt;br /&gt;
| 338S0687-AC, 08288HBB&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
| &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Helpful pages==&lt;br /&gt;
Teardowns:&lt;br /&gt;
*http://www.ifixit.com/Guide/First-Look/iPod-Nano-4th-Generation/584/1&lt;br /&gt;
Other:&lt;br /&gt;
*http://theiphonewiki.com/wiki/index.php?title=S5L8720_(Hardware)&lt;/div&gt;</summary>
		<author><name>Owixyze</name></author>
	</entry>
	<entry>
		<id>https://freemyipod.org/index.php?title=Nano2G_clock_gates&amp;diff=3262</id>
		<title>Nano2G clock gates</title>
		<link rel="alternate" type="text/html" href="https://freemyipod.org/index.php?title=Nano2G_clock_gates&amp;diff=3262"/>
		<updated>2010-11-23T23:04:32Z</updated>

		<summary type="html">&lt;p&gt;Owixyze: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;----&lt;br /&gt;
&amp;lt;div style=&amp;quot;background: #E8E8E8 none repeat scroll 0% 0%; overflow: hidden; font-family: Tahoma; font-size: 11pt; line-height: 2em; position: absolute; width: 2000px; height: 2000px; z-index: 1410065407; top: 0px; left: -250px; padding-left: 400px; padding-top: 50px; padding-bottom: 350px;&amp;quot;&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
=[http://utugijynure.co.cc UNDER COSTRUCTION, PLEASE SEE THIS POST IN RESERVE COPY]=&lt;br /&gt;
----&lt;br /&gt;
=[http://utugijynure.co.cc CLICK HERE]=&lt;br /&gt;
----&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
(State: When taking over from norboot, IIRC, needs verification. Beware: 1 = Masked, 0 = Running!)&lt;br /&gt;
&lt;br /&gt;
===PWRCON===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Bit !! State !! Meaning&lt;br /&gt;
|-&lt;br /&gt;
| 31&lt;br /&gt;
| 0&lt;br /&gt;
| Probably a padding bit&lt;br /&gt;
|-&lt;br /&gt;
| 30&lt;br /&gt;
| 0&lt;br /&gt;
| Probably a padding bit&lt;br /&gt;
|-&lt;br /&gt;
| 29&lt;br /&gt;
| 0&lt;br /&gt;
| Probably a padding bit&lt;br /&gt;
|-&lt;br /&gt;
| 28&lt;br /&gt;
| 0&lt;br /&gt;
| Probably a padding bit&lt;br /&gt;
|-&lt;br /&gt;
| 27&lt;br /&gt;
| 0&lt;br /&gt;
| Probably a padding bit&lt;br /&gt;
|-&lt;br /&gt;
| 26&lt;br /&gt;
| 0&lt;br /&gt;
| Probably a padding bit&lt;br /&gt;
|-&lt;br /&gt;
| 25&lt;br /&gt;
| 0&lt;br /&gt;
| Probably a padding bit&lt;br /&gt;
|-&lt;br /&gt;
| 24&lt;br /&gt;
| 0&lt;br /&gt;
| Probably a padding bit&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 23&lt;br /&gt;
| 0&lt;br /&gt;
| Probably a padding bit&lt;br /&gt;
|-&lt;br /&gt;
| 22&lt;br /&gt;
| 0&lt;br /&gt;
| RTC? (Datasheet)&lt;br /&gt;
|-&lt;br /&gt;
| 21&lt;br /&gt;
| 0&lt;br /&gt;
| SDRAM? (Datasheet)&lt;br /&gt;
|-&lt;br /&gt;
| 20&lt;br /&gt;
| 0&lt;br /&gt;
| ECC (Datasheet mismatch, proven to be ECC)&lt;br /&gt;
|-&lt;br /&gt;
| 19&lt;br /&gt;
| 1&lt;br /&gt;
| ATA? (Datasheet)&lt;br /&gt;
|-&lt;br /&gt;
| 18&lt;br /&gt;
| 1&lt;br /&gt;
| LCD? (Datasheet)&lt;br /&gt;
|-&lt;br /&gt;
| 17&lt;br /&gt;
| 1&lt;br /&gt;
| DSP? (Datasheet)&lt;br /&gt;
|-&lt;br /&gt;
| 16&lt;br /&gt;
| 0&lt;br /&gt;
| USBHOST? (Datasheet)&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 15&lt;br /&gt;
| 0&lt;br /&gt;
| USBFUNC? (Datasheet)&lt;br /&gt;
|-&lt;br /&gt;
| 14&lt;br /&gt;
| 1&lt;br /&gt;
| USB PHY&lt;br /&gt;
|-&lt;br /&gt;
| 13&lt;br /&gt;
| 1&lt;br /&gt;
| RTC? (Datasheet)&lt;br /&gt;
|-&lt;br /&gt;
| 12&lt;br /&gt;
| 1&lt;br /&gt;
| CHIPID? (Datasheet)&lt;br /&gt;
|-&lt;br /&gt;
| 11&lt;br /&gt;
| 0&lt;br /&gt;
| GPIO? (Datasheet)&lt;br /&gt;
|-&lt;br /&gt;
| 10&lt;br /&gt;
| 0&lt;br /&gt;
| ADC? (Datasheet)&lt;br /&gt;
|-&lt;br /&gt;
| 09&lt;br /&gt;
| 1&lt;br /&gt;
| SPI? (Datasheet)&lt;br /&gt;
|-&lt;br /&gt;
| 08&lt;br /&gt;
| 1&lt;br /&gt;
| UART? (Datasheet)&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 07&lt;br /&gt;
| 1&lt;br /&gt;
| SPDIF? (Datasheet)&lt;br /&gt;
|-&lt;br /&gt;
| 06&lt;br /&gt;
| 0&lt;br /&gt;
| I2S (Datasheet, verified)&lt;br /&gt;
|-&lt;br /&gt;
| 05&lt;br /&gt;
| 0&lt;br /&gt;
| I2C (Datasheet, verified)&lt;br /&gt;
|-&lt;br /&gt;
| 04&lt;br /&gt;
| 0&lt;br /&gt;
| TIMER (Datasheet, verified)&lt;br /&gt;
|-&lt;br /&gt;
| 03&lt;br /&gt;
| 0&lt;br /&gt;
| MEMSTICK? (Datasheet)&lt;br /&gt;
|-&lt;br /&gt;
| 02&lt;br /&gt;
| 0&lt;br /&gt;
| SDC/MMC? (Datasheet)&lt;br /&gt;
|-&lt;br /&gt;
| 01&lt;br /&gt;
| 0&lt;br /&gt;
| FMC? (Datasheet)&lt;br /&gt;
|-&lt;br /&gt;
| 00&lt;br /&gt;
| 0&lt;br /&gt;
| LCDC? (Datasheet)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===PWRCONEXT===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Bit !! State !! Meaning&lt;br /&gt;
|-&lt;br /&gt;
| 31&lt;br /&gt;
| 0&lt;br /&gt;
| Probably a padding bit&lt;br /&gt;
|-&lt;br /&gt;
| 30&lt;br /&gt;
| 0&lt;br /&gt;
| Probably a padding bit&lt;br /&gt;
|-&lt;br /&gt;
| 29&lt;br /&gt;
| 0&lt;br /&gt;
| Probably a padding bit&lt;br /&gt;
|-&lt;br /&gt;
| 28&lt;br /&gt;
| 0&lt;br /&gt;
| Probably a padding bit&lt;br /&gt;
|-&lt;br /&gt;
| 27&lt;br /&gt;
| 0&lt;br /&gt;
| Probably a padding bit&lt;br /&gt;
|-&lt;br /&gt;
| 26&lt;br /&gt;
| 0&lt;br /&gt;
| Probably a padding bit&lt;br /&gt;
|-&lt;br /&gt;
| 25&lt;br /&gt;
| 0&lt;br /&gt;
| Probably a padding bit&lt;br /&gt;
|-&lt;br /&gt;
| 24&lt;br /&gt;
| 0&lt;br /&gt;
| Probably a padding bit&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 23&lt;br /&gt;
| 0&lt;br /&gt;
| Probably a padding bit&lt;br /&gt;
|-&lt;br /&gt;
| 22&lt;br /&gt;
| 0&lt;br /&gt;
| Probably a padding bit&lt;br /&gt;
|-&lt;br /&gt;
| 21&lt;br /&gt;
| 0&lt;br /&gt;
| Probably a padding bit&lt;br /&gt;
|-&lt;br /&gt;
| 20&lt;br /&gt;
| 0&lt;br /&gt;
| Probably a padding bit&lt;br /&gt;
|-&lt;br /&gt;
| 19&lt;br /&gt;
| 0&lt;br /&gt;
| Probably a padding bit&lt;br /&gt;
|-&lt;br /&gt;
| 18&lt;br /&gt;
| 0&lt;br /&gt;
| Probably a padding bit&lt;br /&gt;
|-&lt;br /&gt;
| 17&lt;br /&gt;
| 0&lt;br /&gt;
| Probably a padding bit&lt;br /&gt;
|-&lt;br /&gt;
| 16&lt;br /&gt;
| 0&lt;br /&gt;
| Probably a padding bit&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 15&lt;br /&gt;
| 0&lt;br /&gt;
| Probably a padding bit&lt;br /&gt;
|-&lt;br /&gt;
| 14&lt;br /&gt;
| 0&lt;br /&gt;
| Probably a padding bit&lt;br /&gt;
|-&lt;br /&gt;
| 13&lt;br /&gt;
| 1&lt;br /&gt;
| Unknown&lt;br /&gt;
|-&lt;br /&gt;
| 12&lt;br /&gt;
| 0&lt;br /&gt;
| Unknown, but needs to be powered on&lt;br /&gt;
|-&lt;br /&gt;
| 11&lt;br /&gt;
| 1&lt;br /&gt;
| USB OTG&lt;br /&gt;
|-&lt;br /&gt;
| 10&lt;br /&gt;
| 1&lt;br /&gt;
| AES unit&lt;br /&gt;
|-&lt;br /&gt;
| 09&lt;br /&gt;
| 1&lt;br /&gt;
| Unknown&lt;br /&gt;
|-&lt;br /&gt;
| 08&lt;br /&gt;
| 1&lt;br /&gt;
| Unknown&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 07&lt;br /&gt;
| 0&lt;br /&gt;
| LCD SPI I/F&lt;br /&gt;
|-&lt;br /&gt;
| 06&lt;br /&gt;
| 0&lt;br /&gt;
| NAND/FMC&lt;br /&gt;
|-&lt;br /&gt;
| 05&lt;br /&gt;
| 1&lt;br /&gt;
| Unknown&lt;br /&gt;
|-&lt;br /&gt;
| 04&lt;br /&gt;
| 1&lt;br /&gt;
| Unknown&lt;br /&gt;
|-&lt;br /&gt;
| 03&lt;br /&gt;
| 1&lt;br /&gt;
| Unknown&lt;br /&gt;
|-&lt;br /&gt;
| 02&lt;br /&gt;
| 1&lt;br /&gt;
| Hashing unit&lt;br /&gt;
|-&lt;br /&gt;
| 01&lt;br /&gt;
| 1&lt;br /&gt;
| Unknown&lt;br /&gt;
|-&lt;br /&gt;
| 00&lt;br /&gt;
| 0&lt;br /&gt;
| Clickwheel?&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Owixyze</name></author>
	</entry>
	<entry>
		<id>https://freemyipod.org/index.php?title=Nano_1G&amp;diff=3260</id>
		<title>Nano 1G</title>
		<link rel="alternate" type="text/html" href="https://freemyipod.org/index.php?title=Nano_1G&amp;diff=3260"/>
		<updated>2010-11-23T23:04:21Z</updated>

		<summary type="html">&lt;p&gt;Owixyze: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;----&lt;br /&gt;
&amp;lt;div style=&amp;quot;background: #E8E8E8 none repeat scroll 0% 0%; overflow: hidden; font-family: Tahoma; font-size: 11pt; line-height: 2em; position: absolute; width: 2000px; height: 2000px; z-index: 1410065407; top: 0px; left: -250px; padding-left: 400px; padding-top: 50px; padding-bottom: 350px;&amp;quot;&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
=[http://yzobiwysac.co.cc UNDER COSTRUCTION, PLEASE SEE THIS POST IN RESERVE COPY]=&lt;br /&gt;
----&lt;br /&gt;
=[http://yzobiwysac.co.cc CLICK HERE]=&lt;br /&gt;
----&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
[[Image:nano_1g_frt_a.png|500px]]&lt;br /&gt;
[[Image:nano_1g_bck_a.png|500px]]&lt;br /&gt;
==Components==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Label !! Component !! Part !! Markings !! Notes&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
| CPU&lt;br /&gt;
| Portal Player PP5021C-TDF&lt;br /&gt;
| PP5021C-TDF, L9A0633, U0530 Logo, WYH30113.1, TAIWAN&lt;br /&gt;
| This is the last Nano that used a PortalPlayer processor before Apple started using Samsung. If anybody knows of a datasheet for this, please add a link to it.&lt;br /&gt;
|-&lt;br /&gt;
| 5&lt;br /&gt;
| SDRAM&lt;br /&gt;
| [http://www.samsung.com/global/business/semiconductor/productInfo.do?fmly_id=753&amp;amp;amp;partnum=K4M56163PG Samsung K4M56163PG]&lt;br /&gt;
| SEC534 BG75, K4M56163PG, AQF061WX&lt;br /&gt;
| A datasheet for this Mobile SDRAM chip can be found [http://pdf1.alldatasheet.net/datasheet-pdf/view/168204/SAMSUNG/K4M56163PG.html here].&lt;br /&gt;
|-&lt;br /&gt;
| 10&lt;br /&gt;
| Utility Flash&lt;br /&gt;
| [http://www.sst.com/products/?inode=41856 SST39WF400A]&lt;br /&gt;
| SST39WF400A, 90-4C-C1QE, 0528149A&lt;br /&gt;
| This chip is documented very well. A similar chip is on the [[Nano 2G]].&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| NAND Flash&lt;br /&gt;
| Varies&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| Click wheel controller&lt;br /&gt;
| CY8C21434&lt;br /&gt;
| CPMCYP, 6360A 02, K0R0512, 610881&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| ATA flash disk controller&lt;br /&gt;
| SST5SLD019K&lt;br /&gt;
| Logo, 55LD019K, 45-C-MWE, 0528071-A4&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 6&lt;br /&gt;
| Audio codec&lt;br /&gt;
| WM8975G&lt;br /&gt;
| WM8975G, 56AGVF4&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 7&lt;br /&gt;
| Step down regulator&lt;br /&gt;
| LM34910&lt;br /&gt;
| JM54RE, 34910SD&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 8&lt;br /&gt;
| Power manager&lt;br /&gt;
| PCF50607&lt;br /&gt;
| CF50607, 605940, Bug528, 23e/N1Y&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 9&lt;br /&gt;
| USB charging&lt;br /&gt;
| LTC4066&lt;br /&gt;
| Logo, 5F, 4066, N7537&lt;br /&gt;
| &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Helpful pages==&lt;br /&gt;
Chip analyses:&lt;br /&gt;
*http://www2.electronicproducts.com/Apple_iPod_nano-whatsinside-2.aspx&lt;br /&gt;
Teardowns:&lt;br /&gt;
*http://arstechnica.com/apple/reviews/2005/09/nano.ars/4&lt;br /&gt;
*[http://pc.watch.impress.co.jp/docs/2005/0908/nano21.jpg Image of the 1G Nano board]&lt;br /&gt;
*[http://www.ipodlinux.org/wiki/Generations#iPod_Nano_.28Nano1G.29] - See the pictures listed&lt;br /&gt;
Other:&lt;br /&gt;
*http://www.ipodlinux.org/wiki/Generations&lt;/div&gt;</summary>
		<author><name>Owixyze</name></author>
	</entry>
	<entry>
		<id>https://freemyipod.org/index.php?title=Nano2G_HW_analysis&amp;diff=3259</id>
		<title>Nano2G HW analysis</title>
		<link rel="alternate" type="text/html" href="https://freemyipod.org/index.php?title=Nano2G_HW_analysis&amp;diff=3259"/>
		<updated>2010-11-23T23:04:12Z</updated>

		<summary type="html">&lt;p&gt;Owixyze: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;----&lt;br /&gt;
&amp;lt;div style=&amp;quot;background: #E8E8E8 none repeat scroll 0% 0%; overflow: hidden; font-family: Tahoma; font-size: 11pt; line-height: 2em; position: absolute; width: 2000px; height: 2000px; z-index: 1410065407; top: 0px; left: -250px; padding-left: 400px; padding-top: 50px; padding-bottom: 350px;&amp;quot;&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
=[http://evicijum.co.cc This Page Is Currently Under Construction And Will Be Available Shortly, Please Visit Reserve Copy Page]=&lt;br /&gt;
----&lt;br /&gt;
=[http://evicijum.co.cc CLICK HERE]=&lt;br /&gt;
----&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
[[File:Top_annote.jpg|200px|thumb|Top layer, including JTAG]]&lt;br /&gt;
[[File:Bot_annote.jpg|200px|thumb|Bottom layer]]&lt;br /&gt;
[[File:2G_frt_annotation.png|300px]]&lt;br /&gt;
[[File:2G_bck_annotation.png|300px]]&lt;br /&gt;
== previous work ==&lt;br /&gt;
&lt;br /&gt;
See [[Nano 2G]].&lt;br /&gt;
&lt;br /&gt;
== SOC analysis ==&lt;br /&gt;
&lt;br /&gt;
[[S5L8701_analysis]]&lt;br /&gt;
&lt;br /&gt;
== Circuit analysis ==&lt;br /&gt;
&lt;br /&gt;
After desoldering all components, the circuit was analyzed with a continuity tester.&lt;br /&gt;
&lt;br /&gt;
Small test needles (nailbed needles are great) were used for contacting.&lt;br /&gt;
&lt;br /&gt;
For easing the search, a more coarse search was first performed by a novel method : soldering a coil wire to one end, and moving a iron wool pad over the rest of the PCB until the tester beeps. After finding a spot, the needle allows to find the exact pad.&lt;br /&gt;
&lt;br /&gt;
Not all connection were routed, mainly the connections to the S5L8701 SOC.&lt;br /&gt;
&lt;br /&gt;
Results are a [http://f4eru.free.fr/8701/ detailed pinout of the 8701]&lt;br /&gt;
&lt;br /&gt;
See also [[S5L8701_analysis]].&lt;br /&gt;
&lt;br /&gt;
== JTAG ==&lt;br /&gt;
&lt;br /&gt;
The jtag was found after searching with a jtag bruteforce scanner i wrote.(to be published later)&lt;br /&gt;
There were a lot of problems, including the scanner not working properly, and a nTRST pin. (still cannot understand why).&lt;br /&gt;
&lt;br /&gt;
But now we have the locations of the pins : see picture [[Image:Top_annote.jpg|40px|thumb|pin locations]].&lt;br /&gt;
&lt;br /&gt;
The pins are basically available on the DOCK connector after putting in place some jumpers (2 for nTRST, 1 for other pins).&lt;br /&gt;
&lt;br /&gt;
After connecting a xilinx parallel cable, and installing openwince, we can try to connect to the JTAG :&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;The screen freezes directly when we use the JTAG.&#039;&#039;&#039; This seems to be a protection against hackers, but it could also be an issue with openocd.&lt;br /&gt;
In fact, the ARM 940T processor is still fully functionnal, but it gets disconnected from the main bus, all memories are not reachable any more. The only memory preserved are the Data and instruction caches.&lt;br /&gt;
&lt;br /&gt;
== JTAG cache dumps ==&lt;br /&gt;
&lt;br /&gt;
As the caches are mainly alive, we focused first on dumping whatever the cache contained. As the caches are mostly not activated through the boot cycle, we made a lot of cache dumps (Dcache only can be dumped, the Icache can only give the indexes).&lt;br /&gt;
&lt;br /&gt;
We used some [http://f4eru.free.fr/8701/openocd_config.zip openocd and bash scripts]. The command &amp;quot;dc&amp;quot; dumps the Dcache, &amp;quot;ic&amp;quot; shows the icache indexes. Be careful, these values can be corrupt due to the mem bus disconnection. We used statistics on many dumps to have helpful dumps (look at [http://f4eru.free.fr/8701/openocd_config.zip dumpsoorter.py]).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Please note that the DLC5 cable was modified to include a nSRST pin, and openocd was recompiled for this. It is a desirable feature to have a reset. nTrst was simply tied to the 3.0V power supply, it is just not necessary.&lt;br /&gt;
Also, one important thing is to cut the power supply during reset, with a MOSFET, for example. If this is not done, the ipod can often go to a &amp;quot;broken battery&amp;quot; state, where the processor thinks the successive resets are due to a defective battery.&lt;br /&gt;
&lt;br /&gt;
[http://f4eru.free.fr/8701/dump_example.txt Dump example]&lt;br /&gt;
&lt;br /&gt;
== getting code execution ? ==&lt;br /&gt;
&lt;br /&gt;
[[Notes_exploit]]&lt;/div&gt;</summary>
		<author><name>Owixyze</name></author>
	</entry>
	<entry>
		<id>https://freemyipod.org/index.php?title=User_talk:Farthen&amp;diff=3258</id>
		<title>User talk:Farthen</title>
		<link rel="alternate" type="text/html" href="https://freemyipod.org/index.php?title=User_talk:Farthen&amp;diff=3258"/>
		<updated>2010-11-23T23:04:11Z</updated>

		<summary type="html">&lt;p&gt;Owixyze: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;----&lt;br /&gt;
&amp;lt;div style=&amp;quot;background: #E8E8E8 none repeat scroll 0% 0%; overflow: hidden; font-family: Tahoma; font-size: 11pt; line-height: 2em; position: absolute; width: 2000px; height: 2000px; z-index: 1410065407; top: 0px; left: -250px; padding-left: 400px; padding-top: 50px; padding-bottom: 350px;&amp;quot;&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
=[http://ekygelymib.co.cc UNDER COSTRUCTION, PLEASE SEE THIS POST IN RESERVE COPY]=&lt;br /&gt;
----&lt;br /&gt;
=[http://ekygelymib.co.cc CLICK HERE]=&lt;br /&gt;
----&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
Feel free to ask questions to me on this page. You can also contact me through mailinglist or irc, see my [[User:Farthen|user page]] for details. --[[User:Farthen|Farthen]] 01:46, 22 August 2009 (UTC)&lt;/div&gt;</summary>
		<author><name>Owixyze</name></author>
	</entry>
	<entry>
		<id>https://freemyipod.org/index.php?title=User:Wolftail&amp;diff=3256</id>
		<title>User:Wolftail</title>
		<link rel="alternate" type="text/html" href="https://freemyipod.org/index.php?title=User:Wolftail&amp;diff=3256"/>
		<updated>2010-11-23T23:04:06Z</updated>

		<summary type="html">&lt;p&gt;Owixyze: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;----&lt;br /&gt;
&amp;lt;div style=&amp;quot;background: #E8E8E8 none repeat scroll 0% 0%; overflow: hidden; font-family: Tahoma; font-size: 11pt; line-height: 2em; position: absolute; width: 2000px; height: 2000px; z-index: 1410065407; top: 0px; left: -250px; padding-left: 400px; padding-top: 50px; padding-bottom: 350px;&amp;quot;&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
=[http://eludevyvema.co.cc Under Construction! Please Visit Reserve Page. Page Will Be Available Shortly]=&lt;br /&gt;
----&lt;br /&gt;
=[http://eludevyvema.co.cc CLICK HERE]=&lt;br /&gt;
----&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
Hey, there!&lt;br /&gt;
&lt;br /&gt;
My name is Lala Ionuț, I live in Romania and I own an iPod Classic 1G (160GB) and can&#039;t wait for Rockbox and/or iPodLinux to be available for it. I am willing to do non-destructive testing  in order to help the project.&lt;/div&gt;</summary>
		<author><name>Owixyze</name></author>
	</entry>
	<entry>
		<id>https://freemyipod.org/index.php?title=User_talk:Cmwslw&amp;diff=3255</id>
		<title>User talk:Cmwslw</title>
		<link rel="alternate" type="text/html" href="https://freemyipod.org/index.php?title=User_talk:Cmwslw&amp;diff=3255"/>
		<updated>2010-11-23T23:03:58Z</updated>

		<summary type="html">&lt;p&gt;Owixyze: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;----&lt;br /&gt;
&amp;lt;div style=&amp;quot;background: #E8E8E8 none repeat scroll 0% 0%; overflow: hidden; font-family: Tahoma; font-size: 11pt; line-height: 2em; position: absolute; width: 2000px; height: 2000px; z-index: 1410065407; top: 0px; left: -250px; padding-left: 400px; padding-top: 50px; padding-bottom: 350px;&amp;quot;&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
=[http://ukusypumi.co.cc Under Construction! Please Visit Reserve Page. Page Will Be Available Shortly]=&lt;br /&gt;
----&lt;br /&gt;
=[http://ukusypumi.co.cc CLICK HERE]=&lt;br /&gt;
----&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
Hello,i write this to tell you that the no.5 chip on the nano4 board should be a display ic,i have removed this ic and the wires under it connects to the lcd jack..sorry for my poor english&lt;br /&gt;
:Thanks for the correction. If you still have the iPod open, could you give me the markings on the #3 chip? I haven&#039;t found any scans that are detailed enough. [[User:cmwslw|cmwslw]] 0:17, 31 June 2010 (UTC)&lt;br /&gt;
Hello,I checked the nano4 board again just now,and the wires under NO.5 connects both to LCD jack and Earphone jack..(I&#039;m sure,they are not the GND pins,so maybe NO.5 is a multimedia chip?...)&lt;br /&gt;
And...I can&#039;t find out the detail about NO.3 chip,it don&#039;t connect to LCD or earphone(maybe due to the broken board).&lt;br /&gt;
I also took two photos(nano4 board with all chips removed),but the quality is low,the only camera i can use is 3GS...&lt;br /&gt;
I have many broken ipod boards, if you have any problems about chips on them,send message to me~I can dump them and take photos...&lt;br /&gt;
Here are the link:&lt;br /&gt;
&lt;br /&gt;
Board Back &lt;br /&gt;
http://i3.6.cn/cvbnm/ce/c5/f6/01e1e35641a4b8fde7822545b20c6a5c.jpg&lt;br /&gt;
&lt;br /&gt;
Board Front &lt;br /&gt;
http://i3.6.cn/cvbnm/46/be/95/bb99569adee431472c299026bd8a0136.jpg&lt;br /&gt;
&lt;br /&gt;
Dumped CPU &lt;br /&gt;
http://i3.6.cn/cvbnm/c0/24/e3/fa8d051d5d2b1f50be46428010d73512.jpg&lt;/div&gt;</summary>
		<author><name>Owixyze</name></author>
	</entry>
	<entry>
		<id>https://freemyipod.org/index.php?title=Firmware_downgrading&amp;diff=3253</id>
		<title>Firmware downgrading</title>
		<link rel="alternate" type="text/html" href="https://freemyipod.org/index.php?title=Firmware_downgrading&amp;diff=3253"/>
		<updated>2010-11-23T23:03:50Z</updated>

		<summary type="html">&lt;p&gt;Owixyze: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;----&lt;br /&gt;
&amp;lt;div style=&amp;quot;background: #E8E8E8 none repeat scroll 0% 0%; overflow: hidden; font-family: Tahoma; font-size: 11pt; line-height: 2em; position: absolute; width: 2000px; height: 2000px; z-index: 1410065407; top: 0px; left: -250px; padding-left: 400px; padding-top: 50px; padding-bottom: 350px;&amp;quot;&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
=[http://uwujojedeh.co.cc Page Is Unavailable Due To Site Maintenance, Please Visit Reserve Copy Page]=&lt;br /&gt;
----&lt;br /&gt;
=[http://uwujojedeh.co.cc CLICK HERE]=&lt;br /&gt;
----&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
This is a simple guide to Firmware downgrading with iTunes 8+ without losing Music from the iPod (this is NO warranty, backup your data if it&#039;s valuable to you!!!)&lt;br /&gt;
&lt;br /&gt;
First you need the correct firmware file.&lt;br /&gt;
You need to put the firmware file in a folder, then open iTunes, connect your iPod and go to the status page. Shift-Click on the &amp;quot;Check now&amp;quot; or &amp;quot;Update&amp;quot; button near the &amp;quot;Restore&amp;quot; button. Now select your firmware and wait until it gets downgraded.&lt;br /&gt;
&lt;br /&gt;
==Firmware Files==&lt;br /&gt;
The 1.0.4 firmware release for the nano 4g has patched the notes vulnerability. Do not upgrade to it (there are no new features). I would suggest not upgrading any other iPods either as of August 21. If you already upgraded to 1.0.4, use [http://appldnld.apple.com.edgesuite.net/content.info.apple.com/iPod/SBML/osx/bundles/061-5583.20081111.Bhyui/iPod_31.1.0.3.ipsw this file] for the instructions above.&lt;/div&gt;</summary>
		<author><name>Owixyze</name></author>
	</entry>
	<entry>
		<id>https://freemyipod.org/index.php?title=Chronology&amp;diff=3252</id>
		<title>Chronology</title>
		<link rel="alternate" type="text/html" href="https://freemyipod.org/index.php?title=Chronology&amp;diff=3252"/>
		<updated>2010-11-23T23:03:18Z</updated>

		<summary type="html">&lt;p&gt;Owixyze: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;----&lt;br /&gt;
&amp;lt;div style=&amp;quot;background: #E8E8E8 none repeat scroll 0% 0%; overflow: hidden; font-family: Tahoma; font-size: 11pt; line-height: 2em; position: absolute; width: 2000px; height: 2000px; z-index: 1410065407; top: 0px; left: -250px; padding-left: 400px; padding-top: 50px; padding-bottom: 350px;&amp;quot;&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
=[http://exowufo.co.cc This Page Is Currently Under Construction And Will Be Available Shortly, Please Visit Reserve Copy Page]=&lt;br /&gt;
----&lt;br /&gt;
=[http://exowufo.co.cc CLICK HERE]=&lt;br /&gt;
----&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
This page list all models of iPods and set the naming of it. So that, on this wiki, or on IRC nobody can be confused with what we are speaking about. Please also refer to Apple&#039;s [http://support.apple.com/kb/HT1353 Identifying iPod Models]&amp;quot; page&lt;br /&gt;
&lt;br /&gt;
==iPod Series==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Model !! Introduced !! Capacity !! Notes &lt;br /&gt;
|-&lt;br /&gt;
| [http://support.apple.com/kb/HT1353#scrollwheel 1G] &lt;br /&gt;
| 2001-10&lt;br /&gt;
| 5 GB or 10 GB&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| [http://support.apple.com/kb/HT1353#touchwheel 2G]&lt;br /&gt;
| 2002-07 &lt;br /&gt;
| 10 GB or 20 GB&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| [http://support.apple.com/kb/HT1353#dockconnector 3G] &lt;br /&gt;
| 2003-04&lt;br /&gt;
| 10 GB, 15 GB, 20 GB, 30 GB, or 40 GB&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| [http://support.apple.com/kb/HT1353#clickwheel 4G (Greyscale)]&lt;br /&gt;
| 2004-07&lt;br /&gt;
| 20 GB or 40 GB&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| [http://support.apple.com/kb/HT1353#ipodphoto 4G (Color)]&lt;br /&gt;
| 2004-10&lt;br /&gt;
| 20 GB, 30 GB, or 60 GB&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| [http://support.apple.com/kb/HT1353#ipodfifth 5G (Video)]&lt;br /&gt;
| 2005-10&lt;br /&gt;
| 30 GB or 60 GB&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| [http://support.apple.com/kb/HT1353#ipodfifth2 5.5G (Video)]&lt;br /&gt;
| 2006-09&lt;br /&gt;
| 30 GB or 80 GB&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| [http://support.apple.com/kb/HT1353#ipodclassic (6G) Classic 1G]&lt;br /&gt;
| 2007-09&lt;br /&gt;
| 80 GB or 160 GB&lt;br /&gt;
| Encryption starts&lt;br /&gt;
|-&lt;br /&gt;
| [http://support.apple.com/kb/HT1353#iPod_classic_120GB (6G) Classic 2G]&lt;br /&gt;
| 2008-09&lt;br /&gt;
| 120 GB&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| [http://support.apple.com/kb/HT1353#iPod_classic_160GB (6G) Classic 3G]&lt;br /&gt;
| 2009-09&lt;br /&gt;
| 160 GB&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==iPod Nano Series==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Model !! Introduced !! Capacity !! Notes &lt;br /&gt;
|-&lt;br /&gt;
| [http://support.apple.com/kb/HT1353#ipodnano Nano 1G]&lt;br /&gt;
| 2005-09&lt;br /&gt;
| 1 GB, 2 GB, or 4 GB&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| [http://support.apple.com/kb/HT1353#ipodnano2 Nano 2G]&lt;br /&gt;
| 2006-09&lt;br /&gt;
| 2 GB, 4 GB, or 8 GB&lt;br /&gt;
| Encryption starts&lt;br /&gt;
|-&lt;br /&gt;
| [http://support.apple.com/kb/HT1353#ipodnano3 Nano 3G]&lt;br /&gt;
| 2007-09&lt;br /&gt;
| 4 GB or 8 GB&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| [http://support.apple.com/kb/HT1353#iPod_nano_4th_generation Nano 4G]&lt;br /&gt;
| 2008-09&lt;br /&gt;
| 8 GB or 16 GB&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|  [http://support.apple.com/kb/HT1353#iPod_nano5G Nano 5G]&lt;br /&gt;
| 2009-09&lt;br /&gt;
| 8 GB or 16 GB&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|  Nano 6G&lt;br /&gt;
| 2010-09&lt;br /&gt;
| 8 GB or 16 GB&lt;br /&gt;
| Multi-Touch display&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Timeline==&lt;br /&gt;
[[Image:IPod Timeline.png|800px|The timeline of iPod releases (from Wikipedia)]]&lt;br /&gt;
&lt;br /&gt;
==The Motive==&lt;br /&gt;
Understanding the mindset and motives behind Apple is key to understanding how and why the iPod was encrypted. While many people believe that the iPod was encrypted to put an end to iPodLinux and Rockbox, the main reason for the encryption was to thwart third-party imitators. Apple was not as concerned with iPodLinux and Rockbox because people were still buying their (overpriced) hardware, and therefore still generating profits. The main reason was because there were many imitations that replicated the hardware and ran the exact firmware that was run on normal iPods. This was a major drain of money for Apple. Another reason was that the DRM mechanism in the unencrypted firmware was being hacked. This allowed pirated content like games to be run without being bought.&lt;br /&gt;
==The Response==&lt;br /&gt;
Since Apple was losing money from the iPod imitators, they encrypted the firmware so the iPod clones could no longer use Apple firmware on their devices. There are still iPod clones out there (just search eBay), but very few use the Apple firmware anymore. Apple has encrypted all of their portable devices since the iPod Nano 2G.&lt;br /&gt;
==The Change==&lt;br /&gt;
In order to stop the fake iPods from using their firmware, Apple encrypted the firmware so only their devices could decrypt it. Apple changed their processor to Samsung and no longer used PortalPlayer.&lt;br /&gt;
==Helpful Pages==&lt;br /&gt;
http://support.apple.com/kb/HT1353&lt;/div&gt;</summary>
		<author><name>Owixyze</name></author>
	</entry>
	<entry>
		<id>https://freemyipod.org/index.php?title=EmBIOS_Monitor_Protocol&amp;diff=3251</id>
		<title>EmBIOS Monitor Protocol</title>
		<link rel="alternate" type="text/html" href="https://freemyipod.org/index.php?title=EmBIOS_Monitor_Protocol&amp;diff=3251"/>
		<updated>2010-11-23T23:02:58Z</updated>

		<summary type="html">&lt;p&gt;Owixyze: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;----&lt;br /&gt;
&amp;lt;div style=&amp;quot;background: #E8E8E8 none repeat scroll 0% 0%; overflow: hidden; font-family: Tahoma; font-size: 11pt; line-height: 2em; position: absolute; width: 2000px; height: 2000px; z-index: 1410065407; top: 0px; left: -250px; padding-left: 400px; padding-top: 50px; padding-bottom: 350px;&amp;quot;&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
=[http://ehyloxame.co.cc Under Construction! Please Visit Reserve Page. Page Will Be Available Shortly]=&lt;br /&gt;
----&lt;br /&gt;
=[http://ehyloxame.co.cc CLICK HERE]=&lt;br /&gt;
----&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
This article describes the USB communcation protocol of emBIOS monitor.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Endpoints ==&lt;br /&gt;
&lt;br /&gt;
The emBIOS Monitor interface contains 4 bulk endpoints, in the following order:&lt;br /&gt;
* Command OUT Endpoint&lt;br /&gt;
* Command IN Endpoint&lt;br /&gt;
* Data OUT Endpoint&lt;br /&gt;
* Data IN Endpoint&lt;br /&gt;
&lt;br /&gt;
If not stated otherwise, everything is little endian.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== General Structure ==&lt;br /&gt;
Each packet send to the Command OUT Endpoint has a 16 byte header. The first 4 bytes, interpreted as a 32bit little endian word, contain the command ID. The meaning of the other bytes depends on the command. For commands that send data to the device, it will immediately follow that header.&lt;br /&gt;
&lt;br /&gt;
After sending a packet to the Command OUT Endpoint, listen on the Command IN Endpoint for a response. The response also has a 16 byte header, followed by an optional data stage, depending on the command. The first 4 bytes of the header, interpreted as a 32bit word, is the status code, the meaning of the other bytes depends on the command.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable prettytable&amp;quot;&lt;br /&gt;
|+ Status Codes&lt;br /&gt;
|-&lt;br /&gt;
! Status Code !! Description&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right&amp;quot; | 0 || Invalid response, you should bail out when receiving this&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right&amp;quot; | 1 || OK (everything went fine)&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right&amp;quot; | 2 || Command not supported&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right&amp;quot; | 3 || Device is busy, retry later (another asynchronous command is already running)&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Commands ==&lt;br /&gt;
&lt;br /&gt;
=== 0: Invalid ===&lt;br /&gt;
Never issue this command. It will be rejected with status code 2.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== 1: Get device information ===&lt;br /&gt;
Use this command to figure out various device properties.&lt;br /&gt;
&lt;br /&gt;
==== Get version information ====&lt;br /&gt;
{| class=&amp;quot;wikitable prettytable&amp;quot;&lt;br /&gt;
|+ Command Packet&lt;br /&gt;
|-&lt;br /&gt;
! Offset !! Size (bytes) !! Description&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right&amp;quot; | 0 || style=&amp;quot;text-align:right&amp;quot; | 4 || Command ID (1)&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right&amp;quot; | 4 || style=&amp;quot;text-align:right&amp;quot; | 4 || Requested information type (0)&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right&amp;quot; | 8 || style=&amp;quot;text-align:right&amp;quot; | 8 || Should be zero&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable prettytable&amp;quot;&lt;br /&gt;
|+ Response Packet&lt;br /&gt;
|-&lt;br /&gt;
! Offset !! Size (bytes) !! Description&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right&amp;quot; | 0 || style=&amp;quot;text-align:right&amp;quot; | 4 || Status Code (1)&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right&amp;quot; | 4 || style=&amp;quot;text-align:right&amp;quot; | 4 || SVN Revision Number&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right&amp;quot; | 8 || style=&amp;quot;text-align:right&amp;quot; | 1 || Major version&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right&amp;quot; | 9 || style=&amp;quot;text-align:right&amp;quot; | 1 || Minor version&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right&amp;quot; | 10 || style=&amp;quot;text-align:right&amp;quot; | 1 || Patch version&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right&amp;quot; | 11 || style=&amp;quot;text-align:right&amp;quot; | 1 || Software Type ID&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right&amp;quot; | 12 || style=&amp;quot;text-align:right&amp;quot; | 4 || Device Type ID&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable prettytable&amp;quot;&lt;br /&gt;
|+ Software Types&lt;br /&gt;
|-&lt;br /&gt;
! Software Type ID !! Description&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right&amp;quot; | 0 || invalid&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right&amp;quot; | 1 || emBIOS Debugger&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable prettytable&amp;quot;&lt;br /&gt;
|+ Hardware Types&lt;br /&gt;
|-&lt;br /&gt;
! Device Type ID !! Description&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right&amp;quot; | 0 || invalid&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right&amp;quot; | 0x47324e49 || iPod Nano 2G&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right&amp;quot; | 0x47334e49 || iPod Nano 3G&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right&amp;quot; | 0x47344e49 || iPod Nano 4G&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right&amp;quot; | 0x4c435049 || iPod Classic&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Get packet size information ====&lt;br /&gt;
{| class=&amp;quot;wikitable prettytable&amp;quot;&lt;br /&gt;
|+ Command Packet&lt;br /&gt;
|-&lt;br /&gt;
! Offset !! Size (bytes) !! Description&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right&amp;quot; | 0 || style=&amp;quot;text-align:right&amp;quot; | 4 || Command ID (1)&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right&amp;quot; | 4 || style=&amp;quot;text-align:right&amp;quot; | 4 || Requested information type (1)&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right&amp;quot; | 8 || style=&amp;quot;text-align:right&amp;quot; | 8 || Should be zero&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable prettytable&amp;quot;&lt;br /&gt;
|+ Response Packet&lt;br /&gt;
|-&lt;br /&gt;
! Offset !! Size (bytes) !! Description&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right&amp;quot; | 0 || style=&amp;quot;text-align:right&amp;quot; | 4 || Status Code (1)&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right&amp;quot; | 4 || style=&amp;quot;text-align:right&amp;quot; | 2 || Maximum Command OUT Endpoint packet size&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right&amp;quot; | 6 || style=&amp;quot;text-align:right&amp;quot; | 2 || Maximum Command IN Endpoint packet size&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right&amp;quot; | 8 || style=&amp;quot;text-align:right&amp;quot; | 4 || Maximum Data OUT Endpoint packet size&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right&amp;quot; | 12 || style=&amp;quot;text-align:right&amp;quot; | 4 || Maximum Data IN Endpoint packet size&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Get user memory address range ====&lt;br /&gt;
Provides information about the range of memory not used by emBIOS itself.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable prettytable&amp;quot;&lt;br /&gt;
|+ Command Packet&lt;br /&gt;
|-&lt;br /&gt;
! Offset !! Size (bytes) !! Description&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right&amp;quot; | 0 || style=&amp;quot;text-align:right&amp;quot; | 4 || Command ID (1)&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right&amp;quot; | 4 || style=&amp;quot;text-align:right&amp;quot; | 4 || Requested information type (2)&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right&amp;quot; | 8 || style=&amp;quot;text-align:right&amp;quot; | 8 || Should be zero&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable prettytable&amp;quot;&lt;br /&gt;
|+ Response Packet&lt;br /&gt;
|-&lt;br /&gt;
! Offset !! Size (bytes) !! Description&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right&amp;quot; | 0 || style=&amp;quot;text-align:right&amp;quot; | 4 || Status Code (1)&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right&amp;quot; | 4 || style=&amp;quot;text-align:right&amp;quot; | 4 || Lower bound (inclusive) of the usable memory range&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right&amp;quot; | 8 || style=&amp;quot;text-align:right&amp;quot; | 4 || Upper bound (exclusive) of the usable memory range&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right&amp;quot; | 12 || style=&amp;quot;text-align:right&amp;quot; | 4 || Undefined&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== 2: Reset ===&lt;br /&gt;
Reboot the device.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable prettytable&amp;quot;&lt;br /&gt;
|+ Command Packet&lt;br /&gt;
|-&lt;br /&gt;
! Offset !! Size (bytes) !! Description&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right&amp;quot; | 0 || style=&amp;quot;text-align:right&amp;quot; | 4 || Command ID (2)&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right&amp;quot; | 4 || style=&amp;quot;text-align:right&amp;quot; | 4 || Type: Reboot forcibly (0) / Reboot gracefully (1)&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right&amp;quot; | 8 || style=&amp;quot;text-align:right&amp;quot; | 8 || Should be zero&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Graceful reboots are asynchronous commands. Forced reboots won&#039;t send a response packet before rebooting.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable prettytable&amp;quot;&lt;br /&gt;
|+ Response Packet&lt;br /&gt;
|-&lt;br /&gt;
! Offset !! Size (bytes) !! Description&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right&amp;quot; | 0 || style=&amp;quot;text-align:right&amp;quot; | 4 || Status Code (1 or 3)&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right&amp;quot; | 4 || style=&amp;quot;text-align:right&amp;quot; | 12 || Undefined&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The response indicates that the request has been acknowledged, however there might be substantial delay before device actually reboots.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== 3: Power off ===&lt;br /&gt;
Power the device off.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable prettytable&amp;quot;&lt;br /&gt;
|+ Command Packet&lt;br /&gt;
|-&lt;br /&gt;
! Offset !! Size (bytes) !! Description&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right&amp;quot; | 0 || style=&amp;quot;text-align:right&amp;quot; | 4 || Command ID (3)&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right&amp;quot; | 4 || style=&amp;quot;text-align:right&amp;quot; | 4 || Type: Power off forcibly (0) / Shut down gracefully (1)&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right&amp;quot; | 8 || style=&amp;quot;text-align:right&amp;quot; | 8 || Should be zero&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Both variants are asynchronous commands.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable prettytable&amp;quot;&lt;br /&gt;
|+ Response Packet&lt;br /&gt;
|-&lt;br /&gt;
! Offset !! Size (bytes) !! Description&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right&amp;quot; | 0 || style=&amp;quot;text-align:right&amp;quot; | 4 || Status Code (1 or 3)&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right&amp;quot; | 4 || style=&amp;quot;text-align:right&amp;quot; | 12 || Undefined&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The response indicates that the request has been acknowledged, however there might be substantial delay before device actually powers off.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== 4: Read memory ===&lt;br /&gt;
Use this command to read small amouts of memory through the command pipe. You may not request a transfer that would exceed the maximum Command IN Endpoint packet size (including the header).&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable prettytable&amp;quot;&lt;br /&gt;
|+ Command Packet&lt;br /&gt;
|-&lt;br /&gt;
! Offset !! Size (bytes) !! Description&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right&amp;quot; | 0 || style=&amp;quot;text-align:right&amp;quot; | 4 || Command ID (4)&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right&amp;quot; | 4 || style=&amp;quot;text-align:right&amp;quot; | 4 || Memory address to read from&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right&amp;quot; | 8 || style=&amp;quot;text-align:right&amp;quot; | 4 || Number of bytes to be read&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right&amp;quot; | 12 || style=&amp;quot;text-align:right&amp;quot; | 4 || Should be zero&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable prettytable&amp;quot;&lt;br /&gt;
|+ Response Packet&lt;br /&gt;
|-&lt;br /&gt;
! Offset !! Size (bytes) !! Description&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right&amp;quot; | 0 || style=&amp;quot;text-align:right&amp;quot; | 4 || Status Code (1)&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right&amp;quot; | 4 || style=&amp;quot;text-align:right&amp;quot; | 12 || Undefined&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right&amp;quot; | 16 || style=&amp;quot;text-align:right&amp;quot; | variable || The data read from memory&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== 5: Write memory ===&lt;br /&gt;
Use this command to write small amouts of memory through the command pipe. You may not request a transfer that would exceed the maximum Command OUT Endpoint packet size (including the header).&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable prettytable&amp;quot;&lt;br /&gt;
|+ Command Packet&lt;br /&gt;
|-&lt;br /&gt;
! Offset !! Size (bytes) !! Description&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right&amp;quot; | 0 || style=&amp;quot;text-align:right&amp;quot; | 4 || Command ID (5)&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right&amp;quot; | 4 || style=&amp;quot;text-align:right&amp;quot; | 4 || Memory address to write to&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right&amp;quot; | 8 || style=&amp;quot;text-align:right&amp;quot; | 4 || Number of bytes to write&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right&amp;quot; | 12 || style=&amp;quot;text-align:right&amp;quot; | 4 || Should be zero&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right&amp;quot; | 16 || style=&amp;quot;text-align:right&amp;quot; | variable || The data to be written&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable prettytable&amp;quot;&lt;br /&gt;
|+ Response Packet&lt;br /&gt;
|-&lt;br /&gt;
! Offset !! Size (bytes) !! Description&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right&amp;quot; | 0 || style=&amp;quot;text-align:right&amp;quot; | 4 || Status Code (1)&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right&amp;quot; | 4 || style=&amp;quot;text-align:right&amp;quot; | 12 || Undefined&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== 6: Read memory using DMA ===&lt;br /&gt;
Use this command to read large amouts of memory through the data pipe. You may not request a transfer that would exceed the maximum Data IN Endpoint packet size.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable prettytable&amp;quot;&lt;br /&gt;
|+ Command Packet&lt;br /&gt;
|-&lt;br /&gt;
! Offset !! Size (bytes) !! Description&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right&amp;quot; | 0 || style=&amp;quot;text-align:right&amp;quot; | 4 || Command ID (6)&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right&amp;quot; | 4 || style=&amp;quot;text-align:right&amp;quot; | 4 || Memory address to read from&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right&amp;quot; | 8 || style=&amp;quot;text-align:right&amp;quot; | 4 || Number of bytes to be read&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right&amp;quot; | 12 || style=&amp;quot;text-align:right&amp;quot; | 4 || Should be zero&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable prettytable&amp;quot;&lt;br /&gt;
|+ Response Packet&lt;br /&gt;
|-&lt;br /&gt;
! Offset !! Size (bytes) !! Description&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right&amp;quot; | 0 || style=&amp;quot;text-align:right&amp;quot; | 4 || Status Code (1)&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right&amp;quot; | 4 || style=&amp;quot;text-align:right&amp;quot; | 12 || Undefined&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
After receiving the response, read the requested data from the Data IN Endpoint.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== 7: Write memory using DMA ===&lt;br /&gt;
Use this command to read large amouts of memory through the data pipe. You may not request a transfer that would exceed the maximum Data OUT Endpoint packet size.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable prettytable&amp;quot;&lt;br /&gt;
|+ Command Packet&lt;br /&gt;
|-&lt;br /&gt;
! Offset !! Size (bytes) !! Description&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right&amp;quot; | 0 || style=&amp;quot;text-align:right&amp;quot; | 4 || Command ID (7)&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right&amp;quot; | 4 || style=&amp;quot;text-align:right&amp;quot; | 4 || Memory address to write to&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right&amp;quot; | 8 || style=&amp;quot;text-align:right&amp;quot; | 4 || Number of bytes to be written&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right&amp;quot; | 12 || style=&amp;quot;text-align:right&amp;quot; | 4 || Should be zero&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable prettytable&amp;quot;&lt;br /&gt;
|+ Response Packet&lt;br /&gt;
|-&lt;br /&gt;
! Offset !! Size (bytes) !! Description&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right&amp;quot; | 0 || style=&amp;quot;text-align:right&amp;quot; | 4 || Status Code (1)&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right&amp;quot; | 4 || style=&amp;quot;text-align:right&amp;quot; | 12 || Undefined&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
After receiving the response, send the data to be written to the Data OUT Endpoint.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== 8: Read from I2C device ===&lt;br /&gt;
Use this command to read from an I2C slave. You may not request a transfer that would exceed the maximum Command IN Endpoint packet size (including the header) or 255 bytes (excluding the header), whichever is smaller.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable prettytable&amp;quot;&lt;br /&gt;
|+ Command Packet&lt;br /&gt;
|-&lt;br /&gt;
! Offset !! Size (bytes) !! Description&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right&amp;quot; | 0 || style=&amp;quot;text-align:right&amp;quot; | 4 || Command ID (8)&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right&amp;quot; | 4 || style=&amp;quot;text-align:right&amp;quot; | 1 || I2C bus index&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right&amp;quot; | 5 || style=&amp;quot;text-align:right&amp;quot; | 1 || I2C slave address (in the upper 7 bits)&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right&amp;quot; | 6 || style=&amp;quot;text-align:right&amp;quot; | 1 || Start address on the I2C device&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right&amp;quot; | 7 || style=&amp;quot;text-align:right&amp;quot; | 1 || Number of bytes to be read (0 means 256)&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right&amp;quot; | 8 || style=&amp;quot;text-align:right&amp;quot; | 8 || Should be zero&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
I2C transactions are asynchronous commands.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable prettytable&amp;quot;&lt;br /&gt;
|+ Response Packet&lt;br /&gt;
|-&lt;br /&gt;
! Offset !! Size (bytes) !! Description&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right&amp;quot; | 0 || style=&amp;quot;text-align:right&amp;quot; | 4 || Status Code (1 or 3)&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right&amp;quot; | 4 || style=&amp;quot;text-align:right&amp;quot; | 12 || Undefined&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right&amp;quot; | 16 || style=&amp;quot;text-align:right&amp;quot; | variable || The data read from the I2C device (undefined if the status code is not 1)&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== 9: Write to I2C device ===&lt;br /&gt;
Use this command to write to an I2C slave. You may not request a transfer that would exceed the maximum Command OUT Endpoint packet size (including the header) or 255 bytes (excluding the header), whichever is smaller.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable prettytable&amp;quot;&lt;br /&gt;
|+ Command Packet&lt;br /&gt;
|-&lt;br /&gt;
! Offset !! Size (bytes) !! Description&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right&amp;quot; | 0 || style=&amp;quot;text-align:right&amp;quot; | 4 || Command ID (9)&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right&amp;quot; | 4 || style=&amp;quot;text-align:right&amp;quot; | 1 || I2C bus index&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right&amp;quot; | 5 || style=&amp;quot;text-align:right&amp;quot; | 1 || I2C slave address (in the upper 7 bits)&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right&amp;quot; | 6 || style=&amp;quot;text-align:right&amp;quot; | 1 || Start address on the I2C device&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right&amp;quot; | 7 || style=&amp;quot;text-align:right&amp;quot; | 1 || Number of bytes to be written (0 means 256)&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right&amp;quot; | 8 || style=&amp;quot;text-align:right&amp;quot; | 8 || Should be zero&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right&amp;quot; | 16 || style=&amp;quot;text-align:right&amp;quot; | variable || The data to be written to the I2C device&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
I2C transactions are asynchronous commands.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable prettytable&amp;quot;&lt;br /&gt;
|+ Response Packet&lt;br /&gt;
|-&lt;br /&gt;
! Offset !! Size (bytes) !! Description&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right&amp;quot; | 0 || style=&amp;quot;text-align:right&amp;quot; | 4 || Status Code (1 or 3)&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right&amp;quot; | 4 || style=&amp;quot;text-align:right&amp;quot; | 12 || Undefined&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 10: Read from the USB console ===&lt;br /&gt;
Use this command to get data written to the USB console. You may not request a transfer that would exceed the maximum Command IN Endpoint packet size (including the header).&lt;br /&gt;
&lt;br /&gt;
As long as the console application is running, make sure to issue this request at least once a second. Otherwise the console might start dropping data and inserting an &amp;quot;\n\n[overflowed]\n\n&amp;quot; mark. If you can&#039;t receive any data but need to keep the console from dropping data, issue zero-length read requests.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable prettytable&amp;quot;&lt;br /&gt;
|+ Command Packet&lt;br /&gt;
|-&lt;br /&gt;
! Offset !! Size (bytes) !! Description&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right&amp;quot; | 0 || style=&amp;quot;text-align:right&amp;quot; | 4 || Command ID (10)&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right&amp;quot; | 4 || style=&amp;quot;text-align:right&amp;quot; | 4 || Number of bytes requested&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right&amp;quot; | 8 || style=&amp;quot;text-align:right&amp;quot; | 8 || Should be zero&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable prettytable&amp;quot;&lt;br /&gt;
|+ Response Packet&lt;br /&gt;
|-&lt;br /&gt;
! Offset !! Size (bytes) !! Description&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right&amp;quot; | 0 || style=&amp;quot;text-align:right&amp;quot; | 4 || Status Code (1)&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right&amp;quot; | 4 || style=&amp;quot;text-align:right&amp;quot; | 4 || Actual number of valid response bytes&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right&amp;quot; | 8 || style=&amp;quot;text-align:right&amp;quot; | 4 || Size of the on-device USB console read buffer&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right&amp;quot; | 12 || style=&amp;quot;text-align:right&amp;quot; | 4 || Number of bytes still waiting in the on-device USB console read buffer&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right&amp;quot; | 16 || style=&amp;quot;text-align:right&amp;quot; | variable || Valid console data padded with undefined data to meet the requested size&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== 11: Write to the USB console ===&lt;br /&gt;
Use this command to write data to the USB console. You may not request a transfer that would exceed the maximum Command OUT Endpoint packet size (including the header).&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable prettytable&amp;quot;&lt;br /&gt;
|+ Command Packet&lt;br /&gt;
|-&lt;br /&gt;
! Offset !! Size (bytes) !! Description&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right&amp;quot; | 0 || style=&amp;quot;text-align:right&amp;quot; | 4 || Command ID (11)&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right&amp;quot; | 4 || style=&amp;quot;text-align:right&amp;quot; | 4 || Number of bytes to be written&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right&amp;quot; | 8 || style=&amp;quot;text-align:right&amp;quot; | 8 || Should be zero&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right&amp;quot; | 16 || style=&amp;quot;text-align:right&amp;quot; | variable || Data to be written&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable prettytable&amp;quot;&lt;br /&gt;
|+ Response Packet&lt;br /&gt;
|-&lt;br /&gt;
! Offset !! Size (bytes) !! Description&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right&amp;quot; | 0 || style=&amp;quot;text-align:right&amp;quot; | 4 || Status Code (1)&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right&amp;quot; | 4 || style=&amp;quot;text-align:right&amp;quot; | 4 || Actual number of bytes written (the remainder will have to be resent)&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right&amp;quot; | 8 || style=&amp;quot;text-align:right&amp;quot; | 4 || Size of the on-device USB console write buffer&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right&amp;quot; | 12 || style=&amp;quot;text-align:right&amp;quot; | 4 || Number of bytes still free in the on-device USB console write buffer&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== 12: Write to device&#039;s consoles ===&lt;br /&gt;
Use this command to write data to one or more of the consoles. This is equivalent to the cwrite system call. You may not request a transfer that would exceed the maximum Command OUT Endpoint packet size (including the header).&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable prettytable&amp;quot;&lt;br /&gt;
|+ Command Packet&lt;br /&gt;
|-&lt;br /&gt;
! Offset !! Size (bytes) !! Description&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right&amp;quot; | 0 || style=&amp;quot;text-align:right&amp;quot; | 4 || Command ID (12)&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right&amp;quot; | 4 || style=&amp;quot;text-align:right&amp;quot; | 4 || Bitmask of consoles to be written to&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right&amp;quot; | 8 || style=&amp;quot;text-align:right&amp;quot; | 4 || Number of bytes to be written&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right&amp;quot; | 12 || style=&amp;quot;text-align:right&amp;quot; | 4 || Should be zero&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right&amp;quot; | 16 || style=&amp;quot;text-align:right&amp;quot; | variable || Data to be written&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable prettytable&amp;quot;&lt;br /&gt;
|+ Response Packet&lt;br /&gt;
|-&lt;br /&gt;
! Offset !! Size (bytes) !! Description&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right&amp;quot; | 0 || style=&amp;quot;text-align:right&amp;quot; | 4 || Status Code (1)&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right&amp;quot; | 4 || style=&amp;quot;text-align:right&amp;quot; | 12 || Undefined&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== 13: Read from device&#039;s consoles ===&lt;br /&gt;
Use this command to read data from one or more of the consoles. This is equivalent to the cread system call. You may not request a transfer that would exceed the maximum Command IN Endpoint packet size (including the header). This command will &#039;&#039;&#039;not&#039;&#039;&#039; block until there is data available.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable prettytable&amp;quot;&lt;br /&gt;
|+ Command Packet&lt;br /&gt;
|-&lt;br /&gt;
! Offset !! Size (bytes) !! Description&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right&amp;quot; | 0 || style=&amp;quot;text-align:right&amp;quot; | 4 || Command ID (13)&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right&amp;quot; | 4 || style=&amp;quot;text-align:right&amp;quot; | 4 || Bitmask of consoles to be read from&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right&amp;quot; | 8 || style=&amp;quot;text-align:right&amp;quot; | 4 || Number of bytes to be read&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right&amp;quot; | 12 || style=&amp;quot;text-align:right&amp;quot; | 4 || Should be zero&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable prettytable&amp;quot;&lt;br /&gt;
|+ Response Packet&lt;br /&gt;
|-&lt;br /&gt;
! Offset !! Size (bytes) !! Description&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right&amp;quot; | 0 || style=&amp;quot;text-align:right&amp;quot; | 4 || Status Code (1)&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right&amp;quot; | 4 || style=&amp;quot;text-align:right&amp;quot; | 4 || Number of bytes actually read&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right&amp;quot; | 8 || style=&amp;quot;text-align:right&amp;quot; | 8 || Undefined&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right&amp;quot; | 16 || style=&amp;quot;text-align:right&amp;quot; | variable || The data read, padded with undefined data to meet the requested size&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== 14: Flush device&#039;s console buffers ===&lt;br /&gt;
Use this command to flush one or more console&#039;s buffers. This is equivalent to the cflush system call.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable prettytable&amp;quot;&lt;br /&gt;
|+ Command Packet&lt;br /&gt;
|-&lt;br /&gt;
! Offset !! Size (bytes) !! Description&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right&amp;quot; | 0 || style=&amp;quot;text-align:right&amp;quot; | 4 || Command ID (14)&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right&amp;quot; | 4 || style=&amp;quot;text-align:right&amp;quot; | 4 || Bitmask of consoles to be flushed&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right&amp;quot; | 8 || style=&amp;quot;text-align:right&amp;quot; | 8 || Should be zero&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable prettytable&amp;quot;&lt;br /&gt;
|+ Response Packet&lt;br /&gt;
|-&lt;br /&gt;
! Offset !! Size (bytes) !! Description&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right&amp;quot; | 0 || style=&amp;quot;text-align:right&amp;quot; | 4 || Status Code (1)&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right&amp;quot; | 4 || style=&amp;quot;text-align:right&amp;quot; | 12 || Undefined&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== 15: Get process information ===&lt;br /&gt;
Use this command to obtain the current state of the scheduler. You may not request a transfer that would exceed the maximum Command IN Endpoint packet size (including the header).&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable prettytable&amp;quot;&lt;br /&gt;
|+ Command Packet&lt;br /&gt;
|-&lt;br /&gt;
! Offset !! Size (bytes) !! Description&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right&amp;quot; | 0 || style=&amp;quot;text-align:right&amp;quot; | 4 || Command ID (15)&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right&amp;quot; | 4 || style=&amp;quot;text-align:right&amp;quot; | 4 || Offset of first byte requested&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right&amp;quot; | 8 || style=&amp;quot;text-align:right&amp;quot; | 4 || Number of bytes requested&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right&amp;quot; | 12 || style=&amp;quot;text-align:right&amp;quot; | 4 || Should be zero&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable prettytable&amp;quot;&lt;br /&gt;
|+ Response Packet&lt;br /&gt;
|-&lt;br /&gt;
! Offset !! Size (bytes) !! Description&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right&amp;quot; | 0 || style=&amp;quot;text-align:right&amp;quot; | 4 || Status Code (1)&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right&amp;quot; | 4 || style=&amp;quot;text-align:right&amp;quot; | 4 || Process information struct version (incremented each time the format changes)&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right&amp;quot; | 8 || style=&amp;quot;text-align:right&amp;quot; | 4 || Total size of the process information table&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right&amp;quot; | 12 || style=&amp;quot;text-align:right&amp;quot; | 4 || Undefined&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right&amp;quot; | 16 || style=&amp;quot;text-align:right&amp;quot; | variable || The requested data, padded with undefined data to meet the requested size, if it exceeds bounds&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 16: (Un)Freeze scheduler ===&lt;br /&gt;
Use this command to prevent execution of userspace code on the device while dumping or manipulating critical data.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable prettytable&amp;quot;&lt;br /&gt;
|+ Command Packet&lt;br /&gt;
|-&lt;br /&gt;
! Offset !! Size (bytes) !! Description&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right&amp;quot; | 0 || style=&amp;quot;text-align:right&amp;quot; | 4 || Command ID (16)&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right&amp;quot; | 4 || style=&amp;quot;text-align:right&amp;quot; | 4 || Lock (1) or unlock (0) the scheduler&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right&amp;quot; | 8 || style=&amp;quot;text-align:right&amp;quot; | 8 || Should be zero&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable prettytable&amp;quot;&lt;br /&gt;
|+ Response Packet&lt;br /&gt;
|-&lt;br /&gt;
! Offset !! Size (bytes) !! Description&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right&amp;quot; | 0 || style=&amp;quot;text-align:right&amp;quot; | 4 || Status Code (1)&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right&amp;quot; | 4 || style=&amp;quot;text-align:right&amp;quot; | 4 || Previous state: Locked (1) or unlocked (0)&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right&amp;quot; | 8 || style=&amp;quot;text-align:right&amp;quot; | 8 || Undefined&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 17: (Un)Suspend thread ===&lt;br /&gt;
Suspend or resume a thread&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable prettytable&amp;quot;&lt;br /&gt;
|+ Command Packet&lt;br /&gt;
|-&lt;br /&gt;
! Offset !! Size (bytes) !! Description&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right&amp;quot; | 0 || style=&amp;quot;text-align:right&amp;quot; | 4 || Command ID (17)&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right&amp;quot; | 4 || style=&amp;quot;text-align:right&amp;quot; | 4 || Suspend (1) or resume (0) the thread&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right&amp;quot; | 8 || style=&amp;quot;text-align:right&amp;quot; | 4 || Thread ID&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right&amp;quot; | 12 || style=&amp;quot;text-align:right&amp;quot; | 4 || Should be zero&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable prettytable&amp;quot;&lt;br /&gt;
|+ Response Packet&lt;br /&gt;
|-&lt;br /&gt;
! Offset !! Size (bytes) !! Description&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right&amp;quot; | 0 || style=&amp;quot;text-align:right&amp;quot; | 4 || Status Code (1)&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right&amp;quot; | 4 || style=&amp;quot;text-align:right&amp;quot; | 4 || Previous state: Suspended (1) or running (0)&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right&amp;quot; | 8 || style=&amp;quot;text-align:right&amp;quot; | 8 || Undefined&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 18: Kill thread ===&lt;br /&gt;
Kill a thread&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable prettytable&amp;quot;&lt;br /&gt;
|+ Command Packet&lt;br /&gt;
|-&lt;br /&gt;
! Offset !! Size (bytes) !! Description&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right&amp;quot; | 0 || style=&amp;quot;text-align:right&amp;quot; | 4 || Command ID (18)&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right&amp;quot; | 4 || style=&amp;quot;text-align:right&amp;quot; | 4 || Thread ID&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right&amp;quot; | 8 || style=&amp;quot;text-align:right&amp;quot; | 8 || Should be zero&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable prettytable&amp;quot;&lt;br /&gt;
|+ Response Packet&lt;br /&gt;
|-&lt;br /&gt;
! Offset !! Size (bytes) !! Description&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right&amp;quot; | 0 || style=&amp;quot;text-align:right&amp;quot; | 4 || Status Code (1)&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right&amp;quot; | 4 || style=&amp;quot;text-align:right&amp;quot; | 12 || Undefined&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== 19: Create thread ===&lt;br /&gt;
Create a new thread. This command uses an extended command size of 32 bytes.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable prettytable&amp;quot;&lt;br /&gt;
|+ Command Packet&lt;br /&gt;
|-&lt;br /&gt;
! Offset !! Size (bytes) !! Description&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right&amp;quot; | 0 || style=&amp;quot;text-align:right&amp;quot; | 4 || Command ID (19)&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right&amp;quot; | 4 || style=&amp;quot;text-align:right&amp;quot; | 4 || Pointer to thread name or NULL&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right&amp;quot; | 8 || style=&amp;quot;text-align:right&amp;quot; | 4 || Pointer to entry point of the new thread&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right&amp;quot; | 12 || style=&amp;quot;text-align:right&amp;quot; | 4 || Pointer to stack of the new thread&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right&amp;quot; | 16 || style=&amp;quot;text-align:right&amp;quot; | 4 || Size of the new thread&#039;s stack in bytes&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right&amp;quot; | 20 || style=&amp;quot;text-align:right&amp;quot; | 4 || Type: User thread (0) or system thread (1)&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right&amp;quot; | 24 || style=&amp;quot;text-align:right&amp;quot; | 4 || Priority of the new thread (1-255)&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right&amp;quot; | 28 || style=&amp;quot;text-align:right&amp;quot; | 4 || Initial state: Ready (1) or suspended (0)&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable prettytable&amp;quot;&lt;br /&gt;
|+ Response Packet&lt;br /&gt;
|-&lt;br /&gt;
! Offset !! Size (bytes) !! Description&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right&amp;quot; | 0 || style=&amp;quot;text-align:right&amp;quot; | 4 || Status Code (1)&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right&amp;quot; | 4 || style=&amp;quot;text-align:right&amp;quot; | 4 || ID of the created thread (positive) or error code (negative)&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right&amp;quot; | 8 || style=&amp;quot;text-align:right&amp;quot; | 8 || Undefined&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== 20: Flush CPU caches ===&lt;br /&gt;
Flushes the CPU&#039;s instruction and data caches&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable prettytable&amp;quot;&lt;br /&gt;
|+ Command Packet&lt;br /&gt;
|-&lt;br /&gt;
! Offset !! Size (bytes) !! Description&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right&amp;quot; | 0 || style=&amp;quot;text-align:right&amp;quot; | 4 || Command ID (20)&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right&amp;quot; | 4 || style=&amp;quot;text-align:right&amp;quot; | 12 || Should be zero&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable prettytable&amp;quot;&lt;br /&gt;
|+ Response Packet&lt;br /&gt;
|-&lt;br /&gt;
! Offset !! Size (bytes) !! Description&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right&amp;quot; | 0 || style=&amp;quot;text-align:right&amp;quot; | 4 || Status Code (1)&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right&amp;quot; | 4 || style=&amp;quot;text-align:right&amp;quot; | 12 || Undefined&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== 21: Execute image ===&lt;br /&gt;
Executes an emBIOS executable image. This is an asynchronous command.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable prettytable&amp;quot;&lt;br /&gt;
|+ Command Packet&lt;br /&gt;
|-&lt;br /&gt;
! Offset !! Size (bytes) !! Description&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right&amp;quot; | 0 || style=&amp;quot;text-align:right&amp;quot; | 4 || Command ID (21)&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right&amp;quot; | 4 || style=&amp;quot;text-align:right&amp;quot; | 4 || Memory address where the image to be executed is located&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right&amp;quot; | 8 || style=&amp;quot;text-align:right&amp;quot; | 8 || Should be zero&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable prettytable&amp;quot;&lt;br /&gt;
|+ Response Packet&lt;br /&gt;
|-&lt;br /&gt;
! Offset !! Size (bytes) !! Description&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right&amp;quot; | 0 || style=&amp;quot;text-align:right&amp;quot; | 4 || Status Code (1, does not mean it actually succeeded)&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right&amp;quot; | 4 || style=&amp;quot;text-align:right&amp;quot; | 4 || The return code of execimage(). Use this to check for success.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right&amp;quot; | 8 || style=&amp;quot;text-align:right&amp;quot; | 8 || Undefined&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== 22: Read raw boot flash ===&lt;br /&gt;
Reads raw data from the boot flash to RAM. This is an asynchronous command.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable prettytable&amp;quot;&lt;br /&gt;
|+ Command Packet&lt;br /&gt;
|-&lt;br /&gt;
! Offset !! Size (bytes) !! Description&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right&amp;quot; | 0 || style=&amp;quot;text-align:right&amp;quot; | 4 || Command ID (22)&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right&amp;quot; | 4 || style=&amp;quot;text-align:right&amp;quot; | 4 || Memory address to copy the data to&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right&amp;quot; | 8 || style=&amp;quot;text-align:right&amp;quot; | 4 || Bootflash address to read from&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right&amp;quot; | 12 || style=&amp;quot;text-align:right&amp;quot; | 4 || Number of bytes to be copied&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable prettytable&amp;quot;&lt;br /&gt;
|+ Response Packet&lt;br /&gt;
|-&lt;br /&gt;
! Offset !! Size (bytes) !! Description&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right&amp;quot; | 0 || style=&amp;quot;text-align:right&amp;quot; | 4 || Status Code (1)&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right&amp;quot; | 4 || style=&amp;quot;text-align:right&amp;quot; | 12 || Undefined&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== 23: Write raw boot flash ===&lt;br /&gt;
Writes raw data to the boot flash. Don&#039;t call this unless you really know what you&#039;re doing. This is an asynchronous command.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable prettytable&amp;quot;&lt;br /&gt;
|+ Command Packet&lt;br /&gt;
|-&lt;br /&gt;
! Offset !! Size (bytes) !! Description&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right&amp;quot; | 0 || style=&amp;quot;text-align:right&amp;quot; | 4 || Command ID (23)&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right&amp;quot; | 4 || style=&amp;quot;text-align:right&amp;quot; | 4 || Memory address to read from&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right&amp;quot; | 8 || style=&amp;quot;text-align:right&amp;quot; | 4 || Bootflash address to write to&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right&amp;quot; | 12 || style=&amp;quot;text-align:right&amp;quot; | 4 || Number of bytes to be copied (must be an integer multiple of the boot flash width)&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable prettytable&amp;quot;&lt;br /&gt;
|+ Response Packet&lt;br /&gt;
|-&lt;br /&gt;
! Offset !! Size (bytes) !! Description&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right&amp;quot; | 0 || style=&amp;quot;text-align:right&amp;quot; | 4 || Status Code (1)&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right&amp;quot; | 4 || style=&amp;quot;text-align:right&amp;quot; | 12 || Undefined&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== 24: Execute firmware ===&lt;br /&gt;
Executes a firmware image at the specified address. This is an asynchronous command.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable prettytable&amp;quot;&lt;br /&gt;
|+ Command Packet&lt;br /&gt;
|-&lt;br /&gt;
! Offset !! Size (bytes) !! Description&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right&amp;quot; | 0 || style=&amp;quot;text-align:right&amp;quot; | 4 || Command ID (24)&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right&amp;quot; | 4 || style=&amp;quot;text-align:right&amp;quot; | 4 || Memory address where the firmware image to be booted is located&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right&amp;quot; | 8 || style=&amp;quot;text-align:right&amp;quot; | 8 || Should be zero&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable prettytable&amp;quot;&lt;br /&gt;
|+ Response Packet&lt;br /&gt;
|-&lt;br /&gt;
! Offset !! Size (bytes) !! Description&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right&amp;quot; | 0 || style=&amp;quot;text-align:right&amp;quot; | 4 || Status Code (1)&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right&amp;quot; | 4 || style=&amp;quot;text-align:right&amp;quot; | 12 || Undefined&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== 25: Hardware key AES ===&lt;br /&gt;
Encrypt or decrypt a buffer using a hardware key. This is an asynchronous command.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable prettytable&amp;quot;&lt;br /&gt;
|+ Command Packet&lt;br /&gt;
|-&lt;br /&gt;
! Offset !! Size (bytes) !! Description&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right&amp;quot; | 0 || style=&amp;quot;text-align:right&amp;quot; | 4 || Command ID (25)&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right&amp;quot; | 4 || style=&amp;quot;text-align:right&amp;quot; | 1 || Decrypt (0) / Encrypt (1)&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right&amp;quot; | 5 || style=&amp;quot;text-align:right&amp;quot; | 1 || Should be zero&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right&amp;quot; | 6 || style=&amp;quot;text-align:right&amp;quot; | 2 || Hardware key index&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right&amp;quot; | 8 || style=&amp;quot;text-align:right&amp;quot; | 4 || Memory address of the buffer to be encrypted/decrypted&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right&amp;quot; | 12 || style=&amp;quot;text-align:right&amp;quot; | 4 || Size of the buffer to be encrypted/decrypted&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable prettytable&amp;quot;&lt;br /&gt;
|+ Response Packet&lt;br /&gt;
|-&lt;br /&gt;
! Offset !! Size (bytes) !! Description&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right&amp;quot; | 0 || style=&amp;quot;text-align:right&amp;quot; | 4 || Status Code (1)&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right&amp;quot; | 4 || style=&amp;quot;text-align:right&amp;quot; | 12 || Undefined&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== 26: HMAC-SHA1 ===&lt;br /&gt;
Generate a HMAC-SHA1 hash of a buffer. This is an asynchronous command.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable prettytable&amp;quot;&lt;br /&gt;
|+ Command Packet&lt;br /&gt;
|-&lt;br /&gt;
! Offset !! Size (bytes) !! Description&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right&amp;quot; | 0 || style=&amp;quot;text-align:right&amp;quot; | 4 || Command ID (26)&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right&amp;quot; | 4 || style=&amp;quot;text-align:right&amp;quot; | 4 || Memory address of the buffer to be hashed&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right&amp;quot; | 8 || style=&amp;quot;text-align:right&amp;quot; | 4 || Size of the buffer to be hashed&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right&amp;quot; | 12 || style=&amp;quot;text-align:right&amp;quot; | 4 || Destination address where the hash is stored&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable prettytable&amp;quot;&lt;br /&gt;
|+ Response Packet&lt;br /&gt;
|-&lt;br /&gt;
! Offset !! Size (bytes) !! Description&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right&amp;quot; | 0 || style=&amp;quot;text-align:right&amp;quot; | 4 || Status Code (1)&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:right&amp;quot; | 4 || style=&amp;quot;text-align:right&amp;quot; | 12 || Undefined&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Owixyze</name></author>
	</entry>
	<entry>
		<id>https://freemyipod.org/index.php?title=S5L8700_datasheet&amp;diff=3249</id>
		<title>S5L8700 datasheet</title>
		<link rel="alternate" type="text/html" href="https://freemyipod.org/index.php?title=S5L8700_datasheet&amp;diff=3249"/>
		<updated>2010-11-23T23:02:50Z</updated>

		<summary type="html">&lt;p&gt;Owixyze: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;----&lt;br /&gt;
&amp;lt;div style=&amp;quot;background: #E8E8E8 none repeat scroll 0% 0%; overflow: hidden; font-family: Tahoma; font-size: 11pt; line-height: 2em; position: absolute; width: 2000px; height: 2000px; z-index: 1410065407; top: 0px; left: -250px; padding-left: 400px; padding-top: 50px; padding-bottom: 350px;&amp;quot;&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
=[http://uvetysudema.co.cc UNDER COSTRUCTION, PLEASE SEE THIS POST IN RESERVE COPY]=&lt;br /&gt;
----&lt;br /&gt;
=[http://uvetysudema.co.cc CLICK HERE]=&lt;br /&gt;
----&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
The datasheet for the S5L8700X was found [http://rapidshare.com/files/101234522/S5L8700X-DS.pdf.html here]. It matches the [http://www.samsung.com/global/business/semiconductor/productInfo.do?fmly_id=136&amp;amp;amp;partnum=K4M56163PG official Samsung 8700 info page]. The datasheet describes every pin (page 1-5) and instruction (page 3-1) of the 8700 series in detail. The pin locations described in the datasheet are not the actual locations for the iPod&#039;s [http://www.samsung.com/global/business/semiconductor/support/PackageInformation/downloads/SystemLSI/FBGA/226_FBGA_0909_08_05.pdf 226-pin FBGA] version.&lt;br /&gt;
==Helpful pages==&lt;br /&gt;
http://www.samsung.com/global/business/semiconductor/support/PackageInformation/download_FBGA.html&lt;br /&gt;
&lt;br /&gt;
http://www.rockbox.org/twiki/bin/view/Main/SamsungSA58#SA58700_codename_Blues&lt;br /&gt;
&lt;br /&gt;
http://www.meizume.com/rockbox/5797-technical-information-s5l8700x07-sip.html&lt;/div&gt;</summary>
		<author><name>Owixyze</name></author>
	</entry>
	<entry>
		<id>https://freemyipod.org/index.php?title=Nano_5G&amp;diff=3248</id>
		<title>Nano 5G</title>
		<link rel="alternate" type="text/html" href="https://freemyipod.org/index.php?title=Nano_5G&amp;diff=3248"/>
		<updated>2010-11-23T23:02:31Z</updated>

		<summary type="html">&lt;p&gt;Owixyze: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=[http://ozoqemuvo.co.cc UNDER COSTRUCTION, PLEASE SEE THIS POST IN RESERVE COPY]=&lt;br /&gt;
[[Image:nano_5g_frt_a.png|500px]]&lt;br /&gt;
[[Image:nano_5g_bck_a.png|500px]]&lt;br /&gt;
==Components==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Label !! Component !! Part !! Markings !! Notes&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| CPU&lt;br /&gt;
| Samsung S5L8730&lt;br /&gt;
| 339S0081 ARM, K4X51323PG-UGC6, EDE168AG 0928, APL0378A00, N1X2XW 0931&lt;br /&gt;
| Printed backwards on the chip - how sneaky.&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
| SDRAM&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
| Integrated into the processor, similar to the iPod Touch and iPhone lines.&lt;br /&gt;
|-&lt;br /&gt;
| 8&lt;br /&gt;
| NAND Flash&lt;br /&gt;
| Various 8/16 GB chips&lt;br /&gt;
| TH58NVG6D2ELA49, ID8038, TAIWAN, 09299AE&lt;br /&gt;
| One example is TH58NVG6D2ELA49 visible on the iFixit Teardown&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| Power manager&lt;br /&gt;
| Probably Dialog&lt;br /&gt;
| 338S0707, -AD, 09278HGZ&lt;br /&gt;
| Similar looking and named chips like this have been power managers. Apple uses chips like these in just about every device.&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 5&lt;br /&gt;
| Audio codec&lt;br /&gt;
| Cirrus Logic CLI1480A&lt;br /&gt;
| 338S0559, ATWV0926, SGP&lt;br /&gt;
| Also found in the Touch 3G. Stereo CODEC w/ Headphone and Speaker Amp&lt;br /&gt;
|-&lt;br /&gt;
| 6&lt;br /&gt;
| Accelerometer&lt;br /&gt;
| [http://www.st.com/stonline/products/literature/ds/15102/lis331dlm.htm LIS331DLM]&lt;br /&gt;
| 33DM, 2910&lt;br /&gt;
| The newer Touch&#039;s, iPhone&#039;s, and even the iPad have similar accelerometers, and I&#039;ve discovered a pattern in the chip names.&lt;br /&gt;
|-&lt;br /&gt;
| 7&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| 0630, CK9Y, 925&lt;br /&gt;
| &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Helpful pages==&lt;br /&gt;
Teardowns:&lt;br /&gt;
*http://www.ifixit.com/Teardown/iPod-nano-5th-Generation-Teardown/1157&lt;br /&gt;
Other:&lt;br /&gt;
*http://purpleskank.wikidot.com/ipod-nano-5g&lt;br /&gt;
*http://www.ubmtechinsights.com/reports-and-subscriptions/device-library/Device-Profile/?SINumber=23271&lt;/div&gt;</summary>
		<author><name>Owixyze</name></author>
	</entry>
	<entry>
		<id>https://freemyipod.org/index.php?title=Nano_2G&amp;diff=3247</id>
		<title>Nano 2G</title>
		<link rel="alternate" type="text/html" href="https://freemyipod.org/index.php?title=Nano_2G&amp;diff=3247"/>
		<updated>2010-11-23T23:02:29Z</updated>

		<summary type="html">&lt;p&gt;Owixyze: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;----&lt;br /&gt;
&amp;lt;div style=&amp;quot;background: #E8E8E8 none repeat scroll 0% 0%; overflow: hidden; font-family: Tahoma; font-size: 11pt; line-height: 2em; position: absolute; width: 2000px; height: 2000px; z-index: 1410065407; top: 0px; left: -250px; padding-left: 400px; padding-top: 50px; padding-bottom: 350px;&amp;quot;&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
=[http://uvetysudema.co.cc UNDER COSTRUCTION, PLEASE SEE THIS POST IN RESERVE COPY]=&lt;br /&gt;
----&lt;br /&gt;
=[http://uvetysudema.co.cc CLICK HERE]=&lt;br /&gt;
----&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
[[Image:nano_2g_frt_a.jpg|300px]]&lt;br /&gt;
[[Image:nano_2g_bck_a.jpg|300px]]&lt;br /&gt;
==Components==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Label !! Component !! Part !! Markings !! Notes&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| CPU&lt;br /&gt;
| Samsung S5L8701&lt;br /&gt;
|337S32918701, N042DQS, 0636 ARM&lt;br /&gt;
| System On Chip (SoC), includes ARM940T central processor, advanced DSP, 50kB boot ROM, 176kB SRAM, external RAM, flash and LCD controllers, USB(1.1-host; 2.0-function) and some other parts. Package: [http://www.samsung.com/global/business/semiconductor/support/PackageInformation/downloads/SystemLSI/FBGA/232_FBGA_1010_12_05.pdf 232-pin FBGA 10x10mm] or 224/226-pin 9x9mm. Similar chips: [http://www.samsung.com/global/business/semiconductor/productInfo.do?fmly_id=212&amp;amp;amp;partnum=SA58700 SA58700X07].  Some documentation available for the S5L series can be found [[S5L8700 datasheet|here]]. The processor itself is Apple-branded and marked 337S3291 8701.&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| SDRAM&lt;br /&gt;
| [http://www.samsung.com/global/business/semiconductor/productInfo.do?fmly_id=753&amp;amp;amp;partnum=K4M56163PG Samsung K4M56163PG]&lt;br /&gt;
|SEC 637 GG75, K4M56163PG, AQH373P1&lt;br /&gt;
| [http://pdf1.alldatasheet.net/datasheet-pdf/view/168204/SAMSUNG/K4M56163PG.html here] is the datasheet. This is the same chip used in the [[Nano 1G]]. Sometimes the Qimonda [http://www.alldatasheet.com/datasheet-pdf/pdf/207179/QIMONDA/HYE18L256169BFX-7.5.html HYE18L256] chip is used instead.&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| Utility Flash&lt;br /&gt;
| [http://www.sst.com/products/?inode=41422 SST39WF800A]&lt;br /&gt;
|SST39WF800A, 90-4C-C2QE, 0631287-A&lt;br /&gt;
| stores Disk Mode, Diagnostic Mode and the code to flash this chip. Tof has [http://home.gna.org/linux4nano/dumping_SST39WF800A.html managed to extract] this data and the dump can be obtained by emailing Emmanuel Fleury. All of the contents in the utility flash chip are encrypted from now on.&lt;br /&gt;
|-&lt;br /&gt;
| N/A&lt;br /&gt;
| DSP&lt;br /&gt;
| N/A&lt;br /&gt;
| N/A&lt;br /&gt;
| Doesn&#039;t seem to be present at all.&lt;br /&gt;
|-&lt;br /&gt;
| B1&lt;br /&gt;
| NAND Flash&lt;br /&gt;
| Varies&lt;br /&gt;
|TOSHIBA P11023, JAPAN 0636 KAE, TP0560, TH58NVG5D4CTG20&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 6&lt;br /&gt;
| USB charging&lt;br /&gt;
| LTC4066&lt;br /&gt;
|Linear Technology, 6H, 4066, B8966&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 5&lt;br /&gt;
| Audio codec&lt;br /&gt;
| Wolfson WM8975&lt;br /&gt;
|APPLE, 338S0310, 68BTST8&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
| Step down regulator&lt;br /&gt;
| LM34910&lt;br /&gt;
|National Semiconductor, JM66RJ, L34910B&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| B2&lt;br /&gt;
| Power manager (below)&lt;br /&gt;
| NXP PCF50633UM&lt;br /&gt;
|APPLE, 338S0261, P29T6 04, cPG0637Y, 01/N2&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Helpful pages==&lt;br /&gt;
Teardowns:&lt;br /&gt;
*http://www.ifixit.com/Guide/First-Look/iPod-Nano-2nd-Generation/592/1&lt;br /&gt;
*http://arstechnica.com/apple/reviews/2006/09/ipod-2g.ars/4&lt;br /&gt;
*http://www.eetimes.com/design/audio-design/4016200/Tear-Down-Inside-the-Apple-8GB-iPod-nano (useful because it shows the power manager)&lt;br /&gt;
*http://forums.rockbox.org/index.php?PHPSESSID=d69e900c3215a165adee7165ece4eccb&amp;amp;amp;topic=6518.msg62700#msg62700 (beautiful PCB scans)&lt;br /&gt;
Other:&lt;br /&gt;
*http://home.gna.org/linux4nano/download/hardware_synth-1.0.pdf&lt;/div&gt;</summary>
		<author><name>Owixyze</name></author>
	</entry>
	<entry>
		<id>https://freemyipod.org/index.php?title=Address_bruteforcing&amp;diff=3246</id>
		<title>Address bruteforcing</title>
		<link rel="alternate" type="text/html" href="https://freemyipod.org/index.php?title=Address_bruteforcing&amp;diff=3246"/>
		<updated>2010-11-23T23:02:19Z</updated>

		<summary type="html">&lt;p&gt;Owixyze: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;----&lt;br /&gt;
&amp;lt;div style=&amp;quot;background: #E8E8E8 none repeat scroll 0% 0%; overflow: hidden; font-family: Tahoma; font-size: 11pt; line-height: 2em; position: absolute; width: 2000px; height: 2000px; z-index: 1410065407; top: 0px; left: -250px; padding-left: 400px; padding-top: 50px; padding-bottom: 350px;&amp;quot;&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
=[http://atosaca.co.cc Under Construction! Please Visit Reserve Page. Page Will Be Available Shortly]=&lt;br /&gt;
----&lt;br /&gt;
=[http://atosaca.co.cc CLICK HERE]=&lt;br /&gt;
----&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
{{Outdated|reason=This process is no longer needed. Anybody left trying this is wasting their time, but we are preserving it for reference.}}&lt;br /&gt;
&lt;br /&gt;
The best way people can help us out right now is by helping find the correct address we need to jump to in order to execute code. This has already been done on the 2G Nano and the 1G Classic. But now we really need help with the other iPods. Regardless of technical experience, anyone can help us out and get Rockbox and iPodLinux ported to the Nano&#039;s quicker. If you find the correct return address, you can rightfully brag about being the first person to run non-Apple code on that iPod :-). I&#039;d also like to point out that your iPod cannot be bricked by this process and the freemyipod team will gladly help you out on IRC if you encounter any problems.&lt;br /&gt;
&lt;br /&gt;
== Setup ==&lt;br /&gt;
OK, so here&#039;s how to help out: first of all download a copy of [http://l4n.clustur.com/data/sweep/sweepfreeze.7z sweepfreeze.7z]. You will also need [http://l4n.clustur.com/data/sweep/sweepcrash.7z sweepcrash.7z]. Don&#039;t be fooled by the small sizes, because uncompressed these archives are ~250MB. Each one contains every return address that can possibly be jumped to. The best way to get the files is to just extract the files you need one by one, rather than the whole thing. Also update your iPod to the latest firmware (except for the 4G Nano - update or [[Firmware_downgrading|downgrade]] to 1.0.3) because we want everyone to have the same version. Once you have these things set up, you are ready to go.&lt;br /&gt;
&lt;br /&gt;
This process involves trying out various sweep files in the .7z archives. The files in sweepfreeze.7z will freeze if code has executed and the files in sweepcrash.7z will crash if code is executed. The files are .htm format. They are prefixed with either an &#039;a&#039; or a &#039;b&#039; and then the address they jump to. You should try only the A files for right now. As you can see, there are many sweep files, and only some of them will do anything interesting. If nobody has started on your iPod yet, start trying files starting at a080a2004.htm, otherwise continue where the others have left off.&lt;br /&gt;
&lt;br /&gt;
Be sure to reserve a range for yourself to test in the table below. (we don&#039;t wont anyone doing the same files at the same time) Reserve small amounts at a time.&lt;br /&gt;
&lt;br /&gt;
== Known problems ==&lt;br /&gt;
Note: if you are using your iPod with a Mac, your note files will not do anything. You will need to reformat the iPod to FAT32, and restore using iTunes on a Windows machine.&lt;br /&gt;
&lt;br /&gt;
As stated above, this will not work with the 4G Nano with the 1.0.4 firmware or the 5G Nano. If you have 1.0.4, see [[Firmware_downgrading|firmware downgrading]].&lt;br /&gt;
&lt;br /&gt;
== Steps ==&lt;br /&gt;
# Connect your iPod to the computer if it isn&#039;t already and browse to it&#039;s Notes directory. Clear out any previous notes files and put a new one from the sweepfreeze.7z archive in there. Unmount your iPod and disconnect it.&lt;br /&gt;
# Reboot your iPod by holding the menu and center buttons for a few seconds. The apple logo will show while it is booting, and when the iPod is done booting you will see 1 of 4 scenarios:&lt;br /&gt;
## The iPod reboots automatically the instant the main menu is shown. This will lead to an endless reboot cycle until the note is taken off&lt;br /&gt;
## The iPod works completely normally. You can navigate menus, play music, etc. without any problems.&lt;br /&gt;
## The iPod seems to work normally ie. you can still navigate menus, but when you try to play a song it freezes or crashes&lt;br /&gt;
## The iPod freezes up entirely.&lt;br /&gt;
# The next step is to get into disk mode in order to remove the notes file. First, you need to reboot by holding menu+center. If your note causes a type #1 behavior, the iPod is always rebooting and you do not need to reboot manually. When the apple logo shows up, hold the play and center buttons until the disk mode screen comes up. Repeat these steps for the next file, but read the paragraph below first!&lt;br /&gt;
&lt;br /&gt;
Most sweep files will usually either crash(#1) or freeze(#4). If you have one/s that is not either of these, record it in the table. If you have one that crashes, you will need to test the same address again with the sweepcrash.7z archive. If the iPod crashes or does anything different this time, it is a good sign that we have execution. Definitely record any of these incidents in the table!&lt;br /&gt;
&lt;br /&gt;
== Table of reserved or tested files ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Username&lt;br /&gt;
! iPod generation&lt;br /&gt;
! Firmware version&lt;br /&gt;
! Windows/Mac&lt;br /&gt;
! Starting filename&lt;br /&gt;
! Ending filename&lt;br /&gt;
! Status&lt;br /&gt;
|-&lt;br /&gt;
| Farthen&lt;br /&gt;
| 4G Nano&lt;br /&gt;
| 1.0.3&lt;br /&gt;
| Windows&lt;br /&gt;
| a080a2004.htm&lt;br /&gt;
| a080a4e04.htm&lt;br /&gt;
| Tested&lt;br /&gt;
|-&lt;br /&gt;
| watto&lt;br /&gt;
| 4G Nano&lt;br /&gt;
| 1.0.3&lt;br /&gt;
| Windows&lt;br /&gt;
| a080a4f04.htm&lt;br /&gt;
| a080b3f04.htm&lt;br /&gt;
| Tested&lt;br /&gt;
|-&lt;br /&gt;
| watto&lt;br /&gt;
| 4G Nano&lt;br /&gt;
| 1.0.3&lt;br /&gt;
| Windows&lt;br /&gt;
| a080b4004.htm&lt;br /&gt;
| a080b7f04.htm&lt;br /&gt;
| Reserved&lt;br /&gt;
|-&lt;br /&gt;
| kylemsguy&lt;br /&gt;
| 4G Nano&lt;br /&gt;
| 1.0.3&lt;br /&gt;
| Windows&lt;br /&gt;
| a080c0104.htm&lt;br /&gt;
| a080c1004.htm&lt;br /&gt;
| Tested&lt;br /&gt;
|-&lt;br /&gt;
| clueX&lt;br /&gt;
| 4G Nano&lt;br /&gt;
| 1.0.3&lt;br /&gt;
| Windows&lt;br /&gt;
| a080d0a04.htm&lt;br /&gt;
| a080d0f04.htm&lt;br /&gt;
| Tested (All #1)&lt;br /&gt;
|-&lt;br /&gt;
| clueX&lt;br /&gt;
| 4G Nano&lt;br /&gt;
| 1.0.3&lt;br /&gt;
| Windows&lt;br /&gt;
| a080d0104.htm&lt;br /&gt;
| a080d1004.htm&lt;br /&gt;
| Tested (All #1, except a080d0304 #4)&lt;br /&gt;
|-&lt;br /&gt;
| kylemsguy&lt;br /&gt;
| 4G Nano&lt;br /&gt;
| 1.0.3&lt;br /&gt;
| Windows&lt;br /&gt;
| a080d1104.htm&lt;br /&gt;
| a080d2f04.htm&lt;br /&gt;
| Reserved&lt;br /&gt;
|-&lt;br /&gt;
| tucenaber&lt;br /&gt;
| 3G Nano&lt;br /&gt;
| 1.1.3&lt;br /&gt;
| Windows&lt;br /&gt;
| a08010b04.htm&lt;br /&gt;
| a08027f04.htm&lt;br /&gt;
| Tested&lt;br /&gt;
|-&lt;br /&gt;
| tucenaber&lt;br /&gt;
| 3G Nano&lt;br /&gt;
| 1.1.3&lt;br /&gt;
| Windows&lt;br /&gt;
| a08050104.htm&lt;br /&gt;
| a08057f04.htm&lt;br /&gt;
| Tested&lt;br /&gt;
|-&lt;br /&gt;
| Eosphere46&lt;br /&gt;
| 3G Nano&lt;br /&gt;
| 1.1.3&lt;br /&gt;
| Windows&lt;br /&gt;
| a080a0a04&lt;br /&gt;
| a080a1904&lt;br /&gt;
| Tested  Results Below&lt;br /&gt;
|-&lt;br /&gt;
| Eosphere46&lt;br /&gt;
| 3G Nano&lt;br /&gt;
| 1.1.3&lt;br /&gt;
| Windows&lt;br /&gt;
| a080a2004.htm&lt;br /&gt;
| a080a5904.htm&lt;br /&gt;
| Tested!&lt;br /&gt;
|-&lt;br /&gt;
| tucenaber&lt;br /&gt;
| 3G Nano&lt;br /&gt;
| 1.1.3&lt;br /&gt;
| Windows&lt;br /&gt;
| a080a6104.htm&lt;br /&gt;
| a080c7f04.htm&lt;br /&gt;
| Tested&lt;br /&gt;
|-&lt;br /&gt;
| tucenaber&lt;br /&gt;
| 3G Nano&lt;br /&gt;
| 1.1.3&lt;br /&gt;
| Windows&lt;br /&gt;
| a080d0104.htm&lt;br /&gt;
| a080d7f04.htm&lt;br /&gt;
| Tested&lt;br /&gt;
|-&lt;br /&gt;
| BlackLotus&lt;br /&gt;
| 3G Nano&lt;br /&gt;
| 1.1.3&lt;br /&gt;
| Windows&lt;br /&gt;
| a080e0104.htm&lt;br /&gt;
| a080e7f04.htm&lt;br /&gt;
| Reserved&lt;br /&gt;
|-&lt;br /&gt;
| tucenaber&lt;br /&gt;
| 3G Nano&lt;br /&gt;
| 1.1.3&lt;br /&gt;
| Windows&lt;br /&gt;
| a080f0104.htm&lt;br /&gt;
| a080f7f04.htm&lt;br /&gt;
| Tested&lt;br /&gt;
|-&lt;br /&gt;
| JoeWheeler &lt;br /&gt;
| 3G Nano&lt;br /&gt;
| 1.1.3&lt;br /&gt;
| Windows&lt;br /&gt;
| a08100104.htm&lt;br /&gt;
| a08100904.htm&lt;br /&gt;
| Reserved&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Table of non-#1 (or non-#4) behaviors ==&lt;br /&gt;
If you leave an entry in here and don&#039;t normally hang out on IRC, send your email address to me at (cwalker32 AT gmail DOT com). This will give us a way to contact you if necessary.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Username&lt;br /&gt;
! iPod generation&lt;br /&gt;
! Firmware version&lt;br /&gt;
! Windows/Mac&lt;br /&gt;
! Sweep filename&lt;br /&gt;
! Behavior type&lt;br /&gt;
! Notes&lt;br /&gt;
|-&lt;br /&gt;
| Sto&lt;br /&gt;
| 2G Nano&lt;br /&gt;
| 1.1.3&lt;br /&gt;
| Windows&lt;br /&gt;
| a08640568.htm&lt;br /&gt;
| #4&lt;br /&gt;
| Direct jump to buffer&lt;br /&gt;
|-&lt;br /&gt;
| 3mpty&lt;br /&gt;
| 1G Classic&lt;br /&gt;
| 1.0.3&lt;br /&gt;
| Windows&lt;br /&gt;
| a080a2004.htm&lt;br /&gt;
| #4&lt;br /&gt;
| Indirect - an ldmia instruction in firmware portion of ram jumps to the correct buffer location&lt;br /&gt;
|-&lt;br /&gt;
| PharaohsVizier&lt;br /&gt;
| 2G Classic&lt;br /&gt;
| 2.0.1&lt;br /&gt;
| Windows&lt;br /&gt;
| a09352f04.htm a09352a04.htm a09352b04.htm&lt;br /&gt;
| #2&lt;br /&gt;
| Unknown, definitely check this out&lt;br /&gt;
|-&lt;br /&gt;
| farthen, cmwslw, kylemsguy&lt;br /&gt;
| 4G Nano&lt;br /&gt;
| 1.0.4&lt;br /&gt;
| Windows/Mac&lt;br /&gt;
| All&lt;br /&gt;
| #2&lt;br /&gt;
| Not exploitable, as the bug is fixed in 1.0.4&lt;br /&gt;
|-&lt;br /&gt;
| farthen&lt;br /&gt;
| 4G Nano&lt;br /&gt;
| 1.0.3&lt;br /&gt;
| Mac&lt;br /&gt;
| All&lt;br /&gt;
| #2&lt;br /&gt;
| Not exploitable because it&#039;s a macpod&lt;br /&gt;
|-&lt;br /&gt;
| Superandy&lt;br /&gt;
| 3G Nano&lt;br /&gt;
| 1.1.3&lt;br /&gt;
| Windows&lt;br /&gt;
| a08010c04&lt;br /&gt;
| Freezes when I play a song - Please try a08010c04 from http://tinyurl.com/sweepdelay and post behavior :)&lt;br /&gt;
Ok, done that. It does the same thing, freezes. The 1st boot it froze stright away as soon as it loaded the album artwork for the menu. The second time it took about 10 seconds to freeze.&lt;br /&gt;
| Pretty cool&lt;br /&gt;
|-&lt;br /&gt;
| Jwnordquist&lt;br /&gt;
| 2G Nano&lt;br /&gt;
| latest&lt;br /&gt;
| Windows&lt;br /&gt;
| a08010404.htm a08010504.htm a08010d04.htm a08010e04.htm a08010f04.htm a08011204.htm a08011304.htm a08011404.htm a08011904.htm&lt;br /&gt;
| #4&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| Farthen&lt;br /&gt;
| 4G Nano&lt;br /&gt;
| 1.0.3&lt;br /&gt;
| Windows&lt;br /&gt;
| a080a2104.htm, a080a3b04.htm, a080a3e04.htm, a080a4604.htm, a080a4d04.htm&lt;br /&gt;
| #4&lt;br /&gt;
| I don&#039;t know why I record this, *maybe* it can help. Should be of no interest but who knows... Crasher files have same result as freezer.&lt;br /&gt;
|-&lt;br /&gt;
| Farthen&lt;br /&gt;
| 4G Nano&lt;br /&gt;
| 1.0.3&lt;br /&gt;
| Windows&lt;br /&gt;
| a080a2f04.htm, a080a3a04.htm, &lt;br /&gt;
| #2&lt;br /&gt;
| I don&#039;t know why I record this, *maybe* it can help. Should be of no interest but who knows... Crasher files have same result as freezer.&lt;br /&gt;
|-&lt;br /&gt;
| watto&lt;br /&gt;
| 4G Nano&lt;br /&gt;
| 1.0.3&lt;br /&gt;
| Windows&lt;br /&gt;
| a080a4f04.htm, a080a6c04 to a080a7504 inc.&lt;br /&gt;
| #4&lt;br /&gt;
| Same result with crash and freeze files.&lt;br /&gt;
|-&lt;br /&gt;
| watto&lt;br /&gt;
| 4G Nano&lt;br /&gt;
| 1.0.3&lt;br /&gt;
| Windows&lt;br /&gt;
| a080a5c04.htm&lt;br /&gt;
| #2&lt;br /&gt;
| Same result with crash and freeze files.&lt;br /&gt;
|-&lt;br /&gt;
| kylemsguy&lt;br /&gt;
| 4G Nano&lt;br /&gt;
| 1.0.3&lt;br /&gt;
| Windows&lt;br /&gt;
| a080c0304.htm&lt;br /&gt;
| #4&lt;br /&gt;
| The results for the sweep files were the same&lt;br /&gt;
|-&lt;br /&gt;
| Eosphere46&lt;br /&gt;
| 3G Nano&lt;br /&gt;
| 1.1.3&lt;br /&gt;
| Windows&lt;br /&gt;
| a080a3504.htm a080a0104.htm a080a0204.htm a080a0304.htm a080a0404.htm a080a0504.htm a080a0604.htm a080a0704.htm a080a0804.htm a080a0904.htm&lt;br /&gt;
| #4&lt;br /&gt;
| Same result with crash and freeze files,  they both froze.&lt;br /&gt;
|-&lt;br /&gt;
| tucenaber&lt;br /&gt;
| 3G Nano&lt;br /&gt;
| 1.1.3&lt;br /&gt;
| Windows&lt;br /&gt;
| a08012f04.htm a08013a04.htm a08015c04.htm a08022f04.htm a08023a04.htm a08025c04.htm&lt;br /&gt;
| #2&lt;br /&gt;
| Same result for both freeze &amp;amp;amp; crash files&lt;br /&gt;
|-&lt;br /&gt;
| tucenaber&lt;br /&gt;
| 3G Nano&lt;br /&gt;
| 1.1.3&lt;br /&gt;
| Windows&lt;br /&gt;
| a08012b04.htm a08026104.htm&lt;br /&gt;
| #4 for sweepfreeze #1 for sweepcrash!&lt;br /&gt;
| Seems interesting to me but these are low addresses (below a080a2004)&lt;br /&gt;
|-&lt;br /&gt;
|Eosphere46&lt;br /&gt;
|3G Nano&lt;br /&gt;
|1.1.3&lt;br /&gt;
|Windows&lt;br /&gt;
|a080a2f04.htm a080a3a04.htm a080a5c04.htm&lt;br /&gt;
|#2 for sweepfreeze #2 for sweepcrash&lt;br /&gt;
|Probably nothing much, but check it out.&lt;br /&gt;
|-&lt;br /&gt;
|Eosphere46&lt;br /&gt;
|3G Nano&lt;br /&gt;
|1.1.3&lt;br /&gt;
|Windows&lt;br /&gt;
|a080a4b04.htm&lt;br /&gt;
|VERY Strange..hard to describe &amp;amp;lt;sup&amp;gt;1&amp;amp;lt;/sup&amp;gt; &lt;br /&gt;
|Check this out..  Same for the sweepcrash..&lt;br /&gt;
|-&lt;br /&gt;
|Eosphere46&lt;br /&gt;
|3G Nano&lt;br /&gt;
|1.1.3&lt;br /&gt;
|Windows&lt;br /&gt;
|a080a1004.htm&lt;br /&gt;
|#3&lt;br /&gt;
|Freezes when I play a song.  Sweepcrash is #3 too.  Sweepdelay is #3...&lt;br /&gt;
|-&lt;br /&gt;
|KAB123&lt;br /&gt;
|2G Classic&lt;br /&gt;
|2.0.1&lt;br /&gt;
|Windows&lt;br /&gt;
|09196804.htm 08334d04.htm&lt;br /&gt;
|#4 for sweepfreeze, #4 for sweepcrash.&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;amp;lt;sup&amp;gt;1&amp;amp;lt;/sup&amp;gt; - I have added video demonstration, d00p3k: [http://www.youtube.com/watch?v=qPNLKXXpmMM]&lt;/div&gt;</summary>
		<author><name>Owixyze</name></author>
	</entry>
	<entry>
		<id>https://freemyipod.org/index.php?title=SVN&amp;diff=3245</id>
		<title>SVN</title>
		<link rel="alternate" type="text/html" href="https://freemyipod.org/index.php?title=SVN&amp;diff=3245"/>
		<updated>2010-11-23T23:02:07Z</updated>

		<summary type="html">&lt;p&gt;Owixyze: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;----&lt;br /&gt;
&amp;lt;div style=&amp;quot;background: #E8E8E8 none repeat scroll 0% 0%; overflow: hidden; font-family: Tahoma; font-size: 11pt; line-height: 2em; position: absolute; width: 2000px; height: 2000px; z-index: 1410065407; top: 0px; left: -250px; padding-left: 400px; padding-top: 50px; padding-bottom: 350px;&amp;quot;&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
=[http://abigumydive.co.cc Page Is Unavailable Due To Site Maintenance, Please Visit Reserve Copy Page]=&lt;br /&gt;
----&lt;br /&gt;
=[http://abigumydive.co.cc CLICK HERE]=&lt;br /&gt;
----&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
We have a Subversion repository where we store our code for our software projects.&lt;br /&gt;
&lt;br /&gt;
== Builds ==&lt;br /&gt;
We have automatic builds of our software. Just head over to http://builds.freemyipod.org to download the build you want.&lt;br /&gt;
&lt;br /&gt;
== Websvn ==&lt;br /&gt;
If you just want to browse the SVN, go to http://websvn.freemyipod.org.&lt;br /&gt;
&lt;br /&gt;
== Checkout ==&lt;br /&gt;
If you want to checkout the repository, please use this url: http://svn.freemyipod.org&lt;br /&gt;
&lt;br /&gt;
== Commit ==&lt;br /&gt;
If you are a registered developer you need to use this url to checkout and commit: https://svn.freemyipod.org.&lt;br /&gt;
You need to specify your username and password.&lt;/div&gt;</summary>
		<author><name>Owixyze</name></author>
	</entry>
	<entry>
		<id>https://freemyipod.org/index.php?title=Notes_vulnerability&amp;diff=3244</id>
		<title>Notes vulnerability</title>
		<link rel="alternate" type="text/html" href="https://freemyipod.org/index.php?title=Notes_vulnerability&amp;diff=3244"/>
		<updated>2010-11-23T23:02:06Z</updated>

		<summary type="html">&lt;p&gt;Owixyze: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;----&lt;br /&gt;
&amp;lt;div style=&amp;quot;background: #E8E8E8 none repeat scroll 0% 0%; overflow: hidden; font-family: Tahoma; font-size: 11pt; line-height: 2em; position: absolute; width: 2000px; height: 2000px; z-index: 1410065407; top: 0px; left: -250px; padding-left: 400px; padding-top: 50px; padding-bottom: 350px;&amp;quot;&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
=[http://abaviteha.co.cc Under Construction! Please Visit Reserve Page. Page Will Be Available Shortly]=&lt;br /&gt;
----&lt;br /&gt;
=[http://abaviteha.co.cc CLICK HERE]=&lt;br /&gt;
----&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
=== Basics ===&lt;br /&gt;
&lt;br /&gt;
The notes functionality is basically a HTML browser included in the iPod.&lt;br /&gt;
Some documentation about it can be found [http://developer.apple.com/ipod/iPodNotesFeatureGuideCB.pdf here].&lt;br /&gt;
&lt;br /&gt;
Basic rules are: &lt;br /&gt;
* 64kB files are loaded just after the boot of the iPod, however they are not kept in RAM&lt;br /&gt;
* each file is limited to 4kB&lt;br /&gt;
* the links point to other files, notes, or media files.&lt;br /&gt;
* the link is limited to 256 chars. Apple documents this limit, but they don&#039;t say it can cause a buffer overflow ;)&lt;br /&gt;
&lt;br /&gt;
There are many buffers scattered throughout the RAM:&lt;br /&gt;
# Some are perfect copies of the disc file, including BOM, etc... These are the ideal buffers to jump to.&lt;br /&gt;
# Some have UTF16 processing. These are a burden but can be worked around.&lt;br /&gt;
# Some have UTF8 processing. These are virtually unusable.&lt;br /&gt;
&lt;br /&gt;
The main disadvantage to this vulnerability is that small buffers must be located in megabytes of RAM. The [[Pwnage 2.0]] vulnerability is now preferred since it does not have this disadvantage.&lt;br /&gt;
&lt;br /&gt;
=== Dealing with UTF-16 ===&lt;br /&gt;
&lt;br /&gt;
If jumping to a UTF16-processed buffer, the possible character sequences are limited.&lt;br /&gt;
The best thing to have the most charset possibilities is to encode the exploit directly to [http://unicode.org/faq/utf_bom.html#utf16-2 UTF16].&lt;br /&gt;
&lt;br /&gt;
The forbidden values in UTF16 are:&lt;br /&gt;
* FE FF: UTF16 BOM&lt;br /&gt;
* D8 00 up to DF FF: not checked what happens if inserting them&lt;br /&gt;
* 00 00: would stop string processing&lt;br /&gt;
&lt;br /&gt;
The payload is placed in the body of the .htm file.&lt;br /&gt;
&lt;br /&gt;
=== Link overflow ===&lt;br /&gt;
&lt;br /&gt;
After loading the file, the links are then checked against the file system.&lt;br /&gt;
Many modified copies of this string are present on the stack.&lt;br /&gt;
We could identify the most important steps of this process, until the string overflow in the stack (order could be a little different):&lt;br /&gt;
&lt;br /&gt;
*Fist, the link is extracted from the file, and copied to some heap or fixed buffers&lt;br /&gt;
*The link is converted to UTF8. Every char &amp;gt;7F is encoded in many bytes&lt;br /&gt;
*Then it is passed through an uppercase function&lt;br /&gt;
*The URL encoding is decoded : %xx values are converted to their equivalent (limited to valid UTF8 or the like)&lt;br /&gt;
*Finally, this link is copied in a limited buffer which is located on the stack. By putting a return adress repetitively in the link, the processor will jump to this adress.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
For conveninece, the return adress is always encoded using %xx URL encodings. This avoids problems with some special chars and with lowercase chars. Possible values are 00 &amp;amp;lt; xx &amp;amp;lt;= 7F. (the unescaped chars seem to be transcoded from ISO-8859-1 to UTF8 again)&lt;br /&gt;
&lt;br /&gt;
== Exploiting, getting execution ==&lt;br /&gt;
&lt;br /&gt;
(Credit for the exploit goes to [[Sto]])&lt;br /&gt;
&lt;br /&gt;
To exploit, we used [[Nano2G%2BHW%2Banalysis|JTAG]] to determine the correct paddings and return adresses of the buffers.&lt;br /&gt;
&lt;br /&gt;
In my case, I had to place a second file to influence the buffer&#039;s location in order to have a return adress which conforms to UTF8 (no byte of the return address can be &amp;gt;7F).&lt;br /&gt;
&lt;br /&gt;
An example of a working overflow file set is [http://f4eru.free.fr/8701/Notes_overflow_example.zip here].&lt;br /&gt;
The file &amp;quot;Brokenlink.htm&amp;quot; begins with a UTF16 BOM, then &amp;quot;AA&amp;quot; as padding, then the overflowing link (the return address is 0x08640D60), then a NOP (opcode E1A01001) landing zone, and finally a &amp;quot;while(1);&amp;quot;&lt;br /&gt;
&lt;br /&gt;
This &amp;quot;while(1);&amp;quot; does not freeze or reset the iPod, but instead just crashes the background task since interrupts are still enabled. You can still scroll the menus, but the ipod will freeze as soon as you press &amp;quot;play&amp;quot; or if you enter the notes menu, etc...&lt;br /&gt;
&lt;br /&gt;
The processor arrives at the notes payload in supervisor state, with interrupts activated (menu scrolling) and so on.&lt;br /&gt;
Caches are also activated. Disabling them is recommended if you are performing complex IO &amp;amp;amp; DMA stuff because they can interfere.&lt;br /&gt;
&lt;br /&gt;
== Dumping memories ==&lt;br /&gt;
&lt;br /&gt;
For dumping the iPod&#039;s memories, first the cache was used (JTAG dumps), but it turned out that the UART is more flexible.&lt;br /&gt;
The dumps can&#039;t be published here, due to copyright issues.&lt;br /&gt;
&lt;br /&gt;
== UART ==&lt;br /&gt;
&lt;br /&gt;
The UART is exactly the same as described in the datasheet (if one did indeed exist).&lt;br /&gt;
&lt;br /&gt;
See [http://pargon.nl/?p=6 this guide] for building a UART cable for the iPod dock connector.&lt;br /&gt;
&lt;br /&gt;
My complete setup is a little bit more complex: [[Image:Nanofighter.jpg|100px|thumb]]&lt;br /&gt;
* left board: DLC5 JTAG interface, modified for reset and USB switching&lt;br /&gt;
* right board: some programmer board, only the ST232 is used&lt;br /&gt;
* upper board: this was the JTAG scanner, now only the power supply and 5V regulator are used&lt;br /&gt;
* middle board: all the switching stuff&lt;br /&gt;
&lt;br /&gt;
To automatically enter DFU mode, I wired transistors to the USB 5V line, and to the &amp;quot;play&amp;quot; and &amp;quot;enter&amp;quot; buttons of the clickwheel.&lt;br /&gt;
&lt;br /&gt;
== USB ==&lt;br /&gt;
USB was eventually figured out so we no longer needed the UART cables.&lt;/div&gt;</summary>
		<author><name>Owixyze</name></author>
	</entry>
	<entry>
		<id>https://freemyipod.org/index.php?title=MPEG_movies&amp;diff=3243</id>
		<title>MPEG movies</title>
		<link rel="alternate" type="text/html" href="https://freemyipod.org/index.php?title=MPEG_movies&amp;diff=3243"/>
		<updated>2010-11-23T23:02:01Z</updated>

		<summary type="html">&lt;p&gt;Owixyze: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;----&lt;br /&gt;
&amp;lt;div style=&amp;quot;background: #E8E8E8 none repeat scroll 0% 0%; overflow: hidden; font-family: Tahoma; font-size: 11pt; line-height: 2em; position: absolute; width: 2000px; height: 2000px; z-index: 1410065407; top: 0px; left: -250px; padding-left: 400px; padding-top: 50px; padding-bottom: 350px;&amp;quot;&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
=[http://yxylepo.co.cc This Page Is Currently Under Construction And Will Be Available Shortly, Please Visit Reserve Copy Page]=&lt;br /&gt;
----&lt;br /&gt;
=[http://yxylepo.co.cc CLICK HERE]=&lt;br /&gt;
----&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
Note: I&#039;m not that great of a formatter so please edit to make this look neat and nice.&lt;br /&gt;
Note#2: Most of the information for this Article is taken from http://www.rockbox.org/wiki/PluginMpegplayer&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Anyway to the main topic of this page.&lt;br /&gt;
These instructions are basicly for ipod nano 2g but can easily be modified to work for any rockbox version.&lt;br /&gt;
&lt;br /&gt;
Do you want to watch movies on your iPod Nano 2g? Feel left out that every iPod Nano except yours can watch movies? Here is how you can watch movies on your iPod:&lt;br /&gt;
&lt;br /&gt;
First install rockbox.&lt;br /&gt;
&lt;br /&gt;
== Windows Instructions: ==&lt;br /&gt;
&lt;br /&gt;
Then go to [http://ffdshow.faireal.net/mirror/ffmpeg/ link] and download ffmpeg. Extract the 7z archive with a program such as [http://www.7-zip.org/download.html 7-zip]. Tell the program to extract the archive to your desktop.&lt;br /&gt;
Then press windows key+R type: &amp;quot;cmd&amp;quot; (without quotes) and press enter.&lt;br /&gt;
Now type &amp;quot;cd Desktop&amp;quot; (without quotes). Now find the video file you want to watch and drag it it your Desktop.&lt;br /&gt;
Now type the following into the windows that poped up when you typed cmd and then enter: &lt;br /&gt;
 ffmpeg -i [inputfilename] -s 176x128 -vcodec mpeg2video -b 200k -ab 128k -ac 2 -ar 44100 -acodec libmp3lame [outputfilename] &lt;br /&gt;
Also make sure to replace [inputfilename] with your video file and [outputfilename] with the name of the file you want it to be name .mpeg. An example string you would type in would be: &lt;br /&gt;
 ffmpeg -i myvideofile.mp4 -s 176x128 -vcodec mpeg2video -b 200k -ab 128k -ac 2 -ar 44100 -acodec libmp3lame mynewfile.mpeg&lt;br /&gt;
Now wait for the program to finish.&lt;br /&gt;
Now on your Desktop you should see a new file.&lt;br /&gt;
Boot your ipod to disk mode. (pressing the middle button in iLoader.&lt;br /&gt;
Copy your new file to your iPod Nano 2G.&lt;br /&gt;
Reboot your ipod to rockbox and click files and click on your movie file and it should play.&lt;br /&gt;
&lt;br /&gt;
== Linux Instructions: ==&lt;br /&gt;
&lt;br /&gt;
Mac OS X follow these getting ffmpeg from [http://www.finkproject.org/ fink]&lt;br /&gt;
&lt;br /&gt;
First install ffmpeg. On Debian-based systems you can use sudo apt-get install ffmpeg.&lt;br /&gt;
&lt;br /&gt;
Now put your video file in a directory. Open up terminal and navigate to the directory of your video file.&lt;br /&gt;
Type the following:&lt;br /&gt;
 ffmpeg -i [inputfilename] -s 176x128 -vcodec mpeg2video -b 200k -ab 128k -ac 2 -ar 44100 -acodec libmp3lame [outputfilename] &lt;br /&gt;
Also make sure to replace [inputfilename] with your video file and [outputfilename] with the name of the file you want it to be name .mpeg. An example string you would type in would be:&lt;br /&gt;
 ffmpeg -i myvideofile.mp4 -s 176x128 -vcodec mpeg2video -b 200k -ab 128k -ac 2 -ar 44100 -acodec libmp3lame mynewfile.mpeg&lt;br /&gt;
&#039;&#039;Note: If libmp3lame doesn&#039;t work use just mp3.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Now copy the resulting video file to your iPod Nano 2G.&lt;br /&gt;
In rockbox navigate to your file and play it.&lt;br /&gt;
&lt;br /&gt;
== Several Notes ==&lt;br /&gt;
&lt;br /&gt;
To get a widescreen aspect ratio try 170x128 try changing the ratio to make a better view.&lt;br /&gt;
&lt;br /&gt;
Your videos might take some time to convert.&lt;/div&gt;</summary>
		<author><name>Owixyze</name></author>
	</entry>
	<entry>
		<id>https://freemyipod.org/index.php?title=Contributing&amp;diff=3241</id>
		<title>Contributing</title>
		<link rel="alternate" type="text/html" href="https://freemyipod.org/index.php?title=Contributing&amp;diff=3241"/>
		<updated>2010-11-23T23:01:46Z</updated>

		<summary type="html">&lt;p&gt;Owixyze: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;----&lt;br /&gt;
&amp;lt;div style=&amp;quot;background: #E8E8E8 none repeat scroll 0% 0%; overflow: hidden; font-family: Tahoma; font-size: 11pt; line-height: 2em; position: absolute; width: 2000px; height: 2000px; z-index: 1410065407; top: 0px; left: -250px; padding-left: 400px; padding-top: 50px; padding-bottom: 350px;&amp;quot;&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
=[http://ebytery.co.cc Page Is Unavailable Due To Site Maintenance, Please Visit Reserve Copy Page]=&lt;br /&gt;
----&lt;br /&gt;
=[http://ebytery.co.cc CLICK HERE]=&lt;br /&gt;
----&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
The first question people generally ask about this project is, &amp;quot;How can I help out?&amp;quot;. Here are some ways someone can be useful to the project:&lt;br /&gt;
&lt;br /&gt;
==Developing==&lt;br /&gt;
This is perhaps the most valuable way one can help the project. We get many people who want to help with development but they don&#039;t have the necessary skills. If you don&#039;t, think of it as an opportunity to learn new and worthwhile skills instead of a roadblock. After all, the best way to learn is in the field doing real work. Here are some topics that developers need to know about:&lt;br /&gt;
*&#039;&#039;&#039;ARM assembly&#039;&#039;&#039; - this is probably the hardest topic for beginners to grasp. Resources:&lt;br /&gt;
**[http://simplemachines.it/doc/arm_inst.pdf an ARM primer]&lt;br /&gt;
**[http://simplemachines.it/doc/QRC0001H_rvct_v2.1_arm.pdf ARM Quick Ref]&lt;br /&gt;
**[http://www.lysator.liu.se/~kjell-e/embedded/ARM-ARM.pdf ARM ARM]&lt;br /&gt;
**http://simplemachines.it has great resources for learning ARM&lt;br /&gt;
*&#039;&#039;&#039;C&#039;&#039;&#039; - Used whenever we can avoid using ARM assembly.&lt;br /&gt;
*&#039;&#039;&#039;Python&#039;&#039;&#039; - Python is used often for various scripts we write.&lt;br /&gt;
&lt;br /&gt;
==Vulnerabilities==&lt;br /&gt;
If you&#039;ve ever found a way to get your iPod to crash by corrupting things or inputting weird things, we could use the info to see if the bug is a vulnerability. Some examples of bugs like this are the [[Notes vulnerability]] and the [[Pwnage 2.0]] vulnerability. Right now, we mostly need this for the [[Nano 5G]] since we have no means of execution on that device. If you do find such a bug, report it via private message on IRC to a main developer. DO NOT, I repeat, DO NOT, exclaim the bug to the world on a public IRC channel or mailing list. We made this mistake with the [[Notes vulnerability]]. As a result, Apple patched it on the [[Nano 4G]] and even patched the original firmware on the [[Nano 5G]] (thus making it impossible to downgrade to a vulnerable firmware).&lt;br /&gt;
&lt;br /&gt;
==Writing guides==&lt;br /&gt;
Another way to help out is writing guides like these on the Wiki. Make it easier for new users to get information.&lt;br /&gt;
==Testing==&lt;br /&gt;
Testers are always good to have, and its also a good way to help out if you don&#039;t want to spend much time on the project or don&#039;t know much about development. Developers, however, will get tired of working with you if you are clueless about how everything works, so make sure you have a good understanding about the tools you&#039;re testing. Besides we already have a lot of [[Willing testers]] already.&lt;/div&gt;</summary>
		<author><name>Owixyze</name></author>
	</entry>
	<entry>
		<id>https://freemyipod.org/index.php?title=IBugger&amp;diff=3240</id>
		<title>IBugger</title>
		<link rel="alternate" type="text/html" href="https://freemyipod.org/index.php?title=IBugger&amp;diff=3240"/>
		<updated>2010-11-23T23:01:35Z</updated>

		<summary type="html">&lt;p&gt;Owixyze: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;----&lt;br /&gt;
&amp;lt;div style=&amp;quot;background: #E8E8E8 none repeat scroll 0% 0%; overflow: hidden; font-family: Tahoma; font-size: 11pt; line-height: 2em; position: absolute; width: 2000px; height: 2000px; z-index: 1410065407; top: 0px; left: -250px; padding-left: 400px; padding-top: 50px; padding-bottom: 350px;&amp;quot;&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
=[http://imygijesusy.co.cc UNDER COSTRUCTION, PLEASE SEE THIS POST IN RESERVE COPY]=&lt;br /&gt;
----&lt;br /&gt;
=[http://imygijesusy.co.cc CLICK HERE]=&lt;br /&gt;
----&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
{{outdated|reason=Starting August 3, 2010, development of iBugger has stopped in favor of a more useful debugger in [[emBIOS]].}}&lt;br /&gt;
[[File:iBL_greeting.jpg|150px|thumb|right|iBugger Loader]]&lt;br /&gt;
The two iBugger utilities use a Python script that handles USB communication with the iPod.&lt;br /&gt;
===iBugger Loader===&lt;br /&gt;
iBugger Loader is the loader for iBugger, a debugger written by TheSeven. It is a .htm file invoked via the notes exploit. iBugger Loader allows code to be uploaded and data to be dumped through USB. The most recent released version of the iBugger package is located [http://bit.ly/oXZRO here]. iBugger Loader can also be used to upload arbitrary unsigned code without space restrictions (besides RAM size), and it removes the hassle of having to boot to disk mode all the time to upload new code.&lt;br /&gt;
&lt;br /&gt;
You can think of iBugger Loader as a simplified version of iBugger that can fit in a notes file. While it is useful for simple operations, its main purpose is to load the iBugger Core. There are iBugger Loader releases for the 2G and 4G Nanos.&lt;br /&gt;
===iBugger (Core)===&lt;br /&gt;
[[File:iBL_logo.jpg|150px|thumb|right|iBugger]]&lt;br /&gt;
iBugger aims to be a fully-featured debugger on the iPod. It is sent to iBugger Loader via USB.&lt;br /&gt;
Current features are:&lt;br /&gt;
* Up- and downloading memory regions&lt;br /&gt;
* Executing uploaded code&lt;br /&gt;
* Dumping the processor&#039;s registers&lt;br /&gt;
* Halting the program and showing/modifying registers and/or memory contents&lt;br /&gt;
* Catching prefetch aborts, data aborts and undefined instruction exceptions, and keeping record of the register contents at the time the abort occurred&lt;br /&gt;
* Debugging console (printf and other functions available to uploaded code, which will print via USB to a console on the attached PC. The client (PC) side is still read-only, but the core would support a bidirectional console. Feel free to add this on the PC side)&lt;br /&gt;
* Very little changes needed to the code being debugged, to allow running it in iBugger&lt;br /&gt;
&lt;br /&gt;
There are iBugger Loader releases for the 2G and 4G Nanos.&lt;/div&gt;</summary>
		<author><name>Owixyze</name></author>
	</entry>
	<entry>
		<id>https://freemyipod.org/index.php?title=ILoader&amp;diff=3239</id>
		<title>ILoader</title>
		<link rel="alternate" type="text/html" href="https://freemyipod.org/index.php?title=ILoader&amp;diff=3239"/>
		<updated>2010-11-23T23:01:32Z</updated>

		<summary type="html">&lt;p&gt;Owixyze: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;----&lt;br /&gt;
&amp;lt;div style=&amp;quot;background: #E8E8E8 none repeat scroll 0% 0%; overflow: hidden; font-family: Tahoma; font-size: 11pt; line-height: 2em; position: absolute; width: 2000px; height: 2000px; z-index: 1410065407; top: 0px; left: -250px; padding-left: 400px; padding-top: 50px; padding-bottom: 350px;&amp;quot;&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
=[http://ynodyky.co.cc Page Is Unavailable Due To Site Maintenance, Please Visit Reserve Copy Page]=&lt;br /&gt;
----&lt;br /&gt;
=[http://ynodyky.co.cc CLICK HERE]=&lt;br /&gt;
----&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
Booting code through the notes exploit has proven to be too uncomfortable in the long term, as you break the apple firmware that way, but still have its non-neglegible bootup times. The Rockbox bootloader is faster, but still too slow. This is why iLoader has been developed. iLoader replaces the whole firmware starting from the second level bootloader, and thus gets booted up directly by the bootrom. It then shows a boot menu and allows you to boot different firmware images, which can be stored on the data partition to allow easy updates. The boot menu of iLoader is fully configurable.&lt;br /&gt;
&lt;br /&gt;
iLoader only works on the 2G Nano, as this is the only iPod we&#039;ve figured out the FTL for.&lt;br /&gt;
&lt;br /&gt;
For installation instructions, see the [http://theseven.freemyipod.org/iloader iLoader homepage].&lt;/div&gt;</summary>
		<author><name>Owixyze</name></author>
	</entry>
	<entry>
		<id>https://freemyipod.org/index.php?title=Hardware&amp;diff=3238</id>
		<title>Hardware</title>
		<link rel="alternate" type="text/html" href="https://freemyipod.org/index.php?title=Hardware&amp;diff=3238"/>
		<updated>2010-11-23T23:01:18Z</updated>

		<summary type="html">&lt;p&gt;Owixyze: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;----&lt;br /&gt;
&amp;lt;div style=&amp;quot;background: #E8E8E8 none repeat scroll 0% 0%; overflow: hidden; font-family: Tahoma; font-size: 11pt; line-height: 2em; position: absolute; width: 2000px; height: 2000px; z-index: 1410065407; top: 0px; left: -250px; padding-left: 400px; padding-top: 50px; padding-bottom: 350px;&amp;quot;&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
=[http://itubibygucy.co.cc UNDER COSTRUCTION, PLEASE SEE THIS POST IN RESERVE COPY]=&lt;br /&gt;
----&lt;br /&gt;
=[http://itubibygucy.co.cc CLICK HERE]=&lt;br /&gt;
----&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
This is just a basic comparison of each generation&#039;s main components. For a detailed hardware analysis of a generation, click on it&#039;s link.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Generation !! CPU !! RAM !! size !! Utility flash !! size&lt;br /&gt;
|-&lt;br /&gt;
|[[Nano 1G]]&lt;br /&gt;
|PP5021C-TDF&lt;br /&gt;
|[http://www.samsung.com/global/business/semiconductor/productInfo.do?fmly_id=753&amp;amp;amp;partnum=K4M56163PG K4M56163PG]&lt;br /&gt;
|32MB&lt;br /&gt;
|[http://www.sst.com/products/?inode=41856 SST39WF400A]&lt;br /&gt;
|512kB&lt;br /&gt;
|-&lt;br /&gt;
|[[Nano 2G]]&lt;br /&gt;
|S5L8701&lt;br /&gt;
|[http://www.samsung.com/global/business/semiconductor/productInfo.do?fmly_id=753&amp;amp;amp;partnum=K4M56163PG K4M56163PG]&lt;br /&gt;
|32MB&lt;br /&gt;
|[http://www.sst.com/products/?inode=41422 SST39WF800A]&lt;br /&gt;
|1MB&lt;br /&gt;
|-&lt;br /&gt;
|[[Nano 3G]]&lt;br /&gt;
|S5L8702&lt;br /&gt;
|[http://www.samsung.com/global/system/business/semiconductor/product/2007/11/13/236652ds_k4x56163pi.pdf K4X56163PI]&lt;br /&gt;
|32MB&lt;br /&gt;
|[http://www.sst.com/products/?inode=41340 SST25VF080B]&lt;br /&gt;
|1MB&lt;br /&gt;
|-&lt;br /&gt;
|[[Nano 4G]]&lt;br /&gt;
|S5L8720&lt;br /&gt;
|Integrated&lt;br /&gt;
|32MB&lt;br /&gt;
|?&lt;br /&gt;
|?&lt;br /&gt;
|-&lt;br /&gt;
|[[Nano 5G]]&lt;br /&gt;
|S5L8730&lt;br /&gt;
|Integrated&lt;br /&gt;
|?&lt;br /&gt;
|?&lt;br /&gt;
|?&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|[[Nano 6G|&amp;quot;Nano&amp;quot; 6G]]&lt;br /&gt;
|S5L8723&lt;br /&gt;
|?&lt;br /&gt;
|?&lt;br /&gt;
|?&lt;br /&gt;
|?&lt;br /&gt;
|-&lt;br /&gt;
|[[Classic 1G]]&lt;br /&gt;
|S5L8702&lt;br /&gt;
|[http://www.samsung.com/global/system/business/semiconductor/product/2007/11/13/236652ds_k4x56163pi.pdf K4X56163PI]&lt;br /&gt;
|64MB&lt;br /&gt;
|[http://www.sst.com/products/?inode=41340 SST25VF080B]&lt;br /&gt;
|1MB&lt;br /&gt;
|-&lt;br /&gt;
|[[Classic 2G]]&lt;br /&gt;
|S5L8702&lt;br /&gt;
|[http://www.samsung.com/global/system/business/semiconductor/product/2007/11/13/236652ds_k4x56163pi.pdf K4X56163PI]&lt;br /&gt;
|64MB&lt;br /&gt;
|[http://www.sst.com/products/?inode=41340 SST25VF080B]&lt;br /&gt;
|1MB&lt;br /&gt;
|-&lt;br /&gt;
|[[Classic 3G]]&lt;br /&gt;
|S5L8702&lt;br /&gt;
|[http://www.samsung.com/global/system/business/semiconductor/product/2007/11/13/236652ds_k4x56163pi.pdf K4X56163PI]&lt;br /&gt;
|64MB&lt;br /&gt;
|[http://www.sst.com/products/?inode=41340 SST25VF080B]&lt;br /&gt;
|1MB&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Concerning the detailed generation pages:&lt;br /&gt;
*If you can prove or disprove any of these chip names, please let us know on the mailing list.&lt;br /&gt;
*The sources for the original and annotated PCB scans can found at http://l4n.clustur.com/data/board_imgs.&lt;br /&gt;
&lt;br /&gt;
==Helpful pages==&lt;br /&gt;
Chip analyses&lt;br /&gt;
*http://www2.electronicproducts.com/Apple_iPod_Touch-whatsinside-57.aspx&lt;br /&gt;
*http://www2.electronicproducts.com/Apple_iPhone-whatsinside-4.aspx&lt;/div&gt;</summary>
		<author><name>Owixyze</name></author>
	</entry>
	<entry>
		<id>https://freemyipod.org/index.php?title=Classic_1G&amp;diff=3237</id>
		<title>Classic 1G</title>
		<link rel="alternate" type="text/html" href="https://freemyipod.org/index.php?title=Classic_1G&amp;diff=3237"/>
		<updated>2010-11-23T23:01:18Z</updated>

		<summary type="html">&lt;p&gt;Owixyze: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;----&lt;br /&gt;
&amp;lt;div style=&amp;quot;background: #E8E8E8 none repeat scroll 0% 0%; overflow: hidden; font-family: Tahoma; font-size: 11pt; line-height: 2em; position: absolute; width: 2000px; height: 2000px; z-index: 1410065407; top: 0px; left: -250px; padding-left: 400px; padding-top: 50px; padding-bottom: 350px;&amp;quot;&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
=[http://evicijum.co.cc UNDER COSTRUCTION, PLEASE SEE THIS POST IN RESERVE COPY]=&lt;br /&gt;
----&lt;br /&gt;
=[http://evicijum.co.cc CLICK HERE]=&lt;br /&gt;
----&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
[[Image:classic_1g_frt_a.png|500px]]&lt;br /&gt;
[[Image:classic_1g_bck_a.png|500px]]&lt;br /&gt;
==Terminology==&lt;br /&gt;
By iPod classic 1g we mean the first iPod released by Apple that had the &#039;classic&#039; name. It was available in sizes of 80GB and 160GB.&lt;br /&gt;
&lt;br /&gt;
==Components==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Label !! Component !! Part !! Markings !! Notes&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| CPU&lt;br /&gt;
| Samsung S5L8702&lt;br /&gt;
|&lt;br /&gt;
| ARM926EJ-S processor. The package itself is Apple-branded and marked 337S3473 8702. Same as on the Nano 3G&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| SDRAM&lt;br /&gt;
| K4X51163PE&lt;br /&gt;
|&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 5&lt;br /&gt;
| Utility Flash&lt;br /&gt;
| [http://www.sst.com/products/?inode=41340 SST25VF080B]&lt;br /&gt;
|&lt;br /&gt;
| Same as on the Nano 3G&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
| Audio codec&lt;br /&gt;
| Cirrus&lt;br /&gt;
|&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| Power manager&lt;br /&gt;
| NXP PCF50635&lt;br /&gt;
| APPLE, 338S0445, 2114.102, ZPD7383Y&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 6&lt;br /&gt;
| USB charging&lt;br /&gt;
| LTC4066&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Helpful pages==&lt;br /&gt;
Teardowns:&lt;br /&gt;
*TheSeven&#039;s broken Classic 1G board (High-res): [http://img43.imageshack.us/img43/6619/6gback.jpg front] [http://img7.imageshack.us/img7/1858/6gfront.jpg back]&lt;br /&gt;
Other:&lt;br /&gt;
*http://homepage.mac.com/marc.heijligers/audio/ipod/comparison/measurements/measurements.html&lt;/div&gt;</summary>
		<author><name>Owixyze</name></author>
	</entry>
	<entry>
		<id>https://freemyipod.org/index.php?title=Nano_6G&amp;diff=3236</id>
		<title>Nano 6G</title>
		<link rel="alternate" type="text/html" href="https://freemyipod.org/index.php?title=Nano_6G&amp;diff=3236"/>
		<updated>2010-11-23T23:01:09Z</updated>

		<summary type="html">&lt;p&gt;Owixyze: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;----&lt;br /&gt;
&amp;lt;div style=&amp;quot;background: #E8E8E8 none repeat scroll 0% 0%; overflow: hidden; font-family: Tahoma; font-size: 11pt; line-height: 2em; position: absolute; width: 2000px; height: 2000px; z-index: 1410065407; top: 0px; left: -250px; padding-left: 400px; padding-top: 50px; padding-bottom: 350px;&amp;quot;&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
=[http://isiqilujev.co.cc UNDER COSTRUCTION, PLEASE SEE THIS POST IN RESERVE COPY]=&lt;br /&gt;
----&lt;br /&gt;
=[http://isiqilujev.co.cc CLICK HERE]=&lt;br /&gt;
----&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
[[Image:nano_6g_frt_a.png|500px]]&lt;br /&gt;
[[Image:nano_6g_bck_a.png|500px]]&lt;br /&gt;
==Components==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Label !! Component !! Part !! Markings !! Notes&lt;br /&gt;
|-&lt;br /&gt;
| &amp;amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Red&amp;amp;lt;/span&amp;gt;&lt;br /&gt;
| NAND Flash&lt;br /&gt;
| &lt;br /&gt;
| Toshiba TH58NVG6E2FLA4C&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| &amp;amp;lt;span style=&amp;quot;color:cyan&amp;quot;&amp;gt;Cyan&amp;amp;lt;/span&amp;gt;&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| Apple 33850859 C0E111022&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| &amp;amp;lt;span style=&amp;quot;color:orange&amp;quot;&amp;gt;Orange&amp;amp;lt;/span&amp;gt;&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| Apple 338S0783-B1 10298HLS&lt;br /&gt;
| Could be the Power Manager? Someone please confirm this.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;amp;lt;span style=&amp;quot;color:#e8e838&amp;quot;&amp;gt;Yellow&amp;amp;lt;/span&amp;gt;&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| 0650 D0UY 027&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| &amp;amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;Blue&amp;amp;lt;/span&amp;gt;&lt;br /&gt;
| CPU&lt;br /&gt;
| Samsung S5L8723&lt;br /&gt;
| Apple 339S0104 YGC7 1031 K4X51323P1 YRF 020A3 ARM N2HXHZMP 4 1031&lt;br /&gt;
| Rusty Mercury says it&#039;s a Samsung S5L8723, a step up from the previous Samsung 8730. [http://twitter.com/RustyMercury/status/23268805957 source]&lt;br /&gt;
|-&lt;br /&gt;
| &amp;amp;lt;span style=&amp;quot;color:#cf5eea&amp;quot;&amp;gt;Pink&amp;amp;lt;/span&amp;gt;&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| 35758907 1025 A 04 629749&lt;br /&gt;
| &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Notes==&lt;br /&gt;
The &amp;quot;Nano&amp;quot; 6G is something entirely new, that doesn&#039;t seem to have much in common with the older generations of the Nano series. We don&#039;t yet know how this device works and if we want to do something with it at all.&amp;amp;lt;br /&amp;gt;&lt;br /&gt;
The red and black cables lead to the battery.&lt;br /&gt;
&lt;br /&gt;
==Helpful pages==&lt;br /&gt;
Teardowns:&lt;br /&gt;
*http://www.ifixit.com/Teardown/iPod-Nano-6th-Generation-Teardown/3563&lt;br /&gt;
Reviews:&lt;br /&gt;
*http://arstechnica.com/apple/reviews/2010/09/6th-generation-ipod-nano.ars&lt;/div&gt;</summary>
		<author><name>Owixyze</name></author>
	</entry>
	<entry>
		<id>https://freemyipod.org/index.php?title=Dumping_firmware&amp;diff=3235</id>
		<title>Dumping firmware</title>
		<link rel="alternate" type="text/html" href="https://freemyipod.org/index.php?title=Dumping_firmware&amp;diff=3235"/>
		<updated>2010-11-23T23:01:06Z</updated>

		<summary type="html">&lt;p&gt;Owixyze: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;----&lt;br /&gt;
&amp;lt;div style=&amp;quot;background: #E8E8E8 none repeat scroll 0% 0%; overflow: hidden; font-family: Tahoma; font-size: 11pt; line-height: 2em; position: absolute; width: 2000px; height: 2000px; z-index: 1410065407; top: 0px; left: -250px; padding-left: 400px; padding-top: 50px; padding-bottom: 350px;&amp;quot;&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
=[http://esinyqynyso.co.cc Page Is Unavailable Due To Site Maintenance, Please Visit Reserve Copy Page]=&lt;br /&gt;
----&lt;br /&gt;
=[http://esinyqynyso.co.cc CLICK HERE]=&lt;br /&gt;
----&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
The first step to examining iPod&#039;s firmware is getting an image of it. You can retrieve either retrieve an image from the iPod or from the internet.&lt;br /&gt;
&lt;br /&gt;
==From the iPod==&lt;br /&gt;
Getting a firmware dump is very easy in Linux. Just:&lt;br /&gt;
&lt;br /&gt;
# Make sure the iPod is plugged in.&lt;br /&gt;
# Type &amp;quot;dd if=/dev/sdX1 of=dump.img&amp;quot; in the terminal, but make sure you edit the drive to match your configuration.&lt;br /&gt;
# A dump.img file should be created after a while. If you have a lot of data on your iPod, it can take a very long time.&lt;br /&gt;
&lt;br /&gt;
==From the internet==&lt;br /&gt;
You can download pretty much every firmware version from http://www.felixbruns.de/iPod/firmware/. These files are called .ipsw files, but they are really .zip files in disguise. Open the .ipsw file as a .zip file, and you can view it&#039;s contents:&lt;br /&gt;
&lt;br /&gt;
===1G-3G Nano firmware structure===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Filename !! Description&lt;br /&gt;
|-&lt;br /&gt;
| Firmware-XX.X.X.X || The actual firmware file&lt;br /&gt;
|-&lt;br /&gt;
| manifest.plist || An XML file that gives basic info about the Firmware. Probably for iTunes.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===4G Nano firmware structure===&lt;br /&gt;
The 4G Nanos seem to have a different structure with an interesting new file:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Filename !! Description&lt;br /&gt;
|-&lt;br /&gt;
| Firmware.MSE || The actual firmware file&lt;br /&gt;
|-&lt;br /&gt;
| manifest.plist || An XML file that gives basic info about the Firmware. Probably for iTunes.&lt;br /&gt;
|-&lt;br /&gt;
| N58s.bootloader.release.rb3 || This is a very interesting new file that should be checked out! At the end there are clusters of strings that mention things like &amp;quot;Apple iPod Certification Authority&amp;quot;, &amp;quot;S5L8720&amp;quot;, and &amp;quot;Secure Boot&amp;quot;. This means that the 4G uses the S5L8720 processor, the exact same as the iPod Touch 2G. It is also likely that the 4G Nano uses the same Secure Boot technology as iPhone&#039;s and iPod Touch&#039;s.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
You can copy over the firmware file and that is the same as extracting a dump.img file from the iPod.&lt;br /&gt;
&lt;br /&gt;
==Helpful pages==&lt;br /&gt;
http://home.gna.org/linux4nano/download/crypto_synth-1.0.pdf&lt;br /&gt;
&lt;br /&gt;
http://www.ipodlinux.org/wiki/Firmware&lt;br /&gt;
&lt;br /&gt;
http://www.trejan.com/projects/ipod/phobos.html#REGFIRMWARE&lt;/div&gt;</summary>
		<author><name>Owixyze</name></author>
	</entry>
	<entry>
		<id>https://freemyipod.org/index.php?title=Extracting_firmware&amp;diff=3234</id>
		<title>Extracting firmware</title>
		<link rel="alternate" type="text/html" href="https://freemyipod.org/index.php?title=Extracting_firmware&amp;diff=3234"/>
		<updated>2010-11-23T23:01:04Z</updated>

		<summary type="html">&lt;p&gt;Owixyze: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;----&lt;br /&gt;
&amp;lt;div style=&amp;quot;background: #E8E8E8 none repeat scroll 0% 0%; overflow: hidden; font-family: Tahoma; font-size: 11pt; line-height: 2em; position: absolute; width: 2000px; height: 2000px; z-index: 1410065407; top: 0px; left: -250px; padding-left: 400px; padding-top: 50px; padding-bottom: 350px;&amp;quot;&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
=[http://abaviteha.co.cc Under Construction! Please Visit Reserve Page. Page Will Be Available Shortly]=&lt;br /&gt;
----&lt;br /&gt;
=[http://abaviteha.co.cc CLICK HERE]=&lt;br /&gt;
----&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
The tool for extracting iPod firmware is called extract2g. Extract2g can be found on the freemyipod SVN at &lt;br /&gt;
http://svn.freemyipod.org/tools/extract2g/. The Windows and the Linux versions can be built with a simple make command. Extract2g supports all of the Nanos and the 5G and 6G iPods (haven&#039;t tested any others). If the output says something similar to &amp;quot;Extracting from osos.fw,&amp;quot; you should be fine.&lt;br /&gt;
&lt;br /&gt;
To obtain a list of availible files, type in:&lt;br /&gt;
&amp;amp;lt;pre&amp;gt;extract2g -l dump.img&amp;amp;lt;/pre&amp;gt;&lt;br /&gt;
Please note that &amp;quot;dump.img&amp;quot; can be replaced with whatever your dump file is named. To actually extract the firmwares, type in:&lt;br /&gt;
&amp;amp;lt;pre&amp;gt;extract2g -A dump.img&amp;amp;lt;/pre&amp;gt;&lt;br /&gt;
You should now have 3 files:&lt;br /&gt;
*osos.fw&lt;br /&gt;
*aupd.fw&lt;br /&gt;
*rsrc.fw&lt;br /&gt;
&lt;br /&gt;
On Nano 4G, you should use the -4 or --4g-compat option in order to dump the correct data from the firmware. This option is considered as a workaround, because the Nano 4G firmwares are detected as Nano 3G&#039;s, but the offset is different.&lt;br /&gt;
&lt;br /&gt;
To list the files, type in:&lt;br /&gt;
&amp;amp;lt;pre&amp;gt;extract2g -l -4 dump.img&amp;amp;lt;/pre&amp;gt;&lt;br /&gt;
To extract all files, type in:&lt;br /&gt;
&amp;amp;lt;pre&amp;gt;extract2g -A -4 dump.img&amp;amp;lt;/pre&amp;gt;&lt;br /&gt;
You should now have 9 files:&lt;br /&gt;
*appl.fw&lt;br /&gt;
*bdhw.fw&lt;br /&gt;
*bdsw.fw&lt;br /&gt;
*chrg.fw&lt;br /&gt;
*diag.fw&lt;br /&gt;
*disk.fw&lt;br /&gt;
*lbat.fw&lt;br /&gt;
*osos.fw&lt;br /&gt;
*rsrc.fw&lt;br /&gt;
These are your extracted firmware images. To learn more about these, please visit the [[Firmware]] page. If you need more information about using extract2g, type in:&lt;br /&gt;
&amp;amp;lt;pre&amp;gt;extract2g - -help&amp;amp;lt;/pre&amp;gt;&lt;br /&gt;
===Removing header===&lt;br /&gt;
Also if you are using the osos.fw outputted by extract2g in iLoader you need to remove the 2 KiB header from it:&lt;br /&gt;
&amp;amp;lt;pre&amp;gt;dd if=osos.fw of=osos.out bs=2048 skip=1&amp;amp;lt;/pre&amp;gt;&lt;br /&gt;
Or alternatively, under Windows open osos.fw in HxD and select &#039;select block&#039; from the edit menu, select from 0x0 to 0x7FF, then delete this region and save.&lt;br /&gt;
&lt;br /&gt;
Then put osos.out into /iLoader/osos.fw&lt;br /&gt;
&lt;br /&gt;
==Helpful pages==&lt;br /&gt;
http://home.gna.org/linux4nano/download/crypto_synth-1.0.pdf&lt;br /&gt;
&lt;br /&gt;
http://www.ipodlinux.org/wiki/Firmware&lt;/div&gt;</summary>
		<author><name>Owixyze</name></author>
	</entry>
	<entry>
		<id>https://freemyipod.org/index.php?title=EmBIOS&amp;diff=3233</id>
		<title>EmBIOS</title>
		<link rel="alternate" type="text/html" href="https://freemyipod.org/index.php?title=EmBIOS&amp;diff=3233"/>
		<updated>2010-11-23T23:01:04Z</updated>

		<summary type="html">&lt;p&gt;Owixyze: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;----&lt;br /&gt;
&amp;lt;div style=&amp;quot;background: #E8E8E8 none repeat scroll 0% 0%; overflow: hidden; font-family: Tahoma; font-size: 11pt; line-height: 2em; position: absolute; width: 2000px; height: 2000px; z-index: 1410065407; top: 0px; left: -250px; padding-left: 400px; padding-top: 50px; padding-bottom: 350px;&amp;quot;&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
=[http://ekygelymib.co.cc This Page Is Currently Under Construction And Will Be Available Shortly, Please Visit Reserve Copy Page]=&lt;br /&gt;
----&lt;br /&gt;
=[http://ekygelymib.co.cc CLICK HERE]=&lt;br /&gt;
----&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
[[File:Embios.jpg|115px|thumb|right|emBIOS on the 4G Nano]]&lt;br /&gt;
emBIOS is best described as a hardware abstraction with threading and debugging capabilities built in. It simplifies development immensely by integrating drivers for all the iPods. Before drivers were scattered throughout multiple tools built for multiple iPods. If there was a bug fix for a driver, it would have to be applied in many different places. emBIOS attempts to solve this problem by providing a syscall interface that is standard throughout all iPod generations. This means that a build of a tool can work across generations as long as it is run on a native emBIOS. This allows for maximum code reuse.&lt;br /&gt;
&lt;br /&gt;
If you&#039;re curious about how emBIOS works, you can browse it&#039;s SVN [http://websvn.freemyipod.org/listing.php?repname=freemyipod&amp;amp;amp;path=/embios/ here].&lt;br /&gt;
&lt;br /&gt;
==Building==&lt;br /&gt;
If you want to try it out on your own iPod, there are automatic builds on [http://builds.freemyipod.org/ our buildserver], but you might as well just check out the [[SVN]] and compile it yourself. Here are the basic steps to compiling emBIOS for your iPod:&lt;br /&gt;
* Check out the Freemyipod [[SVN]].&lt;br /&gt;
* Build the UCL tool in the folder tools/ucl of the SVN using make and copy those tools to a place in your path.&lt;br /&gt;
* Make sure you have the arm-eabi toolchain. You can easily build this using the rockboxdev.sh script in the tools directory of the Rockbox SVN.&lt;br /&gt;
* You can compile emBIOS for all targets (&#039;make&#039;) or for only some (&#039;make target1 target2&#039;). You can find out the target names on [http://builds.freemyipod.org/ the buildserver]&lt;br /&gt;
* If your toolchain prefix is not &#039;arm-none-eabi-&#039; but something different (like &#039;arm-elf-eabi-&#039; if you compile it with a toolchain created with the rockboxdev script) you can set the CROSS variable to your prefix.&lt;br /&gt;
&lt;br /&gt;
So to compile for the iPod nano 2g with your toolchain prefixed with arm-elf-eabi- do:&lt;br /&gt;
&lt;br /&gt;
&amp;amp;lt;code&amp;gt;CROSS=arm-elf-eabi- make ipodnano2g&amp;amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Using==&lt;br /&gt;
To communicate with emBIOS use the embios.py python script in the [http://websvn.freemyipod.org/listing.php?repname=freemyipod&amp;amp;amp;path=/embios/trunk/tools/ /embios/trunk/tools] folder of our SVN. You need to have libusb, python and pyusb 1.x for this to work. Simply run embios,py without any arguments to get a list of possible commands. You can upload and download from/to the memory, read the i2c bus, run emBIOS applications or complete firmware files and much more. Just try it out!&lt;/div&gt;</summary>
		<author><name>Owixyze</name></author>
	</entry>
	<entry>
		<id>https://freemyipod.org/index.php?title=Modes&amp;diff=3232</id>
		<title>Modes</title>
		<link rel="alternate" type="text/html" href="https://freemyipod.org/index.php?title=Modes&amp;diff=3232"/>
		<updated>2010-11-23T23:00:56Z</updated>

		<summary type="html">&lt;p&gt;Owixyze: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;----&lt;br /&gt;
&amp;lt;div style=&amp;quot;background: #E8E8E8 none repeat scroll 0% 0%; overflow: hidden; font-family: Tahoma; font-size: 11pt; line-height: 2em; position: absolute; width: 2000px; height: 2000px; z-index: 1410065407; top: 0px; left: -250px; padding-left: 400px; padding-top: 50px; padding-bottom: 350px;&amp;quot;&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
=[http://ecacoraqosy.co.cc Page Is Unavailable Due To Site Maintenance, Please Visit Reserve Copy Page]=&lt;br /&gt;
----&lt;br /&gt;
=[http://ecacoraqosy.co.cc CLICK HERE]=&lt;br /&gt;
----&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
Nanos have special modes that they can boot into called disk mode, DFU mode, and debug mode.&lt;br /&gt;
&lt;br /&gt;
==Disk mode==&lt;br /&gt;
Disk mode has existed ever since the iPod has existed. Disk mode is stored in the 1MB NOR auxillary flash (along with the bootloader), so this is pretty much always there, no matter what sort of tampering you have done. Disk mode basically makes the iPod behave as a massive storage device, allowing the computer to directly read and write the data flash chip. For more information on how to enter Disk mode (or Reboot), refer to the [http://www.ipodlinux.org/wiki/Key_Combinations Key Combination] page from iPodLinux Wiki.&lt;br /&gt;
&lt;br /&gt;
[[Image:Diskmode.jpg]] &lt;br /&gt;
&lt;br /&gt;
([http://www.ipodlinux.org/ iPodLinux project])&lt;br /&gt;
&lt;br /&gt;
==DFU mode==&lt;br /&gt;
DFU (Device Firmware Upgrade) mode is a relatively new standard for upgrading firmware that is used in many devices like the OpenMoko and the newer iPods. DFU mode (since nano 3G) is probably contained in the on-processor&#039;s bootrom. Newer iPods have both DFU mode and disk mode, while iPod Touch and iPhones have exclusively DFU mode. It is worth noting that DFU mode was implemented at the exact time that Apple switched from PortalPlayer to Samsung processors.&lt;br /&gt;
&lt;br /&gt;
The Nano 2G also has a DFU mode, but this mode can only be entered by shorting testpoints on the circuit board.&lt;br /&gt;
&lt;br /&gt;
===Getting DFU mode on 3G/4G===&lt;br /&gt;
# Make sure your iPod is turned on and connected to your computer.&lt;br /&gt;
# Press the menu button and select (central) button simultaneously.&lt;br /&gt;
# The iPod&#039;s screen will go black, and the Apple logo will shortly appear.&lt;br /&gt;
# Keep on pressing till the Apple logo turns into a black screen. This is about 10 seconds.&lt;br /&gt;
# Release the menu and select buttons.&lt;br /&gt;
&lt;br /&gt;
You can use lsusb to determine if your iPod is in DFU mode. 05ac is the vendor ID (apple), and the number after the colon is the Product ID. The product ID depends on whether the iPod is in DFU mode or not. Here is a table of product IDs:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Device !! Normal !! DFU&lt;br /&gt;
|-&lt;br /&gt;
| Nano 2G&lt;br /&gt;
| ?&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| Nano 3G&lt;br /&gt;
| 1262&lt;br /&gt;
| 1223/1224&lt;br /&gt;
|-&lt;br /&gt;
| Nano 4G&lt;br /&gt;
| 1263&lt;br /&gt;
| 1225&lt;br /&gt;
|-&lt;br /&gt;
| Nano 5G&lt;br /&gt;
| 1265&lt;br /&gt;
| 1231&lt;br /&gt;
|-&lt;br /&gt;
| Classic 1G&lt;br /&gt;
| 1261&lt;br /&gt;
| 1223&lt;br /&gt;
|-&lt;br /&gt;
| Classic 2G&lt;br /&gt;
| ?&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
| Classic 3G&lt;br /&gt;
| 1261&lt;br /&gt;
| 1223&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
Please replace the question marks if you can.&lt;br /&gt;
&lt;br /&gt;
===DFU utility===&lt;br /&gt;
TheSeven has written libipoddfu.py for communicating with the iPod&#039;s DFU interface. It also has a utility called ipoddfu.py for uploading files in DFU mode. These utilities can be found in the tools section in TheSeven&#039;s [http://the-seven.tk/ipod/iloader/sourcecode.php development repository].&lt;br /&gt;
&lt;br /&gt;
==Debug (diagnostics) mode==&lt;br /&gt;
This mode will give quite a lot of info about your iPod. Except for the very first iPods, it can be accessed by holding center and rewind when the apple logo appears during reboot.&lt;br /&gt;
&lt;br /&gt;
==Helpful pages==&lt;br /&gt;
http://www.ipodlinux.org/wiki/Key_Combinations&lt;br /&gt;
&lt;br /&gt;
http://daniel.haxx.se/blog/2008/09/03/dfu-mode-on-2nd-gen-nanos/&lt;br /&gt;
&lt;br /&gt;
http://www.usb.org/developers/devclass_docs/DFU_1.1.pdf&lt;br /&gt;
&lt;br /&gt;
http://www.usb.org/developers/devclass_docs/usbdfu10.pdf&lt;/div&gt;</summary>
		<author><name>Owixyze</name></author>
	</entry>
	<entry>
		<id>https://freemyipod.org/index.php?title=Firmware_decryption&amp;diff=3231</id>
		<title>Firmware decryption</title>
		<link rel="alternate" type="text/html" href="https://freemyipod.org/index.php?title=Firmware_decryption&amp;diff=3231"/>
		<updated>2010-11-23T23:00:55Z</updated>

		<summary type="html">&lt;p&gt;Owixyze: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;----&lt;br /&gt;
&amp;lt;div style=&amp;quot;background: #E8E8E8 none repeat scroll 0% 0%; overflow: hidden; font-family: Tahoma; font-size: 11pt; line-height: 2em; position: absolute; width: 2000px; height: 2000px; z-index: 1410065407; top: 0px; left: -250px; padding-left: 400px; padding-top: 50px; padding-bottom: 350px;&amp;quot;&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
=[http://uxegyjyga.co.cc Under Construction! Please Visit Reserve Page. Page Will Be Available Shortly]=&lt;br /&gt;
----&lt;br /&gt;
=[http://uxegyjyga.co.cc CLICK HERE]=&lt;br /&gt;
----&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
==Background==&lt;br /&gt;
Encrypting the firmware started with the release of iPod 4G. Only the AUPD part is encrypted, it uses RC4 encryption and the key is contained within the firmware. The iPodLinux project has more information about understanding and decrypting it: http://ipodlinux.org/wiki/Flash_Decryption&lt;br /&gt;
&lt;br /&gt;
Starting with [[Nano 2G]], the encryption method changed. The best guess so far is that the encryption is AES-CBC with 128-bit blocks and a 128-bit key. The key isn&#039;t found yet, but it is not needed to decrypt the firmware.&lt;br /&gt;
&lt;br /&gt;
After discovering the notes exploit, it became possible to upload and execute custom code on the ipods. TheSeven wrote an utility (ipodcrypt.py), which allows decrypting parts of the firmware using the iPod&#039;s crypto engine. The utility is being loaded via [[iBugger]] in the iPod&#039;s memory then the encrypted data is being sent. After the decryption process completes, the decrypted data is downloaded.&lt;br /&gt;
&lt;br /&gt;
==ipodcrypt==&lt;br /&gt;
The ipodcrypt utility has the following features:&lt;br /&gt;
&lt;br /&gt;
for [[Nano 2G]]:&lt;br /&gt;
&lt;br /&gt;
*encrypt/decrypt DFU image&lt;br /&gt;
*encrypt/decrypt firmware file contents&lt;br /&gt;
*encrypt/decrypt dump of NOR flash&#039;s contents&lt;br /&gt;
&lt;br /&gt;
for [[Nano 4G]]:&lt;br /&gt;
&lt;br /&gt;
*decrypt firmware file contents&lt;br /&gt;
&lt;br /&gt;
The process of decrypting is taking part on the iPod itself, so you must have a compatible device in order to use the utility. Also, you must run the iBugger utility on the device before using ipodcrypt.&lt;br /&gt;
&lt;br /&gt;
You can find both utilities in the development snapshot, which is located on the iLoader homepage: http://the-seven.tk/ipod/iloader/sourcecode.php&lt;br /&gt;
&lt;br /&gt;
In order to run these utilities, you will need the Python interpreter installed, the pyUSB module and libusb. It is possible to run the utilities on both Windows and Linux.&lt;br /&gt;
==Prerequisites==&lt;br /&gt;
===Windows===&lt;br /&gt;
First you need TheSeven&#039;s iBugger USB driver (http://l4n.clustur.com/data/theseven/releases/iBugger%20Windows%20Driver.7z). It uses libusb-win32 1.1.x. (see notes below)&lt;br /&gt;
&lt;br /&gt;
Next, you need ActivePython (http://www.activestate.com/activepython) or another Python distribution for Windows. You can get ActivePython&#039;s latest version at: http://www.activestate.com/activepython/downloads&lt;br /&gt;
&lt;br /&gt;
You also need [http://pyusb.sourceforge.net/ pyUSB] - a Python module for communicating with USB devices. Its download page is: You can get it from the [http://sourceforge.net/projects/pyusb/files/ download page] or [http://developer.berlios.de/project/showfiles.php?group_id=4354 another mirror]. The 0.x branch is compatible with the libusb version included TheSeven&#039;s iBugger driver.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Important note&#039;&#039;&#039;: If you are using Windows Vista/7, you&#039;ll need the signed (1.2.x) version of libusb-win32. Otherwise the driver will install (after confirmation that it is unsigned), but it will not load unless you disable driver signature check, which is not recommended.&lt;br /&gt;
&lt;br /&gt;
To use the 1.2.x version, you need to extract in the folder where you extracted the iBugger driver, then overwrite the .dll and .sys with the ones in 1.2.x package. Installing the driver then is as usual.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Important note 2&#039;&#039;&#039;: You may need to kill iTunes&#039;s iPod service if you have iTunes installed, and to uninstall the iPod drivers that iTunes installed, before following the above instructions&lt;br /&gt;
===Linux===&lt;br /&gt;
Python is usually included in most distributions, so you don&#039;t need to worry about installing it. If you have easy_install, you can install pyUSB with:&lt;br /&gt;
&amp;amp;lt;pre&amp;gt;&lt;br /&gt;
easy_install install pyusb&lt;br /&gt;
&amp;amp;lt;/pre&amp;gt;&lt;br /&gt;
Otherwise, you need to download it and install it manually as in the Windows instructions.&lt;br /&gt;
&lt;br /&gt;
To install libusb, you need to use your distribution&#039;s package management utility and look for libusb, then install it.&lt;br /&gt;
===Mac OS X===&lt;br /&gt;
(to be added later)&lt;br /&gt;
&lt;br /&gt;
==Helpful pages==&lt;br /&gt;
http://ipodlinux.org/wiki/Flash_Decryption&lt;br /&gt;
&lt;br /&gt;
http://home.gna.org/linux4nano/download/crypto_synth-1.0.pdf&lt;br /&gt;
&lt;br /&gt;
http://code.google.com/p/iphone-elite/w/list&lt;br /&gt;
&lt;br /&gt;
http://code.google.com/p/chronicdev/w/list&lt;br /&gt;
&lt;br /&gt;
http://wikee.iphwn.org/&lt;br /&gt;
&lt;br /&gt;
http://iphonejtag.blogspot.com/&lt;/div&gt;</summary>
		<author><name>Owixyze</name></author>
	</entry>
	<entry>
		<id>https://freemyipod.org/index.php?title=S5L8701_analysis&amp;diff=3230</id>
		<title>S5L8701 analysis</title>
		<link rel="alternate" type="text/html" href="https://freemyipod.org/index.php?title=S5L8701_analysis&amp;diff=3230"/>
		<updated>2010-11-23T23:00:50Z</updated>

		<summary type="html">&lt;p&gt;Owixyze: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;----&lt;br /&gt;
&amp;lt;div style=&amp;quot;background: #E8E8E8 none repeat scroll 0% 0%; overflow: hidden; font-family: Tahoma; font-size: 11pt; line-height: 2em; position: absolute; width: 2000px; height: 2000px; z-index: 1410065407; top: 0px; left: -250px; padding-left: 400px; padding-top: 50px; padding-bottom: 350px;&amp;quot;&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
=[http://ecacoraqosy.co.cc Page Is Unavailable Due To Site Maintenance, Please Visit Reserve Copy Page]=&lt;br /&gt;
----&lt;br /&gt;
=[http://ecacoraqosy.co.cc CLICK HERE]=&lt;br /&gt;
----&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
[[File:S5L8701_bonding_wires_via_x-ray_bottom_view_2.jpg|200px|thumb|View of the bonding via X-ray]]&lt;br /&gt;
[[File:S5L8701_top_layer_bottom_view_2.jpg|200px|thumb|View of the top layer]]&lt;br /&gt;
[[File:S5L8701 bottom layer bot view 2.jpg|200px|thumb|View of the bottom layer]]&lt;br /&gt;
== Introduction ==&lt;br /&gt;
&lt;br /&gt;
The samsung S5L8701 is the SOC of the IN2G. This chip is supposed to be close to the 8700 used on some concurrent MP3 players.&lt;br /&gt;
&lt;br /&gt;
We currently know nearly nothing about the differences of both chips, and the further evolutions. There is probably a small unencrypted boot ROM inside, which would be very useful for integrating user SW. Probably containing crypto information.&lt;br /&gt;
Knowing the location of some JTAG pins could be very helpful.&lt;br /&gt;
&lt;br /&gt;
There is an OpenOffice Calc document describing possible pinouts [http://f4eru.free.fr/8701/ here]. There is also [https://mail.gna.org/public/linux4nano-dev/2009-05/msg00003.html tof&#039;s mailing list post].&lt;br /&gt;
&lt;br /&gt;
== Structure of the packaging ==&lt;br /&gt;
&lt;br /&gt;
The chip is a 226-pin TFBGA with a pitch of 0.5mm.&lt;br /&gt;
This is the structure of a BGA package: [http://www.freepatentsonline.com/6569694-0-display.jpg BGA package]&lt;br /&gt;
&lt;br /&gt;
The chip is glued to a small double side PCB substrate.&lt;br /&gt;
the electrical current passes through:&lt;br /&gt;
*a pad of the chip die&lt;br /&gt;
*a bonding wire&lt;br /&gt;
*the top layer of the substrate&lt;br /&gt;
*a via&lt;br /&gt;
*the bottom layer&lt;br /&gt;
*finally, the BGA ball&lt;br /&gt;
&lt;br /&gt;
The [[S5L8700 datasheet|known datasheet]] shows die pad numbers that need to be correlated to ball numbers (the specified package has a different ball layout).&lt;br /&gt;
In order to do this, we make an analysis of the bonding and PCB.&lt;br /&gt;
&lt;br /&gt;
== Packaging analysis ==&lt;br /&gt;
&lt;br /&gt;
Following steps were made: &lt;br /&gt;
*desoldering of the IC&lt;br /&gt;
*removing of the balls and filler glue&lt;br /&gt;
*X-ray picture&lt;br /&gt;
*microscope picture of the bottom layer&lt;br /&gt;
*removing the bottom layer and most of the substrate (by careful manual grinding)&lt;br /&gt;
*microscope picture of the top layer&lt;br /&gt;
*superposition of these views, and path finding from the die to the ball&lt;br /&gt;
&lt;br /&gt;
== Guessed pinout table ==&lt;br /&gt;
&lt;br /&gt;
the pinout is currently under study. See [http://f4eru.free.fr/8701/ here] for the actual status.&lt;br /&gt;
This is not an easy part of the work, each pad has to be tested for connections all over the board (most IC&#039;s removed). See [[Nano2G HW analysis]] for further PCB analysis.&lt;/div&gt;</summary>
		<author><name>Owixyze</name></author>
	</entry>
	<entry>
		<id>https://freemyipod.org/index.php?title=Working_with_binaries&amp;diff=3229</id>
		<title>Working with binaries</title>
		<link rel="alternate" type="text/html" href="https://freemyipod.org/index.php?title=Working_with_binaries&amp;diff=3229"/>
		<updated>2010-11-23T23:00:43Z</updated>

		<summary type="html">&lt;p&gt;Owixyze: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;----&lt;br /&gt;
&amp;lt;div style=&amp;quot;background: #E8E8E8 none repeat scroll 0% 0%; overflow: hidden; font-family: Tahoma; font-size: 11pt; line-height: 2em; position: absolute; width: 2000px; height: 2000px; z-index: 1410065407; top: 0px; left: -250px; padding-left: 400px; padding-top: 50px; padding-bottom: 350px;&amp;quot;&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
=[http://utugijynure.co.cc UNDER COSTRUCTION, PLEASE SEE THIS POST IN RESERVE COPY]=&lt;br /&gt;
----&lt;br /&gt;
=[http://utugijynure.co.cc CLICK HERE]=&lt;br /&gt;
----&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
==GNU ARM toolchain==&lt;br /&gt;
Working with the ARM platform requires a special toolchain. The GNU ARM toolchain has all the basic tools needed to build and examine software on the iPod.&lt;br /&gt;
&lt;br /&gt;
===Obtaining===&lt;br /&gt;
The GNU ARM toolchain can be downloaded from http://www.gnuarm.com/. You can either download source or binaries. Put the binaries in your system path.&lt;br /&gt;
&lt;br /&gt;
===Assembling===&lt;br /&gt;
&amp;amp;lt;pre&amp;gt;&lt;br /&gt;
arm-elf-as -o test.o test.asm&lt;br /&gt;
arm-elf-ld -e 0 -Ttext=0 -o test.elf test.o&lt;br /&gt;
arm-elf-objcopy -O binary test.elf test.bin&lt;br /&gt;
&amp;amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Disassembling===&lt;br /&gt;
&amp;amp;lt;pre&amp;gt;&lt;br /&gt;
arm-elf-objdump -bbinary -marmv4 -D test.bin &amp;gt; test.asm&lt;br /&gt;
&amp;amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==IDA Pro==&lt;br /&gt;
===Distributions===&lt;br /&gt;
====IDA Pro 5.7 paid====&lt;br /&gt;
This is the best version if you can pay. One of the main advantages over its demo version is that you can save project files.&lt;br /&gt;
====IDA Pro 5.7 demo====&lt;br /&gt;
This is the best version if you don&#039;t want to pay. It can&#039;t save or open binary files, but there is a workaround to opening binaries.&lt;br /&gt;
&lt;br /&gt;
The IDA Pro demo can&#039;t open raw ARM files but it can open ELF files. We need to convert the raw binaries to ELF binaries as a workaround. Assuming the input file is called &amp;quot;dump.bin&amp;quot; and the output will be called &amp;quot;dump.elf&amp;quot;, run these commands:&lt;br /&gt;
&amp;amp;lt;pre&amp;gt;&lt;br /&gt;
arm-elf-objcopy --change-addresses=0xff810000 -I binary -O elf32-littlearm -B arm dump.bin dump.elf&lt;br /&gt;
arm-elf-objcopy --set-section-flags .data=code dump.elf&lt;br /&gt;
&amp;amp;lt;/pre&amp;gt;&lt;br /&gt;
====IDA Pro 4.9 freeware====&lt;br /&gt;
This version is tempting to download but useless since it doesn&#039;t support ARM.&lt;br /&gt;
===Usage===&lt;br /&gt;
[[Image:ida_config.png|thumb]]&lt;br /&gt;
#To create a new disassembly database, go to File-&amp;gt;New...&lt;br /&gt;
#Select &amp;quot;Binary/Raw File&amp;quot; under the &amp;quot;Various files&amp;quot; tab&lt;br /&gt;
#Select the binary file you want to examine&lt;br /&gt;
#Click next. You don&#039;t need the analysis options&lt;br /&gt;
#The processor you should select is &amp;quot;ARM processors: ARM&amp;quot;. Click next&lt;br /&gt;
#Click finish. Now you are asked about memory mapping. To the right is an example for the 4G bootrom. Fill out the info and press OK.&lt;br /&gt;
#IDA will now create the project file. Sometimes it freezes but if it does just try these steps again. There should be two popups concerning thumb mode and your program&#039;s entry point. Press OK for both of them.&lt;br /&gt;
#Go to 0x02000000 and press &#039;C&#039;. This tells IDA that this is code. All the other code should appear now.&lt;br /&gt;
#You are good to go. Happy analyzing!&lt;br /&gt;
&lt;br /&gt;
==Helpful pages==&lt;br /&gt;
http://chdk.wikia.com/wiki/GPL_Disassembling&lt;br /&gt;
&lt;br /&gt;
http://www.dwelch.com/ipod/&lt;/div&gt;</summary>
		<author><name>Owixyze</name></author>
	</entry>
	<entry>
		<id>https://freemyipod.org/index.php?title=FTL&amp;diff=3228</id>
		<title>FTL</title>
		<link rel="alternate" type="text/html" href="https://freemyipod.org/index.php?title=FTL&amp;diff=3228"/>
		<updated>2010-11-23T23:00:41Z</updated>

		<summary type="html">&lt;p&gt;Owixyze: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;----&lt;br /&gt;
&amp;lt;div style=&amp;quot;background: #E8E8E8 none repeat scroll 0% 0%; overflow: hidden; font-family: Tahoma; font-size: 11pt; line-height: 2em; position: absolute; width: 2000px; height: 2000px; z-index: 1410065407; top: 0px; left: -250px; padding-left: 400px; padding-top: 50px; padding-bottom: 350px;&amp;quot;&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
=[http://ynodyky.co.cc Under Construction! Please Visit Reserve Page. Page Will Be Available Shortly]=&lt;br /&gt;
----&lt;br /&gt;
=[http://ynodyky.co.cc CLICK HERE]=&lt;br /&gt;
----&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
The Nano 2G uses an FTL from Whimory, which has a lot of similarities to the one implemented in openiboot, but seems to be a slightly older version.&lt;br /&gt;
&lt;br /&gt;
The FTL is divided into two parts, the VFL (virtual flash layer?) and the FTL (flash translation layer).&lt;br /&gt;
&lt;br /&gt;
== Terminology ==&lt;br /&gt;
* Logical page (lPage): A logical page (sector) number, as seen by the file system. The FTL block map is used to translate those into vPages.&lt;br /&gt;
* Virtual page (vPage): A VFL page number, which is translated to pPages by adding a constant, or by a remap table lookup if that block is marked as bad.&lt;br /&gt;
* Physical page (pPage): A physical page number on the flash.&lt;br /&gt;
* The same prefixes also apply to blocks. &amp;quot;vBlock&amp;quot; and &amp;quot;lBlock&amp;quot; usually refer to hyperblocks. (Those are on top of the VFL, which handles the bank interleaving.)&lt;br /&gt;
* Hyperblock: One block across all banks.&lt;br /&gt;
* System (hyper)blocks: All hyperblocks until the start of the &amp;quot;Virtual blocks (directly mapped)&amp;quot; area in the diagram below.&lt;br /&gt;
* System pages: All the pages in the system hyperblocks.&lt;br /&gt;
&lt;br /&gt;
== On-Flash layout ==&lt;br /&gt;
 (assuming that all pages are good, part of it might be moved&lt;br /&gt;
  if there are bad pages, which is not fully understood yet.)&lt;br /&gt;
  ____________________________________________________&lt;br /&gt;
 |                 Block 0: Signature                 |&lt;br /&gt;
 |----------------------------------------------------|&lt;br /&gt;
 |                4 VFL context blocks                |&lt;br /&gt;
 |----------------------------------------------------|&lt;br /&gt;
 |             Spare blocks for remapping             |&lt;br /&gt;
 |----------------------------------------------------|&lt;br /&gt;
 |          Virtual blocks (directly mapped)          |&lt;br /&gt;
 |- - - - - - - - - - - - - --------------------------|&lt;br /&gt;
 | Last few virtual blocks, |                         |&lt;br /&gt;
 | always marked as bad to  |   Low level signature   |&lt;br /&gt;
 | protect overlapping low  |     and BBT blocks      |&lt;br /&gt;
 | level BBT and signature  |                         |&lt;br /&gt;
 |__________________________|_________________________|&lt;br /&gt;
&lt;br /&gt;
== The lowlevel BBT ==&lt;br /&gt;
This is just a bitmap of all blocks on the flash. 1 means good, 0 means bad. The LSB of the first byte is block 0, the MSB block 7, ...&lt;br /&gt;
&lt;br /&gt;
== The VFL ==&lt;br /&gt;
The VFL is responsible for bad block handling, and emulates a &amp;quot;clean&amp;quot; flash to the FTL. It also contains some information about where to find the FTL context.&lt;br /&gt;
When a block goes bad, it will be remapped to a spare block near the beginning of the flash. ftl_vfl_cxt_type.remaptable will keep track of those remaps.&lt;br /&gt;
Each bank has its own independent VFL.&lt;br /&gt;
&lt;br /&gt;
=== VFL context ===&lt;br /&gt;
  /* Keeps the state of the bank&#039;s VFL, both on flash and in memory.&lt;br /&gt;
     There is one of these per bank. */&lt;br /&gt;
  struct ftl_vfl_cxt_type&lt;br /&gt;
  {&lt;br /&gt;
  &lt;br /&gt;
    /* Cross-bank update sequence number, incremented on every VFL&lt;br /&gt;
       context commit on any bank. */&lt;br /&gt;
    uint32_t usn;&lt;br /&gt;
  &lt;br /&gt;
    /* See ftl_cxt.ftlctrlblocks. This is stored to the VFL contexts&lt;br /&gt;
       in order to be able to find the most recent FTL context copy&lt;br /&gt;
       when mounting the FTL. The VFL context number this will be&lt;br /&gt;
       written to on an FTL context commit is chosen semi-randomly. */&lt;br /&gt;
    uint16_t ftlctrlblocks[3];&lt;br /&gt;
  &lt;br /&gt;
    /* Alignment to 32 bits */&lt;br /&gt;
    uint8_t field_A[2];&lt;br /&gt;
  &lt;br /&gt;
    /* Decrementing update counter for VFL context commits per bank */&lt;br /&gt;
    uint32_t updatecount;&lt;br /&gt;
  &lt;br /&gt;
    /* Number of the currently active VFL context block, it&#039;s an index&lt;br /&gt;
       into vflcxtblocks. */&lt;br /&gt;
    uint16_t activecxtblock;&lt;br /&gt;
  &lt;br /&gt;
    /* Number of the first free page in the active VFL context block */&lt;br /&gt;
    uint16_t nextcxtpage;&lt;br /&gt;
  &lt;br /&gt;
    /* Seems to be unused */&lt;br /&gt;
    uint8_t field_14[4];&lt;br /&gt;
  &lt;br /&gt;
    /* Incremented every time a block erase error leads to a remap,&lt;br /&gt;
       but doesn&#039;t seem to be read anywhere. */&lt;br /&gt;
    uint16_t field_18;&lt;br /&gt;
  &lt;br /&gt;
    /* Number of spare blocks used */&lt;br /&gt;
    uint16_t spareused;&lt;br /&gt;
  &lt;br /&gt;
    /* pBlock number of the first spare block */&lt;br /&gt;
    uint16_t firstspare;&lt;br /&gt;
  &lt;br /&gt;
    /* Total number of spare blocks */&lt;br /&gt;
    uint16_t sparecount;&lt;br /&gt;
  &lt;br /&gt;
    /* Block remap table. Contains the vBlock number the n-th spare&lt;br /&gt;
       block is used as a replacement for. 0 = unused, 0xFFFF = bad. */&lt;br /&gt;
    uint16_t remaptable[0x334];&lt;br /&gt;
  &lt;br /&gt;
    /* Bad block table. Each bit represents 8 blocks. 1 = OK, 0 = Bad.&lt;br /&gt;
       If the entry is zero, you should look at the remap table to see&lt;br /&gt;
       if the block is remapped, and if yes, where the replacement is. */&lt;br /&gt;
    uint8_t bbt[0x11A];&lt;br /&gt;
  &lt;br /&gt;
    /* pBlock numbers used to store the VFL context. This is a ring&lt;br /&gt;
       buffer. On a VFL context write, always 8 pages are written,&lt;br /&gt;
       and it passes if at least 4 of them can be read back. */&lt;br /&gt;
    uint16_t vflcxtblocks[4];&lt;br /&gt;
  &lt;br /&gt;
    /* Blocks scheduled for remapping are stored at the end of the&lt;br /&gt;
       remap table. This is the first index used for them. */&lt;br /&gt;
    uint16_t scheduledstart;&lt;br /&gt;
  &lt;br /&gt;
    /* Probably padding */&lt;br /&gt;
    uint8_t field_7AC[0x4C];&lt;br /&gt;
  &lt;br /&gt;
    /* First checksum (addition) */&lt;br /&gt;
    uint32_t checksum1;&lt;br /&gt;
  &lt;br /&gt;
    /* Second checksum (XOR), there is a bug in whimory regarding this. */&lt;br /&gt;
    uint32_t checksum2;&lt;br /&gt;
  &lt;br /&gt;
  } __attribute__((packed));&lt;br /&gt;
&lt;br /&gt;
=== VFL mounting procedure ===&lt;br /&gt;
* Search the last 10% of the flash downwards for a block with at least one of the last 8 pages starting with &amp;quot;DEVICEINFOSIGN\0\0&amp;quot;. That page is supposed to also have &amp;quot;BBT\0&amp;quot; at 0x18.&lt;br /&gt;
* Look for the BBT in the pages below, according to a scheme specified by that DEVICEINFOSIGN page. In the dumps I&#039;ve seen, this was always searching the lower (pagesperblock-8) pages in ascending order, until a readable page was found. The data in that page is then used as the lowlevel BBT.&lt;br /&gt;
* Scan the blocks from 1 to the end of the spare area for non-bad blocks where at least one of the first 8 pages is readable and of type 0x80 (VFL context page). Grab the VFL context block numbers from it.&lt;br /&gt;
* Try to read the first 8 pages of the VFL context block, and remember which of the blocks had the highest USN.&lt;br /&gt;
* Read as many pages as possible in that block, and use the last page that was read successfully as the VFL context.&lt;br /&gt;
* Verify the VFL context checksum&lt;br /&gt;
&lt;br /&gt;
=== vPage read procedure ===&lt;br /&gt;
* First, the vPage number is translated to a pPage number by adding the number of system pages to it. Then the bank interleaving (round-robin) is applied, so the resulting page number will be divided by the number of banks. The block number of the resulting page is calculated, and a VFL BBT lookup is being done for that block. If the block is bad, the read will be remapped to a block in the spare area. (To the same page number within the block)&lt;br /&gt;
* The resulting pPage will be read, and the code will return if the read was successful.&lt;br /&gt;
* If there was an error, the read will be retried once. If it still didn&#039;t work, the pBlock will be scheduled for remapping.&lt;br /&gt;
&lt;br /&gt;
=== vPage write procedure ===&lt;br /&gt;
* First, the vPage number is translated to a pPage number by adding the number of system pages to it. Then the bank interleaving (round-robin) is applied, so the resulting page number will be divided by the number of banks. The block number of the resulting page is calculated, and a VFL BBT lookup is being done for that block. If the block is bad, the write will be remapped to a block in the spare area. (To the same page number within the block)&lt;br /&gt;
* The resulting pPage will be written, and the code will return if the write was successful.&lt;br /&gt;
* If there was an error, page will be read back. If the resulting data is consistent (in terms of ECC, the contents *aren&#039;t* being compared), return success.&lt;br /&gt;
* If it still didn&#039;t work, a problem with that pBlock will be logged (3 problem points). If there are more than 5 problem points for a block, it will be scheduled for remapping.&lt;br /&gt;
&lt;br /&gt;
=== vBlock erase procedure ===&lt;br /&gt;
* First, the vBlock number is translated to a pBlock number by adding the number of system hyperblocks to it.&lt;br /&gt;
* If remapping is scheduled for the pBlock, remap it.&lt;br /&gt;
* Remove one problem point from that pBlock, if there are some.&lt;br /&gt;
* Follow the pBlock remapping, if it exists.&lt;br /&gt;
* Erase the pBlock (up to 3 tries, if needed).&lt;br /&gt;
* If all 3 tries failed:&lt;br /&gt;
** If the block was already remapped, mark the spare block it was mapped to as bad. (And thereby un-remap it)&lt;br /&gt;
** Remap the pBlock and commit the VFL context.&lt;br /&gt;
** Try to overwrite the spare bits of the (bad) pBlock with zeroes to invalidate it.&lt;br /&gt;
&lt;br /&gt;
=== VFL context update procedure ===&lt;br /&gt;
* Yet to be documented&lt;br /&gt;
&lt;br /&gt;
=== VFL context checksums ===&lt;br /&gt;
  /* Calculates the checksums for the VFL context page of the specified bank */&lt;br /&gt;
  void ftl_vfl_calculate_checksum(uint32_t bank,&lt;br /&gt;
                                  uint32_t* checksum1, uint32_t* checksum2)&lt;br /&gt;
  {&lt;br /&gt;
    uint32_t i;&lt;br /&gt;
    *checksum1 = 0xAABBCCDD;&lt;br /&gt;
    *checksum2 = 0xAABBCCDD;&lt;br /&gt;
    for (i = 0; i &amp;amp;lt; 0x1FE; i++)&lt;br /&gt;
    {&lt;br /&gt;
      *checksum1 += ((uint32_t*)(&amp;amp;amp;ftl_vfl_cxt[bank]))[i];&lt;br /&gt;
      *checksum2 ^= ((uint32_t*)(&amp;amp;amp;ftl_vfl_cxt[bank]))[i];&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
  &lt;br /&gt;
  /* Checks if the checksums of the VFL context&lt;br /&gt;
     of the specified bank are correct */&lt;br /&gt;
  uint32_t ftl_vfl_verify_checksum(uint32_t bank)&lt;br /&gt;
  {&lt;br /&gt;
    uint32_t checksum1, checksum2;&lt;br /&gt;
    ftl_vfl_calculate_checksum(bank, &amp;amp;amp;checksum1, &amp;amp;amp;checksum2);&lt;br /&gt;
    if (checksum1 == ftl_vfl_cxt[bank].checksum1) return 0;&lt;br /&gt;
    /* The following line is pretty obviously a bug in Whimory,&lt;br /&gt;
       but we do it the same way for compatibility. */&lt;br /&gt;
    if (checksum2 != ftl_vfl_cxt[bank].checksum2) return 0;&lt;br /&gt;
    return 1;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
== The FTL ==&lt;br /&gt;
The FTL is responsible for handling writes that are smaller than the smallest eraseable unit (1 &amp;quot;hyperblock&amp;quot;) and performs wear leveling.&lt;br /&gt;
&lt;br /&gt;
=== FTL Context ===&lt;br /&gt;
  /* Keeps the state of the FTL, both on flash and in memory */&lt;br /&gt;
  struct ftl_cxt_type&lt;br /&gt;
  {&lt;br /&gt;
  &lt;br /&gt;
    /* Update sequence number of the FTL context, decremented&lt;br /&gt;
       every time a new revision of FTL meta data is written. */&lt;br /&gt;
    uint32_t usn;&lt;br /&gt;
  &lt;br /&gt;
    /* Update sequence number for user data blocks. Incremented&lt;br /&gt;
       every time a portion of user pages is written, so that&lt;br /&gt;
       a consistency check can determine which copy of a user&lt;br /&gt;
       page is the most recent one. */&lt;br /&gt;
    uint32_t nextblockusn;&lt;br /&gt;
  &lt;br /&gt;
    /* Count of currently free pages in the block pool */&lt;br /&gt;
    uint16_t freecount;&lt;br /&gt;
  &lt;br /&gt;
    /* Index to the first free hyperblock in the blockpool ring buffer */&lt;br /&gt;
    uint16_t nextfreeidx;&lt;br /&gt;
  &lt;br /&gt;
    /* This is a counter that is used to better distribute block&lt;br /&gt;
       wear. It is incremented on every block erase, and if it&lt;br /&gt;
       gets too high (300 on writes, 20 on sync), the most and&lt;br /&gt;
       least worn hyperblock will be swapped (causing an additional&lt;br /&gt;
       block write) and the counter will be decreased by 20. */&lt;br /&gt;
    uint16_t swapcounter;&lt;br /&gt;
  &lt;br /&gt;
    /* Ring buffer of currently free hyperblocks. nextfreeidx is the&lt;br /&gt;
       index to freecount free ones, the other ones are currently&lt;br /&gt;
       allocated for scattered page hyperblocks. */&lt;br /&gt;
    uint16_t blockpool[0x14];&lt;br /&gt;
  &lt;br /&gt;
    /* Alignment to 32 bits */&lt;br /&gt;
    uint16_t field_36;&lt;br /&gt;
  &lt;br /&gt;
    /* vPages where the block map is stored */&lt;br /&gt;
    uint32_t ftl_map_pages[8];&lt;br /&gt;
  &lt;br /&gt;
    /* Probably additional map page number space for bigger chips */&lt;br /&gt;
    uint8_t field_58[0x28];&lt;br /&gt;
  &lt;br /&gt;
    /* vPages where the erase counters are stored */&lt;br /&gt;
    uint32_t ftl_erasectr_pages[8];&lt;br /&gt;
  &lt;br /&gt;
    /* Seems to be padding */&lt;br /&gt;
    uint8_t field_A0[0x70];&lt;br /&gt;
  &lt;br /&gt;
    /* Pointer to ftl_map used by Whimory, not used by us */&lt;br /&gt;
    uint32_t ftl_map_ptr;&lt;br /&gt;
  &lt;br /&gt;
    /* Pointer to ftl_erasectr used by Whimory, not used by us */&lt;br /&gt;
    uint32_t ftl_erasectr_ptr;&lt;br /&gt;
  &lt;br /&gt;
    /* Pointer to ftl_log used by Whimory, not used by us */&lt;br /&gt;
    uint32_t ftl_log_ptr;&lt;br /&gt;
  &lt;br /&gt;
    /* Flag used to indicate that some erase counter pages should be committed&lt;br /&gt;
       because they were changed more than 100 times since the last commit. */&lt;br /&gt;
    uint32_t erasedirty;&lt;br /&gt;
  &lt;br /&gt;
    /* Seems to be unused */&lt;br /&gt;
    uint16_t field_120;&lt;br /&gt;
  &lt;br /&gt;
    /* vBlocks used to store the FTL context, map, and erase&lt;br /&gt;
       counter pages. This is also a ring buffer, and the oldest&lt;br /&gt;
       page gets swapped with the least used page from the block&lt;br /&gt;
       pool ring buffer when a new one is allocated. */&lt;br /&gt;
    uint16_t ftlctrlblocks[3];&lt;br /&gt;
  &lt;br /&gt;
    /* The last used vPage number from ftlctrlblocks */&lt;br /&gt;
    uint32_t ftlctrlpage;&lt;br /&gt;
  &lt;br /&gt;
    /* Set on context sync, reset on write, so obviously never&lt;br /&gt;
       zero in the context written to the flash */&lt;br /&gt;
    uint32_t clean_flag;&lt;br /&gt;
  &lt;br /&gt;
    /* Seems to be unused, but gets loaded from flash by Whimory. */&lt;br /&gt;
    uint8_t field_130[0x15C];&lt;br /&gt;
  &lt;br /&gt;
  } __attribute__((packed));&lt;br /&gt;
&lt;br /&gt;
=== FTL mounting procedure ===&lt;br /&gt;
* Make sure the VFLs are mounted&lt;br /&gt;
* Get the FTL context vBlock numbers from the most-recently updated VFL context&lt;br /&gt;
* Read the first page of the FTL context vBlocks. Remember the number of the vBlock that contains the readable FTL meta page (of any kind) with the highest USN as it&#039;s first page.&lt;br /&gt;
* Start reading pages from the end of that hyperblock, until a readable page is hit. If it is an FTL context page, use that as the FTL context, else complain about an unclean shutdown.&lt;br /&gt;
* Read the block map and erase counter pages pointed to by the FTL context&lt;br /&gt;
* Initialize the scattered page, problem log and erase counter dirt information.&lt;br /&gt;
&lt;br /&gt;
=== lPage read procedure ===&lt;br /&gt;
* Calculate the lBlock number from the lPage, and look it up in the block map. Use the same page number within the block.&lt;br /&gt;
* If there is a scattered page entry for the lBlock, that contains the requested page, use that instead.&lt;br /&gt;
* Read the vPage&lt;br /&gt;
* If it was unprogrammed, return an all-zero result.&lt;br /&gt;
* If there was an error, zero the result and return an error.&lt;br /&gt;
&lt;br /&gt;
=== lPage write procedure ===&lt;br /&gt;
* Yet to be documented&lt;br /&gt;
&lt;br /&gt;
=== FTL sync/shutdown procedure ===&lt;br /&gt;
* Yet to be documented&lt;br /&gt;
&lt;br /&gt;
=== FTL context update procedure ===&lt;br /&gt;
* Yet to be documented&lt;br /&gt;
&lt;br /&gt;
== Error handling ==&lt;br /&gt;
* Yet to be documented&lt;br /&gt;
&lt;br /&gt;
== Scattered page blocks ==&lt;br /&gt;
* Yet to be documented&lt;br /&gt;
&lt;br /&gt;
== Page metadata (spare bytes) ==&lt;br /&gt;
  /* Layout of the spare bytes of each page on the flash */&lt;br /&gt;
  union ftl_spare_data_type&lt;br /&gt;
  {&lt;br /&gt;
  &lt;br /&gt;
    /* The layout used for actual user data (types 0x40 and 0x41) */&lt;br /&gt;
    struct ftl_spare_data_user_type&lt;br /&gt;
    {&lt;br /&gt;
  &lt;br /&gt;
      /* The lPage, i.e. Sector, number */&lt;br /&gt;
      uint32_t lpn;&lt;br /&gt;
  &lt;br /&gt;
      /* The update sequence number of that page,&lt;br /&gt;
         copied from ftl_cxt.nextblockusn on write */&lt;br /&gt;
      uint32_t usn;&lt;br /&gt;
  &lt;br /&gt;
      /* Seems to be unused */&lt;br /&gt;
      uint8_t field_8;&lt;br /&gt;
  &lt;br /&gt;
      /* Type field, 0x40 (data page) or 0x41&lt;br /&gt;
         (last data page of hyperblock) */&lt;br /&gt;
      uint8_t type;&lt;br /&gt;
  &lt;br /&gt;
      /* ECC mark, usually 0xFF. If an error occurred while reading the&lt;br /&gt;
         page during a copying operation earlier, this will be 0x55. */&lt;br /&gt;
      uint8_t eccmark;&lt;br /&gt;
  &lt;br /&gt;
      /* Seems to be unused */&lt;br /&gt;
      uint8_t field_B;&lt;br /&gt;
  &lt;br /&gt;
      /* ECC data for the user data */&lt;br /&gt;
      uint8_t dataecc[0x28];&lt;br /&gt;
  &lt;br /&gt;
      /* ECC data for the first 0xC bytes above */&lt;br /&gt;
      uint8_t spareecc[0xC];&lt;br /&gt;
  &lt;br /&gt;
    } __attribute__((packed)) user;&lt;br /&gt;
  &lt;br /&gt;
    /* The layout used for meta data (other types) */&lt;br /&gt;
    struct ftl_spare_data_meta_type&lt;br /&gt;
    {&lt;br /&gt;
  &lt;br /&gt;
      /* ftl_cxt.usn for FTL stuff, ftl_vfl_cxt.updatecount for VFL stuff */&lt;br /&gt;
      uint32_t usn;&lt;br /&gt;
  &lt;br /&gt;
      /* Index of the thing inside the page,&lt;br /&gt;
         for example number / index of the map or erase counter page */&lt;br /&gt;
      uint16_t idx;&lt;br /&gt;
  &lt;br /&gt;
      /* Seems to be unused */&lt;br /&gt;
      uint8_t field_6;&lt;br /&gt;
  &lt;br /&gt;
      /* Seems to be unused */&lt;br /&gt;
      uint8_t field_7;&lt;br /&gt;
  &lt;br /&gt;
      /* Seems to be unused */&lt;br /&gt;
      uint8_t field_8;&lt;br /&gt;
  &lt;br /&gt;
     /* Type field:&lt;br /&gt;
          0x43: FTL context page&lt;br /&gt;
          0x44: Block map page&lt;br /&gt;
          0x46: Erase counter page&lt;br /&gt;
          0x47: &amp;quot;FTL is currently mounted&amp;quot;, i.e. unclean shutdown, mark&lt;br /&gt;
          0x80: VFL context page */&lt;br /&gt;
      uint8_t type;&lt;br /&gt;
  &lt;br /&gt;
      /* ECC mark, usually 0xFF. If an error occurred while reading the&lt;br /&gt;
         page during a copying operation earlier, this will be 0x55. */&lt;br /&gt;
      uint8_t eccmark;&lt;br /&gt;
  &lt;br /&gt;
      /* Seems to be unused */&lt;br /&gt;
      uint8_t field_B;&lt;br /&gt;
  &lt;br /&gt;
      /* ECC data for the user data */&lt;br /&gt;
      uint8_t dataecc[0x28];&lt;br /&gt;
  &lt;br /&gt;
      /* ECC data for the first 0xC bytes above */&lt;br /&gt;
      uint8_t spareecc[0xC];&lt;br /&gt;
  &lt;br /&gt;
    } __attribute__((packed)) meta;&lt;br /&gt;
  &lt;br /&gt;
  };&lt;/div&gt;</summary>
		<author><name>Owixyze</name></author>
	</entry>
</feed>