<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://www.theiphonewiki.com/w/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=SiggiJG</id>
	<title>The iPhone Wiki - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://www.theiphonewiki.com/w/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=SiggiJG"/>
	<link rel="alternate" type="text/html" href="https://www.theiphonewiki.com/wiki/Special:Contributions/SiggiJG"/>
	<updated>2026-05-16T14:18:28Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.31.14</generator>
	<entry>
		<id>https://www.theiphonewiki.com/w/index.php?title=DFU_Mode&amp;diff=76293</id>
		<title>DFU Mode</title>
		<link rel="alternate" type="text/html" href="https://www.theiphonewiki.com/w/index.php?title=DFU_Mode&amp;diff=76293"/>
		<updated>2019-08-21T06:01:33Z</updated>

		<summary type="html">&lt;p&gt;SiggiJG: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''DFU''' or '''Device Firmware Upgrade''' mode allows all devices to be restored from any state. It is essentially a mode where the BootROM can accept iBSS. DFU is part of the [[Bootrom|SecureROM]] which is burned into the hardware, so it cannot be removed. On A7+ devices, it generates an ApNonce and recognizes APTickets as well, so even in DFU, it can accept an APTicket.&lt;br /&gt;
&lt;br /&gt;
== Entering DFU Mode ==&lt;br /&gt;
=== Apple TV ===&lt;br /&gt;
# Plug the device into your computer using a Micro-USB cable.&lt;br /&gt;
# Force the device to reboot by holding down the &amp;quot;Menu&amp;quot; and &amp;quot;Down&amp;quot; buttons simultaneously for 6-7 seconds.&lt;br /&gt;
# Press &amp;quot;Menu&amp;quot; and &amp;quot;Play&amp;quot; simultaneously right after reboot, until a message pops up in [[iTunes]], saying that it has detected an Apple TV in Recovery Mode.&lt;br /&gt;
&lt;br /&gt;
=== A9 and older devices (iPad other than the ones listed below, iPhone 6s and below, iPhone SE and iPod touch 6 and below) ===&lt;br /&gt;
# Connect the device to a computer using a USB cable.&lt;br /&gt;
# Hold down both the Home button and Lock button.&lt;br /&gt;
# After 8 seconds, release the Lock button while continuing to hold down the Home button.&lt;br /&gt;
#* If the Apple logo appears, the Lock button was held down for too long.&lt;br /&gt;
# Nothing will be displayed on the screen when the device is in DFU mode. If open, iTunes will alert you that a device was detected in recovery mode.&lt;br /&gt;
#* If your device shows a screen telling you to connect the device to iTunes, retry these steps.&lt;br /&gt;
&lt;br /&gt;
=== A10 devices (iPhone 7 and iPhone 7 Plus, iPad 2018, iPod touch 7) ===&lt;br /&gt;
# Connect the device to a computer using a USB cable.&lt;br /&gt;
# Hold down both the Side button and Volume Down button.&lt;br /&gt;
# After 8 seconds, release the Side button while continuing to hold down the Volume Down button.&lt;br /&gt;
#* If the Apple logo appears, the Side button was held down for too long.&lt;br /&gt;
# Nothing will be displayed on the screen when the device is in DFU mode. If open, iTunes will alert you that a device was detected in recovery mode.&lt;br /&gt;
#* If your device shows a screen telling you to connect the device to iTunes, retry these steps.&lt;br /&gt;
&lt;br /&gt;
=== A11 and newer devices (iPhone 8 and above, iPad Pro 2018, iPad Air 2019, iPad Mini 2019) ===&lt;br /&gt;
# Connect the device to a computer using a USB cable.&lt;br /&gt;
# Quick-press the Volume Up button&lt;br /&gt;
# Quick-press the Volume Down button&lt;br /&gt;
# Hold down the Side button until the screen goes black, then hold down both the Side button and Volume Down button.&lt;br /&gt;
# After 5 seconds, release the Side button while continuing to hold down the Volume Down button.&lt;br /&gt;
#* If the Apple logo appears, the Side button was held down for too long.&lt;br /&gt;
# Nothing will be displayed on the screen when the device is in DFU mode. If open, iTunes will alert you that a device was detected in recovery mode.&lt;br /&gt;
#* If your device shows a screen telling you to connect the device to iTunes, retry these steps.&lt;br /&gt;
&lt;br /&gt;
== Exiting DFU Mode ==&lt;br /&gt;
To exit DFU Mode, simply force restart your device.&lt;br /&gt;
&lt;br /&gt;
* For Apple TV, hold down the &amp;quot;Menu&amp;quot; and &amp;quot;Down&amp;quot; buttons on your remote until the Apple TV reboots.&lt;br /&gt;
* For iPad, iPhone 6s and below, iPhone SE and iPod touch, hold the Home button and the Lock button until the device reboots.&lt;br /&gt;
* For iPhone 7 and iPhone 7 Plus, hold down the Side button and Volume Down button until the device reboots.&lt;br /&gt;
* For iPhone 8, iPhone 8 Plus, and iPhone X, quick-press the Volume Up button, then quick-press the Volume Down button, then hold down the Side button until the device reboots.&lt;br /&gt;
&lt;br /&gt;
==Enter True Hardware DFU Mode Automatically==&lt;br /&gt;
The EnterDFU function in the [[MobileDevice Library]] does not enter the true DFU Mode in the hardware. It's possible to enter the true DFU Mode without doing it manually, but it cannot be exited unless a restore is performed, as it creates a [[DFU Loop]]. This doesn't work with [[S5L8900]] devices.&lt;br /&gt;
&lt;br /&gt;
===Steps===&lt;br /&gt;
# Make a copy of a fresh IPSW file.&lt;br /&gt;
# Open the IPSW as a zip folder and browse to /firmware/all_flash/all_flash.xxxxx.production/&lt;br /&gt;
# Extract LLB.*****.RELEASE.img3/im4p and open it in a hex editor.&lt;br /&gt;
# Change some random bit or bits, it doesn't matter which or what you write.&lt;br /&gt;
# Add the edited file back to the zip, rename zip to ipsw and restore it to your device using iTunes.&lt;br /&gt;
# The restore will error out and your device will be in DFU Mode.&lt;br /&gt;
&lt;br /&gt;
===Alternative Method===&lt;br /&gt;
If the previous method does not work for you, try this one.&lt;br /&gt;
# Do steps 1 and 2 from above.&lt;br /&gt;
# Delete LLB.*****.RELEASE.img3.&lt;br /&gt;
# Copy applelogo.********.img3 to temporary directory.&lt;br /&gt;
# Rename the copy of applelogo.********.img3/im4p to LLB.*****.RELEASE.img3/im4p. (If you forget the name of the LLB file, you can find it again in the file named manifest.)&lt;br /&gt;
# Copy the renamed applelogo file back to the all_flash.xxxxx.production directory.&lt;br /&gt;
# Rename the zip.&lt;br /&gt;
# Restore the file using iTunes. (If every thing goes well, you should receive an error 31 from iTunes.)&lt;br /&gt;
&lt;br /&gt;
==DFU Mode Output to the computer==&lt;br /&gt;
&amp;lt;pre&amp;gt;iProduct: &amp;quot;Apple Mobile Device (DFU Mode)&amp;quot;&amp;lt;/pre&amp;gt; &amp;lt;pre&amp;gt;iSerialNumber: &amp;quot;CPID:XXXX CPRV:15 CPFM:03 SCEP:03 BDID:00 ECID:XXXXXXXXXXXXXXXX SRTG:[iBoot-XXX.X.X]&amp;quot;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Revisions==&lt;br /&gt;
===[[S5L8900]] (0x1222)===&lt;br /&gt;
This is the device ID in the [[N45AP|iPod touch]], the [[M68AP|iPhone]], and the [[N82AP|iPhone 3G]]. For more information about the protocol, see [[DFU 0x1222]].&lt;br /&gt;
&lt;br /&gt;
===[[S5L8720 Bootrom|S5L8720]], [[S5L8920]], and [[WTF|WTF mode post-2.0]] (0x1227)===&lt;br /&gt;
This is the device ID in the [[N72AP|iPod touch (2nd generation)]], the [[N88AP|iPhone 3GS]], the [[N90AP|iPhone 4]], subsequent 32 bit devices, all 64 bit devices, and [[WTF|WTF mode]]. For more information on the protocol, see [[DFU 0x1227]].&lt;br /&gt;
&lt;br /&gt;
[[Category:Bootrom]]&lt;/div&gt;</summary>
		<author><name>SiggiJG</name></author>
		
	</entry>
	<entry>
		<id>https://www.theiphonewiki.com/w/index.php?title=Siri_Protocol&amp;diff=65217</id>
		<title>Siri Protocol</title>
		<link rel="alternate" type="text/html" href="https://www.theiphonewiki.com/w/index.php?title=Siri_Protocol&amp;diff=65217"/>
		<updated>2017-12-07T02:02:31Z</updated>

		<summary type="html">&lt;p&gt;SiggiJG: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Applidium [http://applidium.com/en/news/cracking_siri/ documented] the '''Siri Protocol''' on 14 November 2011 by setting up a DNS to see the traffic. The traffic is simple HTTPS (with some modifications, mentioned later). The server presents a certificate for guzzoni.apple.com (IP 17.174.4.4) and the client checks for the correct domain certificate. But it does not check the issuer, so you can create a self-signed certificate to see the traffic.&lt;br /&gt;
&lt;br /&gt;
=== Protocol ===&lt;br /&gt;
The request looks similar to a standard HTTP request:&lt;br /&gt;
 ACE /ace HTTP/1.0&lt;br /&gt;
 Host: guzzoni.apple.com&lt;br /&gt;
 User-Agent: Assistant(iPhone/iPhone4,1; iPhone OS/5.0/9A334) Ace/1.0&lt;br /&gt;
 Content-Length: 2000000000&lt;br /&gt;
 X-Ace-Host: 4620a9aa-88f4-4ac1-a49d-e2012910921&lt;br /&gt;
The X-Ace-Host is tied to the 4S you are using. The content length of almost 2GB is fixed, so no actual length. The User-Agent is modified depending on your OS version and build. The data itself is binary.&lt;br /&gt;
&lt;br /&gt;
=== Binary Data ===&lt;br /&gt;
* Starts with 0x00AACCEE on iOS 5, or 0xAACCEE02 on iOS 6+&lt;br /&gt;
* Rest is compressed with [http://zlib.net zlib]&lt;br /&gt;
&lt;br /&gt;
Then the data is made out of chunks:&lt;br /&gt;
* Starting with 0x020000xxxx are &amp;quot;plist&amp;quot; packets with size xxxx of the binary plist data.&lt;br /&gt;
* Starting with 0x030000xxxx are &amp;quot;ping&amp;quot; packets, sent by the iPhone to Siri server to keep connection alive. xx is the ping sequence number.&lt;br /&gt;
* Starting with 0x040000xxxx are &amp;quot;pong&amp;quot; packets, sent from Siri server to the iPhone to keep connection alive. xx is the pong sequence number.&lt;br /&gt;
* Starting with 0x070000xxxx are &amp;quot;speech&amp;quot; packets, sent by iOS 8.4 (maybe a bit earlier and probably newer versions too, speech is sent as a plist on iOS 5 and 6, and maybe 7? (not tested on 7)).  xxxx is the length of the packet.&lt;br /&gt;
&lt;br /&gt;
To decipher the binary [[PList File Format|plist]] you can use the plutil command-line tool on Mac OS X.&lt;br /&gt;
&lt;br /&gt;
=== plist data ===&lt;br /&gt;
The audio data is compressed with [http://www.speex.org/ Speex] audio codec (iOS 5 and 6) or with [http://opus-codec.org/ Opus] audio codec. (iOS 8)&lt;br /&gt;
&lt;br /&gt;
(More documentation of plist data is missing here.)&lt;br /&gt;
&lt;br /&gt;
[[Category:Protocols‏]]&lt;/div&gt;</summary>
		<author><name>SiggiJG</name></author>
		
	</entry>
	<entry>
		<id>https://www.theiphonewiki.com/w/index.php?title=Siri_Protocol&amp;diff=65215</id>
		<title>Siri Protocol</title>
		<link rel="alternate" type="text/html" href="https://www.theiphonewiki.com/w/index.php?title=Siri_Protocol&amp;diff=65215"/>
		<updated>2017-12-06T23:39:21Z</updated>

		<summary type="html">&lt;p&gt;SiggiJG: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Applidium [http://applidium.com/en/news/cracking_siri/ documented] the '''Siri Protocol''' on 14 November 2011 by setting up a DNS to see the traffic. The traffic is simple HTTPS (with some modifications, mentioned later). The server presents a certificate for guzzoni.apple.com (IP 17.174.4.4) and the client checks for the correct domain certificate. But it does not check the issuer, so you can create a self-signed certificate to see the traffic.&lt;br /&gt;
&lt;br /&gt;
=== Protocol ===&lt;br /&gt;
The request looks similar to a standard HTTP request:&lt;br /&gt;
 ACE /ace HTTP/1.0&lt;br /&gt;
 Host: guzzoni.apple.com&lt;br /&gt;
 User-Agent: Assistant(iPhone/iPhone4,1; iPhone OS/5.0/9A334) Ace/1.0&lt;br /&gt;
 Content-Length: 2000000000&lt;br /&gt;
 X-Ace-Host: 4620a9aa-88f4-4ac1-a49d-e2012910921&lt;br /&gt;
The X-Ace-Host is tied to the 4S you are using. The content length of almost 2GB is fixed, so no actual length. The User-Agent is modified depending on your OS version and build. The data itself is binary.&lt;br /&gt;
&lt;br /&gt;
=== Binary Data ===&lt;br /&gt;
* Starts with 0x00AACCEE&lt;br /&gt;
* Rest is compressed with [http://zlib.net zlib]&lt;br /&gt;
&lt;br /&gt;
Then the data is made out of chunks:&lt;br /&gt;
* Starting with 0x020000xxxx are &amp;quot;plist&amp;quot; packets with size xxxx of the binary plist data.&lt;br /&gt;
* Starting with 0x030000xxxx are &amp;quot;ping&amp;quot; packets, sent by the iPhone to Siri server to keep connection alive. xx is the ping sequence number.&lt;br /&gt;
* Starting with 0x040000xxxx are &amp;quot;pong&amp;quot; packets, sent from Siri server to the iPhone to keep connection alive. xx is the pong sequence number.&lt;br /&gt;
* Starting with 0x070000xxxx are &amp;quot;speech&amp;quot; packets, sent by iOS 8.4 (maybe a bit earlier and probably newer versions too, speech is sent as a plist on iOS 5 and 6, and maybe 7? (not tested on 7)).  xxxx is the length of the packet.&lt;br /&gt;
&lt;br /&gt;
To decipher the binary [[PList File Format|plist]] you can use the plutil command-line tool on Mac OS X.&lt;br /&gt;
&lt;br /&gt;
=== plist data ===&lt;br /&gt;
The audio data is compressed with [http://www.speex.org/ Speex] audio codec (iOS 5 and 6) or with [http://opus-codec.org/ Opus] audio codec. (iOS 8)&lt;br /&gt;
&lt;br /&gt;
(More documentation of plist data is missing here.)&lt;br /&gt;
&lt;br /&gt;
[[Category:Protocols‏]]&lt;/div&gt;</summary>
		<author><name>SiggiJG</name></author>
		
	</entry>
</feed>