http://droid-developers.org/api.php?action=feedcontributions&user=Skrilax+CZ&feedformat=atomMILEDROPEDIA - User contributions [en]2024-03-29T05:57:33ZUser contributionsMediaWiki 1.23.2http://droid-developers.org/wiki/Main_PageMain Page2013-02-26T13:56:58Z<p>Skrilax CZ: /* About this site */</p>
<hr />
<div>__NOTOC__<br />
<br />
==== About this site ====<br />
<br />
{| cellspacing=5 cellpadding=15 border=0 valign="top" width=100%<br />
<br />
| width=50% style="vertical-align:top"|<br />
<br />
This wiki documents our research on the Motorola Droid-family phones (including Milestone) internals.<br />
These phones are:<br />
<br />
<br />
# '''Motorola Milestone''' (our primary target)<br />
# Motorola Milestone 2<br />
# Motorola Defy (MB525)<br />
# Motorola Defy+ (MB526)<br />
<br />
| width=50% style="vertical-align:top"|<br />
<br />
{|<br />
|style="vertical-align:top"|<br />
[[Image:community.png]]<br />
|style="vertical-align:top"|<br />
'''<span style="font-variant:small-caps; font-size:150%">Community</span>'''<br /><small>Join our community! Discuss with us. </small><small><hr /> [[Credits | Our team]] | [irc://irc.freenode.net/#milestone-modding Our IRC channel] | [http://188.40.36.100/logbot/ <span title="Thanks to Skrilax_CZ.">IRC log #1</span>] | [http://milestone.bekaakut.de/ <span title="There is now a new channel log. Thanks to rebel1">IRC log #2</span>] | [http://mmlogs.doshaska.net/ <span title="Backup log. Started 23.09.2011.">IRC log #3</span>] | [http://gitorious.org/+droid-developers Our projects on Gitorious] | [http://hg.droid-developers.org/ Our projects on Bitbucket]</small><br />
|}<br />
<br />
{|<br />
|style="vertical-align:top"|<br />
[[Image:hardware.png]]<br />
|style="vertical-align:top"|<br />
'''<span style="font-variant:small-caps; font-size:150%">Hardware</span>'''<br /><small>All about devices internals - PCB, chips </small><small><hr />[[device_information|Overview]] | [[Motorola Milestone | Milestone]] | [[Motorola Droid | Droid]] | [[Motorola Droid X | Droid X]] | [[Motorola Droid 2 | Droid 2]] | [[Motorola Milestone 2 | Milestone 2]] | [[Motorola Sholes Tablet XT701 | Sholes Tablet XT701]] | [[Motorola Milestone XT720 | Milestone XT720]] | [[Motorola Titanium XT800 | Titanium XT800]] | [[Motorola Ruth ME511 | Ruth ME511]] | [[Motorola Charm | Charm]] | [[Motorola Atrix | Atrix]] | [[Motorola DEXT | DEXT]] | [[Motorola Defy | Defy]]</small><br />
|}<br />
<br />
{|<br />
|style="vertical-align:top"|<br />
[[Image:reverse.gif]]<br />
|style="vertical-align:top"|<br />
'''<span style="font-variant:small-caps; font-size:150%">For developers</span>'''<br /><small>Useful information for experts and beginners </small><small><hr />[[Toolchain]] | [[CyanogenMod]] | [[Compiling]] | [[Debugging]] | [[QEMU]] </small><br />
|}<br />
<br />
|}<br />
<br />
==== Information for volunteers ====<br />
<br />
If you are a developer and have some code-project for the Droid family of smartphones(e.g. Milestone) - enjoy us on [http://gitorious.org/+droid-developers Gitorious]<br />
<br />
Even if you're not the technical type, you too can help us mod the Milestone by participating in the [[Custom_recovery:pr_attack|PR campaign to force Motorola to unlock it]].<br />
<br />
If you're technical type - see our [[roadmap|Roadmap]] and progress in our [[projects|Projects]].<br />
<br />
See the [[content|content index here]].<br />
<br />
{| cellspacing=5 cellpadding=15 border=0 valign="top" width=100%<br />
<br />
| width=50% style="vertical-align:top"|<br />
<br />
{|<br />
|style="vertical-align:top"|<br />
[[Image:reverse.gif]]<br />
|style="vertical-align:top"|<br />
'''<span style="font-variant:small-caps; font-size:150%">Bootloader Unlock</span>'''<br /><small>Research how-to unlock boot process for the Application Processor </small><small><hr />[[Booting chain]] | [[Security]] | [[Cryptography]] | [http://gitorious.org/+droid-developers/droid/reversed IDA databases of bootloaders] | [[Disassembling]] </small><br />
|-<br />
|style="vertical-align:top"|<br />
|style="vertical-align:top"|<br />
The [[modes|recovery image]] hasn't yet been [http://android-dls.com/wiki/index.php?title=HOWTO:_Unpack,_Edit,_and_Re-Pack_Boot_Images modified] due to our current impossibility of controlling [[Booting chain|the boot process]]. We cannot alter the boot process so far because there seems to be a digital signature on each of its components. It seems the bootloader (mbm in particular (neither lbl nor mbmloader access the CDT). See [[Booting chain|here]] and [https://opensource.motorola.com/sf/discussion/do/listPosts/projects.milestone/discussion.general_comments.topc2012?_pagenum=2 here].) uses the [[CDT|cdt partition table]] to check if the recovery has been signed correctly. If not, the recovery won't start at all and the [[modes|bootloader mode]] shows instead of it.<br />
<br />
* '''[[2ndboot]]'''<br />
* '''[[Vulnerability hunting]]'''<br />
* '''[[open_recovery | Open Recovery]]'''<br />
* '''[[2ndinit]]'''<br />
<br />
|}<br />
<br />
| width=50% style="vertical-align:top"|<br />
<br />
{|<br />
|style="vertical-align:top"|<br />
[[Image:baseband.png]]<br />
|style="vertical-align:top"|<br />
'''<span style="font-variant:small-caps; font-size:150%">Baseband Research</span>'''<br /><small>All our researches of Baseband and RF part of these phones</small><small><hr />[[GSM/CDMA-chain|GSM/UMTS & CDMA Milestone/Droid structure]]</small><br />
|-<br />
|style="vertical-align:top"|<br />
|style="vertical-align:top"|<br />
We have running RTXC OS on [[Wrigley 3G]] modem, which consist from ARM core and [[TMS320C55x+]] DSP core<br />
Our main problem, that Motorola using non-standard RIL, which partially implemented on AP side.<br />
Also, our second problem, that [[TMS320C55x+]] is closed platform, and no datasheets for it available.<br />
It very different from original [[TMS320C55x]] architecture and have other opcodes.<br />
We only have '''asm55p''' utility from TI, which can produce binary from TMS320 assembler.<br />
So, it is very important task - make full reverse of it. [[File:asm55p.idb.bz2]] [[File:dis55.idb.bz2]] [[File:dis55.c.gz]]<br />
<br />
* '''[[Baseband Processor Boot ROM]]'''<br />
* '''[[BP firmware]]'''<br />
* '''[[Texas Instruments Wrigley 3G]]'''<br />
* '''[[GSM/CDMA-chain]]'''<br />
<br />
|}<br />
<br />
|<br />
|}<br />
<br />
== '''[[2ndboot]]''' ==<br />
<br />
A minature bootloader that is called from the original kernel and boots custom one. As of 11/10/2012, '''czechop''' created a patch to keep Wrigley 3G modem working under the child kernel (when called at “sh hijack” time). No issues on Motorola Milestone with the child kernel.<br />
<br />
== '''[[Vulnerability hunting]]''' ==<br />
<br />
As far as we know now this attack is, if not a waste of time, at least a very long shot. The idea is that reverse engineering the boot ROM, mbmloader and/or mbm might allow us to find some exploitable vulnerability in order to gain control of the boot process. Since we already have the source code for lbl, it might be useful too. Mike Baker([mbm]) has written a [http://pastebin.ca/raw/1833228|user mode memory dumper] and dumped Droid public ROM. As we found - all roms for omap3430 are identical. Same situation for the omap3630. See here: [[Booting chain|Boot chain]]<br />
<br />
== '''[[open_recovery | Open Recovery]]''' ==<br />
<br />
Uses the payload exploit to start the custom recovery application. Supports rooting the phone from menu, as well as taking backups and flashing unsigned update *.zip files. Also runs ADB.<br />
<br />
== '''[[2ndinit]]''' ==<br />
<br />
This thing basically inject code to /init to "restart itself" allowing you to use custom init binary and init.rc scripts without side effects.</div>Skrilax CZhttp://droid-developers.org/wiki/Main_PageMain Page2013-02-26T13:53:37Z<p>Skrilax CZ: /* Information for volunteers */</p>
<hr />
<div>__NOTOC__<br />
<br />
==== About this site ====<br />
<br />
{| cellspacing=5 cellpadding=15 border=0 valign="top" width=100%<br />
<br />
| width=50% style="vertical-align:top"|<br />
<br />
This wiki documents our research on the Motorola Droid-family phones (including Milestone) internals.<br />
These phones are:<br />
<br />
<br />
# '''Motorola Milestone''' (our primary target)<br />
# Motorola Milestone 2<br />
# Motorola Defy (MB525)<br />
# Motorola Defy+ (MB526)<br />
<br />
| width=50% style="vertical-align:top"|<br />
<br />
{|<br />
|style="vertical-align:top"|<br />
[[Image:community.png]]<br />
|style="vertical-align:top"|<br />
'''<span style="font-variant:small-caps; font-size:150%">Community</span>'''<br /><small>Join our community! Discuss with us. </small><small><hr /> [[Credits | Our team]] | [irc://irc.freenode.net/#milestone-modding Our IRC channel] | [http://www.damogran.de/milestone-modding/ <span title="Starts on Jan 21 2010, 11:33:51 UTC. Refreshes every 15 minutes. Timezone: UTC+1. Thanks to Kasperle.">IRC log #1</span>] | [http://bacon.ojnk.org/milestone-modding.log <span title="Starts on Jan 21 2010, 13:09:10 UTC. Timezone: UTC-6. Thanks to Orgg.">IRC log #2</span>] | [http://milestone.bekaakut.de/ <span title="There is now a new channel log. Thanks to rebel1">IRC log #3</span>] | [http://mmlogs.doshaska.net/ <span title="Backup log. Started 23.09.2011.">IRC log #5</span>] | [http://gitorious.org/+droid-developers Our projects on Gitorious] | [http://hg.droid-developers.org/ Our projects on Bitbucket]</small><br />
|}<br />
<br />
{|<br />
|style="vertical-align:top"|<br />
[[Image:hardware.png]]<br />
|style="vertical-align:top"|<br />
'''<span style="font-variant:small-caps; font-size:150%">Hardware</span>'''<br /><small>All about devices internals - PCB, chips </small><small><hr />[[device_information|Overview]] | [[Motorola Milestone | Milestone]] | [[Motorola Droid | Droid]] | [[Motorola Droid X | Droid X]] | [[Motorola Droid 2 | Droid 2]] | [[Motorola Milestone 2 | Milestone 2]] | [[Motorola Sholes Tablet XT701 | Sholes Tablet XT701]] | [[Motorola Milestone XT720 | Milestone XT720]] | [[Motorola Titanium XT800 | Titanium XT800]] | [[Motorola Ruth ME511 | Ruth ME511]] | [[Motorola Charm | Charm]] | [[Motorola Atrix | Atrix]] | [[Motorola DEXT | DEXT]] | [[Motorola Defy | Defy]]</small><br />
|}<br />
<br />
{|<br />
|style="vertical-align:top"|<br />
[[Image:reverse.gif]]<br />
|style="vertical-align:top"|<br />
'''<span style="font-variant:small-caps; font-size:150%">For developers</span>'''<br /><small>Useful information for experts and beginners </small><small><hr />[[Toolchain]] | [[CyanogenMod]] | [[Compiling]] | [[Debugging]] | [[QEMU]] </small><br />
|}<br />
<br />
|}<br />
<br />
==== Information for volunteers ====<br />
<br />
If you are a developer and have some code-project for the Droid family of smartphones(e.g. Milestone) - enjoy us on [http://gitorious.org/+droid-developers Gitorious]<br />
<br />
Even if you're not the technical type, you too can help us mod the Milestone by participating in the [[Custom_recovery:pr_attack|PR campaign to force Motorola to unlock it]].<br />
<br />
If you're technical type - see our [[roadmap|Roadmap]] and progress in our [[projects|Projects]].<br />
<br />
See the [[content|content index here]].<br />
<br />
{| cellspacing=5 cellpadding=15 border=0 valign="top" width=100%<br />
<br />
| width=50% style="vertical-align:top"|<br />
<br />
{|<br />
|style="vertical-align:top"|<br />
[[Image:reverse.gif]]<br />
|style="vertical-align:top"|<br />
'''<span style="font-variant:small-caps; font-size:150%">Bootloader Unlock</span>'''<br /><small>Research how-to unlock boot process for the Application Processor </small><small><hr />[[Booting chain]] | [[Security]] | [[Cryptography]] | [http://gitorious.org/+droid-developers/droid/reversed IDA databases of bootloaders] | [[Disassembling]] </small><br />
|-<br />
|style="vertical-align:top"|<br />
|style="vertical-align:top"|<br />
The [[modes|recovery image]] hasn't yet been [http://android-dls.com/wiki/index.php?title=HOWTO:_Unpack,_Edit,_and_Re-Pack_Boot_Images modified] due to our current impossibility of controlling [[Booting chain|the boot process]]. We cannot alter the boot process so far because there seems to be a digital signature on each of its components. It seems the bootloader (mbm in particular (neither lbl nor mbmloader access the CDT). See [[Booting chain|here]] and [https://opensource.motorola.com/sf/discussion/do/listPosts/projects.milestone/discussion.general_comments.topc2012?_pagenum=2 here].) uses the [[CDT|cdt partition table]] to check if the recovery has been signed correctly. If not, the recovery won't start at all and the [[modes|bootloader mode]] shows instead of it.<br />
<br />
* '''[[2ndboot]]'''<br />
* '''[[Vulnerability hunting]]'''<br />
* '''[[open_recovery | Open Recovery]]'''<br />
* '''[[2ndinit]]'''<br />
<br />
|}<br />
<br />
| width=50% style="vertical-align:top"|<br />
<br />
{|<br />
|style="vertical-align:top"|<br />
[[Image:baseband.png]]<br />
|style="vertical-align:top"|<br />
'''<span style="font-variant:small-caps; font-size:150%">Baseband Research</span>'''<br /><small>All our researches of Baseband and RF part of these phones</small><small><hr />[[GSM/CDMA-chain|GSM/UMTS & CDMA Milestone/Droid structure]]</small><br />
|-<br />
|style="vertical-align:top"|<br />
|style="vertical-align:top"|<br />
We have running RTXC OS on [[Wrigley 3G]] modem, which consist from ARM core and [[TMS320C55x+]] DSP core<br />
Our main problem, that Motorola using non-standard RIL, which partially implemented on AP side.<br />
Also, our second problem, that [[TMS320C55x+]] is closed platform, and no datasheets for it available.<br />
It very different from original [[TMS320C55x]] architecture and have other opcodes.<br />
We only have '''asm55p''' utility from TI, which can produce binary from TMS320 assembler.<br />
So, it is very important task - make full reverse of it. [[File:asm55p.idb.bz2]] [[File:dis55.idb.bz2]] [[File:dis55.c.gz]]<br />
<br />
* '''[[Baseband Processor Boot ROM]]'''<br />
* '''[[BP firmware]]'''<br />
* '''[[Texas Instruments Wrigley 3G]]'''<br />
* '''[[GSM/CDMA-chain]]'''<br />
<br />
|}<br />
<br />
|<br />
|}<br />
<br />
== '''[[2ndboot]]''' ==<br />
<br />
A minature bootloader that is called from the original kernel and boots custom one. As of 11/10/2012, '''czechop''' created a patch to keep Wrigley 3G modem working under the child kernel (when called at “sh hijack” time). No issues on Motorola Milestone with the child kernel.<br />
<br />
== '''[[Vulnerability hunting]]''' ==<br />
<br />
As far as we know now this attack is, if not a waste of time, at least a very long shot. The idea is that reverse engineering the boot ROM, mbmloader and/or mbm might allow us to find some exploitable vulnerability in order to gain control of the boot process. Since we already have the source code for lbl, it might be useful too. Mike Baker([mbm]) has written a [http://pastebin.ca/raw/1833228|user mode memory dumper] and dumped Droid public ROM. As we found - all roms for omap3430 are identical. Same situation for the omap3630. See here: [[Booting chain|Boot chain]]<br />
<br />
== '''[[open_recovery | Open Recovery]]''' ==<br />
<br />
Uses the payload exploit to start the custom recovery application. Supports rooting the phone from menu, as well as taking backups and flashing unsigned update *.zip files. Also runs ADB.<br />
<br />
== '''[[2ndinit]]''' ==<br />
<br />
This thing basically inject code to /init to "restart itself" allowing you to use custom init binary and init.rc scripts without side effects.</div>Skrilax CZhttp://droid-developers.org/wiki/Main_PageMain Page2013-02-26T13:52:58Z<p>Skrilax CZ: /* Bruteforce */</p>
<hr />
<div>__NOTOC__<br />
<br />
==== About this site ====<br />
<br />
{| cellspacing=5 cellpadding=15 border=0 valign="top" width=100%<br />
<br />
| width=50% style="vertical-align:top"|<br />
<br />
This wiki documents our research on the Motorola Droid-family phones (including Milestone) internals.<br />
These phones are:<br />
<br />
<br />
# '''Motorola Milestone''' (our primary target)<br />
# Motorola Milestone 2<br />
# Motorola Defy (MB525)<br />
# Motorola Defy+ (MB526)<br />
<br />
| width=50% style="vertical-align:top"|<br />
<br />
{|<br />
|style="vertical-align:top"|<br />
[[Image:community.png]]<br />
|style="vertical-align:top"|<br />
'''<span style="font-variant:small-caps; font-size:150%">Community</span>'''<br /><small>Join our community! Discuss with us. </small><small><hr /> [[Credits | Our team]] | [irc://irc.freenode.net/#milestone-modding Our IRC channel] | [http://www.damogran.de/milestone-modding/ <span title="Starts on Jan 21 2010, 11:33:51 UTC. Refreshes every 15 minutes. Timezone: UTC+1. Thanks to Kasperle.">IRC log #1</span>] | [http://bacon.ojnk.org/milestone-modding.log <span title="Starts on Jan 21 2010, 13:09:10 UTC. Timezone: UTC-6. Thanks to Orgg.">IRC log #2</span>] | [http://milestone.bekaakut.de/ <span title="There is now a new channel log. Thanks to rebel1">IRC log #3</span>] | [http://mmlogs.doshaska.net/ <span title="Backup log. Started 23.09.2011.">IRC log #5</span>] | [http://gitorious.org/+droid-developers Our projects on Gitorious] | [http://hg.droid-developers.org/ Our projects on Bitbucket]</small><br />
|}<br />
<br />
{|<br />
|style="vertical-align:top"|<br />
[[Image:hardware.png]]<br />
|style="vertical-align:top"|<br />
'''<span style="font-variant:small-caps; font-size:150%">Hardware</span>'''<br /><small>All about devices internals - PCB, chips </small><small><hr />[[device_information|Overview]] | [[Motorola Milestone | Milestone]] | [[Motorola Droid | Droid]] | [[Motorola Droid X | Droid X]] | [[Motorola Droid 2 | Droid 2]] | [[Motorola Milestone 2 | Milestone 2]] | [[Motorola Sholes Tablet XT701 | Sholes Tablet XT701]] | [[Motorola Milestone XT720 | Milestone XT720]] | [[Motorola Titanium XT800 | Titanium XT800]] | [[Motorola Ruth ME511 | Ruth ME511]] | [[Motorola Charm | Charm]] | [[Motorola Atrix | Atrix]] | [[Motorola DEXT | DEXT]] | [[Motorola Defy | Defy]]</small><br />
|}<br />
<br />
{|<br />
|style="vertical-align:top"|<br />
[[Image:reverse.gif]]<br />
|style="vertical-align:top"|<br />
'''<span style="font-variant:small-caps; font-size:150%">For developers</span>'''<br /><small>Useful information for experts and beginners </small><small><hr />[[Toolchain]] | [[CyanogenMod]] | [[Compiling]] | [[Debugging]] | [[QEMU]] </small><br />
|}<br />
<br />
|}<br />
<br />
==== Information for volunteers ====<br />
<br />
If you are a developer and have some code-project for the Droid family of smartphones(e.g. Milestone) - enjoy us on [http://gitorious.org/+droid-developers Gitorious]<br />
<br />
Even if you're not the technical type, you too can help us mod the Milestone by participating in the [[Custom_recovery:pr_attack|PR campaign to force Motorola to unlock it]].<br />
<br />
If you're technical type - see our [[roadmap|Roadmap]] and progress in our [[projects|Projects]].<br />
<br />
See the [[content|content index here]].<br />
<br />
{| cellspacing=5 cellpadding=15 border=0 valign="top" width=100%<br />
<br />
| width=50% style="vertical-align:top"|<br />
<br />
{|<br />
|style="vertical-align:top"|<br />
[[Image:reverse.gif]]<br />
|style="vertical-align:top"|<br />
'''<span style="font-variant:small-caps; font-size:150%">Bootloader Unlock</span>'''<br /><small>Research how-to unlock boot process for the Application Processor </small><small><hr />[[Booting chain]] | [[Security]] | [[Cryptography]] | [http://gitorious.org/+droid-developers/droid/reversed IDA databases of bootloaders] | [[Disassembling]] </small><br />
|-<br />
|style="vertical-align:top"|<br />
|style="vertical-align:top"|<br />
The [[modes|recovery image]] hasn't yet been [http://android-dls.com/wiki/index.php?title=HOWTO:_Unpack,_Edit,_and_Re-Pack_Boot_Images modified] due to our current impossibility of controlling [[Booting chain|the boot process]]. We cannot alter the boot process so far because there seems to be a digital signature on each of its components. It seems the bootloader (mbm in particular (neither lbl nor mbmloader access the CDT). See [[Booting chain|here]] and [https://opensource.motorola.com/sf/discussion/do/listPosts/projects.milestone/discussion.general_comments.topc2012?_pagenum=2 here].) uses the [[CDT|cdt partition table]] to check if the recovery has been signed correctly. If not, the recovery won't start at all and the [[modes|bootloader mode]] shows instead of it.<br />
<br />
* '''[[2ndboot]]'''<br />
* '''[[Vulnerability hunting]]'''<br />
* '''[[Bruteforce]]'''<br />
* '''[[open_recovery | Open Recovery]]'''<br />
* '''[[2ndinit]]'''<br />
<br />
|}<br />
<br />
| width=50% style="vertical-align:top"|<br />
<br />
{|<br />
|style="vertical-align:top"|<br />
[[Image:baseband.png]]<br />
|style="vertical-align:top"|<br />
'''<span style="font-variant:small-caps; font-size:150%">Baseband Research</span>'''<br /><small>All our researches of Baseband and RF part of these phones</small><small><hr />[[GSM/CDMA-chain|GSM/UMTS & CDMA Milestone/Droid structure]]</small><br />
|-<br />
|style="vertical-align:top"|<br />
|style="vertical-align:top"|<br />
We have running RTXC OS on [[Wrigley 3G]] modem, which consist from ARM core and [[TMS320C55x+]] DSP core<br />
Our main problem, that Motorola using non-standard RIL, which partially implemented on AP side.<br />
Also, our second problem, that [[TMS320C55x+]] is closed platform, and no datasheets for it available.<br />
It very different from original [[TMS320C55x]] architecture and have other opcodes.<br />
We only have '''asm55p''' utility from TI, which can produce binary from TMS320 assembler.<br />
So, it is very important task - make full reverse of it. [[File:asm55p.idb.bz2]] [[File:dis55.idb.bz2]] [[File:dis55.c.gz]]<br />
<br />
* '''[[Baseband Processor Boot ROM]]'''<br />
* '''[[BP firmware]]'''<br />
* '''[[Texas Instruments Wrigley 3G]]'''<br />
* '''[[GSM/CDMA-chain]]'''<br />
<br />
|}<br />
<br />
|<br />
|}<br />
<br />
== '''[[2ndboot]]''' ==<br />
<br />
A minature bootloader that is called from the original kernel and boots custom one. As of 11/10/2012, '''czechop''' created a patch to keep Wrigley 3G modem working under the child kernel (when called at “sh hijack” time). No issues on Motorola Milestone with the child kernel.<br />
<br />
== '''[[Vulnerability hunting]]''' ==<br />
<br />
As far as we know now this attack is, if not a waste of time, at least a very long shot. The idea is that reverse engineering the boot ROM, mbmloader and/or mbm might allow us to find some exploitable vulnerability in order to gain control of the boot process. Since we already have the source code for lbl, it might be useful too. Mike Baker([mbm]) has written a [http://pastebin.ca/raw/1833228|user mode memory dumper] and dumped Droid public ROM. As we found - all roms for omap3430 are identical. Same situation for the omap3630. See here: [[Booting chain|Boot chain]]<br />
<br />
== '''[[open_recovery | Open Recovery]]''' ==<br />
<br />
Uses the payload exploit to start the custom recovery application. Supports rooting the phone from menu, as well as taking backups and flashing unsigned update *.zip files. Also runs ADB.<br />
<br />
== '''[[2ndinit]]''' ==<br />
<br />
This thing basically inject code to /init to "restart itself" allowing you to use custom init binary and init.rc scripts without side effects.</div>Skrilax CZhttp://droid-developers.org/wiki/Main_PageMain Page2013-02-26T13:52:44Z<p>Skrilax CZ: /* 2ndboot */</p>
<hr />
<div>__NOTOC__<br />
<br />
==== About this site ====<br />
<br />
{| cellspacing=5 cellpadding=15 border=0 valign="top" width=100%<br />
<br />
| width=50% style="vertical-align:top"|<br />
<br />
This wiki documents our research on the Motorola Droid-family phones (including Milestone) internals.<br />
These phones are:<br />
<br />
<br />
# '''Motorola Milestone''' (our primary target)<br />
# Motorola Milestone 2<br />
# Motorola Defy (MB525)<br />
# Motorola Defy+ (MB526)<br />
<br />
| width=50% style="vertical-align:top"|<br />
<br />
{|<br />
|style="vertical-align:top"|<br />
[[Image:community.png]]<br />
|style="vertical-align:top"|<br />
'''<span style="font-variant:small-caps; font-size:150%">Community</span>'''<br /><small>Join our community! Discuss with us. </small><small><hr /> [[Credits | Our team]] | [irc://irc.freenode.net/#milestone-modding Our IRC channel] | [http://www.damogran.de/milestone-modding/ <span title="Starts on Jan 21 2010, 11:33:51 UTC. Refreshes every 15 minutes. Timezone: UTC+1. Thanks to Kasperle.">IRC log #1</span>] | [http://bacon.ojnk.org/milestone-modding.log <span title="Starts on Jan 21 2010, 13:09:10 UTC. Timezone: UTC-6. Thanks to Orgg.">IRC log #2</span>] | [http://milestone.bekaakut.de/ <span title="There is now a new channel log. Thanks to rebel1">IRC log #3</span>] | [http://mmlogs.doshaska.net/ <span title="Backup log. Started 23.09.2011.">IRC log #5</span>] | [http://gitorious.org/+droid-developers Our projects on Gitorious] | [http://hg.droid-developers.org/ Our projects on Bitbucket]</small><br />
|}<br />
<br />
{|<br />
|style="vertical-align:top"|<br />
[[Image:hardware.png]]<br />
|style="vertical-align:top"|<br />
'''<span style="font-variant:small-caps; font-size:150%">Hardware</span>'''<br /><small>All about devices internals - PCB, chips </small><small><hr />[[device_information|Overview]] | [[Motorola Milestone | Milestone]] | [[Motorola Droid | Droid]] | [[Motorola Droid X | Droid X]] | [[Motorola Droid 2 | Droid 2]] | [[Motorola Milestone 2 | Milestone 2]] | [[Motorola Sholes Tablet XT701 | Sholes Tablet XT701]] | [[Motorola Milestone XT720 | Milestone XT720]] | [[Motorola Titanium XT800 | Titanium XT800]] | [[Motorola Ruth ME511 | Ruth ME511]] | [[Motorola Charm | Charm]] | [[Motorola Atrix | Atrix]] | [[Motorola DEXT | DEXT]] | [[Motorola Defy | Defy]]</small><br />
|}<br />
<br />
{|<br />
|style="vertical-align:top"|<br />
[[Image:reverse.gif]]<br />
|style="vertical-align:top"|<br />
'''<span style="font-variant:small-caps; font-size:150%">For developers</span>'''<br /><small>Useful information for experts and beginners </small><small><hr />[[Toolchain]] | [[CyanogenMod]] | [[Compiling]] | [[Debugging]] | [[QEMU]] </small><br />
|}<br />
<br />
|}<br />
<br />
==== Information for volunteers ====<br />
<br />
If you are a developer and have some code-project for the Droid family of smartphones(e.g. Milestone) - enjoy us on [http://gitorious.org/+droid-developers Gitorious]<br />
<br />
Even if you're not the technical type, you too can help us mod the Milestone by participating in the [[Custom_recovery:pr_attack|PR campaign to force Motorola to unlock it]].<br />
<br />
If you're technical type - see our [[roadmap|Roadmap]] and progress in our [[projects|Projects]].<br />
<br />
See the [[content|content index here]].<br />
<br />
{| cellspacing=5 cellpadding=15 border=0 valign="top" width=100%<br />
<br />
| width=50% style="vertical-align:top"|<br />
<br />
{|<br />
|style="vertical-align:top"|<br />
[[Image:reverse.gif]]<br />
|style="vertical-align:top"|<br />
'''<span style="font-variant:small-caps; font-size:150%">Bootloader Unlock</span>'''<br /><small>Research how-to unlock boot process for the Application Processor </small><small><hr />[[Booting chain]] | [[Security]] | [[Cryptography]] | [http://gitorious.org/+droid-developers/droid/reversed IDA databases of bootloaders] | [[Disassembling]] </small><br />
|-<br />
|style="vertical-align:top"|<br />
|style="vertical-align:top"|<br />
The [[modes|recovery image]] hasn't yet been [http://android-dls.com/wiki/index.php?title=HOWTO:_Unpack,_Edit,_and_Re-Pack_Boot_Images modified] due to our current impossibility of controlling [[Booting chain|the boot process]]. We cannot alter the boot process so far because there seems to be a digital signature on each of its components. It seems the bootloader (mbm in particular (neither lbl nor mbmloader access the CDT). See [[Booting chain|here]] and [https://opensource.motorola.com/sf/discussion/do/listPosts/projects.milestone/discussion.general_comments.topc2012?_pagenum=2 here].) uses the [[CDT|cdt partition table]] to check if the recovery has been signed correctly. If not, the recovery won't start at all and the [[modes|bootloader mode]] shows instead of it.<br />
<br />
* '''[[2ndboot]]'''<br />
* '''[[Vulnerability hunting]]'''<br />
* '''[[Bruteforce]]'''<br />
* '''[[open_recovery | Open Recovery]]'''<br />
* '''[[2ndinit]]'''<br />
<br />
|}<br />
<br />
| width=50% style="vertical-align:top"|<br />
<br />
{|<br />
|style="vertical-align:top"|<br />
[[Image:baseband.png]]<br />
|style="vertical-align:top"|<br />
'''<span style="font-variant:small-caps; font-size:150%">Baseband Research</span>'''<br /><small>All our researches of Baseband and RF part of these phones</small><small><hr />[[GSM/CDMA-chain|GSM/UMTS & CDMA Milestone/Droid structure]]</small><br />
|-<br />
|style="vertical-align:top"|<br />
|style="vertical-align:top"|<br />
We have running RTXC OS on [[Wrigley 3G]] modem, which consist from ARM core and [[TMS320C55x+]] DSP core<br />
Our main problem, that Motorola using non-standard RIL, which partially implemented on AP side.<br />
Also, our second problem, that [[TMS320C55x+]] is closed platform, and no datasheets for it available.<br />
It very different from original [[TMS320C55x]] architecture and have other opcodes.<br />
We only have '''asm55p''' utility from TI, which can produce binary from TMS320 assembler.<br />
So, it is very important task - make full reverse of it. [[File:asm55p.idb.bz2]] [[File:dis55.idb.bz2]] [[File:dis55.c.gz]]<br />
<br />
* '''[[Baseband Processor Boot ROM]]'''<br />
* '''[[BP firmware]]'''<br />
* '''[[Texas Instruments Wrigley 3G]]'''<br />
* '''[[GSM/CDMA-chain]]'''<br />
<br />
|}<br />
<br />
|<br />
|}<br />
<br />
== '''[[2ndboot]]''' ==<br />
<br />
A minature bootloader that is called from the original kernel and boots custom one. As of 11/10/2012, '''czechop''' created a patch to keep Wrigley 3G modem working under the child kernel (when called at “sh hijack” time). No issues on Motorola Milestone with the child kernel.<br />
<br />
== '''[[Vulnerability hunting]]''' ==<br />
<br />
As far as we know now this attack is, if not a waste of time, at least a very long shot. The idea is that reverse engineering the boot ROM, mbmloader and/or mbm might allow us to find some exploitable vulnerability in order to gain control of the boot process. Since we already have the source code for lbl, it might be useful too. Mike Baker([mbm]) has written a [http://pastebin.ca/raw/1833228|user mode memory dumper] and dumped Droid public ROM. As we found - all roms for omap3430 are identical. Same situation for the omap3630. See here: [[Booting chain|Boot chain]]<br />
<br />
== '''[[Bruteforce]]''' ==<br />
<br />
This is distributed computation of the 1024 bit RSA secret key, which can be used for signing our bootloaders and kernel images. <br />
<br />
== '''[[open_recovery | Open Recovery]]''' ==<br />
<br />
Uses the payload exploit to start the custom recovery application. Supports rooting the phone from menu, as well as taking backups and flashing unsigned update *.zip files. Also runs ADB.<br />
<br />
== '''[[2ndinit]]''' ==<br />
<br />
This thing basically inject code to /init to "restart itself" allowing you to use custom init binary and init.rc scripts without side effects.</div>Skrilax CZhttp://droid-developers.org/wiki/CompilingCompiling2012-10-11T00:10:04Z<p>Skrilax CZ: /* Recompiling Eclair for Milestone */</p>
<hr />
<div>= Compiling kernel modules for Milestone's original kernel =<br />
<br />
== Requirements ==<br />
<br />
* Linux system<br />
* Build essentials<br />
* Java JDK 5.0<br />
* Flex<br />
* Bison<br />
* Gperf<br />
* SDL<br />
* ESD<br />
* WxGTK 2.6<br />
* Zip<br />
* Curl<br />
<br />
For Ubuntu 9.10 32-Bit:<br />
<syntaxhighlight lang="bash"><br />
$ sudo apt-get install git-core gnupg sun-java5-jdk flex bison gperf libsdl-dev libesd0-dev libwxgtk2.6-dev build-essential zip curl libncurses5-dev zlib1g-dev<br />
</syntaxhighlight><br />
For Ubuntu 9.10 64-Bit:<br />
<syntaxhighlight lang="bash"><br />
$ sudo apt-get install git-core gnupg flex bison gperf build-essential zip curl sun-java5-jdk zlib1g-dev gcc-multilib g++-multilib libc6-dev-i386 lib32ncurses5-dev ia32-libs x11proto-core-dev libx11-dev lib32readline5-dev lib32z-dev<br />
</syntaxhighlight><br />
Set the system to use the right version of java by default:<br />
<syntaxhighlight lang="bash"><br />
$ sudo update-java-alternatives -s java-1.5.0-sun<br />
</syntaxhighlight><br />
X11: Ubuntu doesn't have packages for the X11 libraries, but that can be worked around with the following command:<br />
<syntaxhighlight lang="bash"><br />
$ sudo ln -s /usr/lib32/libX11.so.6 /usr/lib32/libX11.so<br />
</syntaxhighlight><br />
<br />
== Setting up the Environment ==<br />
<br />
# Refer to [[tools:kernel_sources|this page]] to find the kernel sources as they are specifically made for the Milestone...<br />
# Download repo (a tool provided by Google to pull down the source code)<br />
<syntaxhighlight lang="bash"><br />
$ mkdir ~/bin<br />
$ export PATH=$PATH:~/bin<br />
$ curl http://android.git.kernel.org/repo >~/bin/repo<br />
$ chmod +x ~/bin/repo<br />
</syntaxhighlight><br />
<br />
== Getting the Source ==<br />
<syntaxhighlight lang="bash"><br />
$ mkdir ~/foo<br />
$ cd ~/foo<br />
$ repo init -u git://android.git.kernel.org/platform/manifest.git<br />
$ repo sync<br />
</syntaxhighlight><br />
<br />
== Compile ==<br />
<br />
Create a kernel environment in your working directory<br />
<syntaxhighlight lang="bash"><br />
$ cd ~/foo<br />
$ mkdir kernel <br />
</syntaxhighlight><br />
<br />
After untarring archive_0115-kernel.tgz into the kernel directory, we're ready to build the kernel and modules. [http://pastebin.org/277027|Here]'s a config file prepared by xvilka in case you need it.<br />
<syntaxhighlight lang="bash"><br />
$ cd ~/foo<br />
$ make -f kernel/kernel.mk ENG_BLD=1 <br />
</syntaxhighlight><br />
Your zImage (the kernel) will be located at '''~/foo/motorola/bsp/prebuilt/target/images/zImage'''<br />
Your modules can be found in '''~/foo/motorola/bsp/prebuilt/target/images/system/lib/modules/'''<br />
<br />
== Compiling mtd-hack.c ==<br />
<br />
# Place mtd-hack.c inside: '''~/foo/kernel/drivers/mtd/'''<br />
# Add this line to the Makefile: '''obj-m += mtd-hack.o'''<br />
# Compile it with the same command as above.<br />
<syntaxhighlight lang="bash"><br />
$ make -f kernel/kernel.mk ENG_BLD=1<br />
</syntaxhighlight><br />
<br />
= Compiling kernel for Milestone =<br />
<br />
Follow the instructions for [http://source.android.com/documentation/building-for-dream|compiling cupcake for HTC Dream] replacing cupcake with eclair and Dream with Milestone.<br />
<br />
= Kernel compilation on Windows(or other OSes that Colinux supports) =<br />
<br />
Kernel compilation on Windows could be a bit tricky. [[http://colinux.org/|Colinux]]((suggested by playya)) is used to ease the life. The smallest tool set is examined and the required storage space is provided for constrained build environment.<br />
<br />
In this guide, the Ubuntu 9.04 1GB file system(download size is 4xMB) will be used.<br />
<br />
Minimum storage requirement:<br />
<br />
^ ^Size ^Description ^<br />
| |1GB|Ubuntu 9.04 FS + basic tool + 74MB ARM tool chain|<br />
| |1.3GB(accounting for wasted size)|763MB build output + 384MB Kernel source + 2.6MB zImage and ko|<br />
|Total|2.3GB| |<br />
<br />
===== Colinux setup =====<br />
<br />
Colinux consists of a user space kernel and a front-end(or layer) that sits on the OS side. It is capable of running a Linux natively on Windows. Due to the small download size required(around 60MB, Colinux+Ubuntu 9.04 FS), it could provide a quick jump into the Linux world on Windows.<br />
<br />
==== Installation ====<br />
<br />
The directory layout on Windows:<br />
<br />
^Path ^Description ^<br />
|[somewhere]\coLinux|Installation folder of coLinux|<br />
|[somewhere]\coLinux\fs|Sub-folder to put our linux|<br />
<br />
Follow these steps or work on your own:<br />
- Visit [[http://colinux.org/|Colinux]] download link.<br />
- Download and install coLinux-0.7.5.exe((the lastest as of the time of writing)).<br />
- Skip the image download.(You may choose one there provided that they have apt-get)<br />
- Download [[http://sourceforge.net/projects/colinux/files/Images%202.6.x%20Ubuntu/Ubuntu%209.04/Ubuntu-9.04-1gb.7z/download|Ubuntu-9.04-1gb.7z]]<br />
- Unzip Ubuntu-9.04-1gb.7z to coLinux\fs.<br />
- Create a 1.3GB(or 1.5GB if u have more spaces) file as coLinux\fs\cobd2.img. See [[http://colinux.wikia.com/wiki/HowtoCreateSwapFile|HowtoCreateSwapFile]]. Create the file with the desired size first, then format it in coLinux later.<br />
- Copy coLinux\example.conf to coLinux\fs\ubu.conf.<br />
- Modify ubu.conf appropriately. Here is the diff: <file properties><br />
--- ../example.conf 2009-09-14 22:26:42.000000000 +0000<br />
+++ ubu.conf 2010-03-03 07:32:13.000000000 +0000<br />
@@ -20 +20 @@<br />
-cobd0="c:\coLinux\root_fs"<br />
+cobd0="fs/Ubuntu-9.04.ext3.1gb.fs"<br />
@@ -41 +41 @@<br />
-#cocon=120x40<br />
+cocon=120x40<br />
@@ -47 +47 @@<br />
-#eth0=slirp<br />
+eth0=slirp,,tcp:22:22<br />
@@ -50 +50 @@<br />
-#eth1=tuntap<br />
+eth1=tuntap<br />
@@ -57,0 +58,4 @@<br />
+cofs0=d:\<br />
+cofs1=r:\<br />
+<br />
+cobd2=fs\cobd2.img<br />
</file> Edit the file to see most meaning of the settings. cofs0=d:\ will expose Windows d:\ drive to the cofs0 that can be mounted inside coLinux. To mount: <code><br />
mkdir /mnt/d<br />
mount -t cofs 0 /mnt/d</code>Remove cofs0=d:\ and cofs1=r:\ if you don't have these drives. Exposing a drive is important to extract downloaded tools from Windows. cobd2=fs\cobd2.img will expose a image file to the cobd2 device that will be used to store the build output.<br />
- Open a command prompt, cd to the directory of coLinux then start it by executing colinux-daemon @fs\ubu.conf. You should see a linux console popped up.<br />
<br />
==== Login ====<br />
<br />
User id: root<br />
Password: root<br />
<br />
Use alt+f1, alt+f2, ......etc to switch to another terminal.<br />
<br />
==== SSH ====<br />
<br />
Alternately, use ssh client like putty to connect to the host machine's port 22 as set by "eth0=slirp,,tcp:22:22". Putty gives better control on the scroll history and coloring.<br />
<br />
==== Accessing the host's file system ====<br />
<br />
To access host's file system, first specify<file properties>cofs0=r:\</file> in the ubu.conf above where r:\ is the drive you want to expose. Next start up coLinux then execute:<code bash>mkdir /mnt/r<br />
mount -t cofs 0 /mnt/r</code><br />
<br />
==== Attach a new file system to store the kernel build output ====<br />
<br />
The kernel build output is about <br />
<br />
- See [[http://colinux.wikia.com/wiki/HowtoCreateSwapFile|HowtoCreateSwapFile]] for how to create a file of size at least 1.3GB at coLinux\fs\cobd2.img. No need to format the image as it may take time.<br />
- Add <file properties>cobd2=fs\cobd2.img</file> to coLinux\fs\ubu.conf if you haven't done so yet.<br />
- Restart coLinux if it's running.<br />
- Login to linux, execute these:<code>mkfs.ext3 /dev/cobd2 # Be careful to type cobd2, not others!!<br />
mkdir /mnt/cobd2 # Create an empty folder for mounting.<br />
mount -t ext3 /dev/cobd2 /mnt/cobd2</code><br />
- Add the mounts to /etc/fstab if u want to save them from a reboot:<file><br />
/dev/cobd2 /mnt/cobd2 ext3 defaults 0 1<br />
</file><br />
<br />
===== Minimum tool set =====<br />
<br />
==== The basic ====<br />
<br />
Install the needed tools:<br />
apt-get install flex bison gperf build-essential zip<br />
<br />
flex, bison and gperf are needed by the make to do some pre-processing on the source files.<br />
<br />
==== Cross-compiler toolchain ====<br />
<br />
There're several options:<br />
- [[http://android.git.kernel.org/?p=platform/prebuilt.git;a=tree;f=linux-x86/toolchain/arm-eabi-4.4.0|Android Open Source Platform prebuilt snapshot]]. Click on the snapshot link to get a tar. It's about 74MB uncompressed.<br />
- Android ndk (as tested 1.6 is arm-eabi-4.2.0 which doesn't support armv7-a architecture)<br />
- [[http://www.codesourcery.com/sgpp/lite/arm/portal/release1039|Sourcery G++ arm eabi tool-chain]]. It is very large because all of its binary are statically linked. So it is not recommended.<br />
<br />
Assume you've chosen 1 since it is the best current option. After downloaded the toolchain to r:\prebuilt-balhbalhbalbhabalh.tar.gz, execute:<code bash><br />
tar xzf /mnt/r/prebuilt-balhbalhbalbhabalh.tar.gz -C ~<br />
</code><br />
A prebuilt folder will be created in user home.<br />
<br />
===== Build the kernel =====<br />
<br />
==== Grab the source ====<br />
<br />
Visit [[tools:kernel_sources]] to see the location of the kernel source. Milestone 01.15.0 has been tested. Extract the source to ~/android.<br />
<br />
==== Prepare the build folder ====<br />
<br />
/root # Home<br />
prebuilt # Untar the ARM tool chain to ~<br />
android -> /mnt/cobd2 # ln -s /mnt/cobd2 android<br />
kernel # Milestone kernel source<br />
b.sh # Shell script to make<br />
<br />
<file bash b.sh><br />
#!/bin/bash<br />
make -f kernel/kernel.mk KERNEL_CROSS_COMPILE=~/prebuilt/bin/arm-eabi- $*<br />
</file><br />
==== Build now ====<br />
<br />
<code bash><br />
cd ~/android<br />
./b.sh<br />
</code><br />
<br />
You may see an error about wilink_6_1. As long as you aren't going to build a whole system, you can ignore it. Otherwise, download the system-wlan source from [[tools:kernel_sources]] too.</div>Skrilax CZhttp://droid-developers.org/wiki/2ndboot2ndboot2012-10-11T00:09:34Z<p>Skrilax CZ: /* Compilation */</p>
<hr />
<div>=== Overview ===<br />
<br />
A minature bootloader that is called from the original kernel and boots custom one. <br />
<br />
It consist from:<br />
* small kernel module, for creating device for booting/controlling boot<br />
* small userspace program, which give for module boot image and flags <br />
* tiny bootloader making space for subsequent kernel boot (kexec like)<br />
<br />
It's derived from collaborative work of '''yakk''' and '''dimichxp''' for creating bootloader for older Motorola phones (Freescale based),<br />
before their RSA signature protection have been bypassed.<br />
<br />
As of 11/10/2012, '''czechop''' created a patch to keep Wrigley 3G modem working under the child kernel (when called at “sh hijack” time). Now the only issue on Motorola Milestone is sluggishness for cca. 10 - 20 minutes after the boot until the kernel suspends, after which it operates normally.<br />
<br />
You will need UART debugging for development of hboot binary and kernel: [[Debugging]]<br />
<br />
=== Download ===<br />
<br />
Current development for MS is on https://github.com/nadlabak/2ndboot<br />
<br />
=== Compilation ===<br />
<br />
# Download Froyo kernel sources from Moto (Build number 5.26.0 (2.6.32.9 kernel))<br />
# Install arm toolchain (you can use the one coming from Android)<br />
# Compile "hbootmod" as a module for 2.6.32.9 kernel<br />
# Compile "hboot" as a standalone binary<br />
# Compile "hbootuser" as a normal Android application<br />
<br />
Keep in mind that all parts have to have the same configuration. You can find all info about compilation of kernel and toolchain [[Compiling | here]]<br />
<br />
=== Progress ===<br />
<br />
Latest attempt: '''Yakk''' patched 2nd-boot to make it work on the Milestone, but his source code remains partly unpublished at this time. Status: boots another kernel, which Yakk has also patched to get serial output over the USB connector (using custom hardware to connect to it). Currently the booted kernel has some problems with USB and fails to initialize the phone's modem so it crashes. All current development of 2ndboot now going [http://hg.droid-developers.org/droiddev/2ndboot here] When GSM is disabled this kexec module is able to boot the system with the recompiled kernel, but it is not really useful as a phone then. WiFi works fine, though. Yakk is now trying to use 2ndboot to start a patched version of mbm, which should be able to initialize the modem and then pass control to a custom Linux kernel. This is still under development, so don't get too excited. We'll keep you posted.<br />
<br />
== Further testing ==<br />
<br />
=== USB Monitoring ===<br />
<br />
<pre><br />
mount -t debugfs none_debugs /sys/kernel/debug<br />
cat /sys/kernel/debug/usbmon/1t<br />
</pre></div>Skrilax CZhttp://droid-developers.org/wiki/2ndboot2ndboot2012-10-11T00:07:27Z<p>Skrilax CZ: /* Download */</p>
<hr />
<div>=== Overview ===<br />
<br />
A minature bootloader that is called from the original kernel and boots custom one. <br />
<br />
It consist from:<br />
* small kernel module, for creating device for booting/controlling boot<br />
* small userspace program, which give for module boot image and flags <br />
* tiny bootloader making space for subsequent kernel boot (kexec like)<br />
<br />
It's derived from collaborative work of '''yakk''' and '''dimichxp''' for creating bootloader for older Motorola phones (Freescale based),<br />
before their RSA signature protection have been bypassed.<br />
<br />
As of 11/10/2012, '''czechop''' created a patch to keep Wrigley 3G modem working under the child kernel (when called at “sh hijack” time). Now the only issue on Motorola Milestone is sluggishness for cca. 10 - 20 minutes after the boot until the kernel suspends, after which it operates normally.<br />
<br />
You will need UART debugging for development of hboot binary and kernel: [[Debugging]]<br />
<br />
=== Download ===<br />
<br />
Current development for MS is on https://github.com/nadlabak/2ndboot<br />
<br />
=== Compilation ===<br />
<br />
# You need kernel sources for that from Motorola<br />
# You need special arm toolchain for that<br />
# Build you module of 2ndboot<br />
<br />
You can find all info about compilation of kernel, toolchain and 2ndboot [[Compiling | here]]<br />
<br />
=== Progress ===<br />
<br />
Latest attempt: '''Yakk''' patched 2nd-boot to make it work on the Milestone, but his source code remains partly unpublished at this time. Status: boots another kernel, which Yakk has also patched to get serial output over the USB connector (using custom hardware to connect to it). Currently the booted kernel has some problems with USB and fails to initialize the phone's modem so it crashes. All current development of 2ndboot now going [http://hg.droid-developers.org/droiddev/2ndboot here] When GSM is disabled this kexec module is able to boot the system with the recompiled kernel, but it is not really useful as a phone then. WiFi works fine, though. Yakk is now trying to use 2ndboot to start a patched version of mbm, which should be able to initialize the modem and then pass control to a custom Linux kernel. This is still under development, so don't get too excited. We'll keep you posted.<br />
<br />
== Further testing ==<br />
<br />
=== USB Monitoring ===<br />
<br />
<pre><br />
mount -t debugfs none_debugs /sys/kernel/debug<br />
cat /sys/kernel/debug/usbmon/1t<br />
</pre></div>Skrilax CZhttp://droid-developers.org/wiki/2ndboot2ndboot2012-10-11T00:06:33Z<p>Skrilax CZ: /* Overview */</p>
<hr />
<div>=== Overview ===<br />
<br />
A minature bootloader that is called from the original kernel and boots custom one. <br />
<br />
It consist from:<br />
* small kernel module, for creating device for booting/controlling boot<br />
* small userspace program, which give for module boot image and flags <br />
* tiny bootloader making space for subsequent kernel boot (kexec like)<br />
<br />
It's derived from collaborative work of '''yakk''' and '''dimichxp''' for creating bootloader for older Motorola phones (Freescale based),<br />
before their RSA signature protection have been bypassed.<br />
<br />
As of 11/10/2012, '''czechop''' created a patch to keep Wrigley 3G modem working under the child kernel (when called at “sh hijack” time). Now the only issue on Motorola Milestone is sluggishness for cca. 10 - 20 minutes after the boot until the kernel suspends, after which it operates normally.<br />
<br />
You will need UART debugging for development of hboot binary and kernel: [[Debugging]]<br />
<br />
=== Download ===<br />
<br />
hg clone http://hg.droid-developers.org/2ndboot<br />
<br />
=== Compilation ===<br />
<br />
# You need kernel sources for that from Motorola<br />
# You need special arm toolchain for that<br />
# Build you module of 2ndboot<br />
<br />
You can find all info about compilation of kernel, toolchain and 2ndboot [[Compiling | here]]<br />
<br />
=== Progress ===<br />
<br />
Latest attempt: '''Yakk''' patched 2nd-boot to make it work on the Milestone, but his source code remains partly unpublished at this time. Status: boots another kernel, which Yakk has also patched to get serial output over the USB connector (using custom hardware to connect to it). Currently the booted kernel has some problems with USB and fails to initialize the phone's modem so it crashes. All current development of 2ndboot now going [http://hg.droid-developers.org/droiddev/2ndboot here] When GSM is disabled this kexec module is able to boot the system with the recompiled kernel, but it is not really useful as a phone then. WiFi works fine, though. Yakk is now trying to use 2ndboot to start a patched version of mbm, which should be able to initialize the modem and then pass control to a custom Linux kernel. This is still under development, so don't get too excited. We'll keep you posted.<br />
<br />
== Further testing ==<br />
<br />
=== USB Monitoring ===<br />
<br />
<pre><br />
mount -t debugfs none_debugs /sys/kernel/debug<br />
cat /sys/kernel/debug/usbmon/1t<br />
</pre></div>Skrilax CZhttp://droid-developers.org/wiki/Main_PageMain Page2012-10-10T23:22:04Z<p>Skrilax CZ: /* 2ndboot */</p>
<hr />
<div>__NOTOC__<br />
<br />
==== About this site ====<br />
<br />
{| cellspacing=5 cellpadding=15 border=0 valign="top" width=100%<br />
<br />
| width=50% style="vertical-align:top"|<br />
<br />
This wiki documents our research on the Motorola Droid-family phones (including Milestone) internals.<br />
These phones are:<br />
<br />
<br />
# '''Motorola Milestone''' (our primary target)<br />
# Motorola Milestone 2<br />
# Motorola Defy (MB525)<br />
# Motorola Defy+ (MB526)<br />
<br />
| width=50% style="vertical-align:top"|<br />
<br />
{|<br />
|style="vertical-align:top"|<br />
[[Image:community.png]]<br />
|style="vertical-align:top"|<br />
'''<span style="font-variant:small-caps; font-size:150%">Community</span>'''<br /><small>Join our community! Discuss with us. </small><small><hr /> [[Credits | Our team]] | [irc://irc.freenode.net/#milestone-modding Our IRC channel] | [http://www.damogran.de/milestone-modding/ <span title="Starts on Jan 21 2010, 11:33:51 UTC. Refreshes every 15 minutes. Timezone: UTC+1. Thanks to Kasperle.">IRC log #1</span>] | [http://bacon.ojnk.org/milestone-modding.log <span title="Starts on Jan 21 2010, 13:09:10 UTC. Timezone: UTC-6. Thanks to Orgg.">IRC log #2</span>] | [http://milestone.bekaakut.de/ <span title="There is now a new channel log. Thanks to rebel1">IRC log #3</span>] | [http://mmlogs.doshaska.net/ <span title="Backup log. Started 23.09.2011.">IRC log #5</span>] | [http://gitorious.org/+droid-developers Our projects on Gitorious] | [http://hg.droid-developers.org/ Our projects on Bitbucket]</small><br />
|}<br />
<br />
{|<br />
|style="vertical-align:top"|<br />
[[Image:hardware.png]]<br />
|style="vertical-align:top"|<br />
'''<span style="font-variant:small-caps; font-size:150%">Hardware</span>'''<br /><small>All about devices internals - PCB, chips </small><small><hr />[[device_information|Overview]] | [[Motorola Milestone | Milestone]] | [[Motorola Droid | Droid]] | [[Motorola Droid X | Droid X]] | [[Motorola Droid 2 | Droid 2]] | [[Motorola Milestone 2 | Milestone 2]] | [[Motorola Sholes Tablet XT701 | Sholes Tablet XT701]] | [[Motorola Milestone XT720 | Milestone XT720]] | [[Motorola Titanium XT800 | Titanium XT800]] | [[Motorola Ruth ME511 | Ruth ME511]] | [[Motorola Charm | Charm]] | [[Motorola Atrix | Atrix]] | [[Motorola DEXT | DEXT]] | [[Motorola Defy | Defy]]</small><br />
|}<br />
<br />
{|<br />
|style="vertical-align:top"|<br />
[[Image:reverse.gif]]<br />
|style="vertical-align:top"|<br />
'''<span style="font-variant:small-caps; font-size:150%">For developers</span>'''<br /><small>Useful information for experts and beginners </small><small><hr />[[Toolchain]] | [[CyanogenMod]] | [[Compiling]] | [[Debugging]] | [[QEMU]] </small><br />
|}<br />
<br />
|}<br />
<br />
==== Information for volunteers ====<br />
<br />
If you are a developer and have some code-project for the Droid family of smartphones(e.g. Milestone) - enjoy us on [http://gitorious.org/+droid-developers Gitorious]<br />
<br />
Even if you're not the technical type, you too can help us mod the Milestone by participating in the [[Custom_recovery:pr_attack|PR campaign to force Motorola to unlock it]].<br />
<br />
If you're technical type - see our [[roadmap|Roadmap]] and progress in our [[projects|Projects]].<br />
<br />
See the [[content|content index here]].<br />
<br />
{| cellspacing=5 cellpadding=15 border=0 valign="top" width=100%<br />
<br />
| width=50% style="vertical-align:top"|<br />
<br />
{|<br />
|style="vertical-align:top"|<br />
[[Image:reverse.gif]]<br />
|style="vertical-align:top"|<br />
'''<span style="font-variant:small-caps; font-size:150%">Bootloader Unlock</span>'''<br /><small>Research how-to unlock boot process for the Application Processor </small><small><hr />[[Booting chain]] | [[Security]] | [[Cryptography]] | [http://gitorious.org/+droid-developers/droid/reversed IDA databases of bootloaders] | [[Disassembling]] </small><br />
|-<br />
|style="vertical-align:top"|<br />
|style="vertical-align:top"|<br />
The [[modes|recovery image]] hasn't yet been [http://android-dls.com/wiki/index.php?title=HOWTO:_Unpack,_Edit,_and_Re-Pack_Boot_Images modified] due to our current impossibility of controlling [[Booting chain|the boot process]]. We cannot alter the boot process so far because there seems to be a digital signature on each of its components. It seems the bootloader (mbm in particular (neither lbl nor mbmloader access the CDT). See [[Booting chain|here]] and [https://opensource.motorola.com/sf/discussion/do/listPosts/projects.milestone/discussion.general_comments.topc2012?_pagenum=2 here].) uses the [[CDT|cdt partition table]] to check if the recovery has been signed correctly. If not, the recovery won't start at all and the [[modes|bootloader mode]] shows instead of it.<br />
<br />
* '''[[2ndboot]]'''<br />
* '''[[Vulnerability hunting]]'''<br />
* '''[[Bruteforce]]'''<br />
* '''[[open_recovery | Open Recovery]]'''<br />
* '''[[2ndinit]]'''<br />
<br />
|}<br />
<br />
| width=50% style="vertical-align:top"|<br />
<br />
{|<br />
|style="vertical-align:top"|<br />
[[Image:baseband.png]]<br />
|style="vertical-align:top"|<br />
'''<span style="font-variant:small-caps; font-size:150%">Baseband Research</span>'''<br /><small>All our researches of Baseband and RF part of these phones</small><small><hr />[[GSM/CDMA-chain|GSM/UMTS & CDMA Milestone/Droid structure]]</small><br />
|-<br />
|style="vertical-align:top"|<br />
|style="vertical-align:top"|<br />
We have running RTXC OS on [[Wrigley 3G]] modem, which consist from ARM core and [[TMS320C55x+]] DSP core<br />
Our main problem, that Motorola using non-standard RIL, which partially implemented on AP side.<br />
Also, our second problem, that [[TMS320C55x+]] is closed platform, and no datasheets for it available.<br />
It very different from original [[TMS320C55x]] architecture and have other opcodes.<br />
We only have '''asm55p''' utility from TI, which can produce binary from TMS320 assembler.<br />
So, it is very important task - make full reverse of it. [[File:asm55p.idb.bz2]] [[File:dis55.idb.bz2]] [[File:dis55.c.gz]]<br />
<br />
* '''[[Baseband Processor Boot ROM]]'''<br />
* '''[[BP firmware]]'''<br />
* '''[[Texas Instruments Wrigley 3G]]'''<br />
* '''[[GSM/CDMA-chain]]'''<br />
<br />
|}<br />
<br />
|<br />
|}<br />
<br />
== '''[[2ndboot]]''' ==<br />
<br />
A minature bootloader that is called from the original kernel and boots custom one. As of 11/10/2012, '''czechop''' created a patch to keep Wrigley 3G modem working under the child kernel (when called at “sh hijack” time). Now the only issue on Motorola Milestone is sluggishness for cca. 10 - 20 minutes after the boot until the kernel suspends, after which it operates normally.<br />
<br />
== '''[[Vulnerability hunting]]''' ==<br />
<br />
As far as we know now this attack is, if not a waste of time, at least a very long shot. The idea is that reverse engineering the boot ROM, mbmloader and/or mbm might allow us to find some exploitable vulnerability in order to gain control of the boot process. Since we already have the source code for lbl, it might be useful too. Mike Baker([mbm]) has written a [http://pastebin.ca/raw/1833228|user mode memory dumper] and dumped Droid public ROM. As we found - all roms for omap3430 are identical. Same situation for the omap3630. See here: [[Booting chain|Boot chain]]<br />
<br />
== '''[[Bruteforce]]''' ==<br />
<br />
This is distributed computation of the 1024 bit RSA secret key, which can be used for signing our bootloaders and kernel images. <br />
<br />
== '''[[open_recovery | Open Recovery]]''' ==<br />
<br />
Uses the payload exploit to start the custom recovery application. Supports rooting the phone from menu, as well as taking backups and flashing unsigned update *.zip files. Also runs ADB.<br />
<br />
== '''[[2ndinit]]''' ==<br />
<br />
This thing basically inject code to /init to "restart itself" allowing you to use custom init binary and init.rc scripts without side effects.</div>Skrilax CZhttp://droid-developers.org/wiki/2ndinit2ndinit2012-05-27T15:29:12Z<p>Skrilax CZ: /* 2nd init= */</p>
<hr />
<div>=====2nd init=====<br />
<br />
The following binary will basically inject code to /init to "restart itself" allowing you to use custom init binary and init.rc scripts without side effects developed by Skrilax_CZ. Technically using code injection the code to call "execve("/init", {"/init", NULL**, environ);" is injected and the environ variables are read from /proc/1/environ by the binary. Note that this is recomended only to be used with the "sh hijack" or inside recovery. You only need to replace the files (init.rc scripts and optionally init binary) in the filesystem.<br />
<br />
The 2nd-init repository is located here: https://github.com/a853/a853_2nd_init</div>Skrilax CZhttp://droid-developers.org/wiki/2ndinit2ndinit2012-04-17T09:18:54Z<p>Skrilax CZ: /* 2nd init= */</p>
<hr />
<div>=====2nd init======<br />
<br />
The following binary will basically inject code to /init to "restart itself" allowing you to use custom init binary and init.rc scripts without side effects developed by Skrilax_CZ. Technically using code injection the code to call "execve("/init", {"/init", NULL**, environ);" is injected and the environ variables are read from /proc/1/environ by the binary. Note that this is recomended only to be used with the "sh hijack" or inside recovery. You only need to replace the files (init.rc scripts and optionally init binary) in the filesystem.<br />
<br />
The 2nd-init repository is located here: https://github.com/a853/a853_2nd_init</div>Skrilax CZhttp://droid-developers.org/wiki/2ndinit2ndinit2012-04-17T09:18:03Z<p>Skrilax CZ: </p>
<hr />
<div>=====2nd init======<br />
<br />
The following binary will basically inject code to /init to "restart itself" allowing you to use custom init binary and init.rc scripts without side effects developed by Skrilax_CZ. Technically using code injection the code to call "execve("/init", {"/init", NULL**, environ);" is injected and the environ variables are read from /proc/1/environ by the binary. Note that this is recomended only to be used with the "sh hijack" or inside recovery. You only need to replace the files (init.rc scripts and optionally init binary) in the filesystem.<br />
<br />
Download: [[File:2ndinit.zip]]</div>Skrilax CZhttp://droid-developers.org/wiki/Main_PageMain Page2012-04-17T09:13:40Z<p>Skrilax CZ: /* About this site */</p>
<hr />
<div>__NOTOC__<br />
<br />
==== About this site ====<br />
<br />
{| cellspacing=5 cellpadding=15 border=0 valign="top" width=100%<br />
<br />
| width=50% style="vertical-align:top"|<br />
<br />
This wiki documents our research on the Motorola Droid-family phones (including Milestone) internals.<br />
These phones are:<br />
<br />
<br />
# '''Motorola Milestone''' (our primary target)<br />
# Motorola Milestone 2<br />
# Motorola Defy (MB525)<br />
# Motorola Defy+ (MB526)<br />
<br />
| width=50% style="vertical-align:top"|<br />
<br />
{|<br />
|style="vertical-align:top"|<br />
[[Image:community.png]]<br />
|style="vertical-align:top"|<br />
'''<span style="font-variant:small-caps; font-size:150%">Community</span>'''<br /><small>Join our community! Discuss with us. </small><small><hr /> [[Credits | Our team]] | [irc://irc.freenode.net/#milestone-modding Our IRC channel] | [http://www.damogran.de/milestone-modding/ <span title="Starts on Jan 21 2010, 11:33:51 UTC. Refreshes every 15 minutes. Timezone: UTC+1. Thanks to Kasperle.">IRC log #1</span>] | [http://bacon.ojnk.org/milestone-modding.log <span title="Starts on Jan 21 2010, 13:09:10 UTC. Timezone: UTC-6. Thanks to Orgg.">IRC log #2</span>] | [http://milestone.bekaakut.de/ <span title="There is now a new channel log. Thanks to rebel1">IRC log #3</span>] | [http://mmlogs.doshaska.net/ <span title="Backup log. Started 23.09.2011.">IRC log #5</span>] | [http://gitorious.org/+droid-developers Our projects on Gitorious] | [http://hg.droid-developers.org/ Our projects on Bitbucket]</small><br />
|}<br />
<br />
{|<br />
|style="vertical-align:top"|<br />
[[Image:hardware.png]]<br />
|style="vertical-align:top"|<br />
'''<span style="font-variant:small-caps; font-size:150%">Hardware</span>'''<br /><small>All about devices internals - PCB, chips </small><small><hr />[[device_information|Overview]] | [[Motorola Milestone | Milestone]] | [[Motorola Droid | Droid]] | [[Motorola Droid X | Droid X]] | [[Motorola Droid 2 | Droid 2]] | [[Motorola Milestone 2 | Milestone 2]] | [[Motorola Sholes Tablet XT701 | Sholes Tablet XT701]] | [[Motorola Milestone XT720 | Milestone XT720]] | [[Motorola Titanium XT800 | Titanium XT800]] | [[Motorola Ruth ME511 | Ruth ME511]] | [[Motorola Charm | Charm]] | [[Motorola Atrix | Atrix]] | [[Motorola DEXT | DEXT]] | [[Motorola Defy | Defy]]</small><br />
|}<br />
<br />
{|<br />
|style="vertical-align:top"|<br />
[[Image:reverse.gif]]<br />
|style="vertical-align:top"|<br />
'''<span style="font-variant:small-caps; font-size:150%">For developers</span>'''<br /><small>Useful information for experts and beginners </small><small><hr />[[Toolchain]] | [[CyanogenMod]] | [[Compiling]] | [[Debugging]] | [[QEMU]] </small><br />
|}<br />
<br />
|}<br />
<br />
==== Information for volunteers ====<br />
<br />
If you are a developer and have some code-project for the Droid family of smartphones(e.g. Milestone) - enjoy us on [http://gitorious.org/+droid-developers Gitorious]<br />
<br />
Even if you're not the technical type, you too can help us mod the Milestone by participating in the [[Custom_recovery:pr_attack|PR campaign to force Motorola to unlock it]].<br />
<br />
If you're technical type - see our [[roadmap|Roadmap]] and progress in our [[projects|Projects]].<br />
<br />
See the [[content|content index here]].<br />
<br />
{| cellspacing=5 cellpadding=15 border=0 valign="top" width=100%<br />
<br />
| width=50% style="vertical-align:top"|<br />
<br />
{|<br />
|style="vertical-align:top"|<br />
[[Image:reverse.gif]]<br />
|style="vertical-align:top"|<br />
'''<span style="font-variant:small-caps; font-size:150%">Bootloader Unlock</span>'''<br /><small>Research how-to unlock boot process for the Application Processor </small><small><hr />[[Booting chain]] | [[Security]] | [[Cryptography]] | [http://gitorious.org/+droid-developers/droid/reversed IDA databases of bootloaders] | [[Disassembling]] </small><br />
|-<br />
|style="vertical-align:top"|<br />
|style="vertical-align:top"|<br />
The [[modes|recovery image]] hasn't yet been [http://android-dls.com/wiki/index.php?title=HOWTO:_Unpack,_Edit,_and_Re-Pack_Boot_Images modified] due to our current impossibility of controlling [[Booting chain|the boot process]]. We cannot alter the boot process so far because there seems to be a digital signature on each of its components. It seems the bootloader (mbm in particular (neither lbl nor mbmloader access the CDT). See [[Booting chain|here]] and [https://opensource.motorola.com/sf/discussion/do/listPosts/projects.milestone/discussion.general_comments.topc2012?_pagenum=2 here].) uses the [[CDT|cdt partition table]] to check if the recovery has been signed correctly. If not, the recovery won't start at all and the [[modes|bootloader mode]] shows instead of it.<br />
<br />
* '''[[2ndboot]]'''<br />
* '''[[Vulnerability hunting]]'''<br />
* '''[[Bruteforce]]'''<br />
* '''[[open_recovery | Open Recovery]]'''<br />
* '''[[2ndinit]]'''<br />
<br />
|}<br />
<br />
| width=50% style="vertical-align:top"|<br />
<br />
{|<br />
|style="vertical-align:top"|<br />
[[Image:baseband.png]]<br />
|style="vertical-align:top"|<br />
'''<span style="font-variant:small-caps; font-size:150%">Baseband Research</span>'''<br /><small>All our researches of Baseband and RF part of these phones</small><small><hr />[[GSM/CDMA-chain|GSM/UMTS & CDMA Milestone/Droid structure]]</small><br />
|-<br />
|style="vertical-align:top"|<br />
|style="vertical-align:top"|<br />
We have running RTXC OS on [[Wrigley 3G]] modem, which consist from ARM core and [[TMS320C55x+]] DSP core<br />
Our main problem, that Motorola using non-standard RIL, which partially implemented on AP side.<br />
Also, our second problem, that [[TMS320C55x+]] is closed platform, and no datasheets for it available.<br />
It very different from original [[TMS320C55x]] architecture and have other opcodes.<br />
We only have '''asm55p''' utility from TI, which can produce binary from TMS320 assembler.<br />
So, it is very important task - make full reverse of it. [[File:asm55p.idb.bz2]] [[File:dis55.idb.bz2]] [[File:dis55.c.gz]]<br />
<br />
* '''[[Baseband Processor Boot ROM]]'''<br />
* '''[[BP firmware]]'''<br />
* '''[[Texas Instruments Wrigley 3G]]'''<br />
* '''[[GSM/CDMA-chain]]'''<br />
<br />
|}<br />
<br />
|<br />
|}<br />
<br />
== '''[[2ndboot]]''' ==<br />
<br />
This attack right now is by far the most promising and convenient. Recently a few developers have pursued this approach in at least three independent attempts. All face a significant roadblock: hardware initialization. There are a [http://android.git.kernel.org/?p=kernel/omap.git;a=blob;f=arch/arm/mach-omap2/prcm.c;h=86c3fe328f51736ee4139b59654252021f3d90a2;hb=refs/heads/android-omap-2.6.29-eclair#l129 couple] of [https://patchwork.kernel.org/patch/82291/ ideas] about tackling it, but it is still a work in progress at the time of this writing. See more information about previous attempts [[custom_recovery:alternative_methods#kexec_attack here]].<br />
<br />
== '''[[Vulnerability hunting]]''' ==<br />
<br />
As far as we know now this attack is, if not a waste of time, at least a very long shot. The idea is that reverse engineering the boot ROM, mbmloader and/or mbm might allow us to find some exploitable vulnerability in order to gain control of the boot process. Since we already have the source code for lbl, it might be useful too. Mike Baker([mbm]) has written a [http://pastebin.ca/raw/1833228|user mode memory dumper] and dumped Droid public ROM. As we found - all roms for omap3430 are identical. Same situation for the omap3630. See here: [[Booting chain|Boot chain]]<br />
<br />
== '''[[Bruteforce]]''' ==<br />
<br />
This is distributed computation of the 1024 bit RSA secret key, which can be used for signing our bootloaders and kernel images. <br />
<br />
== '''[[open_recovery | Open Recovery]]''' ==<br />
<br />
Uses the payload exploit to start the custom recovery application. Supports rooting the phone from menu, as well as taking backups and flashing unsigned update *.zip files. Also runs ADB.<br />
<br />
== '''[[2ndinit]]''' ==<br />
<br />
This thing basically inject code to /init to "restart itself" allowing you to use custom init binary and init.rc scripts without side effects.</div>Skrilax CZhttp://droid-developers.org/wiki/SBFSBF2011-12-03T22:16:52Z<p>Skrilax CZ: /* Updates */</p>
<hr />
<div>{| align="right"<br />
| __TOC__<br />
|}<br />
== SBF ==<br />
<br />
SBF seems to stand for Single Binary File, containing the firmware image. None of the SBFs contain a subsidy lock and flashing a SBF will not unlock the phone. These files could be flashed into the milestone via [[rsd_lite|RSD Lite]] Interface. The updates of this page can be seen above the download page links.<br />
<br />
The device should be put into [[bootloader_mode|Bootloader Mode]] and then attached via USB to the PC. After the PC recognizes the phone, you could use [[rsd_lite]] for flashing the SBF to your Milestone.<br />
<br />
== SBF Depacker ==<br />
A tool writen by Skrilax_CZ can be used to repack SBFs and compile custom ones. Can be downloaded here for .NET 3.5 [http://rapidshare.com/files/453821014/MotoAndroidDepacker.zip MotoAndroidDepacker.zip] or for Mono [http://rapidshare.com/files/453821032/MotoAndroidDepackerMono.zip MotoAndroidDepackerMono.zip].<br />
<br />
== RSD web service ==<br />
<br />
Officially distributed builds are exposed by a public web service at ''https://rsd.motorola.com/cs/servlets/SRPConsumerServlet'' used by Motorola's end-user update tool. Motorola's internal service tool use a similar service at ''https://rsd.motorola.com/cs/servlets/SRPServlet'', but it appears to be restricted to authorized sessions.<br />
<pre><br />
<code xml Request><br />
<?xml version="1.0" encoding="UTF-8" standalone="no"?><br />
<soap-env:Envelope xmlns:soap-env="http://schemas.xmlsoap.org/soap/envelope/"><br />
<soap-env:Body><br />
<srpmessage><br />
<srpoperation><br />
<fungrp></fungrp><br />
<opcode></opcode><br />
<parameterlist><br />
<parameter><name></name></value></parameter><br />
</parameterlist><br />
</srpoperation><br />
</srpmessage><br />
</soap-env:Body><br />
</soap-env:Envelope><br />
</code><br />
</pre><br />
<br />
===Known functions===<br />
<br />
{| border="1" cellpadding="5" cellspacing="0"<br />
!style="background: #DEE7EC;"| Function<br />
!style="background: #DEE7EC;"| fungrp<br />
!style="background: #DEE7EC;"| opcode<br />
!style="background: #DEE7EC;"| Parameter name<br />
!style="background: #DEE7EC;"| Parameter value<br />
|-<br />
| MSU version check<br />
| 02<br />
| 01<br />
| consumerclientversion<br />
| Version string, e.g. ''C01.11.79''<br />
|-<br />
|rowspan="2" colspan="3"|<br />
| Use_case_set<br />
| ''Inapplicable''<br />
|-<br />
| countrycode<br />
| Three-letter code<br />
|-<br />
| USB driver version check<br />
| 02<br />
| 05<br />
| hardware<br />
| 00<br />
|-<br />
|rowspan="2" colspan="3"|<br />
| OS<br />
| Four-digit MS Windows version, e.g. ''0601'' for Win7<br />
|-<br />
| driverversion<br />
| Version string, e.g. ''DD04.05.00''<br />
|-<br />
| Warranty status<br />
| 07<br />
| 13<br />
| serialnumbertype<br />
| IMEI<br />
|-<br />
|colspan="3"|<br />
| serialnumber<br />
| IMEI string<br />
|-<br />
| Firmware version check<br />
| 10<br />
| 01<br />
| flex<br />
| ro.gsm.flexversion<br />
|-<br />
|rowspan="13" colspan="3"|<br />
| firmware<br />
| ro.build.id+gsm.version.baseband<br />
|-<br />
| apversion<br />
| ro.build.id+gsm.version.baseband<br />
|-<br />
| apsetup<br />
| ''Inapplicable''<br />
|-<br />
| apresourceflex<br />
| ''Inapplicable''<br />
|-<br />
| aplogo<br />
| ''Inapplicable''<br />
|-<br />
| apsecuresetup<br />
| ''Inapplicable''<br />
|-<br />
| rofs<br />
| ''Inapplicable''<br />
|-<br />
| rofsextension<br />
| ''Inapplicable''<br />
|-<br />
| apflex<br />
| ro.build.config.version<br />
|-<br />
| bootloader<br />
| Four-digit version, eg. ''9073''<br />
|-<br />
| lang<br />
| ''Inapplicable''<br />
|-<br />
| kjava<br />
| ''Inapplicable''<br />
|-<br />
| pri<br />
| ''Inapplicable''<br />
|}<br />
<br />
The only parameter required for firmware version checks is ''flex''. The service will only respond successfully if the query is unambiguous and matched phone model is cleared for user upgrades. (see ''Known return codes'')<br />
<br />
===Known return codes===<br />
<br />
{| border="1" cellpadding="5" cellspacing="0"<br />
!style="background: #DEE7EC;"| fungrp<br />
!style="background: #DEE7EC;"| opcode<br />
!style="background: #DEE7EC;"| operation status<br />
!style="background: #DEE7EC;"| Returned message<br />
!style="background: #DEE7EC;"| Comment<br />
|-<br />
| 06<br />
| 50<br />
| 00<br />
| success<br />
| Update URL to .sbf included in return xml scheme<br />
|-<br />
| 06<br />
| 50<br />
| 01<br />
| Cannot ID the phone as the flex is blank.<br />
|<br />
|-<br />
| 06<br />
| 50<br />
| 02<br />
| No Phone found with the given phone parameters<br />
|<br />
|-<br />
| 06<br />
| 50<br />
| 03<br />
| Multiples phones found with the same configuration.<br />
| This needs to be investigated, since the rsd servers reply this when the supplied date are not unique. For example for a brazilian Milestone with flex version ''USASHLSRETBRLA02C.0R'' (Vivo). Trying to fetch .sbf files from the servers for the DroidX shows the same results. (Note - for NA queries, you must always supply firmware version along the flex, otherwise you get the ''Multiples phones found with the same configuration.'' as result, even if the flex version is invalid (like just ''NA'').)<br />
|}<br />
<br />
===Example queries===<br />
<br />
'''GB Retail (SM1658AXXB1)'''<br />
$ curl -H 'Content-Type: text/xml' -d '<?xml version="1.0" encoding="UTF-8"?><br />
<soap-env:Envelope xmlns:soap-env="http://schemas.xmlsoap.org/soap/envelope/"><br />
<soap-env:Body><srpmessage><srpoperation><fungrp>10</fungrp><opcode>01</opcode><parameterlist><br />
<parameter><name>flex</name><value>UCASHLSEMEAB1B803F.0R</value></parameter><br />
<parameter><name>apflex</name><value>GAS_EMEA_USASHLS00RTGB_P008</value></parameter><br />
</parameterlist></srpoperation></srpmessage></soap-env:Body></soap-env:Envelope>' \<br />
https://rsd.motorola.com/cs/servlets/SRPConsumerServlet<br />
<br />
'''CA Telus (81130CHEPA)'''<br />
$ curl -H 'Content-Type: text/xml' -d '<?xml version="1.0" encoding="UTF-8"?><br />
<soap-env:Envelope xmlns:soap-env="http://schemas.xmlsoap.org/soap/envelope/"><br />
<soap-env:Body><srpmessage><srpoperation><fungrp>10</fungrp><opcode>01</opcode><parameterlist><br />
<parameter><name>flex</name><value>USASHLSTLSB1B2B5051.0R</value></parameter><br />
</parameterlist></srpoperation></srpmessage></soap-env:Body></soap-env:Envelope>' \<br />
https://rsd.motorola.com/cs/servlets/SRPConsumerServlet<br />
<br />
==OTA updates==<br />
<br />
Just downloaded on phone in /cache/fota/update.zip<br />
and have this structure:<br />
<br />
* CERT.RSA<br />
* CERT.SF<br />
* MANIFEST.MF<br />
* __binary_firmware_file__<br />
* boot.img<br />
* bp.img<br />
* mbm.img<br />
* cdt.bin<br />
* lbl.bin<br />
* logo.bin<br />
* install-recovery.sh<br />
* recovery-from-boot.p<br />
* updater-script<br />
* mtd.cfg<br />
<br />
CERT.SF - contain sha1 digest of all files in update.zip<br />
<br />
CERT.RSA - certificate ASN1.DER ( parsed struct http://pastebin.ca/1849789 ). It parsed by command "openssl asn1parse -inform DER -in CERT.RSA"<br />
<br />
If any files unneeded in update - update.zip does not include this file.<br />
This is a sample OTA update package(SHOLS_U2_01.03.1_to_SHOLS_U2_01.14.0_REQ563): [http://www.xvilka.org/update.zip update.zip]<br />
<br />
== Retail SBF Files ==<br />
<br />
=== Downloads ===<br />
* [http://sbf-developers.com SBF On Droid-Developers]<br />
<br />
== Custom SBF Files ==<br />
<br />
=== Vulnerable Recovery SBF Flash ===<br />
<br />
This SBF file will flash only the vulnerable recovery from 2.0.1 without modifying other partitions.<br />
* Download (Milestone): [http://www.mediafire.com/?jzzjmmrvwkz MediaFire]<br />
* Download (XT800): [http://droid-developers.org/files/uploads//XT800-vulnerable-recovery.rar Droid-Developers]<br />
<br />
=== 2.1 kernel fix of scheduled CPU wake-ups ===<br />
<br />
This SBF file will flash only the boot.img (kernel+init) from SHOLS_U2_03.10.0: [http://www.mediafire.com/?mlyneqhk1zl mediafire], [http://rapidshare.com/files/378277372/2.1-03.10.0-kernel-only.rar.html rapidshare]</div>Skrilax CZhttp://droid-developers.org/wiki/SBFSBF2011-12-03T22:16:39Z<p>Skrilax CZ: /* Comments */</p>
<hr />
<div>{| align="right"<br />
| __TOC__<br />
|}<br />
== SBF ==<br />
<br />
SBF seems to stand for Single Binary File, containing the firmware image. None of the SBFs contain a subsidy lock and flashing a SBF will not unlock the phone. These files could be flashed into the milestone via [[rsd_lite|RSD Lite]] Interface. The updates of this page can be seen above the download page links.<br />
<br />
The device should be put into [[bootloader_mode|Bootloader Mode]] and then attached via USB to the PC. After the PC recognizes the phone, you could use [[rsd_lite]] for flashing the SBF to your Milestone.<br />
<br />
== SBF Depacker ==<br />
A tool writen by Skrilax_CZ can be used to repack SBFs and compile custom ones. Can be downloaded here for .NET 3.5 [http://rapidshare.com/files/453821014/MotoAndroidDepacker.zip MotoAndroidDepacker.zip] or for Mono [http://rapidshare.com/files/453821032/MotoAndroidDepackerMono.zip MotoAndroidDepackerMono.zip].<br />
<br />
== RSD web service ==<br />
<br />
Officially distributed builds are exposed by a public web service at ''https://rsd.motorola.com/cs/servlets/SRPConsumerServlet'' used by Motorola's end-user update tool. Motorola's internal service tool use a similar service at ''https://rsd.motorola.com/cs/servlets/SRPServlet'', but it appears to be restricted to authorized sessions.<br />
<pre><br />
<code xml Request><br />
<?xml version="1.0" encoding="UTF-8" standalone="no"?><br />
<soap-env:Envelope xmlns:soap-env="http://schemas.xmlsoap.org/soap/envelope/"><br />
<soap-env:Body><br />
<srpmessage><br />
<srpoperation><br />
<fungrp></fungrp><br />
<opcode></opcode><br />
<parameterlist><br />
<parameter><name></name></value></parameter><br />
</parameterlist><br />
</srpoperation><br />
</srpmessage><br />
</soap-env:Body><br />
</soap-env:Envelope><br />
</code><br />
</pre><br />
<br />
===Known functions===<br />
<br />
{| border="1" cellpadding="5" cellspacing="0"<br />
!style="background: #DEE7EC;"| Function<br />
!style="background: #DEE7EC;"| fungrp<br />
!style="background: #DEE7EC;"| opcode<br />
!style="background: #DEE7EC;"| Parameter name<br />
!style="background: #DEE7EC;"| Parameter value<br />
|-<br />
| MSU version check<br />
| 02<br />
| 01<br />
| consumerclientversion<br />
| Version string, e.g. ''C01.11.79''<br />
|-<br />
|rowspan="2" colspan="3"|<br />
| Use_case_set<br />
| ''Inapplicable''<br />
|-<br />
| countrycode<br />
| Three-letter code<br />
|-<br />
| USB driver version check<br />
| 02<br />
| 05<br />
| hardware<br />
| 00<br />
|-<br />
|rowspan="2" colspan="3"|<br />
| OS<br />
| Four-digit MS Windows version, e.g. ''0601'' for Win7<br />
|-<br />
| driverversion<br />
| Version string, e.g. ''DD04.05.00''<br />
|-<br />
| Warranty status<br />
| 07<br />
| 13<br />
| serialnumbertype<br />
| IMEI<br />
|-<br />
|colspan="3"|<br />
| serialnumber<br />
| IMEI string<br />
|-<br />
| Firmware version check<br />
| 10<br />
| 01<br />
| flex<br />
| ro.gsm.flexversion<br />
|-<br />
|rowspan="13" colspan="3"|<br />
| firmware<br />
| ro.build.id+gsm.version.baseband<br />
|-<br />
| apversion<br />
| ro.build.id+gsm.version.baseband<br />
|-<br />
| apsetup<br />
| ''Inapplicable''<br />
|-<br />
| apresourceflex<br />
| ''Inapplicable''<br />
|-<br />
| aplogo<br />
| ''Inapplicable''<br />
|-<br />
| apsecuresetup<br />
| ''Inapplicable''<br />
|-<br />
| rofs<br />
| ''Inapplicable''<br />
|-<br />
| rofsextension<br />
| ''Inapplicable''<br />
|-<br />
| apflex<br />
| ro.build.config.version<br />
|-<br />
| bootloader<br />
| Four-digit version, eg. ''9073''<br />
|-<br />
| lang<br />
| ''Inapplicable''<br />
|-<br />
| kjava<br />
| ''Inapplicable''<br />
|-<br />
| pri<br />
| ''Inapplicable''<br />
|}<br />
<br />
The only parameter required for firmware version checks is ''flex''. The service will only respond successfully if the query is unambiguous and matched phone model is cleared for user upgrades. (see ''Known return codes'')<br />
<br />
===Known return codes===<br />
<br />
{| border="1" cellpadding="5" cellspacing="0"<br />
!style="background: #DEE7EC;"| fungrp<br />
!style="background: #DEE7EC;"| opcode<br />
!style="background: #DEE7EC;"| operation status<br />
!style="background: #DEE7EC;"| Returned message<br />
!style="background: #DEE7EC;"| Comment<br />
|-<br />
| 06<br />
| 50<br />
| 00<br />
| success<br />
| Update URL to .sbf included in return xml scheme<br />
|-<br />
| 06<br />
| 50<br />
| 01<br />
| Cannot ID the phone as the flex is blank.<br />
|<br />
|-<br />
| 06<br />
| 50<br />
| 02<br />
| No Phone found with the given phone parameters<br />
|<br />
|-<br />
| 06<br />
| 50<br />
| 03<br />
| Multiples phones found with the same configuration.<br />
| This needs to be investigated, since the rsd servers reply this when the supplied date are not unique. For example for a brazilian Milestone with flex version ''USASHLSRETBRLA02C.0R'' (Vivo). Trying to fetch .sbf files from the servers for the DroidX shows the same results. (Note - for NA queries, you must always supply firmware version along the flex, otherwise you get the ''Multiples phones found with the same configuration.'' as result, even if the flex version is invalid (like just ''NA'').)<br />
|}<br />
<br />
===Example queries===<br />
<br />
'''GB Retail (SM1658AXXB1)'''<br />
$ curl -H 'Content-Type: text/xml' -d '<?xml version="1.0" encoding="UTF-8"?><br />
<soap-env:Envelope xmlns:soap-env="http://schemas.xmlsoap.org/soap/envelope/"><br />
<soap-env:Body><srpmessage><srpoperation><fungrp>10</fungrp><opcode>01</opcode><parameterlist><br />
<parameter><name>flex</name><value>UCASHLSEMEAB1B803F.0R</value></parameter><br />
<parameter><name>apflex</name><value>GAS_EMEA_USASHLS00RTGB_P008</value></parameter><br />
</parameterlist></srpoperation></srpmessage></soap-env:Body></soap-env:Envelope>' \<br />
https://rsd.motorola.com/cs/servlets/SRPConsumerServlet<br />
<br />
'''CA Telus (81130CHEPA)'''<br />
$ curl -H 'Content-Type: text/xml' -d '<?xml version="1.0" encoding="UTF-8"?><br />
<soap-env:Envelope xmlns:soap-env="http://schemas.xmlsoap.org/soap/envelope/"><br />
<soap-env:Body><srpmessage><srpoperation><fungrp>10</fungrp><opcode>01</opcode><parameterlist><br />
<parameter><name>flex</name><value>USASHLSTLSB1B2B5051.0R</value></parameter><br />
</parameterlist></srpoperation></srpmessage></soap-env:Body></soap-env:Envelope>' \<br />
https://rsd.motorola.com/cs/servlets/SRPConsumerServlet<br />
<br />
==OTA updates==<br />
<br />
Just downloaded on phone in /cache/fota/update.zip<br />
and have this structure:<br />
<br />
* CERT.RSA<br />
* CERT.SF<br />
* MANIFEST.MF<br />
* __binary_firmware_file__<br />
* boot.img<br />
* bp.img<br />
* mbm.img<br />
* cdt.bin<br />
* lbl.bin<br />
* logo.bin<br />
* install-recovery.sh<br />
* recovery-from-boot.p<br />
* updater-script<br />
* mtd.cfg<br />
<br />
CERT.SF - contain sha1 digest of all files in update.zip<br />
<br />
CERT.RSA - certificate ASN1.DER ( parsed struct http://pastebin.ca/1849789 ). It parsed by command "openssl asn1parse -inform DER -in CERT.RSA"<br />
<br />
If any files unneeded in update - update.zip does not include this file.<br />
This is a sample OTA update package(SHOLS_U2_01.03.1_to_SHOLS_U2_01.14.0_REQ563): [http://www.xvilka.org/update.zip update.zip]<br />
<br />
== Retail SBF Files ==<br />
<br />
=== Updates ===<br />
<br />
03/08/2010: Added Milestone XT720 firmware for South-East Asia (STR_U2_01.18.2)<br />
28/07/2010: Added Blur_Version.0.18.4.ME511.ChinaRetail.en.CN and bootloader for ME511<br />
24/07/2010: Added STR_U2_01.18.2 (Singapore) for XT720<br />
23/07/2010: Added SHOLS_U2_02.38.0 (Italy)<br />
21/07/2010: Added SHOLS_U2_02.36.0 (DACH, O2 DE, VF DE)<br />
16/07/2010: Added XT800 firmwares and Droid X bootloaders<br />
11/07/2010: Added Thai 02.36.0 firmware<br />
10/07/2010: Added bootloader 90.78ch and new XT702 firmware<br />
05/07/2010: Added SHOLS_U2_02.36.0 (Starhub SG)<br />
01/07/2010: Added SHOLS_U2_02.36.0 (Central Europe, Southeast Asia)<br />
21/06/2010: Added SHOLS_U2_02.27.6 (Israel)<br />
09/06/2010: Corrected - XT701 firmwares are Taiwan.<br />
09/06/2010: Corrected - XT701 firmwares are not signed.<br />
06/06/2010: Added XT701 new 2.1 Taiwan firmware and bootloader 80.99<br />
31/05/2010: Added XT701 new 2.1 firmware and bootloader 80.98<br />
26/05/2010: Added SHOLS_U2_02.34.3 (Hong Kong / Maccau); SHLA_U2_03.05.0 (TIM Brasil, Service Version only)<br />
26/05/2010: Initial creation.<br />
<br />
=== Downloads ===<br />
* [http://sbf-developers.com SBF On Droid-Developers]<br />
<br />
== Custom SBF Files ==<br />
<br />
=== Vulnerable Recovery SBF Flash ===<br />
<br />
This SBF file will flash only the vulnerable recovery from 2.0.1 without modifying other partitions.<br />
* Download (Milestone): [http://www.mediafire.com/?jzzjmmrvwkz MediaFire]<br />
* Download (XT800): [http://droid-developers.org/files/uploads//XT800-vulnerable-recovery.rar Droid-Developers]<br />
<br />
=== 2.1 kernel fix of scheduled CPU wake-ups ===<br />
<br />
This SBF file will flash only the boot.img (kernel+init) from SHOLS_U2_03.10.0: [http://www.mediafire.com/?mlyneqhk1zl mediafire], [http://rapidshare.com/files/378277372/2.1-03.10.0-kernel-only.rar.html rapidshare]</div>Skrilax CZhttp://droid-developers.org/wiki/SBFSBF2011-12-03T22:16:08Z<p>Skrilax CZ: /* SBF / MBN Depacker */</p>
<hr />
<div>{| align="right"<br />
| __TOC__<br />
|}<br />
== SBF ==<br />
<br />
SBF seems to stand for Single Binary File, containing the firmware image. None of the SBFs contain a subsidy lock and flashing a SBF will not unlock the phone. These files could be flashed into the milestone via [[rsd_lite|RSD Lite]] Interface. The updates of this page can be seen above the download page links.<br />
<br />
The device should be put into [[bootloader_mode|Bootloader Mode]] and then attached via USB to the PC. After the PC recognizes the phone, you could use [[rsd_lite]] for flashing the SBF to your Milestone.<br />
<br />
== SBF Depacker ==<br />
A tool writen by Skrilax_CZ can be used to repack SBFs and compile custom ones. Can be downloaded here for .NET 3.5 [http://rapidshare.com/files/453821014/MotoAndroidDepacker.zip MotoAndroidDepacker.zip] or for Mono [http://rapidshare.com/files/453821032/MotoAndroidDepackerMono.zip MotoAndroidDepackerMono.zip].<br />
<br />
== Comments ==<br />
<br />
Flashing the "Service" version will not wipe userdata partition. Looking on the flex version (ro.gsm.flexversion): B1B8 is for WCDMA 900 / 2100 and B1B2B5 is for WCDMA 850 / 1900 / 2100, some firmwares doesn't have that string in the flex version, so it cannot be determined from that (All Latin American firmwares and Retail Thai are WCDMA 850 / 1900 / 2100).<br />
<br />
Flashing an SBF file from a different country could cause problems with cellular communications. For example, some people have applied the HK SBF in Europe and in Latin America and their phones stopped working with 3G (due to different frequencies, presumably).<br />
<br />
Here's an attempt to parse the firmware filename structure with an informal shell/re syntax:<br />
<pre><br />
${ro.build.id}_${ro.gsm.flexversion}_${ro.build.config.version#3}_${ro.build.config.version#4}_A[0-9][0-9][0-9]_HWp2a_{Service|}1FF.sbf<br />
</pre><br />
<br />
== RSD web service ==<br />
<br />
Officially distributed builds are exposed by a public web service at ''https://rsd.motorola.com/cs/servlets/SRPConsumerServlet'' used by Motorola's end-user update tool. Motorola's internal service tool use a similar service at ''https://rsd.motorola.com/cs/servlets/SRPServlet'', but it appears to be restricted to authorized sessions.<br />
<pre><br />
<code xml Request><br />
<?xml version="1.0" encoding="UTF-8" standalone="no"?><br />
<soap-env:Envelope xmlns:soap-env="http://schemas.xmlsoap.org/soap/envelope/"><br />
<soap-env:Body><br />
<srpmessage><br />
<srpoperation><br />
<fungrp></fungrp><br />
<opcode></opcode><br />
<parameterlist><br />
<parameter><name></name></value></parameter><br />
</parameterlist><br />
</srpoperation><br />
</srpmessage><br />
</soap-env:Body><br />
</soap-env:Envelope><br />
</code><br />
</pre><br />
<br />
===Known functions===<br />
<br />
{| border="1" cellpadding="5" cellspacing="0"<br />
!style="background: #DEE7EC;"| Function<br />
!style="background: #DEE7EC;"| fungrp<br />
!style="background: #DEE7EC;"| opcode<br />
!style="background: #DEE7EC;"| Parameter name<br />
!style="background: #DEE7EC;"| Parameter value<br />
|-<br />
| MSU version check<br />
| 02<br />
| 01<br />
| consumerclientversion<br />
| Version string, e.g. ''C01.11.79''<br />
|-<br />
|rowspan="2" colspan="3"|<br />
| Use_case_set<br />
| ''Inapplicable''<br />
|-<br />
| countrycode<br />
| Three-letter code<br />
|-<br />
| USB driver version check<br />
| 02<br />
| 05<br />
| hardware<br />
| 00<br />
|-<br />
|rowspan="2" colspan="3"|<br />
| OS<br />
| Four-digit MS Windows version, e.g. ''0601'' for Win7<br />
|-<br />
| driverversion<br />
| Version string, e.g. ''DD04.05.00''<br />
|-<br />
| Warranty status<br />
| 07<br />
| 13<br />
| serialnumbertype<br />
| IMEI<br />
|-<br />
|colspan="3"|<br />
| serialnumber<br />
| IMEI string<br />
|-<br />
| Firmware version check<br />
| 10<br />
| 01<br />
| flex<br />
| ro.gsm.flexversion<br />
|-<br />
|rowspan="13" colspan="3"|<br />
| firmware<br />
| ro.build.id+gsm.version.baseband<br />
|-<br />
| apversion<br />
| ro.build.id+gsm.version.baseband<br />
|-<br />
| apsetup<br />
| ''Inapplicable''<br />
|-<br />
| apresourceflex<br />
| ''Inapplicable''<br />
|-<br />
| aplogo<br />
| ''Inapplicable''<br />
|-<br />
| apsecuresetup<br />
| ''Inapplicable''<br />
|-<br />
| rofs<br />
| ''Inapplicable''<br />
|-<br />
| rofsextension<br />
| ''Inapplicable''<br />
|-<br />
| apflex<br />
| ro.build.config.version<br />
|-<br />
| bootloader<br />
| Four-digit version, eg. ''9073''<br />
|-<br />
| lang<br />
| ''Inapplicable''<br />
|-<br />
| kjava<br />
| ''Inapplicable''<br />
|-<br />
| pri<br />
| ''Inapplicable''<br />
|}<br />
<br />
The only parameter required for firmware version checks is ''flex''. The service will only respond successfully if the query is unambiguous and matched phone model is cleared for user upgrades. (see ''Known return codes'')<br />
<br />
===Known return codes===<br />
<br />
{| border="1" cellpadding="5" cellspacing="0"<br />
!style="background: #DEE7EC;"| fungrp<br />
!style="background: #DEE7EC;"| opcode<br />
!style="background: #DEE7EC;"| operation status<br />
!style="background: #DEE7EC;"| Returned message<br />
!style="background: #DEE7EC;"| Comment<br />
|-<br />
| 06<br />
| 50<br />
| 00<br />
| success<br />
| Update URL to .sbf included in return xml scheme<br />
|-<br />
| 06<br />
| 50<br />
| 01<br />
| Cannot ID the phone as the flex is blank.<br />
|<br />
|-<br />
| 06<br />
| 50<br />
| 02<br />
| No Phone found with the given phone parameters<br />
|<br />
|-<br />
| 06<br />
| 50<br />
| 03<br />
| Multiples phones found with the same configuration.<br />
| This needs to be investigated, since the rsd servers reply this when the supplied date are not unique. For example for a brazilian Milestone with flex version ''USASHLSRETBRLA02C.0R'' (Vivo). Trying to fetch .sbf files from the servers for the DroidX shows the same results. (Note - for NA queries, you must always supply firmware version along the flex, otherwise you get the ''Multiples phones found with the same configuration.'' as result, even if the flex version is invalid (like just ''NA'').)<br />
|}<br />
<br />
===Example queries===<br />
<br />
'''GB Retail (SM1658AXXB1)'''<br />
$ curl -H 'Content-Type: text/xml' -d '<?xml version="1.0" encoding="UTF-8"?><br />
<soap-env:Envelope xmlns:soap-env="http://schemas.xmlsoap.org/soap/envelope/"><br />
<soap-env:Body><srpmessage><srpoperation><fungrp>10</fungrp><opcode>01</opcode><parameterlist><br />
<parameter><name>flex</name><value>UCASHLSEMEAB1B803F.0R</value></parameter><br />
<parameter><name>apflex</name><value>GAS_EMEA_USASHLS00RTGB_P008</value></parameter><br />
</parameterlist></srpoperation></srpmessage></soap-env:Body></soap-env:Envelope>' \<br />
https://rsd.motorola.com/cs/servlets/SRPConsumerServlet<br />
<br />
'''CA Telus (81130CHEPA)'''<br />
$ curl -H 'Content-Type: text/xml' -d '<?xml version="1.0" encoding="UTF-8"?><br />
<soap-env:Envelope xmlns:soap-env="http://schemas.xmlsoap.org/soap/envelope/"><br />
<soap-env:Body><srpmessage><srpoperation><fungrp>10</fungrp><opcode>01</opcode><parameterlist><br />
<parameter><name>flex</name><value>USASHLSTLSB1B2B5051.0R</value></parameter><br />
</parameterlist></srpoperation></srpmessage></soap-env:Body></soap-env:Envelope>' \<br />
https://rsd.motorola.com/cs/servlets/SRPConsumerServlet<br />
<br />
==OTA updates==<br />
<br />
Just downloaded on phone in /cache/fota/update.zip<br />
and have this structure:<br />
<br />
* CERT.RSA<br />
* CERT.SF<br />
* MANIFEST.MF<br />
* __binary_firmware_file__<br />
* boot.img<br />
* bp.img<br />
* mbm.img<br />
* cdt.bin<br />
* lbl.bin<br />
* logo.bin<br />
* install-recovery.sh<br />
* recovery-from-boot.p<br />
* updater-script<br />
* mtd.cfg<br />
<br />
CERT.SF - contain sha1 digest of all files in update.zip<br />
<br />
CERT.RSA - certificate ASN1.DER ( parsed struct http://pastebin.ca/1849789 ). It parsed by command "openssl asn1parse -inform DER -in CERT.RSA"<br />
<br />
If any files unneeded in update - update.zip does not include this file.<br />
This is a sample OTA update package(SHOLS_U2_01.03.1_to_SHOLS_U2_01.14.0_REQ563): [http://www.xvilka.org/update.zip update.zip]<br />
<br />
== Retail SBF Files ==<br />
<br />
=== Updates ===<br />
<br />
03/08/2010: Added Milestone XT720 firmware for South-East Asia (STR_U2_01.18.2)<br />
28/07/2010: Added Blur_Version.0.18.4.ME511.ChinaRetail.en.CN and bootloader for ME511<br />
24/07/2010: Added STR_U2_01.18.2 (Singapore) for XT720<br />
23/07/2010: Added SHOLS_U2_02.38.0 (Italy)<br />
21/07/2010: Added SHOLS_U2_02.36.0 (DACH, O2 DE, VF DE)<br />
16/07/2010: Added XT800 firmwares and Droid X bootloaders<br />
11/07/2010: Added Thai 02.36.0 firmware<br />
10/07/2010: Added bootloader 90.78ch and new XT702 firmware<br />
05/07/2010: Added SHOLS_U2_02.36.0 (Starhub SG)<br />
01/07/2010: Added SHOLS_U2_02.36.0 (Central Europe, Southeast Asia)<br />
21/06/2010: Added SHOLS_U2_02.27.6 (Israel)<br />
09/06/2010: Corrected - XT701 firmwares are Taiwan.<br />
09/06/2010: Corrected - XT701 firmwares are not signed.<br />
06/06/2010: Added XT701 new 2.1 Taiwan firmware and bootloader 80.99<br />
31/05/2010: Added XT701 new 2.1 firmware and bootloader 80.98<br />
26/05/2010: Added SHOLS_U2_02.34.3 (Hong Kong / Maccau); SHLA_U2_03.05.0 (TIM Brasil, Service Version only)<br />
26/05/2010: Initial creation.<br />
<br />
=== Downloads ===<br />
* [http://sbf-developers.com SBF On Droid-Developers]<br />
<br />
== Custom SBF Files ==<br />
<br />
=== Vulnerable Recovery SBF Flash ===<br />
<br />
This SBF file will flash only the vulnerable recovery from 2.0.1 without modifying other partitions.<br />
* Download (Milestone): [http://www.mediafire.com/?jzzjmmrvwkz MediaFire]<br />
* Download (XT800): [http://droid-developers.org/files/uploads//XT800-vulnerable-recovery.rar Droid-Developers]<br />
<br />
=== 2.1 kernel fix of scheduled CPU wake-ups ===<br />
<br />
This SBF file will flash only the boot.img (kernel+init) from SHOLS_U2_03.10.0: [http://www.mediafire.com/?mlyneqhk1zl mediafire], [http://rapidshare.com/files/378277372/2.1-03.10.0-kernel-only.rar.html rapidshare]</div>Skrilax CZhttp://droid-developers.org/wiki/SBFSBF2011-12-03T22:14:55Z<p>Skrilax CZ: /* SBF-Recalc */</p>
<hr />
<div>{| align="right"<br />
| __TOC__<br />
|}<br />
== SBF ==<br />
<br />
SBF seems to stand for Single Binary File, containing the firmware image. None of the SBFs contain a subsidy lock and flashing a SBF will not unlock the phone. These files could be flashed into the milestone via [[rsd_lite|RSD Lite]] Interface. The updates of this page can be seen above the download page links.<br />
<br />
The device should be put into [[bootloader_mode|Bootloader Mode]] and then attached via USB to the PC. After the PC recognizes the phone, you could use [[rsd_lite]] for flashing the SBF to your Milestone.<br />
<br />
== SBF / MBN Depacker ==<br />
The latest version (1.2 ALPHA 3) is availabe for .NET 3.5 here ((see http://www.modmymoto.com/forums/showthread.php?t=530781 for post by author)): http://rapidshare.com/files/386624716/MotoAndroidDepacker-1.2alpha3.rar.html<br />
<br />
Supports repacking for the Milestone SBF, including the checksum recalculation.<br />
<br />
== Comments ==<br />
<br />
Flashing the "Service" version will not wipe userdata partition. Looking on the flex version (ro.gsm.flexversion): B1B8 is for WCDMA 900 / 2100 and B1B2B5 is for WCDMA 850 / 1900 / 2100, some firmwares doesn't have that string in the flex version, so it cannot be determined from that (All Latin American firmwares and Retail Thai are WCDMA 850 / 1900 / 2100).<br />
<br />
Flashing an SBF file from a different country could cause problems with cellular communications. For example, some people have applied the HK SBF in Europe and in Latin America and their phones stopped working with 3G (due to different frequencies, presumably).<br />
<br />
Here's an attempt to parse the firmware filename structure with an informal shell/re syntax:<br />
<pre><br />
${ro.build.id}_${ro.gsm.flexversion}_${ro.build.config.version#3}_${ro.build.config.version#4}_A[0-9][0-9][0-9]_HWp2a_{Service|}1FF.sbf<br />
</pre><br />
<br />
== RSD web service ==<br />
<br />
Officially distributed builds are exposed by a public web service at ''https://rsd.motorola.com/cs/servlets/SRPConsumerServlet'' used by Motorola's end-user update tool. Motorola's internal service tool use a similar service at ''https://rsd.motorola.com/cs/servlets/SRPServlet'', but it appears to be restricted to authorized sessions.<br />
<pre><br />
<code xml Request><br />
<?xml version="1.0" encoding="UTF-8" standalone="no"?><br />
<soap-env:Envelope xmlns:soap-env="http://schemas.xmlsoap.org/soap/envelope/"><br />
<soap-env:Body><br />
<srpmessage><br />
<srpoperation><br />
<fungrp></fungrp><br />
<opcode></opcode><br />
<parameterlist><br />
<parameter><name></name></value></parameter><br />
</parameterlist><br />
</srpoperation><br />
</srpmessage><br />
</soap-env:Body><br />
</soap-env:Envelope><br />
</code><br />
</pre><br />
<br />
===Known functions===<br />
<br />
{| border="1" cellpadding="5" cellspacing="0"<br />
!style="background: #DEE7EC;"| Function<br />
!style="background: #DEE7EC;"| fungrp<br />
!style="background: #DEE7EC;"| opcode<br />
!style="background: #DEE7EC;"| Parameter name<br />
!style="background: #DEE7EC;"| Parameter value<br />
|-<br />
| MSU version check<br />
| 02<br />
| 01<br />
| consumerclientversion<br />
| Version string, e.g. ''C01.11.79''<br />
|-<br />
|rowspan="2" colspan="3"|<br />
| Use_case_set<br />
| ''Inapplicable''<br />
|-<br />
| countrycode<br />
| Three-letter code<br />
|-<br />
| USB driver version check<br />
| 02<br />
| 05<br />
| hardware<br />
| 00<br />
|-<br />
|rowspan="2" colspan="3"|<br />
| OS<br />
| Four-digit MS Windows version, e.g. ''0601'' for Win7<br />
|-<br />
| driverversion<br />
| Version string, e.g. ''DD04.05.00''<br />
|-<br />
| Warranty status<br />
| 07<br />
| 13<br />
| serialnumbertype<br />
| IMEI<br />
|-<br />
|colspan="3"|<br />
| serialnumber<br />
| IMEI string<br />
|-<br />
| Firmware version check<br />
| 10<br />
| 01<br />
| flex<br />
| ro.gsm.flexversion<br />
|-<br />
|rowspan="13" colspan="3"|<br />
| firmware<br />
| ro.build.id+gsm.version.baseband<br />
|-<br />
| apversion<br />
| ro.build.id+gsm.version.baseband<br />
|-<br />
| apsetup<br />
| ''Inapplicable''<br />
|-<br />
| apresourceflex<br />
| ''Inapplicable''<br />
|-<br />
| aplogo<br />
| ''Inapplicable''<br />
|-<br />
| apsecuresetup<br />
| ''Inapplicable''<br />
|-<br />
| rofs<br />
| ''Inapplicable''<br />
|-<br />
| rofsextension<br />
| ''Inapplicable''<br />
|-<br />
| apflex<br />
| ro.build.config.version<br />
|-<br />
| bootloader<br />
| Four-digit version, eg. ''9073''<br />
|-<br />
| lang<br />
| ''Inapplicable''<br />
|-<br />
| kjava<br />
| ''Inapplicable''<br />
|-<br />
| pri<br />
| ''Inapplicable''<br />
|}<br />
<br />
The only parameter required for firmware version checks is ''flex''. The service will only respond successfully if the query is unambiguous and matched phone model is cleared for user upgrades. (see ''Known return codes'')<br />
<br />
===Known return codes===<br />
<br />
{| border="1" cellpadding="5" cellspacing="0"<br />
!style="background: #DEE7EC;"| fungrp<br />
!style="background: #DEE7EC;"| opcode<br />
!style="background: #DEE7EC;"| operation status<br />
!style="background: #DEE7EC;"| Returned message<br />
!style="background: #DEE7EC;"| Comment<br />
|-<br />
| 06<br />
| 50<br />
| 00<br />
| success<br />
| Update URL to .sbf included in return xml scheme<br />
|-<br />
| 06<br />
| 50<br />
| 01<br />
| Cannot ID the phone as the flex is blank.<br />
|<br />
|-<br />
| 06<br />
| 50<br />
| 02<br />
| No Phone found with the given phone parameters<br />
|<br />
|-<br />
| 06<br />
| 50<br />
| 03<br />
| Multiples phones found with the same configuration.<br />
| This needs to be investigated, since the rsd servers reply this when the supplied date are not unique. For example for a brazilian Milestone with flex version ''USASHLSRETBRLA02C.0R'' (Vivo). Trying to fetch .sbf files from the servers for the DroidX shows the same results. (Note - for NA queries, you must always supply firmware version along the flex, otherwise you get the ''Multiples phones found with the same configuration.'' as result, even if the flex version is invalid (like just ''NA'').)<br />
|}<br />
<br />
===Example queries===<br />
<br />
'''GB Retail (SM1658AXXB1)'''<br />
$ curl -H 'Content-Type: text/xml' -d '<?xml version="1.0" encoding="UTF-8"?><br />
<soap-env:Envelope xmlns:soap-env="http://schemas.xmlsoap.org/soap/envelope/"><br />
<soap-env:Body><srpmessage><srpoperation><fungrp>10</fungrp><opcode>01</opcode><parameterlist><br />
<parameter><name>flex</name><value>UCASHLSEMEAB1B803F.0R</value></parameter><br />
<parameter><name>apflex</name><value>GAS_EMEA_USASHLS00RTGB_P008</value></parameter><br />
</parameterlist></srpoperation></srpmessage></soap-env:Body></soap-env:Envelope>' \<br />
https://rsd.motorola.com/cs/servlets/SRPConsumerServlet<br />
<br />
'''CA Telus (81130CHEPA)'''<br />
$ curl -H 'Content-Type: text/xml' -d '<?xml version="1.0" encoding="UTF-8"?><br />
<soap-env:Envelope xmlns:soap-env="http://schemas.xmlsoap.org/soap/envelope/"><br />
<soap-env:Body><srpmessage><srpoperation><fungrp>10</fungrp><opcode>01</opcode><parameterlist><br />
<parameter><name>flex</name><value>USASHLSTLSB1B2B5051.0R</value></parameter><br />
</parameterlist></srpoperation></srpmessage></soap-env:Body></soap-env:Envelope>' \<br />
https://rsd.motorola.com/cs/servlets/SRPConsumerServlet<br />
<br />
==OTA updates==<br />
<br />
Just downloaded on phone in /cache/fota/update.zip<br />
and have this structure:<br />
<br />
* CERT.RSA<br />
* CERT.SF<br />
* MANIFEST.MF<br />
* __binary_firmware_file__<br />
* boot.img<br />
* bp.img<br />
* mbm.img<br />
* cdt.bin<br />
* lbl.bin<br />
* logo.bin<br />
* install-recovery.sh<br />
* recovery-from-boot.p<br />
* updater-script<br />
* mtd.cfg<br />
<br />
CERT.SF - contain sha1 digest of all files in update.zip<br />
<br />
CERT.RSA - certificate ASN1.DER ( parsed struct http://pastebin.ca/1849789 ). It parsed by command "openssl asn1parse -inform DER -in CERT.RSA"<br />
<br />
If any files unneeded in update - update.zip does not include this file.<br />
This is a sample OTA update package(SHOLS_U2_01.03.1_to_SHOLS_U2_01.14.0_REQ563): [http://www.xvilka.org/update.zip update.zip]<br />
<br />
== Retail SBF Files ==<br />
<br />
=== Updates ===<br />
<br />
03/08/2010: Added Milestone XT720 firmware for South-East Asia (STR_U2_01.18.2)<br />
28/07/2010: Added Blur_Version.0.18.4.ME511.ChinaRetail.en.CN and bootloader for ME511<br />
24/07/2010: Added STR_U2_01.18.2 (Singapore) for XT720<br />
23/07/2010: Added SHOLS_U2_02.38.0 (Italy)<br />
21/07/2010: Added SHOLS_U2_02.36.0 (DACH, O2 DE, VF DE)<br />
16/07/2010: Added XT800 firmwares and Droid X bootloaders<br />
11/07/2010: Added Thai 02.36.0 firmware<br />
10/07/2010: Added bootloader 90.78ch and new XT702 firmware<br />
05/07/2010: Added SHOLS_U2_02.36.0 (Starhub SG)<br />
01/07/2010: Added SHOLS_U2_02.36.0 (Central Europe, Southeast Asia)<br />
21/06/2010: Added SHOLS_U2_02.27.6 (Israel)<br />
09/06/2010: Corrected - XT701 firmwares are Taiwan.<br />
09/06/2010: Corrected - XT701 firmwares are not signed.<br />
06/06/2010: Added XT701 new 2.1 Taiwan firmware and bootloader 80.99<br />
31/05/2010: Added XT701 new 2.1 firmware and bootloader 80.98<br />
26/05/2010: Added SHOLS_U2_02.34.3 (Hong Kong / Maccau); SHLA_U2_03.05.0 (TIM Brasil, Service Version only)<br />
26/05/2010: Initial creation.<br />
<br />
=== Downloads ===<br />
* [http://sbf-developers.com SBF On Droid-Developers]<br />
<br />
== Custom SBF Files ==<br />
<br />
=== Vulnerable Recovery SBF Flash ===<br />
<br />
This SBF file will flash only the vulnerable recovery from 2.0.1 without modifying other partitions.<br />
* Download (Milestone): [http://www.mediafire.com/?jzzjmmrvwkz MediaFire]<br />
* Download (XT800): [http://droid-developers.org/files/uploads//XT800-vulnerable-recovery.rar Droid-Developers]<br />
<br />
=== 2.1 kernel fix of scheduled CPU wake-ups ===<br />
<br />
This SBF file will flash only the boot.img (kernel+init) from SHOLS_U2_03.10.0: [http://www.mediafire.com/?mlyneqhk1zl mediafire], [http://rapidshare.com/files/378277372/2.1-03.10.0-kernel-only.rar.html rapidshare]</div>Skrilax CZhttp://droid-developers.org/wiki/SBFSBF2011-12-03T22:12:32Z<p>Skrilax CZ: /* Downloads */</p>
<hr />
<div>{| align="right"<br />
| __TOC__<br />
|}<br />
== SBF ==<br />
<br />
SBF seems to stand for Single Binary File, containing the firmware image. None of the SBFs contain a subsidy lock and flashing a SBF will not unlock the phone. These files could be flashed into the milestone via [[rsd_lite|RSD Lite]] Interface. The updates of this page can be seen above the download page links.<br />
<br />
The device should be put into [[bootloader_mode|Bootloader Mode]] and then attached via USB to the PC. After the PC recognizes the phone, you could use [[rsd_lite]] for flashing the SBF to your Milestone.<br />
<br />
== SBF-Recalc ==<br />
The latest SBF-Recalc (1.2.9.1) is available for windows here ((see http://modmymoto.com/forums/showthread.php?t=525344 for the original post by its author and for Linux/OS X versions)): http://www.megaupload.com/?d=Y8RDIZGA<br />
<br />
Previous version 1.2.9 for windows and OS X: http://www.megaupload.com/?d=7J9EOZT0<br />
<br />
Previous version 1.2.9 for Linux ((According to the developer you need libstdc++5 for the linux version)): http://www.megaupload.com/?d=03M0GM36<br />
<br />
'''Note:''' Everything works except checksums recalculating. RSD Lite prints the correct ones in its log though, so the SBF file can be edited by hand to use those CRC codes if really needed (by tryout & error).<br />
<br />
== SBF / MBN Depacker ==<br />
The latest version (1.2 ALPHA 3) is availabe for .NET 3.5 here ((see http://www.modmymoto.com/forums/showthread.php?t=530781 for post by author)): http://rapidshare.com/files/386624716/MotoAndroidDepacker-1.2alpha3.rar.html<br />
<br />
Supports repacking for the Milestone SBF, including the checksum recalculation.<br />
<br />
== Comments ==<br />
<br />
Flashing the "Service" version will not wipe userdata partition. Looking on the flex version (ro.gsm.flexversion): B1B8 is for WCDMA 900 / 2100 and B1B2B5 is for WCDMA 850 / 1900 / 2100, some firmwares doesn't have that string in the flex version, so it cannot be determined from that (All Latin American firmwares and Retail Thai are WCDMA 850 / 1900 / 2100).<br />
<br />
Flashing an SBF file from a different country could cause problems with cellular communications. For example, some people have applied the HK SBF in Europe and in Latin America and their phones stopped working with 3G (due to different frequencies, presumably).<br />
<br />
Here's an attempt to parse the firmware filename structure with an informal shell/re syntax:<br />
<pre><br />
${ro.build.id}_${ro.gsm.flexversion}_${ro.build.config.version#3}_${ro.build.config.version#4}_A[0-9][0-9][0-9]_HWp2a_{Service|}1FF.sbf<br />
</pre><br />
<br />
== RSD web service ==<br />
<br />
Officially distributed builds are exposed by a public web service at ''https://rsd.motorola.com/cs/servlets/SRPConsumerServlet'' used by Motorola's end-user update tool. Motorola's internal service tool use a similar service at ''https://rsd.motorola.com/cs/servlets/SRPServlet'', but it appears to be restricted to authorized sessions.<br />
<pre><br />
<code xml Request><br />
<?xml version="1.0" encoding="UTF-8" standalone="no"?><br />
<soap-env:Envelope xmlns:soap-env="http://schemas.xmlsoap.org/soap/envelope/"><br />
<soap-env:Body><br />
<srpmessage><br />
<srpoperation><br />
<fungrp></fungrp><br />
<opcode></opcode><br />
<parameterlist><br />
<parameter><name></name></value></parameter><br />
</parameterlist><br />
</srpoperation><br />
</srpmessage><br />
</soap-env:Body><br />
</soap-env:Envelope><br />
</code><br />
</pre><br />
<br />
===Known functions===<br />
<br />
{| border="1" cellpadding="5" cellspacing="0"<br />
!style="background: #DEE7EC;"| Function<br />
!style="background: #DEE7EC;"| fungrp<br />
!style="background: #DEE7EC;"| opcode<br />
!style="background: #DEE7EC;"| Parameter name<br />
!style="background: #DEE7EC;"| Parameter value<br />
|-<br />
| MSU version check<br />
| 02<br />
| 01<br />
| consumerclientversion<br />
| Version string, e.g. ''C01.11.79''<br />
|-<br />
|rowspan="2" colspan="3"|<br />
| Use_case_set<br />
| ''Inapplicable''<br />
|-<br />
| countrycode<br />
| Three-letter code<br />
|-<br />
| USB driver version check<br />
| 02<br />
| 05<br />
| hardware<br />
| 00<br />
|-<br />
|rowspan="2" colspan="3"|<br />
| OS<br />
| Four-digit MS Windows version, e.g. ''0601'' for Win7<br />
|-<br />
| driverversion<br />
| Version string, e.g. ''DD04.05.00''<br />
|-<br />
| Warranty status<br />
| 07<br />
| 13<br />
| serialnumbertype<br />
| IMEI<br />
|-<br />
|colspan="3"|<br />
| serialnumber<br />
| IMEI string<br />
|-<br />
| Firmware version check<br />
| 10<br />
| 01<br />
| flex<br />
| ro.gsm.flexversion<br />
|-<br />
|rowspan="13" colspan="3"|<br />
| firmware<br />
| ro.build.id+gsm.version.baseband<br />
|-<br />
| apversion<br />
| ro.build.id+gsm.version.baseband<br />
|-<br />
| apsetup<br />
| ''Inapplicable''<br />
|-<br />
| apresourceflex<br />
| ''Inapplicable''<br />
|-<br />
| aplogo<br />
| ''Inapplicable''<br />
|-<br />
| apsecuresetup<br />
| ''Inapplicable''<br />
|-<br />
| rofs<br />
| ''Inapplicable''<br />
|-<br />
| rofsextension<br />
| ''Inapplicable''<br />
|-<br />
| apflex<br />
| ro.build.config.version<br />
|-<br />
| bootloader<br />
| Four-digit version, eg. ''9073''<br />
|-<br />
| lang<br />
| ''Inapplicable''<br />
|-<br />
| kjava<br />
| ''Inapplicable''<br />
|-<br />
| pri<br />
| ''Inapplicable''<br />
|}<br />
<br />
The only parameter required for firmware version checks is ''flex''. The service will only respond successfully if the query is unambiguous and matched phone model is cleared for user upgrades. (see ''Known return codes'')<br />
<br />
===Known return codes===<br />
<br />
{| border="1" cellpadding="5" cellspacing="0"<br />
!style="background: #DEE7EC;"| fungrp<br />
!style="background: #DEE7EC;"| opcode<br />
!style="background: #DEE7EC;"| operation status<br />
!style="background: #DEE7EC;"| Returned message<br />
!style="background: #DEE7EC;"| Comment<br />
|-<br />
| 06<br />
| 50<br />
| 00<br />
| success<br />
| Update URL to .sbf included in return xml scheme<br />
|-<br />
| 06<br />
| 50<br />
| 01<br />
| Cannot ID the phone as the flex is blank.<br />
|<br />
|-<br />
| 06<br />
| 50<br />
| 02<br />
| No Phone found with the given phone parameters<br />
|<br />
|-<br />
| 06<br />
| 50<br />
| 03<br />
| Multiples phones found with the same configuration.<br />
| This needs to be investigated, since the rsd servers reply this when the supplied date are not unique. For example for a brazilian Milestone with flex version ''USASHLSRETBRLA02C.0R'' (Vivo). Trying to fetch .sbf files from the servers for the DroidX shows the same results. (Note - for NA queries, you must always supply firmware version along the flex, otherwise you get the ''Multiples phones found with the same configuration.'' as result, even if the flex version is invalid (like just ''NA'').)<br />
|}<br />
<br />
===Example queries===<br />
<br />
'''GB Retail (SM1658AXXB1)'''<br />
$ curl -H 'Content-Type: text/xml' -d '<?xml version="1.0" encoding="UTF-8"?><br />
<soap-env:Envelope xmlns:soap-env="http://schemas.xmlsoap.org/soap/envelope/"><br />
<soap-env:Body><srpmessage><srpoperation><fungrp>10</fungrp><opcode>01</opcode><parameterlist><br />
<parameter><name>flex</name><value>UCASHLSEMEAB1B803F.0R</value></parameter><br />
<parameter><name>apflex</name><value>GAS_EMEA_USASHLS00RTGB_P008</value></parameter><br />
</parameterlist></srpoperation></srpmessage></soap-env:Body></soap-env:Envelope>' \<br />
https://rsd.motorola.com/cs/servlets/SRPConsumerServlet<br />
<br />
'''CA Telus (81130CHEPA)'''<br />
$ curl -H 'Content-Type: text/xml' -d '<?xml version="1.0" encoding="UTF-8"?><br />
<soap-env:Envelope xmlns:soap-env="http://schemas.xmlsoap.org/soap/envelope/"><br />
<soap-env:Body><srpmessage><srpoperation><fungrp>10</fungrp><opcode>01</opcode><parameterlist><br />
<parameter><name>flex</name><value>USASHLSTLSB1B2B5051.0R</value></parameter><br />
</parameterlist></srpoperation></srpmessage></soap-env:Body></soap-env:Envelope>' \<br />
https://rsd.motorola.com/cs/servlets/SRPConsumerServlet<br />
<br />
==OTA updates==<br />
<br />
Just downloaded on phone in /cache/fota/update.zip<br />
and have this structure:<br />
<br />
* CERT.RSA<br />
* CERT.SF<br />
* MANIFEST.MF<br />
* __binary_firmware_file__<br />
* boot.img<br />
* bp.img<br />
* mbm.img<br />
* cdt.bin<br />
* lbl.bin<br />
* logo.bin<br />
* install-recovery.sh<br />
* recovery-from-boot.p<br />
* updater-script<br />
* mtd.cfg<br />
<br />
CERT.SF - contain sha1 digest of all files in update.zip<br />
<br />
CERT.RSA - certificate ASN1.DER ( parsed struct http://pastebin.ca/1849789 ). It parsed by command "openssl asn1parse -inform DER -in CERT.RSA"<br />
<br />
If any files unneeded in update - update.zip does not include this file.<br />
This is a sample OTA update package(SHOLS_U2_01.03.1_to_SHOLS_U2_01.14.0_REQ563): [http://www.xvilka.org/update.zip update.zip]<br />
<br />
== Retail SBF Files ==<br />
<br />
=== Updates ===<br />
<br />
03/08/2010: Added Milestone XT720 firmware for South-East Asia (STR_U2_01.18.2)<br />
28/07/2010: Added Blur_Version.0.18.4.ME511.ChinaRetail.en.CN and bootloader for ME511<br />
24/07/2010: Added STR_U2_01.18.2 (Singapore) for XT720<br />
23/07/2010: Added SHOLS_U2_02.38.0 (Italy)<br />
21/07/2010: Added SHOLS_U2_02.36.0 (DACH, O2 DE, VF DE)<br />
16/07/2010: Added XT800 firmwares and Droid X bootloaders<br />
11/07/2010: Added Thai 02.36.0 firmware<br />
10/07/2010: Added bootloader 90.78ch and new XT702 firmware<br />
05/07/2010: Added SHOLS_U2_02.36.0 (Starhub SG)<br />
01/07/2010: Added SHOLS_U2_02.36.0 (Central Europe, Southeast Asia)<br />
21/06/2010: Added SHOLS_U2_02.27.6 (Israel)<br />
09/06/2010: Corrected - XT701 firmwares are Taiwan.<br />
09/06/2010: Corrected - XT701 firmwares are not signed.<br />
06/06/2010: Added XT701 new 2.1 Taiwan firmware and bootloader 80.99<br />
31/05/2010: Added XT701 new 2.1 firmware and bootloader 80.98<br />
26/05/2010: Added SHOLS_U2_02.34.3 (Hong Kong / Maccau); SHLA_U2_03.05.0 (TIM Brasil, Service Version only)<br />
26/05/2010: Initial creation.<br />
<br />
=== Downloads ===<br />
* [http://sbf-developers.com SBF On Droid-Developers]<br />
<br />
== Custom SBF Files ==<br />
<br />
=== Vulnerable Recovery SBF Flash ===<br />
<br />
This SBF file will flash only the vulnerable recovery from 2.0.1 without modifying other partitions.<br />
* Download (Milestone): [http://www.mediafire.com/?jzzjmmrvwkz MediaFire]<br />
* Download (XT800): [http://droid-developers.org/files/uploads//XT800-vulnerable-recovery.rar Droid-Developers]<br />
<br />
=== 2.1 kernel fix of scheduled CPU wake-ups ===<br />
<br />
This SBF file will flash only the boot.img (kernel+init) from SHOLS_U2_03.10.0: [http://www.mediafire.com/?mlyneqhk1zl mediafire], [http://rapidshare.com/files/378277372/2.1-03.10.0-kernel-only.rar.html rapidshare]</div>Skrilax CZhttp://droid-developers.org/wiki/SBFSBF2011-12-03T22:12:08Z<p>Skrilax CZ: /* Downloads */</p>
<hr />
<div>{| align="right"<br />
| __TOC__<br />
|}<br />
== SBF ==<br />
<br />
SBF seems to stand for Single Binary File, containing the firmware image. None of the SBFs contain a subsidy lock and flashing a SBF will not unlock the phone. These files could be flashed into the milestone via [[rsd_lite|RSD Lite]] Interface. The updates of this page can be seen above the download page links.<br />
<br />
The device should be put into [[bootloader_mode|Bootloader Mode]] and then attached via USB to the PC. After the PC recognizes the phone, you could use [[rsd_lite]] for flashing the SBF to your Milestone.<br />
<br />
== SBF-Recalc ==<br />
The latest SBF-Recalc (1.2.9.1) is available for windows here ((see http://modmymoto.com/forums/showthread.php?t=525344 for the original post by its author and for Linux/OS X versions)): http://www.megaupload.com/?d=Y8RDIZGA<br />
<br />
Previous version 1.2.9 for windows and OS X: http://www.megaupload.com/?d=7J9EOZT0<br />
<br />
Previous version 1.2.9 for Linux ((According to the developer you need libstdc++5 for the linux version)): http://www.megaupload.com/?d=03M0GM36<br />
<br />
'''Note:''' Everything works except checksums recalculating. RSD Lite prints the correct ones in its log though, so the SBF file can be edited by hand to use those CRC codes if really needed (by tryout & error).<br />
<br />
== SBF / MBN Depacker ==<br />
The latest version (1.2 ALPHA 3) is availabe for .NET 3.5 here ((see http://www.modmymoto.com/forums/showthread.php?t=530781 for post by author)): http://rapidshare.com/files/386624716/MotoAndroidDepacker-1.2alpha3.rar.html<br />
<br />
Supports repacking for the Milestone SBF, including the checksum recalculation.<br />
<br />
== Comments ==<br />
<br />
Flashing the "Service" version will not wipe userdata partition. Looking on the flex version (ro.gsm.flexversion): B1B8 is for WCDMA 900 / 2100 and B1B2B5 is for WCDMA 850 / 1900 / 2100, some firmwares doesn't have that string in the flex version, so it cannot be determined from that (All Latin American firmwares and Retail Thai are WCDMA 850 / 1900 / 2100).<br />
<br />
Flashing an SBF file from a different country could cause problems with cellular communications. For example, some people have applied the HK SBF in Europe and in Latin America and their phones stopped working with 3G (due to different frequencies, presumably).<br />
<br />
Here's an attempt to parse the firmware filename structure with an informal shell/re syntax:<br />
<pre><br />
${ro.build.id}_${ro.gsm.flexversion}_${ro.build.config.version#3}_${ro.build.config.version#4}_A[0-9][0-9][0-9]_HWp2a_{Service|}1FF.sbf<br />
</pre><br />
<br />
== RSD web service ==<br />
<br />
Officially distributed builds are exposed by a public web service at ''https://rsd.motorola.com/cs/servlets/SRPConsumerServlet'' used by Motorola's end-user update tool. Motorola's internal service tool use a similar service at ''https://rsd.motorola.com/cs/servlets/SRPServlet'', but it appears to be restricted to authorized sessions.<br />
<pre><br />
<code xml Request><br />
<?xml version="1.0" encoding="UTF-8" standalone="no"?><br />
<soap-env:Envelope xmlns:soap-env="http://schemas.xmlsoap.org/soap/envelope/"><br />
<soap-env:Body><br />
<srpmessage><br />
<srpoperation><br />
<fungrp></fungrp><br />
<opcode></opcode><br />
<parameterlist><br />
<parameter><name></name></value></parameter><br />
</parameterlist><br />
</srpoperation><br />
</srpmessage><br />
</soap-env:Body><br />
</soap-env:Envelope><br />
</code><br />
</pre><br />
<br />
===Known functions===<br />
<br />
{| border="1" cellpadding="5" cellspacing="0"<br />
!style="background: #DEE7EC;"| Function<br />
!style="background: #DEE7EC;"| fungrp<br />
!style="background: #DEE7EC;"| opcode<br />
!style="background: #DEE7EC;"| Parameter name<br />
!style="background: #DEE7EC;"| Parameter value<br />
|-<br />
| MSU version check<br />
| 02<br />
| 01<br />
| consumerclientversion<br />
| Version string, e.g. ''C01.11.79''<br />
|-<br />
|rowspan="2" colspan="3"|<br />
| Use_case_set<br />
| ''Inapplicable''<br />
|-<br />
| countrycode<br />
| Three-letter code<br />
|-<br />
| USB driver version check<br />
| 02<br />
| 05<br />
| hardware<br />
| 00<br />
|-<br />
|rowspan="2" colspan="3"|<br />
| OS<br />
| Four-digit MS Windows version, e.g. ''0601'' for Win7<br />
|-<br />
| driverversion<br />
| Version string, e.g. ''DD04.05.00''<br />
|-<br />
| Warranty status<br />
| 07<br />
| 13<br />
| serialnumbertype<br />
| IMEI<br />
|-<br />
|colspan="3"|<br />
| serialnumber<br />
| IMEI string<br />
|-<br />
| Firmware version check<br />
| 10<br />
| 01<br />
| flex<br />
| ro.gsm.flexversion<br />
|-<br />
|rowspan="13" colspan="3"|<br />
| firmware<br />
| ro.build.id+gsm.version.baseband<br />
|-<br />
| apversion<br />
| ro.build.id+gsm.version.baseband<br />
|-<br />
| apsetup<br />
| ''Inapplicable''<br />
|-<br />
| apresourceflex<br />
| ''Inapplicable''<br />
|-<br />
| aplogo<br />
| ''Inapplicable''<br />
|-<br />
| apsecuresetup<br />
| ''Inapplicable''<br />
|-<br />
| rofs<br />
| ''Inapplicable''<br />
|-<br />
| rofsextension<br />
| ''Inapplicable''<br />
|-<br />
| apflex<br />
| ro.build.config.version<br />
|-<br />
| bootloader<br />
| Four-digit version, eg. ''9073''<br />
|-<br />
| lang<br />
| ''Inapplicable''<br />
|-<br />
| kjava<br />
| ''Inapplicable''<br />
|-<br />
| pri<br />
| ''Inapplicable''<br />
|}<br />
<br />
The only parameter required for firmware version checks is ''flex''. The service will only respond successfully if the query is unambiguous and matched phone model is cleared for user upgrades. (see ''Known return codes'')<br />
<br />
===Known return codes===<br />
<br />
{| border="1" cellpadding="5" cellspacing="0"<br />
!style="background: #DEE7EC;"| fungrp<br />
!style="background: #DEE7EC;"| opcode<br />
!style="background: #DEE7EC;"| operation status<br />
!style="background: #DEE7EC;"| Returned message<br />
!style="background: #DEE7EC;"| Comment<br />
|-<br />
| 06<br />
| 50<br />
| 00<br />
| success<br />
| Update URL to .sbf included in return xml scheme<br />
|-<br />
| 06<br />
| 50<br />
| 01<br />
| Cannot ID the phone as the flex is blank.<br />
|<br />
|-<br />
| 06<br />
| 50<br />
| 02<br />
| No Phone found with the given phone parameters<br />
|<br />
|-<br />
| 06<br />
| 50<br />
| 03<br />
| Multiples phones found with the same configuration.<br />
| This needs to be investigated, since the rsd servers reply this when the supplied date are not unique. For example for a brazilian Milestone with flex version ''USASHLSRETBRLA02C.0R'' (Vivo). Trying to fetch .sbf files from the servers for the DroidX shows the same results. (Note - for NA queries, you must always supply firmware version along the flex, otherwise you get the ''Multiples phones found with the same configuration.'' as result, even if the flex version is invalid (like just ''NA'').)<br />
|}<br />
<br />
===Example queries===<br />
<br />
'''GB Retail (SM1658AXXB1)'''<br />
$ curl -H 'Content-Type: text/xml' -d '<?xml version="1.0" encoding="UTF-8"?><br />
<soap-env:Envelope xmlns:soap-env="http://schemas.xmlsoap.org/soap/envelope/"><br />
<soap-env:Body><srpmessage><srpoperation><fungrp>10</fungrp><opcode>01</opcode><parameterlist><br />
<parameter><name>flex</name><value>UCASHLSEMEAB1B803F.0R</value></parameter><br />
<parameter><name>apflex</name><value>GAS_EMEA_USASHLS00RTGB_P008</value></parameter><br />
</parameterlist></srpoperation></srpmessage></soap-env:Body></soap-env:Envelope>' \<br />
https://rsd.motorola.com/cs/servlets/SRPConsumerServlet<br />
<br />
'''CA Telus (81130CHEPA)'''<br />
$ curl -H 'Content-Type: text/xml' -d '<?xml version="1.0" encoding="UTF-8"?><br />
<soap-env:Envelope xmlns:soap-env="http://schemas.xmlsoap.org/soap/envelope/"><br />
<soap-env:Body><srpmessage><srpoperation><fungrp>10</fungrp><opcode>01</opcode><parameterlist><br />
<parameter><name>flex</name><value>USASHLSTLSB1B2B5051.0R</value></parameter><br />
</parameterlist></srpoperation></srpmessage></soap-env:Body></soap-env:Envelope>' \<br />
https://rsd.motorola.com/cs/servlets/SRPConsumerServlet<br />
<br />
==OTA updates==<br />
<br />
Just downloaded on phone in /cache/fota/update.zip<br />
and have this structure:<br />
<br />
* CERT.RSA<br />
* CERT.SF<br />
* MANIFEST.MF<br />
* __binary_firmware_file__<br />
* boot.img<br />
* bp.img<br />
* mbm.img<br />
* cdt.bin<br />
* lbl.bin<br />
* logo.bin<br />
* install-recovery.sh<br />
* recovery-from-boot.p<br />
* updater-script<br />
* mtd.cfg<br />
<br />
CERT.SF - contain sha1 digest of all files in update.zip<br />
<br />
CERT.RSA - certificate ASN1.DER ( parsed struct http://pastebin.ca/1849789 ). It parsed by command "openssl asn1parse -inform DER -in CERT.RSA"<br />
<br />
If any files unneeded in update - update.zip does not include this file.<br />
This is a sample OTA update package(SHOLS_U2_01.03.1_to_SHOLS_U2_01.14.0_REQ563): [http://www.xvilka.org/update.zip update.zip]<br />
<br />
== Retail SBF Files ==<br />
<br />
=== Updates ===<br />
<br />
03/08/2010: Added Milestone XT720 firmware for South-East Asia (STR_U2_01.18.2)<br />
28/07/2010: Added Blur_Version.0.18.4.ME511.ChinaRetail.en.CN and bootloader for ME511<br />
24/07/2010: Added STR_U2_01.18.2 (Singapore) for XT720<br />
23/07/2010: Added SHOLS_U2_02.38.0 (Italy)<br />
21/07/2010: Added SHOLS_U2_02.36.0 (DACH, O2 DE, VF DE)<br />
16/07/2010: Added XT800 firmwares and Droid X bootloaders<br />
11/07/2010: Added Thai 02.36.0 firmware<br />
10/07/2010: Added bootloader 90.78ch and new XT702 firmware<br />
05/07/2010: Added SHOLS_U2_02.36.0 (Starhub SG)<br />
01/07/2010: Added SHOLS_U2_02.36.0 (Central Europe, Southeast Asia)<br />
21/06/2010: Added SHOLS_U2_02.27.6 (Israel)<br />
09/06/2010: Corrected - XT701 firmwares are Taiwan.<br />
09/06/2010: Corrected - XT701 firmwares are not signed.<br />
06/06/2010: Added XT701 new 2.1 Taiwan firmware and bootloader 80.99<br />
31/05/2010: Added XT701 new 2.1 firmware and bootloader 80.98<br />
26/05/2010: Added SHOLS_U2_02.34.3 (Hong Kong / Maccau); SHLA_U2_03.05.0 (TIM Brasil, Service Version only)<br />
26/05/2010: Initial creation.<br />
<br />
=== Downloads ===<br />
* [http://sbf-developers.com]<br />
<br />
== Custom SBF Files ==<br />
<br />
=== Vulnerable Recovery SBF Flash ===<br />
<br />
This SBF file will flash only the vulnerable recovery from 2.0.1 without modifying other partitions.<br />
* Download (Milestone): [http://www.mediafire.com/?jzzjmmrvwkz MediaFire]<br />
* Download (XT800): [http://droid-developers.org/files/uploads//XT800-vulnerable-recovery.rar Droid-Developers]<br />
<br />
=== 2.1 kernel fix of scheduled CPU wake-ups ===<br />
<br />
This SBF file will flash only the boot.img (kernel+init) from SHOLS_U2_03.10.0: [http://www.mediafire.com/?mlyneqhk1zl mediafire], [http://rapidshare.com/files/378277372/2.1-03.10.0-kernel-only.rar.html rapidshare]</div>Skrilax CZhttp://droid-developers.org/wiki/SBFSBF2011-03-21T16:55:36Z<p>Skrilax CZ: /* Known return codes */</p>
<hr />
<div>{| align="right"<br />
| __TOC__<br />
|}<br />
== SBF ==<br />
<br />
SBF seems to stand for Single Binary File, containing the firmware image. None of the SBFs contain a subsidy lock and flashing a SBF will not unlock the phone. These files could be flashed into the milestone via [[rsd_lite|RSD Lite]] Interface. The updates of this page can be seen above the download page links.<br />
<br />
The device should be put into [[bootloader_mode|Bootloader Mode]] and then attached via USB to the PC. After the PC recognizes the phone, you could use [[rsd_lite]] for flashing the SBF to your Milestone.<br />
<br />
== SBF-Recalc ==<br />
The latest SBF-Recalc (1.2.9.1) is available for windows here ((see http://modmymoto.com/forums/showthread.php?t=525344 for the original post by its author and for Linux/OS X versions)): http://www.megaupload.com/?d=Y8RDIZGA<br />
<br />
Previous version 1.2.9 for windows and OS X: http://www.megaupload.com/?d=7J9EOZT0<br />
<br />
Previous version 1.2.9 for Linux ((According to the developer you need libstdc++5 for the linux version)): http://www.megaupload.com/?d=03M0GM36<br />
<br />
'''Note:''' Everything works except checksums recalculating. RSD Lite prints the correct ones in its log though, so the SBF file can be edited by hand to use those CRC codes if really needed (by tryout & error).<br />
<br />
== SBF / MBN Depacker ==<br />
The latest version (1.2 ALPHA 3) is availabe for .NET 3.5 here ((see http://www.modmymoto.com/forums/showthread.php?t=530781 for post by author)): http://rapidshare.com/files/386624716/MotoAndroidDepacker-1.2alpha3.rar.html<br />
<br />
Supports repacking for the Milestone SBF, including the checksum recalculation.<br />
<br />
== Comments ==<br />
<br />
Flashing the "Service" version will not wipe userdata partition. Looking on the flex version (ro.gsm.flexversion): B1B8 is for WCDMA 900 / 2100 and B1B2B5 is for WCDMA 850 / 1900 / 2100, some firmwares doesn't have that string in the flex version, so it cannot be determined from that (All Latin American firmwares and Retail Thai are WCDMA 850 / 1900 / 2100).<br />
<br />
Flashing an SBF file from a different country could cause problems with cellular communications. For example, some people have applied the HK SBF in Europe and in Latin America and their phones stopped working with 3G (due to different frequencies, presumably).<br />
<br />
Here's an attempt to parse the firmware filename structure with an informal shell/re syntax:<br />
<pre><br />
${ro.build.id}_${ro.gsm.flexversion}_${ro.build.config.version#3}_${ro.build.config.version#4}_A[0-9][0-9][0-9]_HWp2a_{Service|}1FF.sbf<br />
</pre><br />
<br />
== RSD web service ==<br />
<br />
Officially distributed builds are exposed by a public web service at ''https://rsd.motorola.com/cs/servlets/SRPConsumerServlet'' used by Motorola's end-user update tool. Motorola's internal service tool use a similar service at ''https://rsd.motorola.com/cs/servlets/SRPServlet'', but it appears to be restricted to authorized sessions.<br />
<pre><br />
<code xml Request><br />
<?xml version="1.0" encoding="UTF-8" standalone="no"?><br />
<soap-env:Envelope xmlns:soap-env="http://schemas.xmlsoap.org/soap/envelope/"><br />
<soap-env:Body><br />
<srpmessage><br />
<srpoperation><br />
<fungrp></fungrp><br />
<opcode></opcode><br />
<parameterlist><br />
<parameter><name></name></value></parameter><br />
</parameterlist><br />
</srpoperation><br />
</srpmessage><br />
</soap-env:Body><br />
</soap-env:Envelope><br />
</code><br />
</pre><br />
<br />
===Known functions===<br />
<br />
{| border="1" cellpadding="5" cellspacing="0"<br />
!style="background: #DEE7EC;"| Function<br />
!style="background: #DEE7EC;"| fungrp<br />
!style="background: #DEE7EC;"| opcode<br />
!style="background: #DEE7EC;"| Parameter name<br />
!style="background: #DEE7EC;"| Parameter value<br />
|-<br />
| MSU version check<br />
| 02<br />
| 01<br />
| consumerclientversion<br />
| Version string, e.g. ''C01.11.79''<br />
|-<br />
|rowspan="2" colspan="3"|<br />
| Use_case_set<br />
| ''Inapplicable''<br />
|-<br />
| countrycode<br />
| Three-letter code<br />
|-<br />
| USB driver version check<br />
| 02<br />
| 05<br />
| hardware<br />
| 00<br />
|-<br />
|rowspan="2" colspan="3"|<br />
| OS<br />
| Four-digit MS Windows version, e.g. ''0601'' for Win7<br />
|-<br />
| driverversion<br />
| Version string, e.g. ''DD04.05.00''<br />
|-<br />
| Warranty status<br />
| 07<br />
| 13<br />
| serialnumbertype<br />
| IMEI<br />
|-<br />
|colspan="3"|<br />
| serialnumber<br />
| IMEI string<br />
|-<br />
| Firmware version check<br />
| 10<br />
| 01<br />
| flex<br />
| ro.gsm.flexversion<br />
|-<br />
|rowspan="13" colspan="3"|<br />
| firmware<br />
| ro.build.id+gsm.version.baseband<br />
|-<br />
| apversion<br />
| ro.build.id+gsm.version.baseband<br />
|-<br />
| apsetup<br />
| ''Inapplicable''<br />
|-<br />
| apresourceflex<br />
| ''Inapplicable''<br />
|-<br />
| aplogo<br />
| ''Inapplicable''<br />
|-<br />
| apsecuresetup<br />
| ''Inapplicable''<br />
|-<br />
| rofs<br />
| ''Inapplicable''<br />
|-<br />
| rofsextension<br />
| ''Inapplicable''<br />
|-<br />
| apflex<br />
| ro.build.config.version<br />
|-<br />
| bootloader<br />
| Four-digit version, eg. ''9073''<br />
|-<br />
| lang<br />
| ''Inapplicable''<br />
|-<br />
| kjava<br />
| ''Inapplicable''<br />
|-<br />
| pri<br />
| ''Inapplicable''<br />
|}<br />
<br />
The only parameter required for firmware version checks is ''flex''. The service will only respond successfully if the query is unambiguous and matched phone model is cleared for user upgrades. (see ''Known return codes'')<br />
<br />
===Known return codes===<br />
<br />
{| border="1" cellpadding="5" cellspacing="0"<br />
!style="background: #DEE7EC;"| fungrp<br />
!style="background: #DEE7EC;"| opcode<br />
!style="background: #DEE7EC;"| operation status<br />
!style="background: #DEE7EC;"| Returned message<br />
!style="background: #DEE7EC;"| Comment<br />
|-<br />
| 06<br />
| 50<br />
| 00<br />
| success<br />
| Update URL to .sbf included in return xml scheme<br />
|-<br />
| 06<br />
| 50<br />
| 01<br />
| Cannot ID the phone as the flex is blank.<br />
|<br />
|-<br />
| 06<br />
| 50<br />
| 02<br />
| No Phone found with the given phone parameters<br />
|<br />
|-<br />
| 06<br />
| 50<br />
| 03<br />
| Multiples phones found with the same configuration.<br />
| This needs to be investigated, since the rsd servers reply this when the supplied date are not unique. For example for a brazilian Milestone with flex version ''USASHLSRETBRLA02C.0R'' (Vivo). Trying to fetch .sbf files from the servers for the DroidX shows the same results. (Note - for NA queries, you must always supply firmware version along the flex, otherwise you get the ''Multiples phones found with the same configuration.'' as result, even if the flex version is invalid (like just ''NA'').)<br />
|}<br />
<br />
===Example queries===<br />
<br />
'''GB Retail (SM1658AXXB1)'''<br />
$ curl -H 'Content-Type: text/xml' -d '<?xml version="1.0" encoding="UTF-8"?><br />
<soap-env:Envelope xmlns:soap-env="http://schemas.xmlsoap.org/soap/envelope/"><br />
<soap-env:Body><srpmessage><srpoperation><fungrp>10</fungrp><opcode>01</opcode><parameterlist><br />
<parameter><name>flex</name><value>UCASHLSEMEAB1B803F.0R</value></parameter><br />
<parameter><name>apflex</name><value>GAS_EMEA_USASHLS00RTGB_P008</value></parameter><br />
</parameterlist></srpoperation></srpmessage></soap-env:Body></soap-env:Envelope>' \<br />
https://rsd.motorola.com/cs/servlets/SRPConsumerServlet<br />
<br />
'''CA Telus (81130CHEPA)'''<br />
$ curl -H 'Content-Type: text/xml' -d '<?xml version="1.0" encoding="UTF-8"?><br />
<soap-env:Envelope xmlns:soap-env="http://schemas.xmlsoap.org/soap/envelope/"><br />
<soap-env:Body><srpmessage><srpoperation><fungrp>10</fungrp><opcode>01</opcode><parameterlist><br />
<parameter><name>flex</name><value>USASHLSTLSB1B2B5051.0R</value></parameter><br />
</parameterlist></srpoperation></srpmessage></soap-env:Body></soap-env:Envelope>' \<br />
https://rsd.motorola.com/cs/servlets/SRPConsumerServlet<br />
<br />
==OTA updates==<br />
<br />
Just downloaded on phone in /cache/fota/update.zip<br />
and have this structure:<br />
<br />
* CERT.RSA<br />
* CERT.SF<br />
* MANIFEST.MF<br />
* __binary_firmware_file__<br />
* boot.img<br />
* bp.img<br />
* mbm.img<br />
* cdt.bin<br />
* lbl.bin<br />
* logo.bin<br />
* install-recovery.sh<br />
* recovery-from-boot.p<br />
* updater-script<br />
* mtd.cfg<br />
<br />
CERT.SF - contain sha1 digest of all files in update.zip<br />
<br />
CERT.RSA - certificate ASN1.DER ( parsed struct http://pastebin.ca/1849789 ). It parsed by command "openssl asn1parse -inform DER -in CERT.RSA"<br />
<br />
If any files unneeded in update - update.zip does not include this file.<br />
This is a sample OTA update package(SHOLS_U2_01.03.1_to_SHOLS_U2_01.14.0_REQ563): [http://www.xvilka.org/update.zip update.zip]<br />
<br />
== Retail SBF Files ==<br />
<br />
=== Updates ===<br />
<br />
03/08/2010: Added Milestone XT720 firmware for South-East Asia (STR_U2_01.18.2)<br />
28/07/2010: Added Blur_Version.0.18.4.ME511.ChinaRetail.en.CN and bootloader for ME511<br />
24/07/2010: Added STR_U2_01.18.2 (Singapore) for XT720<br />
23/07/2010: Added SHOLS_U2_02.38.0 (Italy)<br />
21/07/2010: Added SHOLS_U2_02.36.0 (DACH, O2 DE, VF DE)<br />
16/07/2010: Added XT800 firmwares and Droid X bootloaders<br />
11/07/2010: Added Thai 02.36.0 firmware<br />
10/07/2010: Added bootloader 90.78ch and new XT702 firmware<br />
05/07/2010: Added SHOLS_U2_02.36.0 (Starhub SG)<br />
01/07/2010: Added SHOLS_U2_02.36.0 (Central Europe, Southeast Asia)<br />
21/06/2010: Added SHOLS_U2_02.27.6 (Israel)<br />
09/06/2010: Corrected - XT701 firmwares are Taiwan.<br />
09/06/2010: Corrected - XT701 firmwares are not signed.<br />
06/06/2010: Added XT701 new 2.1 Taiwan firmware and bootloader 80.99<br />
31/05/2010: Added XT701 new 2.1 firmware and bootloader 80.98<br />
26/05/2010: Added SHOLS_U2_02.34.3 (Hong Kong / Maccau); SHLA_U2_03.05.0 (TIM Brasil, Service Version only)<br />
26/05/2010: Initial creation.<br />
<br />
=== Downloads ===<br />
* [http://and-developers.com/sbf milestone Milestone (A853, XT702)]<br />
* [http://and-developers.com/sbf droid Droid (A855)]<br />
* [http://and-developers.com/sbf xt701 Sholes Tablet (XT701)]<br />
* [http://and-developers.com/sbf xt720 Motoroi / Milestone XT720 (XT720)]<br />
* [http://and-developers.com/sbf xt800 Titanium (XT800)]<br />
* [http://and-developers.com/sbf droidx Droid X (MB810)]<br />
* [http://and-developers.com/sbf ruth Ruth (ME511)]<br />
<br />
== Custom SBF Files ==<br />
<br />
=== Vulnerable Recovery SBF Flash ===<br />
<br />
This SBF file will flash only the vulnerable recovery from 2.0.1 without modifying other partitions.<br />
* Download (Milestone): [http://www.mediafire.com/?jzzjmmrvwkz MediaFire]<br />
* Download (XT800): [http://droid-developers.org/files/uploads//XT800-vulnerable-recovery.rar Droid-Developers]<br />
<br />
=== 2.1 kernel fix of scheduled CPU wake-ups ===<br />
<br />
This SBF file will flash only the boot.img (kernel+init) from SHOLS_U2_03.10.0: [http://www.mediafire.com/?mlyneqhk1zl mediafire], [http://rapidshare.com/files/378277372/2.1-03.10.0-kernel-only.rar.html rapidshare]</div>Skrilax CZhttp://droid-developers.org/wiki/Open_recoveryOpen recovery2010-08-25T22:04:50Z<p>Skrilax CZ: </p>
<hr />
<div>{| align="right"<br />
| __TOC__<br />
|}<br />
Developed by Skrilax_CZ.<br><br />
Credit for mankind (from alldroid) for the CustomUpdate, on which this recovery is based,<br><br />
credit for poseidon (also from alldroid) for ADBRecovery,<br><br />
credit for koush for mtd-utils and nandroid (uses script based on it),<br><br />
credit for nadlabak for keyboard layout change script.<br><br />
Current version 1.37 [08/23/2010]<br />
<br />
===Features===<br />
- on-phone console (limited) - MILESTONE ONLY!<br><br />
- rooting the phone from menu (using ChainsDD su and SuperUser.apk (version 2.2.2))<br><br />
- nandroid backup/restore from menu<br><br />
- apply update *.zip files from menu (located in OpenRecovery/updates under the sdcard root folder, there is a sample one (just unpacks a file named "babble" to /system), no signatures are needed :)<br><br />
- wipe data (factory reset)<br><br />
- wipe cache<br><br />
- wipe dalvik-cache<br><br />
- adb in recovery, using bash shell<br><br />
- run a script<br><br />
- recovery options for applications<br><br />
<br />
The open recovery files are located under the OpenRecovery folder under the root of the sd card. The own update *.zip files are under the "updates" folder, sample one is included. The scripts must have *.sh extension and reside under the "scripts" folder. The recovery contains an update.zip with payload, which doesn't do anything else than restarts to the open recovery. All the files for OpenRecovery are under the OpenRecovery folder under the root of the sdcard. The payload installs busybox to /sbin runs the "switch.sh" under the bin folder in open recovery. The initial menu file is in OpenRecovery/menu/init.menu under sdcard root.<br />
<br />
===Download & Installation===<br />
====Motorola Milestone====<br />
1) You need to have the vulnerable recovery installed.<br><br />
2) Download the archive and unpack it to the root folder of the sdcard.<br><br />
<br />
====Motorola XT701====<br />
1) Download the archive and unpack it.<br><br />
2) Either flash the sbf file using RSD Lite (preffered, recommended version 4.6+), or flash using the flash_image the *.img file to recovery partition.<br><br />
3) Unpack the "OpenRecovery" folder and "OpenRecovery.zip" to the root folder of the sdcard.<br><br />
<br />
===Usage===<br />
====Motorola Milestone====<br />
1) Reboot into recovery (hold 'X' button on bootloader 90.78, on others hold camera button; until you see triangle; then press camera + volume up)<br><br />
2) Apply the update.zip<br><br />
3) You are now in Open Recovery<br><br />
<br />
====Motorola XT701====<br />
1) Reboot into recovery (hold camera button; until you see triangle; then press camera + volume up)<br><br />
2) If no error occurs, you're now in Open Recovery. If error occurs you're in Open Recovery Lite.<br><br />
<br />
===Console (MILESTONE ONLY)===<br />
- MENU key is CTRL, pressing MENU + ALT + C forcibly quits the console<br><br />
- scrolling (pressing volume keys by a row (or eight rows if ALT is pressed))<br><br />
- don't forget to select correct keyboard layout (under settings menu)<br><br />
- search key is tab<br><br />
- Alt+A prints "|" instead of Euro, Alt+F prints "$" instead of Pound<br><br />
- limited support for escape characters but allowing to use "clear" and "ls" coloured<br><br />
<br />
===Changing a theme===<br />
On /sdcard/OpenRecovery, the current theme is in "res" subfolder. The other two included are under "res.stock" or "res.squirtle". To change to another theme, let's say stock theme, rename the current "res" folder to "res.or" and "res.stock" to "res".<br><br />
<br />
===OR update.zip format===<br />
- the update.zip is extracted to "/sdcard/OpenRecovery/tmp/update"<br><br />
- shell script, located in the archive in "META-INF/update-or.sh" is called; under env. variable PACKAGE is the root folder of the extraction: "/sdcard/OpenRecovery/tmp/update"<br><br />
- the script can do the very same as script called from the menu (can call imenu)<br><br />
- progress bar is not supported in this format<br><br />
<br />
===ui.prop file===<br />
This file sets the colors for the theme. It's located right under the "res" folder.<br><br />
color3.LED=#100 <- led diode color (3-bit RGB, use only 0 or 1)<br><br />
color32.background=#000000A0 <- recovery background color<br><br />
color32.menu=#FF3705FF <- recovery menu color<br><br />
color32.selection=#FFFFFFFF <- recovery selected item color<br><br />
color32.script=#FFFF00FF <- recovery script color<br><br />
<br><br />
color24.console.header=#FFFF00 <- console header color<br><br />
color24.console.background=#000000 <- console background color<br><br />
color24.console.front=#E5E5E5 <- console foreground color<br><br />
<br><br />
(The example values are used by default when the property is not found.)<br><br />
<br />
===Lite vs. Full version (XT701 ONLY)===<br />
- The recovery image contains Lite version, with minimal options (moreless only difference from stock recovery is the GUI and applying update.zip doesn't need any signatures.)<br><br />
- When booting into recovery, the Lite version is started. It will automatically switch to full version by applying the OpenRecovery.zip).<br><br />
<br />
==Changelog==<br />
<br />
===Version 1.37===<br />
Bugfixes<br><br />
- fixed nandroid restore not properly restoring yaffs2 partitions in old format<br><br />
- fixed nandroid restore not restoring compressed backups<br><br />
- fixed nandroid backup not taking md5 checksums<br><br />
<br><br />
Changes<br><br />
- console buffers up to 1000 lats printed lines (extended from 200)<br><br />
<br />
===Version 1.36===<br />
Bugfixes<br><br />
- fixed nandroid when doing "Backup All" and not having apps2sd; which would fail complaining that /sddata could not be mounted<br><br />
(Ticking all partitions in the menu and selecting "Backup Selected" was working properly and the backup has been done correctly.)<br><br />
- fixed console cursor blinking<br><br />
- squirtle theme fixed<br><br />
<br />
===Version 1.35===<br />
Features<br><br />
- update.zip can be in new OR format using a shell script (described lower, there are samples of each one)<br><br />
- console has now signalling implemented (menu key = CTRL)<br><br />
- console has arrow keys implemented<br><br />
- console has support for displaying front colors; thus it is no longer needed to disable bash colors<br><br />
- console supports calling clear<br><br />
<br><br />
Changes<br><br />
- recovery binary will exit if not run by init (to prevent running it from adb or console)<br><br />
- scripts in scripts folder are dos2unixed (on -FuFu- advice)<br><br />
- switch files (.nobashcolors, .kdb_qwertz, etc.) are now located in /etc<br><br />
- manual settings of the timezone (/etc/timezone), applied if the env. variable TZ doesn't exist<br><br />
- update.zip no longer need to have the "update-binary", a default one is used if not found<br><br />
<br><br />
Bugfixes<br><br />
- fixed unyaffs not restoring sticky bit / suid / sgid<br><br />
- fixed displaying long menus (it will not be truncated, instead a scrollbar appears)<br><br />
- fixed error in switch.sh for XT701<br><br />
- fixed color24.console.front in the themes -> default is supposed to be #E5E5E5<br><br />
<br />
===Version 1.32===<br />
Features<br><br />
- pressing MENU + ALT + C forcibly quits the console<br><br />
<br><br />
Changes<br><br />
- ui.prop contains more options<br><br />
- when applying any update.zip package, there is a confirmation menu<br><br />
- cursor in console blinks<br><br />
<br><br />
Bugfixes<br><br />
- Error message when ext2 partition on sdcard doesn't exist fixed<br><br />
- fixed the bug with imenu when ran more than once in one script<br><br />
<br />
===Version 1.30a===<br />
Bugfixes<br><br />
- Console layout for QWERTZ / AZERTY fixed<br><br />
<br />
===Version 1.30===<br />
Features<br><br />
- on-phone console<br><br />
- keyboard layout changer included<br><br />
- new nandroid, with support of backing up and restoring ext2 partition on sdcard (Note: uses new format of the backup, new backups are located in /sdcard/nandroid/openrecovery, there is a backwards compatibility to restore the old backups)<br><br />
- ability to create compressed backups (and autoreboot when done)<br><br />
- better nandroid menu<br><br />
- menus wrap around<br><br />
- theming for the recovery (3 themes included, to apply just rename the "res.*" folder to "res"); color settings can be manipulated in the ui.prop file under the res folder)<br><br />
- new commands for menu (tag, label, break)<br><br />
- scripts (command "shell") are able to show menu interactively when requesting user feedback (sample included)<br><br />
<br />
===Version 1.14===<br />
Changes<br><br />
- UI<br><br />
- switch.sh is separated (menu creation is in init_recovery.sh and called later by the recovery)<br><br />
- Volume keys and Camera key can be used to navigate in Open Recovery<br><br />
<br />
===Version 1.12d===<br />
Bugfixes<br><br />
- wipe commands working properly<br><br />
<br><br />
Changes<br><br />
- Bash Settings menu, to enable/disable coloured output (preset to disabled), this is persistent settings, it will last through reboots<br><br />
<br><br />
Features<br><br />
- ability to wipe dalvik-cache only (via script)<br><br />
<br />
===Version 1.12c===<br />
Bugfixes<br><br />
- reboot command is working properly<br><br />
- the content of the sdcard is no longer changed when running, everything is being copied into the ramdisk<br><br />
- minor fixes<br><br />
<br><br />
Changes<br><br />
- removed the 'init' command, instead uses 'scripted_menu'<br><br />
- adbd uses bash (interactively) instead of sh<br><br />
- payload installs also bash and toolbox<br><br />
- different the menu system (deprecated 'init' command, used), each menu must be generated from a script (notes later)<br><br />
- added init folder, scripts (with extension *.sh) are ran there on startup of the open recovery.<br><br />
- the diode is blinking in blue instead of red.<br><br />
<br><br />
Features<br><br />
- the recovery prints the output of the scripts / programs (prints their stdout)<br><br />
- application menu (described later)<br><br />
- new su and SuperUser.apk by ChainsDD<br><br />
- if sdcard has ext2 partition, it is noted in fstab under "/sddata" (the module is inserted automatically)<br><br />
<br />
===Version 1.05===<br />
Bugfixes<br><br />
- fixed a bug in payload making it dependant on the system<br><br />
- there is now nothing in the /system folder when unmounted<br><br />
- toolbox linked statically<br><br />
- busybox now installs symlinks, instead of copying itself<br><br />
- fixed a bug in adb about the shell being in /sbin/sh instead of /system/bin/sh<br><br />
- cleaned up, removed unecessary libraries and binaries<br><br />
- switch.sh now initializes the Open Recovery completely, no other script is used for initialization<br><br />
- permissions set correctly<br><br />
<br><br />
Features<br><br />
- added option to wipe<br><br />
- menu's now have header (the menu file structure has been changed)<br><br />
- added the possibility to run scripts, with .*sh extension located in scripts folder under OpenRecovery folder (shell is /sbin/sh or /sbin/bash)<br><br />
<br />
===Version 1.02===<br />
- fixed root install<br />
<br />
===Version 1.01===<br />
- initial release<br />
<br />
==Developer Notes==<br />
<br />
The recovery contains an update.zip with payload, which doesn't do anything else than restarts to the open recovery. All the files for OpenRecovery are under the OpenRecovery folder under the root of the sdcard. The payload installs busybox to /sbin runs the "switch.sh" under the bin folder in open recovery.<br />
<br />
===Menu System===<br />
<br />
The menu for the Open Recovery is created dynamically. The files must be created inside "/menu" folder by scripts, which can either be specified (if the menu is scripted_menu) or created by a *.sh script in /sdcard/OpenRecovery/init where the scripts are executed at startup. A menu creating script has to create a *.menu file inside the /menu folder. If the menu is supposed to be created on startup and not modified, place the script into /init folder, otherwise use "scripted_menu" item, where the script is ran right before the menu is created. sdcard, system and data partitions are mounted when the scripts are ran. A typical example for "scripted_menu" item is under the tutorial for application menu. For application menu see lower section. The structure of the menu file is different from the CustomUpdate by mankind:<br />
First line is the menu name (normal string), then use the following structure:<br><br />
"item name:type:argument"<br><br />
- item name is what is seen in the menu<br><br />
- type: type of the command (described later)<br><br />
- argument: argument passed to the command (file, or anything else; if empty, put "*" there, otherwise the item will be discarded)<br><br />
<br />
===Commands===<br />
<br />
- reboot: reboots the phone<br><br />
- shell: calls a file specified in arguments (default path is to /bin, if not specified)<br><br />
- menu: opens another menu file (specified in argument), if the argument is "..", it returns to up one level meu<br><br />
- scripted_menu: argument is in format "menu file:menu script", the menu script is called with variable MENU_FILE containing the menu name (default path for the script is to /bin, if not specified)<br><br />
- update: applies an update *.zip file, specified in argument (format SDCARD:$path_to_the_file_in_sdcard)<br><br />
- tag: if ticked, file "tags/.[I]argument[/I]" is created<br><br />
- break: unselectable item, argument is ignored (use "*") and creates a menu item like "---- name ----"; using "*" as name will create just "--------------"<br><br />
- label: unselectable item, argument is ignored (use "*") and creates normal menu item "name "<br><br />
- wipe_data: factory reset<br><br />
- wipe_cahce: wipe cache<br><br />
<br><br />
The menu is refreshed (the script is called if the menu is scripted) on a menu change, applying an update or running a script. Whenever a script is ran, system, data and sdcard is mounted.<br><br />
<br />
===Application menu===<br />
<br />
Application menu is designed for anything that is run on the startup and can malfunction under any circumstances. Here is one example - suppose you have a mount on font in the startup. You'll have something like this in your startup script:<br />
<pre><br />
mount -o bind /system/myfonts/segoeui.ttf /system/fonts/DroidSans.ttf<br />
mount -o bind /system/myfonts/segoeuib.ttf /system/fonts/DroidSans-Bold.ttf<br />
</pre><br />
<br />
Well the idea is that you add a condition to the script, to run only under some circumstances, like:<br />
<br />
<pre><br />
if [ ! -f /system/switch/.nocustomfont ]; then<br />
mount -o bind /system/myfonts/segoeui.ttf /system/fonts/DroidSans.ttf<br />
mount -o bind /system/myfonts/segoeuib.ttf /system/fonts/DroidSans-Bold.ttf<br />
fi<br />
</pre><br />
<br />
which mounts the font only when /system/switch/.nocustomfont is not existing. If you want this controlable from the recovery, you register in into the application menu this way: all *.sh scripts in /app (where /sdcard/OpenRecovery/app is copied) are called at startup. They are passed variable "APP_MENU_FILE", which is the name of the used menu file (preinitalized). The script will look like this:<br />
<br />
<pre><br />
#!/sbin/sh<br />
<br />
#create the menu item<br />
echo "Custom Font:scripted_menu:custfont.menu:/app/custfont/menu.sh" >> "$APP_MENU_FILE"<br />
</pre><br />
<br />
Since the scripts are in /app and not /bin, use absolute path. This will add an item to the applications menu, now we need a menu when it is selected, which is the "/app/custfont/menu.sh":<br />
<br />
<pre><br />
#!/sbin/sh<br />
<br />
if [ -f /system/switch/.nocustomfont ]; then<br />
# menu name - custom font is disabled<br />
echo "Custom Font (Disabled)" > "$MENU_FILE"<br />
# go to upper level menu<br />
echo "Go Back:menu:.." >> "$MENU_FILE"<br />
# enable it<br />
echo "Enable:shell:/app/custfont/enable.sh" >> "$MENU_FILE"<br />
else<br />
# menu name - custom font is enabled<br />
echo "Custom Font (Enabled)" > "$MENU_FILE"<br />
# go to upper level menu<br />
echo "Go Back:menu:.." >> "$MENU_FILE"<br />
# disable it<br />
echo "Disable:shell:/app/custfont/disable.sh" >> "$MENU_FILE"<br />
fi<br />
</pre><br />
Notice the shells are in /sbin, so use /sbin/sh (or /sbin/bash). The script checks if the switch is on or off and generates the menu accordingly. Since the menu is refreshed each time the script is run, it will always submit the correct option. The "enable.sh" simply touches the file and "disable.sh" just deletes it.<br />
<br />
==Download==<br />
Binaries: [[http://rapidshare.com/files/414530880/OpenRecovery_v1_37_SHOLS.rar.html Open Recovery 1.37 for Milestone]], [[http://rapidshare.com/files/414925211/OpenRecovery_v1_37_STCU.rar.html Open Recovery 1.37 for Sholes Tablet]]<br><br />
Source: [[http://rapidshare.com/files/414696074/OpenRecovery_v1_37_src.tar.gz.html Open Recovery 1.37 source]]<br><br />
<br />
==Support forum==<br />
[[http://www.modmymobile.com/forums/showthread.php?t=531599 ModMyMobile]]</div>Skrilax CZhttp://droid-developers.org/wiki/Open_recoveryOpen recovery2010-08-25T22:03:23Z<p>Skrilax CZ: </p>
<hr />
<div>{| align="right"<br />
| __TOC__<br />
|}<br />
Developed by Skrilax_CZ.<br><br />
Credit for mankind (from alldroid) for the CustomUpdate, on which this recovery is based,<br><br />
credit for poseidon (also from alldroid) for ADBRecovery,<br><br />
credit for koush for mtd-utils and nandroid (uses script based on it),<br><br />
credit for nadlabak for keyboard layout change script.<br><br />
Current version 1.37 [08/23/2010]<br />
<br />
====Features====<br />
- on-phone console (limited) - MILESTONE ONLY!<br><br />
- rooting the phone from menu (using ChainsDD su and SuperUser.apk (version 2.2.2))<br><br />
- nandroid backup/restore from menu<br><br />
- apply update *.zip files from menu (located in OpenRecovery/updates under the sdcard root folder, there is a sample one (just unpacks a file named "babble" to /system), no signatures are needed :)<br><br />
- wipe data (factory reset)<br><br />
- wipe cache<br><br />
- wipe dalvik-cache<br><br />
- adb in recovery, using bash shell<br><br />
- run a script<br><br />
- recovery options for applications<br><br />
<br />
The open recovery files are located under the OpenRecovery folder under the root of the sd card. The own update *.zip files are under the "updates" folder, sample one is included. The scripts must have *.sh extension and reside under the "scripts" folder. The recovery contains an update.zip with payload, which doesn't do anything else than restarts to the open recovery. All the files for OpenRecovery are under the OpenRecovery folder under the root of the sdcard. The payload installs busybox to /sbin runs the "switch.sh" under the bin folder in open recovery. The initial menu file is in OpenRecovery/menu/init.menu under sdcard root.<br />
<br />
====Download & Installation====<br />
=====Motorola Milestone=====<br />
1) You need to have the vulnerable recovery installed.<br><br />
2) Download the archive and unpack it to the root folder of the sdcard.<br><br />
<br />
=====Motorola XT701=====<br />
1) Download the archive and unpack it.<br><br />
2) Either flash the sbf file using RSD Lite (preffered, recommended version 4.6+), or flash using the flash_image the *.img file to recovery partition.<br><br />
3) Unpack the "OpenRecovery" folder and "OpenRecovery.zip" to the root folder of the sdcard.<br><br />
<br />
====Usage====<br />
=====Motorola Milestone=====<br />
1) Reboot into recovery (hold 'X' button on bootloader 90.78, on others hold camera button; until you see triangle; then press camera + volume up)<br><br />
2) Apply the update.zip<br><br />
3) You are now in Open Recovery<br><br />
<br />
=====Motorola XT701=====<br />
1) Reboot into recovery (hold camera button; until you see triangle; then press camera + volume up)<br><br />
2) If no error occurs, you're now in Open Recovery. If error occurs you're in Open Recovery Lite.<br><br />
<br />
====Console (MILESTONE ONLY)====<br />
- MENU key is CTRL, pressing MENU + ALT + C forcibly quits the console<br><br />
- scrolling (pressing volume keys by a row (or eight rows if ALT is pressed))<br><br />
- don't forget to select correct keyboard layout (under settings menu)<br><br />
- search key is tab<br><br />
- Alt+A prints "|" instead of Euro, Alt+F prints "$" instead of Pound<br><br />
- limited support for escape characters but allowing to use "clear" and "ls" coloured<br><br />
<br />
====Changing a theme====<br />
On /sdcard/OpenRecovery, the current theme is in "res" subfolder. The other two included are under "res.stock" or "res.squirtle". To change to another theme, let's say stock theme, rename the current "res" folder to "res.or" and "res.stock" to "res".<br><br />
<br />
====OR update.zip format====<br />
- the update.zip is extracted to "/sdcard/OpenRecovery/tmp/update"<br><br />
- shell script, located in the archive in "META-INF/update-or.sh" is called; under env. variable PACKAGE is the root folder of the extraction: "/sdcard/OpenRecovery/tmp/update"<br><br />
- the script can do the very same as script called from the menu (can call imenu)<br><br />
- progress bar is not supported in this format<br><br />
<br />
====ui.prop file====<br />
This file sets the colors for the theme. It's located right under the "res" folder.<br><br />
color3.LED=#100 <- led diode color (3-bit RGB, use only 0 or 1)<br><br />
color32.background=#000000A0 <- recovery background color<br><br />
color32.menu=#FF3705FF <- recovery menu color<br><br />
color32.selection=#FFFFFFFF <- recovery selected item color<br><br />
color32.script=#FFFF00FF <- recovery script color<br><br />
<br><br />
color24.console.header=#FFFF00 <- console header color<br><br />
color24.console.background=#000000 <- console background color<br><br />
color24.console.front=#E5E5E5 <- console foreground color<br><br />
<br><br />
(The example values are used by default when the property is not found.)<br><br />
<br />
====Lite vs. Full version (XT701 ONLY)====<br />
- The recovery image contains Lite version, with minimal options (moreless only difference from stock recovery is the GUI and applying update.zip doesn't need any signatures.)<br><br />
- When booting into recovery, the Lite version is started. It will automatically switch to full version by applying the OpenRecovery.zip).<br><br />
<br />
==Changelog==<br />
<br />
====Version 1.37====<br />
Bugfixes<br><br />
- fixed nandroid restore not properly restoring yaffs2 partitions in old format<br><br />
- fixed nandroid restore not restoring compressed backups<br><br />
- fixed nandroid backup not taking md5 checksums<br><br />
<br><br />
Changes<br><br />
- console buffers up to 1000 lats printed lines (extended from 200)<br><br />
<br />
====Version 1.36====<br />
Bugfixes<br><br />
- fixed nandroid when doing "Backup All" and not having apps2sd; which would fail complaining that /sddata could not be mounted<br><br />
(Ticking all partitions in the menu and selecting "Backup Selected" was working properly and the backup has been done correctly.)<br><br />
- fixed console cursor blinking<br><br />
- squirtle theme fixed<br><br />
<br />
====Version 1.35====<br />
Features<br><br />
- update.zip can be in new OR format using a shell script (described lower, there are samples of each one)<br><br />
- console has now signalling implemented (menu key = CTRL)<br><br />
- console has arrow keys implemented<br><br />
- console has support for displaying front colors; thus it is no longer needed to disable bash colors<br><br />
- console supports calling clear<br><br />
<br><br />
Changes<br><br />
- recovery binary will exit if not run by init (to prevent running it from adb or console)<br><br />
- scripts in scripts folder are dos2unixed (on -FuFu- advice)<br><br />
- switch files (.nobashcolors, .kdb_qwertz, etc.) are now located in /etc<br><br />
- manual settings of the timezone (/etc/timezone), applied if the env. variable TZ doesn't exist<br><br />
- update.zip no longer need to have the "update-binary", a default one is used if not found<br><br />
<br><br />
Bugfixes<br><br />
- fixed unyaffs not restoring sticky bit / suid / sgid<br><br />
- fixed displaying long menus (it will not be truncated, instead a scrollbar appears)<br><br />
- fixed error in switch.sh for XT701<br><br />
- fixed color24.console.front in the themes -> default is supposed to be #E5E5E5<br><br />
<br />
====Version 1.32====<br />
Features<br><br />
- pressing MENU + ALT + C forcibly quits the console<br><br />
<br><br />
Changes<br><br />
- ui.prop contains more options<br><br />
- when applying any update.zip package, there is a confirmation menu<br><br />
- cursor in console blinks<br><br />
<br><br />
Bugfixes<br><br />
- Error message when ext2 partition on sdcard doesn't exist fixed<br><br />
- fixed the bug with imenu when ran more than once in one script<br><br />
<br />
====Version 1.30a====<br />
Bugfixes<br><br />
- Console layout for QWERTZ / AZERTY fixed<br><br />
<br />
====Version 1.30====<br />
Features<br><br />
- on-phone console<br><br />
- keyboard layout changer included<br><br />
- new nandroid, with support of backing up and restoring ext2 partition on sdcard (Note: uses new format of the backup, new backups are located in /sdcard/nandroid/openrecovery, there is a backwards compatibility to restore the old backups)<br><br />
- ability to create compressed backups (and autoreboot when done)<br><br />
- better nandroid menu<br><br />
- menus wrap around<br><br />
- theming for the recovery (3 themes included, to apply just rename the "res.*" folder to "res"); color settings can be manipulated in the ui.prop file under the res folder)<br><br />
- new commands for menu (tag, label, break)<br><br />
- scripts (command "shell") are able to show menu interactively when requesting user feedback (sample included)<br><br />
<br />
====Version 1.14====<br />
Changes<br><br />
- UI<br><br />
- switch.sh is separated (menu creation is in init_recovery.sh and called later by the recovery)<br><br />
- Volume keys and Camera key can be used to navigate in Open Recovery<br><br />
<br />
====Version 1.12d====<br />
Bugfixes<br><br />
- wipe commands working properly<br><br />
<br><br />
Changes<br><br />
- Bash Settings menu, to enable/disable coloured output (preset to disabled), this is persistent settings, it will last through reboots<br><br />
<br><br />
Features<br><br />
- ability to wipe dalvik-cache only (via script)<br><br />
<br />
====Version 1.12c====<br />
Bugfixes<br><br />
- reboot command is working properly<br><br />
- the content of the sdcard is no longer changed when running, everything is being copied into the ramdisk<br><br />
- minor fixes<br><br />
<br><br />
Changes<br><br />
- removed the 'init' command, instead uses 'scripted_menu'<br><br />
- adbd uses bash (interactively) instead of sh<br><br />
- payload installs also bash and toolbox<br><br />
- different the menu system (deprecated 'init' command, used), each menu must be generated from a script (notes later)<br><br />
- added init folder, scripts (with extension *.sh) are ran there on startup of the open recovery.<br><br />
- the diode is blinking in blue instead of red.<br><br />
<br><br />
Features<br><br />
- the recovery prints the output of the scripts / programs (prints their stdout)<br><br />
- application menu (described later)<br><br />
- new su and SuperUser.apk by ChainsDD<br><br />
- if sdcard has ext2 partition, it is noted in fstab under "/sddata" (the module is inserted automatically)<br><br />
<br />
====Version 1.05====<br />
Bugfixes<br><br />
- fixed a bug in payload making it dependant on the system<br><br />
- there is now nothing in the /system folder when unmounted<br><br />
- toolbox linked statically<br><br />
- busybox now installs symlinks, instead of copying itself<br><br />
- fixed a bug in adb about the shell being in /sbin/sh instead of /system/bin/sh<br><br />
- cleaned up, removed unecessary libraries and binaries<br><br />
- switch.sh now initializes the Open Recovery completely, no other script is used for initialization<br><br />
- permissions set correctly<br><br />
<br><br />
Features<br><br />
- added option to wipe<br><br />
- menu's now have header (the menu file structure has been changed)<br><br />
- added the possibility to run scripts, with .*sh extension located in scripts folder under OpenRecovery folder (shell is /sbin/sh or /sbin/bash)<br><br />
<br />
====Version 1.02====<br />
- fixed root install<br />
<br />
====Version 1.01====<br />
- initial release<br />
<br />
==Developer Notes==<br />
<br />
The recovery contains an update.zip with payload, which doesn't do anything else than restarts to the open recovery. All the files for OpenRecovery are under the OpenRecovery folder under the root of the sdcard. The payload installs busybox to /sbin runs the "switch.sh" under the bin folder in open recovery.<br />
<br />
====Menu System====<br />
<br />
The menu for the Open Recovery is created dynamically. The files must be created inside "/menu" folder by scripts, which can either be specified (if the menu is scripted_menu) or created by a *.sh script in /sdcard/OpenRecovery/init where the scripts are executed at startup. A menu creating script has to create a *.menu file inside the /menu folder. If the menu is supposed to be created on startup and not modified, place the script into /init folder, otherwise use "scripted_menu" item, where the script is ran right before the menu is created. sdcard, system and data partitions are mounted when the scripts are ran. A typical example for "scripted_menu" item is under the tutorial for application menu. For application menu see lower section. The structure of the menu file is different from the CustomUpdate by mankind:<br />
First line is the menu name (normal string), then use the following structure:<br><br />
"item name:type:argument"<br><br />
- item name is what is seen in the menu<br><br />
- type: type of the command (described later)<br><br />
- argument: argument passed to the command (file, or anything else; if empty, put "*" there, otherwise the item will be discarded)<br><br />
<br />
====Commands====<br />
<br />
- reboot: reboots the phone<br><br />
- shell: calls a file specified in arguments (default path is to /bin, if not specified)<br><br />
- menu: opens another menu file (specified in argument), if the argument is "..", it returns to up one level meu<br><br />
- scripted_menu: argument is in format "menu file:menu script", the menu script is called with variable MENU_FILE containing the menu name (default path for the script is to /bin, if not specified)<br><br />
- update: applies an update *.zip file, specified in argument (format SDCARD:$path_to_the_file_in_sdcard)<br><br />
- tag: if ticked, file "tags/.[I]argument[/I]" is created<br><br />
- break: unselectable item, argument is ignored (use "*") and creates a menu item like "---- name ----"; using "*" as name will create just "--------------"<br><br />
- label: unselectable item, argument is ignored (use "*") and creates normal menu item "name "<br><br />
- wipe_data: factory reset<br><br />
- wipe_cahce: wipe cache<br><br />
<br><br />
The menu is refreshed (the script is called if the menu is scripted) on a menu change, applying an update or running a script. Whenever a script is ran, system, data and sdcard is mounted.<br><br />
<br />
====Application menu====<br />
<br />
Application menu is designed for anything that is run on the startup and can malfunction under any circumstances. Here is one example - suppose you have a mount on font in the startup. You'll have something like this in your startup script:<br />
<pre><br />
mount -o bind /system/myfonts/segoeui.ttf /system/fonts/DroidSans.ttf<br />
mount -o bind /system/myfonts/segoeuib.ttf /system/fonts/DroidSans-Bold.ttf<br />
</pre><br />
<br />
Well the idea is that you add a condition to the script, to run only under some circumstances, like:<br />
<br />
<pre><br />
if [ ! -f /system/switch/.nocustomfont ]; then<br />
mount -o bind /system/myfonts/segoeui.ttf /system/fonts/DroidSans.ttf<br />
mount -o bind /system/myfonts/segoeuib.ttf /system/fonts/DroidSans-Bold.ttf<br />
fi<br />
</pre><br />
<br />
which mounts the font only when /system/switch/.nocustomfont is not existing. If you want this controlable from the recovery, you register in into the application menu this way: all *.sh scripts in /app (where /sdcard/OpenRecovery/app is copied) are called at startup. They are passed variable "APP_MENU_FILE", which is the name of the used menu file (preinitalized). The script will look like this:<br />
<br />
<pre><br />
#!/sbin/sh<br />
<br />
#create the menu item<br />
echo "Custom Font:scripted_menu:custfont.menu:/app/custfont/menu.sh" >> "$APP_MENU_FILE"<br />
</pre><br />
<br />
Since the scripts are in /app and not /bin, use absolute path. This will add an item to the applications menu, now we need a menu when it is selected, which is the "/app/custfont/menu.sh":<br />
<br />
<pre><br />
#!/sbin/sh<br />
<br />
if [ -f /system/switch/.nocustomfont ]; then<br />
# menu name - custom font is disabled<br />
echo "Custom Font (Disabled)" > "$MENU_FILE"<br />
# go to upper level menu<br />
echo "Go Back:menu:.." >> "$MENU_FILE"<br />
# enable it<br />
echo "Enable:shell:/app/custfont/enable.sh" >> "$MENU_FILE"<br />
else<br />
# menu name - custom font is enabled<br />
echo "Custom Font (Enabled)" > "$MENU_FILE"<br />
# go to upper level menu<br />
echo "Go Back:menu:.." >> "$MENU_FILE"<br />
# disable it<br />
echo "Disable:shell:/app/custfont/disable.sh" >> "$MENU_FILE"<br />
fi<br />
</pre><br />
Notice the shells are in /sbin, so use /sbin/sh (or /sbin/bash). The script checks if the switch is on or off and generates the menu accordingly. Since the menu is refreshed each time the script is run, it will always submit the correct option. The "enable.sh" simply touches the file and "disable.sh" just deletes it.<br />
<br />
==Download==<br />
Binaries: [[http://rapidshare.com/files/414530880/OpenRecovery_v1_37_SHOLS.rar.html Open Recovery 1.37 for Milestone]], [[http://rapidshare.com/files/414925211/OpenRecovery_v1_37_STCU.rar.html Open Recovery 1.37 for Sholes Tablet]]<br><br />
Source: [[http://rapidshare.com/files/414696074/OpenRecovery_v1_37_src.tar.gz.html Open Recovery 1.37 source]]<br><br />
<br />
==Support forum==<br />
[[http://www.modmymobile.com/forums/showthread.php?t=531599 ModMyMobile]]</div>Skrilax CZhttp://droid-developers.org/wiki/Open_recoveryOpen recovery2010-08-25T22:02:13Z<p>Skrilax CZ: </p>
<hr />
<div>{| align="right"<br />
| __TOC__<br />
|}<br />
Developed by Skrilax_CZ.<br><br />
Credit for mankind (from alldroid) for the CustomUpdate, on which this recovery is based,<br><br />
credit for poseidon (also from alldroid) for ADBRecovery,<br><br />
credit for koush for mtd-utils and nandroid (uses script based on it),<br><br />
credit for nadlabak for keyboard layout change script.<br><br />
Current version 1.37 [08/23/2010]<br />
<br />
====Features====<br />
- on-phone console (limited) - MILESTONE ONLY!<br><br />
- rooting the phone from menu (using ChainsDD su and SuperUser.apk (version 2.2.2))<br><br />
- nandroid backup/restore from menu<br><br />
- apply update *.zip files from menu (located in OpenRecovery/updates under the sdcard root folder, there is a sample one (just unpacks a file named "babble" to /system), no signatures are needed :)<br><br />
- wipe data (factory reset)<br><br />
- wipe cache<br><br />
- wipe dalvik-cache<br><br />
- adb in recovery, using bash shell<br><br />
- run a script<br><br />
- recovery options for applications<br><br />
<br />
The open recovery files are located under the OpenRecovery folder under the root of the sd card. The own update *.zip files are under the "updates" folder, sample one is included. The scripts must have *.sh extension and reside under the "scripts" folder. The recovery contains an update.zip with payload, which doesn't do anything else than restarts to the open recovery. All the files for OpenRecovery are under the OpenRecovery folder under the root of the sdcard. The payload installs busybox to /sbin runs the "switch.sh" under the bin folder in open recovery. The initial menu file is in OpenRecovery/menu/init.menu under sdcard root.<br />
<br />
====Download & Installation====<br />
===Motorola Milestone===<br />
1) You need to have the vulnerable recovery installed.<br><br />
2) Download the archive and unpack it to the root folder of the sdcard.<br><br />
<br />
===Motorola XT701===<br />
1) Download the archive and unpack it.<br><br />
2) Either flash the sbf file using RSD Lite (preffered, recommended version 4.6+), or flash using the flash_image the *.img file to recovery partition.<br><br />
3) Unpack the "OpenRecovery" folder and "OpenRecovery.zip" to the root folder of the sdcard.<br><br />
<br />
====Usage====<br />
===Motorola Milestone===<br />
1) Reboot into recovery (hold 'X' button on bootloader 90.78, on others hold camera button; until you see triangle; then press camera + volume up)<br><br />
2) Apply the update.zip<br><br />
3) You are now in Open Recovery<br><br />
<br />
===Motorola XT701===<br />
1) Reboot into recovery (hold camera button; until you see triangle; then press camera + volume up)<br><br />
2) If no error occurs, you're now in Open Recovery. If error occurs you're in Open Recovery Lite.<br><br />
<br />
====Console (MILESTONE ONLY)====<br />
- MENU key is CTRL, pressing MENU + ALT + C forcibly quits the console<br><br />
- scrolling (pressing volume keys by a row (or eight rows if ALT is pressed))<br><br />
- don't forget to select correct keyboard layout (under settings menu)<br><br />
- search key is tab<br><br />
- Alt+A prints "|" instead of Euro, Alt+F prints "$" instead of Pound<br><br />
- limited support for escape characters but allowing to use "clear" and "ls" coloured<br><br />
<br />
====Changing a theme====<br />
On /sdcard/OpenRecovery, the current theme is in "res" subfolder. The other two included are under "res.stock" or "res.squirtle". To change to another theme, let's say stock theme, rename the current "res" folder to "res.or" and "res.stock" to "res".<br><br />
<br />
====OR update.zip format====<br />
- the update.zip is extracted to "/sdcard/OpenRecovery/tmp/update"<br><br />
- shell script, located in the archive in "META-INF/update-or.sh" is called; under env. variable PACKAGE is the root folder of the extraction: "/sdcard/OpenRecovery/tmp/update"<br><br />
- the script can do the very same as script called from the menu (can call imenu)<br><br />
- progress bar is not supported in this format<br><br />
<br />
====ui.prop file====<br />
This file sets the colors for the theme. It's located right under the "res" folder.<br><br />
color3.LED=#100 <- led diode color (3-bit RGB, use only 0 or 1)<br><br />
color32.background=#000000A0 <- recovery background color<br><br />
color32.menu=#FF3705FF <- recovery menu color<br><br />
color32.selection=#FFFFFFFF <- recovery selected item color<br><br />
color32.script=#FFFF00FF <- recovery script color<br><br />
<br><br />
color24.console.header=#FFFF00 <- console header color<br><br />
color24.console.background=#000000 <- console background color<br><br />
color24.console.front=#E5E5E5 <- console foreground color<br><br />
<br><br />
(The example values are used by default when the property is not found.)<br><br />
<br />
====Lite vs. Full version (XT701 ONLY)====<br />
- The recovery image contains Lite version, with minimal options (moreless only difference from stock recovery is the GUI and applying update.zip doesn't need any signatures.)<br><br />
- When booting into recovery, the Lite version is started. It will automatically switch to full version by applying the OpenRecovery.zip).<br><br />
<br />
==Changelog==<br />
<br />
====Version 1.37====<br />
Bugfixes<br><br />
- fixed nandroid restore not properly restoring yaffs2 partitions in old format<br><br />
- fixed nandroid restore not restoring compressed backups<br><br />
- fixed nandroid backup not taking md5 checksums<br><br />
<br><br />
Changes<br><br />
- console buffers up to 1000 lats printed lines (extended from 200)<br><br />
<br />
====Version 1.36====<br />
Bugfixes<br><br />
- fixed nandroid when doing "Backup All" and not having apps2sd; which would fail complaining that /sddata could not be mounted<br><br />
(Ticking all partitions in the menu and selecting "Backup Selected" was working properly and the backup has been done correctly.)<br><br />
- fixed console cursor blinking<br><br />
- squirtle theme fixed<br><br />
<br />
====Version 1.35====<br />
Features<br><br />
- update.zip can be in new OR format using a shell script (described lower, there are samples of each one)<br><br />
- console has now signalling implemented (menu key = CTRL)<br><br />
- console has arrow keys implemented<br><br />
- console has support for displaying front colors; thus it is no longer needed to disable bash colors<br><br />
- console supports calling clear<br><br />
<br><br />
Changes<br><br />
- recovery binary will exit if not run by init (to prevent running it from adb or console)<br><br />
- scripts in scripts folder are dos2unixed (on -FuFu- advice)<br><br />
- switch files (.nobashcolors, .kdb_qwertz, etc.) are now located in /etc<br><br />
- manual settings of the timezone (/etc/timezone), applied if the env. variable TZ doesn't exist<br><br />
- update.zip no longer need to have the "update-binary", a default one is used if not found<br><br />
<br><br />
Bugfixes<br><br />
- fixed unyaffs not restoring sticky bit / suid / sgid<br><br />
- fixed displaying long menus (it will not be truncated, instead a scrollbar appears)<br><br />
- fixed error in switch.sh for XT701<br><br />
- fixed color24.console.front in the themes -> default is supposed to be #E5E5E5<br><br />
<br />
====Version 1.32====<br />
Features<br><br />
- pressing MENU + ALT + C forcibly quits the console<br><br />
<br><br />
Changes<br><br />
- ui.prop contains more options<br><br />
- when applying any update.zip package, there is a confirmation menu<br><br />
- cursor in console blinks<br><br />
<br><br />
Bugfixes<br><br />
- Error message when ext2 partition on sdcard doesn't exist fixed<br><br />
- fixed the bug with imenu when ran more than once in one script<br><br />
<br />
====Version 1.30a====<br />
Bugfixes<br><br />
- Console layout for QWERTZ / AZERTY fixed<br><br />
<br />
====Version 1.30====<br />
Features<br><br />
- on-phone console<br><br />
- keyboard layout changer included<br><br />
- new nandroid, with support of backing up and restoring ext2 partition on sdcard (Note: uses new format of the backup, new backups are located in /sdcard/nandroid/openrecovery, there is a backwards compatibility to restore the old backups)<br><br />
- ability to create compressed backups (and autoreboot when done)<br><br />
- better nandroid menu<br><br />
- menus wrap around<br><br />
- theming for the recovery (3 themes included, to apply just rename the "res.*" folder to "res"); color settings can be manipulated in the ui.prop file under the res folder)<br><br />
- new commands for menu (tag, label, break)<br><br />
- scripts (command "shell") are able to show menu interactively when requesting user feedback (sample included)<br><br />
<br />
====Version 1.14====<br />
Changes<br><br />
- UI<br><br />
- switch.sh is separated (menu creation is in init_recovery.sh and called later by the recovery)<br><br />
- Volume keys and Camera key can be used to navigate in Open Recovery<br><br />
<br />
====Version 1.12d====<br />
Bugfixes<br><br />
- wipe commands working properly<br><br />
<br><br />
Changes<br><br />
- Bash Settings menu, to enable/disable coloured output (preset to disabled), this is persistent settings, it will last through reboots<br><br />
<br><br />
Features<br><br />
- ability to wipe dalvik-cache only (via script)<br><br />
<br />
====Version 1.12c====<br />
Bugfixes<br><br />
- reboot command is working properly<br><br />
- the content of the sdcard is no longer changed when running, everything is being copied into the ramdisk<br><br />
- minor fixes<br><br />
<br><br />
Changes<br><br />
- removed the 'init' command, instead uses 'scripted_menu'<br><br />
- adbd uses bash (interactively) instead of sh<br><br />
- payload installs also bash and toolbox<br><br />
- different the menu system (deprecated 'init' command, used), each menu must be generated from a script (notes later)<br><br />
- added init folder, scripts (with extension *.sh) are ran there on startup of the open recovery.<br><br />
- the diode is blinking in blue instead of red.<br><br />
<br><br />
Features<br><br />
- the recovery prints the output of the scripts / programs (prints their stdout)<br><br />
- application menu (described later)<br><br />
- new su and SuperUser.apk by ChainsDD<br><br />
- if sdcard has ext2 partition, it is noted in fstab under "/sddata" (the module is inserted automatically)<br><br />
<br />
====Version 1.05====<br />
Bugfixes<br><br />
- fixed a bug in payload making it dependant on the system<br><br />
- there is now nothing in the /system folder when unmounted<br><br />
- toolbox linked statically<br><br />
- busybox now installs symlinks, instead of copying itself<br><br />
- fixed a bug in adb about the shell being in /sbin/sh instead of /system/bin/sh<br><br />
- cleaned up, removed unecessary libraries and binaries<br><br />
- switch.sh now initializes the Open Recovery completely, no other script is used for initialization<br><br />
- permissions set correctly<br><br />
<br><br />
Features<br><br />
- added option to wipe<br><br />
- menu's now have header (the menu file structure has been changed)<br><br />
- added the possibility to run scripts, with .*sh extension located in scripts folder under OpenRecovery folder (shell is /sbin/sh or /sbin/bash)<br><br />
<br />
====Version 1.02====<br />
- fixed root install<br />
<br />
====Version 1.01====<br />
- initial release<br />
<br />
==Developer Notes==<br />
<br />
The recovery contains an update.zip with payload, which doesn't do anything else than restarts to the open recovery. All the files for OpenRecovery are under the OpenRecovery folder under the root of the sdcard. The payload installs busybox to /sbin runs the "switch.sh" under the bin folder in open recovery.<br />
<br />
====Menu System====<br />
<br />
The menu for the Open Recovery is created dynamically. The files must be created inside "/menu" folder by scripts, which can either be specified (if the menu is scripted_menu) or created by a *.sh script in /sdcard/OpenRecovery/init where the scripts are executed at startup. A menu creating script has to create a *.menu file inside the /menu folder. If the menu is supposed to be created on startup and not modified, place the script into /init folder, otherwise use "scripted_menu" item, where the script is ran right before the menu is created. sdcard, system and data partitions are mounted when the scripts are ran. A typical example for "scripted_menu" item is under the tutorial for application menu. For application menu see lower section. The structure of the menu file is different from the CustomUpdate by mankind:<br />
First line is the menu name (normal string), then use the following structure:<br><br />
"item name:type:argument"<br><br />
- item name is what is seen in the menu<br><br />
- type: type of the command (described later)<br><br />
- argument: argument passed to the command (file, or anything else; if empty, put "*" there, otherwise the item will be discarded)<br><br />
<br />
====Commands====<br />
<br />
- reboot: reboots the phone<br><br />
- shell: calls a file specified in arguments (default path is to /bin, if not specified)<br><br />
- menu: opens another menu file (specified in argument), if the argument is "..", it returns to up one level meu<br><br />
- scripted_menu: argument is in format "menu file:menu script", the menu script is called with variable MENU_FILE containing the menu name (default path for the script is to /bin, if not specified)<br><br />
- update: applies an update *.zip file, specified in argument (format SDCARD:$path_to_the_file_in_sdcard)<br><br />
- tag: if ticked, file "tags/.[I]argument[/I]" is created<br><br />
- break: unselectable item, argument is ignored (use "*") and creates a menu item like "---- name ----"; using "*" as name will create just "--------------"<br><br />
- label: unselectable item, argument is ignored (use "*") and creates normal menu item "name "<br><br />
- wipe_data: factory reset<br><br />
- wipe_cahce: wipe cache<br><br />
<br><br />
The menu is refreshed (the script is called if the menu is scripted) on a menu change, applying an update or running a script. Whenever a script is ran, system, data and sdcard is mounted.<br><br />
<br />
====Application menu====<br />
<br />
Application menu is designed for anything that is run on the startup and can malfunction under any circumstances. Here is one example - suppose you have a mount on font in the startup. You'll have something like this in your startup script:<br />
<pre><br />
mount -o bind /system/myfonts/segoeui.ttf /system/fonts/DroidSans.ttf<br />
mount -o bind /system/myfonts/segoeuib.ttf /system/fonts/DroidSans-Bold.ttf<br />
</pre><br />
<br />
Well the idea is that you add a condition to the script, to run only under some circumstances, like:<br />
<br />
<pre><br />
if [ ! -f /system/switch/.nocustomfont ]; then<br />
mount -o bind /system/myfonts/segoeui.ttf /system/fonts/DroidSans.ttf<br />
mount -o bind /system/myfonts/segoeuib.ttf /system/fonts/DroidSans-Bold.ttf<br />
fi<br />
</pre><br />
<br />
which mounts the font only when /system/switch/.nocustomfont is not existing. If you want this controlable from the recovery, you register in into the application menu this way: all *.sh scripts in /app (where /sdcard/OpenRecovery/app is copied) are called at startup. They are passed variable "APP_MENU_FILE", which is the name of the used menu file (preinitalized). The script will look like this:<br />
<br />
<pre><br />
#!/sbin/sh<br />
<br />
#create the menu item<br />
echo "Custom Font:scripted_menu:custfont.menu:/app/custfont/menu.sh" >> "$APP_MENU_FILE"<br />
</pre><br />
<br />
Since the scripts are in /app and not /bin, use absolute path. This will add an item to the applications menu, now we need a menu when it is selected, which is the "/app/custfont/menu.sh":<br />
<br />
<pre><br />
#!/sbin/sh<br />
<br />
if [ -f /system/switch/.nocustomfont ]; then<br />
# menu name - custom font is disabled<br />
echo "Custom Font (Disabled)" > "$MENU_FILE"<br />
# go to upper level menu<br />
echo "Go Back:menu:.." >> "$MENU_FILE"<br />
# enable it<br />
echo "Enable:shell:/app/custfont/enable.sh" >> "$MENU_FILE"<br />
else<br />
# menu name - custom font is enabled<br />
echo "Custom Font (Enabled)" > "$MENU_FILE"<br />
# go to upper level menu<br />
echo "Go Back:menu:.." >> "$MENU_FILE"<br />
# disable it<br />
echo "Disable:shell:/app/custfont/disable.sh" >> "$MENU_FILE"<br />
fi<br />
</pre><br />
Notice the shells are in /sbin, so use /sbin/sh (or /sbin/bash). The script checks if the switch is on or off and generates the menu accordingly. Since the menu is refreshed each time the script is run, it will always submit the correct option. The "enable.sh" simply touches the file and "disable.sh" just deletes it.<br />
<br />
==Download==<br />
Binaries: [[http://rapidshare.com/files/414530880/OpenRecovery_v1_37_SHOLS.rar.html Open Recovery 1.37 for Milestone]], [[http://rapidshare.com/files/414925211/OpenRecovery_v1_37_STCU.rar.html Open Recovery 1.37 for Sholes Tablet]]<br><br />
Source: [[http://rapidshare.com/files/414696074/OpenRecovery_v1_37_src.tar.gz.html Open Recovery 1.37 source]]<br><br />
<br />
==Support forum==<br />
[[http://www.modmymobile.com/forums/showthread.php?t=531599 ModMyMobile]]</div>Skrilax CZhttp://droid-developers.org/wiki/Open_recoveryOpen recovery2010-08-24T21:34:56Z<p>Skrilax CZ: /* ui.prop file */</p>
<hr />
<div>Developed by Skrilax_CZ.<br><br />
Credit for mankind (from alldroid) for the CustomUpdate, on which this recovery is based,<br><br />
credit for poseidon (also from alldroid) for ADBRecovery,<br><br />
credit for koush for mtd-utils and nandroid (uses script based on it),<br><br />
credit for nadlabak for keyboard layout change script.<br><br />
Current version 1.37 [08/23/2010]<br />
<br />
====Features====<br />
- on-phone console (limited) - MILESTONE ONLY!<br><br />
- rooting the phone from menu (using ChainsDD su and SuperUser.apk (version 2.2.2))<br><br />
- nandroid backup/restore from menu<br><br />
- apply update *.zip files from menu (located in OpenRecovery/updates under the sdcard root folder, there is a sample one (just unpacks a file named "babble" to /system), no signatures are needed :)<br><br />
- wipe data (factory reset)<br><br />
- wipe cache<br><br />
- wipe dalvik-cache<br><br />
- adb in recovery, using bash shell<br><br />
- run a script<br><br />
- recovery options for applications<br><br />
<br />
The open recovery files are located under the OpenRecovery folder under the root of the sd card. The own update *.zip files are under the "updates" folder, sample one is included. The scripts must have *.sh extension and reside under the "scripts" folder. The recovery contains an update.zip with payload, which doesn't do anything else than restarts to the open recovery. All the files for OpenRecovery are under the OpenRecovery folder under the root of the sdcard. The payload installs busybox to /sbin runs the "switch.sh" under the bin folder in open recovery. The initial menu file is in OpenRecovery/menu/init.menu under sdcard root.<br />
<br />
====Download & Installation (MILESTONE)====<br />
1) You need to have the vulnerable recovery installed.<br><br />
2) Download the archive and unpack it to the root folder of the sdcard.<br><br />
<br />
====Usage (MILESTONE)====<br />
1) Reboot into recovery (hold 'X' button on bootloader 90.78, on others hold camera button; until you see triangle; then press camera + volume up)<br><br />
2) Apply the update.zip<br><br />
3) You are now in Open Recovery<br><br />
<br />
====Download & Installation (XT701)====<br />
1) Download the archive and unpack it.<br><br />
2) Either flash the sbf file using RSD Lite (preffered, recommended version 4.6+), or flash using the flash_image the *.img file to recovery partition.<br><br />
3) Unpack the "OpenRecovery" folder and "OpenRecovery.zip" to the root folder of the sdcard.<br><br />
<br />
====Usage (XT701)====<br />
1) Reboot into recovery (hold camera button; until you see triangle; then press camera + volume up)<br><br />
2) If no error occurs, you're now in Open Recovery. If error occurs you're in Open Recovery Lite.<br><br />
<br />
==Notes==<br />
<br />
====Console (MILESTONE ONLY)====<br />
- MENU key is CTRL, pressing MENU + ALT + C forcibly quits the console<br><br />
- scrolling (pressing volume keys by a row (or eight rows if ALT is pressed))<br><br />
- don't forget to select correct keyboard layout (under settings menu)<br><br />
- search key is tab<br><br />
- Alt+A prints "|" instead of Euro, Alt+F prints "$" instead of Pound<br><br />
- limited support for escape characters but allowing to use "clear" and "ls" coloured<br><br />
<br />
====Changing a theme====<br />
On /sdcard/OpenRecovery, the current theme is in "res" subfolder. The other two included are under "res.stock" or "res.squirtle". To change to another theme, let's say stock theme, rename the current "res" folder to "res.or" and "res.stock" to "res".<br><br />
<br />
====OR update.zip format====<br />
- the update.zip is extracted to "/sdcard/OpenRecovery/tmp/update"<br><br />
- shell script, located in the archive in "META-INF/update-or.sh" is called; under env. variable PACKAGE is the root folder of the extraction: "/sdcard/OpenRecovery/tmp/update"<br><br />
- the script can do the very same as script called from the menu (can call imenu)<br><br />
- progress bar is not supported in this format<br><br />
<br />
====ui.prop file====<br />
This file sets the colors for the theme. It's located right under the "res" folder.<br><br />
color3.LED=#100 <- led diode color (3-bit RGB, use only 0 or 1)<br><br />
color32.background=#000000A0 <- recovery background color<br><br />
color32.menu=#FF3705FF <- recovery menu color<br><br />
color32.selection=#FFFFFFFF <- recovery selected item color<br><br />
color32.script=#FFFF00FF <- recovery script color<br><br />
<br><br />
color24.console.header=#FFFF00 <- console header color<br><br />
color24.console.background=#000000 <- console background color<br><br />
color24.console.front=#E5E5E5 <- console foreground color<br><br />
<br><br />
(The example values are used by default when the property is not found.)<br><br />
<br />
====Lite vs. Full version (XT701 ONLY)====<br />
- The recovery image contains Lite version, with minimal options (moreless only difference from stock recovery is the GUI and applying update.zip doesn't need any signatures.)<br><br />
- When booting into recovery, the Lite version is started. It will automatically switch to full version by applying the OpenRecovery.zip).<br><br />
<br />
==Changelog==<br />
<br />
====Version 1.37====<br />
Bugfixes<br><br />
- fixed nandroid restore not properly restoring yaffs2 partitions in old format<br><br />
- fixed nandroid restore not restoring compressed backups<br><br />
- fixed nandroid backup not taking md5 checksums<br><br />
<br><br />
Changes<br><br />
- console buffers up to 1000 lats printed lines (extended from 200)<br><br />
<br />
====Version 1.36====<br />
Bugfixes<br><br />
- fixed nandroid when doing "Backup All" and not having apps2sd; which would fail complaining that /sddata could not be mounted<br><br />
(Ticking all partitions in the menu and selecting "Backup Selected" was working properly and the backup has been done correctly.)<br><br />
- fixed console cursor blinking<br><br />
- squirtle theme fixed<br><br />
<br />
====Version 1.35====<br />
Features<br><br />
- update.zip can be in new OR format using a shell script (described lower, there are samples of each one)<br><br />
- console has now signalling implemented (menu key = CTRL)<br><br />
- console has arrow keys implemented<br><br />
- console has support for displaying front colors; thus it is no longer needed to disable bash colors<br><br />
- console supports calling clear<br><br />
<br><br />
Changes<br><br />
- recovery binary will exit if not run by init (to prevent running it from adb or console)<br><br />
- scripts in scripts folder are dos2unixed (on -FuFu- advice)<br><br />
- switch files (.nobashcolors, .kdb_qwertz, etc.) are now located in /etc<br><br />
- manual settings of the timezone (/etc/timezone), applied if the env. variable TZ doesn't exist<br><br />
- update.zip no longer need to have the "update-binary", a default one is used if not found<br><br />
<br><br />
Bugfixes<br><br />
- fixed unyaffs not restoring sticky bit / suid / sgid<br><br />
- fixed displaying long menus (it will not be truncated, instead a scrollbar appears)<br><br />
- fixed error in switch.sh for XT701<br><br />
- fixed color24.console.front in the themes -> default is supposed to be #E5E5E5<br><br />
<br />
====Version 1.32====<br />
Features<br><br />
- pressing MENU + ALT + C forcibly quits the console<br><br />
<br><br />
Changes<br><br />
- ui.prop contains more options<br><br />
- when applying any update.zip package, there is a confirmation menu<br><br />
- cursor in console blinks<br><br />
<br><br />
Bugfixes<br><br />
- Error message when ext2 partition on sdcard doesn't exist fixed<br><br />
- fixed the bug with imenu when ran more than once in one script<br><br />
<br />
====Version 1.30a====<br />
Bugfixes<br><br />
- Console layout for QWERTZ / AZERTY fixed<br><br />
<br />
====Version 1.30====<br />
Features<br><br />
- on-phone console<br><br />
- keyboard layout changer included<br><br />
- new nandroid, with support of backing up and restoring ext2 partition on sdcard (Note: uses new format of the backup, new backups are located in /sdcard/nandroid/openrecovery, there is a backwards compatibility to restore the old backups)<br><br />
- ability to create compressed backups (and autoreboot when done)<br><br />
- better nandroid menu<br><br />
- menus wrap around<br><br />
- theming for the recovery (3 themes included, to apply just rename the "res.*" folder to "res"); color settings can be manipulated in the ui.prop file under the res folder)<br><br />
- new commands for menu (tag, label, break)<br><br />
- scripts (command "shell") are able to show menu interactively when requesting user feedback (sample included)<br><br />
<br />
====Version 1.14====<br />
Changes<br><br />
- UI<br><br />
- switch.sh is separated (menu creation is in init_recovery.sh and called later by the recovery)<br><br />
- Volume keys and Camera key can be used to navigate in Open Recovery<br><br />
<br />
====Version 1.12d====<br />
Bugfixes<br><br />
- wipe commands working properly<br><br />
<br><br />
Changes<br><br />
- Bash Settings menu, to enable/disable coloured output (preset to disabled), this is persistent settings, it will last through reboots<br><br />
<br><br />
Features<br><br />
- ability to wipe dalvik-cache only (via script)<br><br />
<br />
====Version 1.12c====<br />
Bugfixes<br><br />
- reboot command is working properly<br><br />
- the content of the sdcard is no longer changed when running, everything is being copied into the ramdisk<br><br />
- minor fixes<br><br />
<br><br />
Changes<br><br />
- removed the 'init' command, instead uses 'scripted_menu'<br><br />
- adbd uses bash (interactively) instead of sh<br><br />
- payload installs also bash and toolbox<br><br />
- different the menu system (deprecated 'init' command, used), each menu must be generated from a script (notes later)<br><br />
- added init folder, scripts (with extension *.sh) are ran there on startup of the open recovery.<br><br />
- the diode is blinking in blue instead of red.<br><br />
<br><br />
Features<br><br />
- the recovery prints the output of the scripts / programs (prints their stdout)<br><br />
- application menu (described later)<br><br />
- new su and SuperUser.apk by ChainsDD<br><br />
- if sdcard has ext2 partition, it is noted in fstab under "/sddata" (the module is inserted automatically)<br><br />
<br />
====Version 1.05====<br />
Bugfixes<br><br />
- fixed a bug in payload making it dependant on the system<br><br />
- there is now nothing in the /system folder when unmounted<br><br />
- toolbox linked statically<br><br />
- busybox now installs symlinks, instead of copying itself<br><br />
- fixed a bug in adb about the shell being in /sbin/sh instead of /system/bin/sh<br><br />
- cleaned up, removed unecessary libraries and binaries<br><br />
- switch.sh now initializes the Open Recovery completely, no other script is used for initialization<br><br />
- permissions set correctly<br><br />
<br><br />
Features<br><br />
- added option to wipe<br><br />
- menu's now have header (the menu file structure has been changed)<br><br />
- added the possibility to run scripts, with .*sh extension located in scripts folder under OpenRecovery folder (shell is /sbin/sh or /sbin/bash)<br><br />
<br />
====Version 1.02====<br />
- fixed root install<br />
<br />
====Version 1.01====<br />
- initial release<br />
<br />
==Developer Notes==<br />
<br />
The recovery contains an update.zip with payload, which doesn't do anything else than restarts to the open recovery. All the files for OpenRecovery are under the OpenRecovery folder under the root of the sdcard. The payload installs busybox to /sbin runs the "switch.sh" under the bin folder in open recovery.<br />
<br />
====Menu System====<br />
<br />
The menu for the Open Recovery is created dynamically. The files must be created inside "/menu" folder by scripts, which can either be specified (if the menu is scripted_menu) or created by a *.sh script in /sdcard/OpenRecovery/init where the scripts are executed at startup. A menu creating script has to create a *.menu file inside the /menu folder. If the menu is supposed to be created on startup and not modified, place the script into /init folder, otherwise use "scripted_menu" item, where the script is ran right before the menu is created. sdcard, system and data partitions are mounted when the scripts are ran. A typical example for "scripted_menu" item is under the tutorial for application menu. For application menu see lower section. The structure of the menu file is different from the CustomUpdate by mankind:<br />
First line is the menu name (normal string), then use the following structure:<br><br />
"item name:type:argument"<br><br />
- item name is what is seen in the menu<br><br />
- type: type of the command (described later)<br><br />
- argument: argument passed to the command (file, or anything else; if empty, put "*" there, otherwise the item will be discarded)<br><br />
<br />
====Commands====<br />
<br />
- reboot: reboots the phone<br><br />
- shell: calls a file specified in arguments (default path is to /bin, if not specified)<br><br />
- menu: opens another menu file (specified in argument), if the argument is "..", it returns to up one level meu<br><br />
- scripted_menu: argument is in format "menu file:menu script", the menu script is called with variable MENU_FILE containing the menu name (default path for the script is to /bin, if not specified)<br><br />
- update: applies an update *.zip file, specified in argument (format SDCARD:$path_to_the_file_in_sdcard)<br><br />
- tag: if ticked, file "tags/.[I]argument[/I]" is created<br><br />
- break: unselectable item, argument is ignored (use "*") and creates a menu item like "---- name ----"; using "*" as name will create just "--------------"<br><br />
- label: unselectable item, argument is ignored (use "*") and creates normal menu item "name "<br><br />
- wipe_data: factory reset<br><br />
- wipe_cahce: wipe cache<br><br />
<br><br />
The menu is refreshed (the script is called if the menu is scripted) on a menu change, applying an update or running a script. Whenever a script is ran, system, data and sdcard is mounted.<br><br />
<br />
====Application menu====<br />
<br />
Application menu is designed for anything that is run on the startup and can malfunction under any circumstances. Here is one example - suppose you have a mount on font in the startup. You'll have something like this in your startup script:<br />
<pre><br />
mount -o bind /system/myfonts/segoeui.ttf /system/fonts/DroidSans.ttf<br />
mount -o bind /system/myfonts/segoeuib.ttf /system/fonts/DroidSans-Bold.ttf<br />
</pre><br />
<br />
Well the idea is that you add a condition to the script, to run only under some circumstances, like:<br />
<br />
<pre><br />
if [ ! -f /system/switch/.nocustomfont ]; then<br />
mount -o bind /system/myfonts/segoeui.ttf /system/fonts/DroidSans.ttf<br />
mount -o bind /system/myfonts/segoeuib.ttf /system/fonts/DroidSans-Bold.ttf<br />
fi<br />
</pre><br />
<br />
which mounts the font only when /system/switch/.nocustomfont is not existing. If you want this controlable from the recovery, you register in into the application menu this way: all *.sh scripts in /app (where /sdcard/OpenRecovery/app is copied) are called at startup. They are passed variable "APP_MENU_FILE", which is the name of the used menu file (preinitalized). The script will look like this:<br />
<br />
<pre><br />
#!/sbin/sh<br />
<br />
#create the menu item<br />
echo "Custom Font:scripted_menu:custfont.menu:/app/custfont/menu.sh" >> "$APP_MENU_FILE"<br />
</pre><br />
<br />
Since the scripts are in /app and not /bin, use absolute path. This will add an item to the applications menu, now we need a menu when it is selected, which is the "/app/custfont/menu.sh":<br />
<br />
<pre><br />
#!/sbin/sh<br />
<br />
if [ -f /system/switch/.nocustomfont ]; then<br />
# menu name - custom font is disabled<br />
echo "Custom Font (Disabled)" > "$MENU_FILE"<br />
# go to upper level menu<br />
echo "Go Back:menu:.." >> "$MENU_FILE"<br />
# enable it<br />
echo "Enable:shell:/app/custfont/enable.sh" >> "$MENU_FILE"<br />
else<br />
# menu name - custom font is enabled<br />
echo "Custom Font (Enabled)" > "$MENU_FILE"<br />
# go to upper level menu<br />
echo "Go Back:menu:.." >> "$MENU_FILE"<br />
# disable it<br />
echo "Disable:shell:/app/custfont/disable.sh" >> "$MENU_FILE"<br />
fi<br />
</pre><br />
Notice the shells are in /sbin, so use /sbin/sh (or /sbin/bash). The script checks if the switch is on or off and generates the menu accordingly. Since the menu is refreshed each time the script is run, it will always submit the correct option. The "enable.sh" simply touches the file and "disable.sh" just deletes it.<br />
<br />
==Download==<br />
Binaries: [[http://rapidshare.com/files/414530880/OpenRecovery_v1_37_SHOLS.rar.html Open Recovery 1.37 for Milestone]], [[http://rapidshare.com/files/414925211/OpenRecovery_v1_37_STCU.rar.html Open Recovery 1.37 for Sholes Tablet]]<br><br />
Source: [[http://rapidshare.com/files/414696074/OpenRecovery_v1_37_src.tar.gz.html Open Recovery 1.37 source]]<br><br />
<br />
==Support forum==<br />
[[http://www.modmymobile.com/forums/showthread.php?t=531599 ModMyMobile]]</div>Skrilax CZhttp://droid-developers.org/wiki/Open_recoveryOpen recovery2010-08-24T21:34:32Z<p>Skrilax CZ: /* ui.prop file */</p>
<hr />
<div>Developed by Skrilax_CZ.<br><br />
Credit for mankind (from alldroid) for the CustomUpdate, on which this recovery is based,<br><br />
credit for poseidon (also from alldroid) for ADBRecovery,<br><br />
credit for koush for mtd-utils and nandroid (uses script based on it),<br><br />
credit for nadlabak for keyboard layout change script.<br><br />
Current version 1.37 [08/23/2010]<br />
<br />
====Features====<br />
- on-phone console (limited) - MILESTONE ONLY!<br><br />
- rooting the phone from menu (using ChainsDD su and SuperUser.apk (version 2.2.2))<br><br />
- nandroid backup/restore from menu<br><br />
- apply update *.zip files from menu (located in OpenRecovery/updates under the sdcard root folder, there is a sample one (just unpacks a file named "babble" to /system), no signatures are needed :)<br><br />
- wipe data (factory reset)<br><br />
- wipe cache<br><br />
- wipe dalvik-cache<br><br />
- adb in recovery, using bash shell<br><br />
- run a script<br><br />
- recovery options for applications<br><br />
<br />
The open recovery files are located under the OpenRecovery folder under the root of the sd card. The own update *.zip files are under the "updates" folder, sample one is included. The scripts must have *.sh extension and reside under the "scripts" folder. The recovery contains an update.zip with payload, which doesn't do anything else than restarts to the open recovery. All the files for OpenRecovery are under the OpenRecovery folder under the root of the sdcard. The payload installs busybox to /sbin runs the "switch.sh" under the bin folder in open recovery. The initial menu file is in OpenRecovery/menu/init.menu under sdcard root.<br />
<br />
====Download & Installation (MILESTONE)====<br />
1) You need to have the vulnerable recovery installed.<br><br />
2) Download the archive and unpack it to the root folder of the sdcard.<br><br />
<br />
====Usage (MILESTONE)====<br />
1) Reboot into recovery (hold 'X' button on bootloader 90.78, on others hold camera button; until you see triangle; then press camera + volume up)<br><br />
2) Apply the update.zip<br><br />
3) You are now in Open Recovery<br><br />
<br />
====Download & Installation (XT701)====<br />
1) Download the archive and unpack it.<br><br />
2) Either flash the sbf file using RSD Lite (preffered, recommended version 4.6+), or flash using the flash_image the *.img file to recovery partition.<br><br />
3) Unpack the "OpenRecovery" folder and "OpenRecovery.zip" to the root folder of the sdcard.<br><br />
<br />
====Usage (XT701)====<br />
1) Reboot into recovery (hold camera button; until you see triangle; then press camera + volume up)<br><br />
2) If no error occurs, you're now in Open Recovery. If error occurs you're in Open Recovery Lite.<br><br />
<br />
==Notes==<br />
<br />
====Console (MILESTONE ONLY)====<br />
- MENU key is CTRL, pressing MENU + ALT + C forcibly quits the console<br><br />
- scrolling (pressing volume keys by a row (or eight rows if ALT is pressed))<br><br />
- don't forget to select correct keyboard layout (under settings menu)<br><br />
- search key is tab<br><br />
- Alt+A prints "|" instead of Euro, Alt+F prints "$" instead of Pound<br><br />
- limited support for escape characters but allowing to use "clear" and "ls" coloured<br><br />
<br />
====Changing a theme====<br />
On /sdcard/OpenRecovery, the current theme is in "res" subfolder. The other two included are under "res.stock" or "res.squirtle". To change to another theme, let's say stock theme, rename the current "res" folder to "res.or" and "res.stock" to "res".<br><br />
<br />
====OR update.zip format====<br />
- the update.zip is extracted to "/sdcard/OpenRecovery/tmp/update"<br><br />
- shell script, located in the archive in "META-INF/update-or.sh" is called; under env. variable PACKAGE is the root folder of the extraction: "/sdcard/OpenRecovery/tmp/update"<br><br />
- the script can do the very same as script called from the menu (can call imenu)<br><br />
- progress bar is not supported in this format<br><br />
<br />
====ui.prop file====<br />
This file sets the colors for the theme. It's located right under the "res" folder.<br><br />
color3.LED=#100 <- led diode color (3-bit RGB, use only 0 or 1)<br><br />
color32.background=#000000A0 <- recovery background color<br><br />
color32.menu=#FF3705FF <- recovery menu color<br><br />
color32.selection=#FFFFFFFF <- recovery selected item color<br><br />
color32.script=#FFFF00FF <- recovery script color<br><br />
<br><br />
\#Console color properties<br><br />
color24.console.header=#FFFF00 <- console header color<br><br />
color24.console.background=#000000 <- console background color<br><br />
color24.console.front=#E5E5E5 <- console foreground color<br><br />
<br><br />
(The example values are used by default when the property is not found.)<br><br />
<br />
====Lite vs. Full version (XT701 ONLY)====<br />
- The recovery image contains Lite version, with minimal options (moreless only difference from stock recovery is the GUI and applying update.zip doesn't need any signatures.)<br><br />
- When booting into recovery, the Lite version is started. It will automatically switch to full version by applying the OpenRecovery.zip).<br><br />
<br />
==Changelog==<br />
<br />
====Version 1.37====<br />
Bugfixes<br><br />
- fixed nandroid restore not properly restoring yaffs2 partitions in old format<br><br />
- fixed nandroid restore not restoring compressed backups<br><br />
- fixed nandroid backup not taking md5 checksums<br><br />
<br><br />
Changes<br><br />
- console buffers up to 1000 lats printed lines (extended from 200)<br><br />
<br />
====Version 1.36====<br />
Bugfixes<br><br />
- fixed nandroid when doing "Backup All" and not having apps2sd; which would fail complaining that /sddata could not be mounted<br><br />
(Ticking all partitions in the menu and selecting "Backup Selected" was working properly and the backup has been done correctly.)<br><br />
- fixed console cursor blinking<br><br />
- squirtle theme fixed<br><br />
<br />
====Version 1.35====<br />
Features<br><br />
- update.zip can be in new OR format using a shell script (described lower, there are samples of each one)<br><br />
- console has now signalling implemented (menu key = CTRL)<br><br />
- console has arrow keys implemented<br><br />
- console has support for displaying front colors; thus it is no longer needed to disable bash colors<br><br />
- console supports calling clear<br><br />
<br><br />
Changes<br><br />
- recovery binary will exit if not run by init (to prevent running it from adb or console)<br><br />
- scripts in scripts folder are dos2unixed (on -FuFu- advice)<br><br />
- switch files (.nobashcolors, .kdb_qwertz, etc.) are now located in /etc<br><br />
- manual settings of the timezone (/etc/timezone), applied if the env. variable TZ doesn't exist<br><br />
- update.zip no longer need to have the "update-binary", a default one is used if not found<br><br />
<br><br />
Bugfixes<br><br />
- fixed unyaffs not restoring sticky bit / suid / sgid<br><br />
- fixed displaying long menus (it will not be truncated, instead a scrollbar appears)<br><br />
- fixed error in switch.sh for XT701<br><br />
- fixed color24.console.front in the themes -> default is supposed to be #E5E5E5<br><br />
<br />
====Version 1.32====<br />
Features<br><br />
- pressing MENU + ALT + C forcibly quits the console<br><br />
<br><br />
Changes<br><br />
- ui.prop contains more options<br><br />
- when applying any update.zip package, there is a confirmation menu<br><br />
- cursor in console blinks<br><br />
<br><br />
Bugfixes<br><br />
- Error message when ext2 partition on sdcard doesn't exist fixed<br><br />
- fixed the bug with imenu when ran more than once in one script<br><br />
<br />
====Version 1.30a====<br />
Bugfixes<br><br />
- Console layout for QWERTZ / AZERTY fixed<br><br />
<br />
====Version 1.30====<br />
Features<br><br />
- on-phone console<br><br />
- keyboard layout changer included<br><br />
- new nandroid, with support of backing up and restoring ext2 partition on sdcard (Note: uses new format of the backup, new backups are located in /sdcard/nandroid/openrecovery, there is a backwards compatibility to restore the old backups)<br><br />
- ability to create compressed backups (and autoreboot when done)<br><br />
- better nandroid menu<br><br />
- menus wrap around<br><br />
- theming for the recovery (3 themes included, to apply just rename the "res.*" folder to "res"); color settings can be manipulated in the ui.prop file under the res folder)<br><br />
- new commands for menu (tag, label, break)<br><br />
- scripts (command "shell") are able to show menu interactively when requesting user feedback (sample included)<br><br />
<br />
====Version 1.14====<br />
Changes<br><br />
- UI<br><br />
- switch.sh is separated (menu creation is in init_recovery.sh and called later by the recovery)<br><br />
- Volume keys and Camera key can be used to navigate in Open Recovery<br><br />
<br />
====Version 1.12d====<br />
Bugfixes<br><br />
- wipe commands working properly<br><br />
<br><br />
Changes<br><br />
- Bash Settings menu, to enable/disable coloured output (preset to disabled), this is persistent settings, it will last through reboots<br><br />
<br><br />
Features<br><br />
- ability to wipe dalvik-cache only (via script)<br><br />
<br />
====Version 1.12c====<br />
Bugfixes<br><br />
- reboot command is working properly<br><br />
- the content of the sdcard is no longer changed when running, everything is being copied into the ramdisk<br><br />
- minor fixes<br><br />
<br><br />
Changes<br><br />
- removed the 'init' command, instead uses 'scripted_menu'<br><br />
- adbd uses bash (interactively) instead of sh<br><br />
- payload installs also bash and toolbox<br><br />
- different the menu system (deprecated 'init' command, used), each menu must be generated from a script (notes later)<br><br />
- added init folder, scripts (with extension *.sh) are ran there on startup of the open recovery.<br><br />
- the diode is blinking in blue instead of red.<br><br />
<br><br />
Features<br><br />
- the recovery prints the output of the scripts / programs (prints their stdout)<br><br />
- application menu (described later)<br><br />
- new su and SuperUser.apk by ChainsDD<br><br />
- if sdcard has ext2 partition, it is noted in fstab under "/sddata" (the module is inserted automatically)<br><br />
<br />
====Version 1.05====<br />
Bugfixes<br><br />
- fixed a bug in payload making it dependant on the system<br><br />
- there is now nothing in the /system folder when unmounted<br><br />
- toolbox linked statically<br><br />
- busybox now installs symlinks, instead of copying itself<br><br />
- fixed a bug in adb about the shell being in /sbin/sh instead of /system/bin/sh<br><br />
- cleaned up, removed unecessary libraries and binaries<br><br />
- switch.sh now initializes the Open Recovery completely, no other script is used for initialization<br><br />
- permissions set correctly<br><br />
<br><br />
Features<br><br />
- added option to wipe<br><br />
- menu's now have header (the menu file structure has been changed)<br><br />
- added the possibility to run scripts, with .*sh extension located in scripts folder under OpenRecovery folder (shell is /sbin/sh or /sbin/bash)<br><br />
<br />
====Version 1.02====<br />
- fixed root install<br />
<br />
====Version 1.01====<br />
- initial release<br />
<br />
==Developer Notes==<br />
<br />
The recovery contains an update.zip with payload, which doesn't do anything else than restarts to the open recovery. All the files for OpenRecovery are under the OpenRecovery folder under the root of the sdcard. The payload installs busybox to /sbin runs the "switch.sh" under the bin folder in open recovery.<br />
<br />
====Menu System====<br />
<br />
The menu for the Open Recovery is created dynamically. The files must be created inside "/menu" folder by scripts, which can either be specified (if the menu is scripted_menu) or created by a *.sh script in /sdcard/OpenRecovery/init where the scripts are executed at startup. A menu creating script has to create a *.menu file inside the /menu folder. If the menu is supposed to be created on startup and not modified, place the script into /init folder, otherwise use "scripted_menu" item, where the script is ran right before the menu is created. sdcard, system and data partitions are mounted when the scripts are ran. A typical example for "scripted_menu" item is under the tutorial for application menu. For application menu see lower section. The structure of the menu file is different from the CustomUpdate by mankind:<br />
First line is the menu name (normal string), then use the following structure:<br><br />
"item name:type:argument"<br><br />
- item name is what is seen in the menu<br><br />
- type: type of the command (described later)<br><br />
- argument: argument passed to the command (file, or anything else; if empty, put "*" there, otherwise the item will be discarded)<br><br />
<br />
====Commands====<br />
<br />
- reboot: reboots the phone<br><br />
- shell: calls a file specified in arguments (default path is to /bin, if not specified)<br><br />
- menu: opens another menu file (specified in argument), if the argument is "..", it returns to up one level meu<br><br />
- scripted_menu: argument is in format "menu file:menu script", the menu script is called with variable MENU_FILE containing the menu name (default path for the script is to /bin, if not specified)<br><br />
- update: applies an update *.zip file, specified in argument (format SDCARD:$path_to_the_file_in_sdcard)<br><br />
- tag: if ticked, file "tags/.[I]argument[/I]" is created<br><br />
- break: unselectable item, argument is ignored (use "*") and creates a menu item like "---- name ----"; using "*" as name will create just "--------------"<br><br />
- label: unselectable item, argument is ignored (use "*") and creates normal menu item "name "<br><br />
- wipe_data: factory reset<br><br />
- wipe_cahce: wipe cache<br><br />
<br><br />
The menu is refreshed (the script is called if the menu is scripted) on a menu change, applying an update or running a script. Whenever a script is ran, system, data and sdcard is mounted.<br><br />
<br />
====Application menu====<br />
<br />
Application menu is designed for anything that is run on the startup and can malfunction under any circumstances. Here is one example - suppose you have a mount on font in the startup. You'll have something like this in your startup script:<br />
<pre><br />
mount -o bind /system/myfonts/segoeui.ttf /system/fonts/DroidSans.ttf<br />
mount -o bind /system/myfonts/segoeuib.ttf /system/fonts/DroidSans-Bold.ttf<br />
</pre><br />
<br />
Well the idea is that you add a condition to the script, to run only under some circumstances, like:<br />
<br />
<pre><br />
if [ ! -f /system/switch/.nocustomfont ]; then<br />
mount -o bind /system/myfonts/segoeui.ttf /system/fonts/DroidSans.ttf<br />
mount -o bind /system/myfonts/segoeuib.ttf /system/fonts/DroidSans-Bold.ttf<br />
fi<br />
</pre><br />
<br />
which mounts the font only when /system/switch/.nocustomfont is not existing. If you want this controlable from the recovery, you register in into the application menu this way: all *.sh scripts in /app (where /sdcard/OpenRecovery/app is copied) are called at startup. They are passed variable "APP_MENU_FILE", which is the name of the used menu file (preinitalized). The script will look like this:<br />
<br />
<pre><br />
#!/sbin/sh<br />
<br />
#create the menu item<br />
echo "Custom Font:scripted_menu:custfont.menu:/app/custfont/menu.sh" >> "$APP_MENU_FILE"<br />
</pre><br />
<br />
Since the scripts are in /app and not /bin, use absolute path. This will add an item to the applications menu, now we need a menu when it is selected, which is the "/app/custfont/menu.sh":<br />
<br />
<pre><br />
#!/sbin/sh<br />
<br />
if [ -f /system/switch/.nocustomfont ]; then<br />
# menu name - custom font is disabled<br />
echo "Custom Font (Disabled)" > "$MENU_FILE"<br />
# go to upper level menu<br />
echo "Go Back:menu:.." >> "$MENU_FILE"<br />
# enable it<br />
echo "Enable:shell:/app/custfont/enable.sh" >> "$MENU_FILE"<br />
else<br />
# menu name - custom font is enabled<br />
echo "Custom Font (Enabled)" > "$MENU_FILE"<br />
# go to upper level menu<br />
echo "Go Back:menu:.." >> "$MENU_FILE"<br />
# disable it<br />
echo "Disable:shell:/app/custfont/disable.sh" >> "$MENU_FILE"<br />
fi<br />
</pre><br />
Notice the shells are in /sbin, so use /sbin/sh (or /sbin/bash). The script checks if the switch is on or off and generates the menu accordingly. Since the menu is refreshed each time the script is run, it will always submit the correct option. The "enable.sh" simply touches the file and "disable.sh" just deletes it.<br />
<br />
==Download==<br />
Binaries: [[http://rapidshare.com/files/414530880/OpenRecovery_v1_37_SHOLS.rar.html Open Recovery 1.37 for Milestone]], [[http://rapidshare.com/files/414925211/OpenRecovery_v1_37_STCU.rar.html Open Recovery 1.37 for Sholes Tablet]]<br><br />
Source: [[http://rapidshare.com/files/414696074/OpenRecovery_v1_37_src.tar.gz.html Open Recovery 1.37 source]]<br><br />
<br />
==Support forum==<br />
[[http://www.modmymobile.com/forums/showthread.php?t=531599 ModMyMobile]]</div>Skrilax CZhttp://droid-developers.org/wiki/Open_recoveryOpen recovery2010-08-24T21:33:33Z<p>Skrilax CZ: /* Support forum */</p>
<hr />
<div>Developed by Skrilax_CZ.<br><br />
Credit for mankind (from alldroid) for the CustomUpdate, on which this recovery is based,<br><br />
credit for poseidon (also from alldroid) for ADBRecovery,<br><br />
credit for koush for mtd-utils and nandroid (uses script based on it),<br><br />
credit for nadlabak for keyboard layout change script.<br><br />
Current version 1.37 [08/23/2010]<br />
<br />
====Features====<br />
- on-phone console (limited) - MILESTONE ONLY!<br><br />
- rooting the phone from menu (using ChainsDD su and SuperUser.apk (version 2.2.2))<br><br />
- nandroid backup/restore from menu<br><br />
- apply update *.zip files from menu (located in OpenRecovery/updates under the sdcard root folder, there is a sample one (just unpacks a file named "babble" to /system), no signatures are needed :)<br><br />
- wipe data (factory reset)<br><br />
- wipe cache<br><br />
- wipe dalvik-cache<br><br />
- adb in recovery, using bash shell<br><br />
- run a script<br><br />
- recovery options for applications<br><br />
<br />
The open recovery files are located under the OpenRecovery folder under the root of the sd card. The own update *.zip files are under the "updates" folder, sample one is included. The scripts must have *.sh extension and reside under the "scripts" folder. The recovery contains an update.zip with payload, which doesn't do anything else than restarts to the open recovery. All the files for OpenRecovery are under the OpenRecovery folder under the root of the sdcard. The payload installs busybox to /sbin runs the "switch.sh" under the bin folder in open recovery. The initial menu file is in OpenRecovery/menu/init.menu under sdcard root.<br />
<br />
====Download & Installation (MILESTONE)====<br />
1) You need to have the vulnerable recovery installed.<br><br />
2) Download the archive and unpack it to the root folder of the sdcard.<br><br />
<br />
====Usage (MILESTONE)====<br />
1) Reboot into recovery (hold 'X' button on bootloader 90.78, on others hold camera button; until you see triangle; then press camera + volume up)<br><br />
2) Apply the update.zip<br><br />
3) You are now in Open Recovery<br><br />
<br />
====Download & Installation (XT701)====<br />
1) Download the archive and unpack it.<br><br />
2) Either flash the sbf file using RSD Lite (preffered, recommended version 4.6+), or flash using the flash_image the *.img file to recovery partition.<br><br />
3) Unpack the "OpenRecovery" folder and "OpenRecovery.zip" to the root folder of the sdcard.<br><br />
<br />
====Usage (XT701)====<br />
1) Reboot into recovery (hold camera button; until you see triangle; then press camera + volume up)<br><br />
2) If no error occurs, you're now in Open Recovery. If error occurs you're in Open Recovery Lite.<br><br />
<br />
==Notes==<br />
<br />
====Console (MILESTONE ONLY)====<br />
- MENU key is CTRL, pressing MENU + ALT + C forcibly quits the console<br><br />
- scrolling (pressing volume keys by a row (or eight rows if ALT is pressed))<br><br />
- don't forget to select correct keyboard layout (under settings menu)<br><br />
- search key is tab<br><br />
- Alt+A prints "|" instead of Euro, Alt+F prints "$" instead of Pound<br><br />
- limited support for escape characters but allowing to use "clear" and "ls" coloured<br><br />
<br />
====Changing a theme====<br />
On /sdcard/OpenRecovery, the current theme is in "res" subfolder. The other two included are under "res.stock" or "res.squirtle". To change to another theme, let's say stock theme, rename the current "res" folder to "res.or" and "res.stock" to "res".<br><br />
<br />
====OR update.zip format====<br />
- the update.zip is extracted to "/sdcard/OpenRecovery/tmp/update"<br><br />
- shell script, located in the archive in "META-INF/update-or.sh" is called; under env. variable PACKAGE is the root folder of the extraction: "/sdcard/OpenRecovery/tmp/update"<br><br />
- the script can do the very same as script called from the menu (can call imenu)<br><br />
- progress bar is not supported in this format<br><br />
<br />
====ui.prop file====<br />
This file sets the colors for the theme. It's located right under the "res" folder.<br><br />
color3.LED=#100 <- led diode color (3-bit RGB, use only 0 or 1)<br><br />
color32.background=#000000A0 <- recovery background color<br><br />
color32.menu=#FF3705FF <- recovery menu color<br><br />
color32.selection=#FFFFFFFF <- recovery selected item color<br><br />
color32.script=#FFFF00FF <- recovery script color<br><br />
<br><br />
#Console color properties<br><br />
color24.console.header=#FFFF00 <- console header color<br><br />
color24.console.background=#000000 <- console background color<br><br />
color24.console.front=#E5E5E5 <- console foreground color<br><br />
<br><br />
(The example values are used by default when the property is not found.)<br><br />
<br />
====Lite vs. Full version (XT701 ONLY)====<br />
- The recovery image contains Lite version, with minimal options (moreless only difference from stock recovery is the GUI and applying update.zip doesn't need any signatures.)<br><br />
- When booting into recovery, the Lite version is started. It will automatically switch to full version by applying the OpenRecovery.zip).<br><br />
<br />
==Changelog==<br />
<br />
====Version 1.37====<br />
Bugfixes<br><br />
- fixed nandroid restore not properly restoring yaffs2 partitions in old format<br><br />
- fixed nandroid restore not restoring compressed backups<br><br />
- fixed nandroid backup not taking md5 checksums<br><br />
<br><br />
Changes<br><br />
- console buffers up to 1000 lats printed lines (extended from 200)<br><br />
<br />
====Version 1.36====<br />
Bugfixes<br><br />
- fixed nandroid when doing "Backup All" and not having apps2sd; which would fail complaining that /sddata could not be mounted<br><br />
(Ticking all partitions in the menu and selecting "Backup Selected" was working properly and the backup has been done correctly.)<br><br />
- fixed console cursor blinking<br><br />
- squirtle theme fixed<br><br />
<br />
====Version 1.35====<br />
Features<br><br />
- update.zip can be in new OR format using a shell script (described lower, there are samples of each one)<br><br />
- console has now signalling implemented (menu key = CTRL)<br><br />
- console has arrow keys implemented<br><br />
- console has support for displaying front colors; thus it is no longer needed to disable bash colors<br><br />
- console supports calling clear<br><br />
<br><br />
Changes<br><br />
- recovery binary will exit if not run by init (to prevent running it from adb or console)<br><br />
- scripts in scripts folder are dos2unixed (on -FuFu- advice)<br><br />
- switch files (.nobashcolors, .kdb_qwertz, etc.) are now located in /etc<br><br />
- manual settings of the timezone (/etc/timezone), applied if the env. variable TZ doesn't exist<br><br />
- update.zip no longer need to have the "update-binary", a default one is used if not found<br><br />
<br><br />
Bugfixes<br><br />
- fixed unyaffs not restoring sticky bit / suid / sgid<br><br />
- fixed displaying long menus (it will not be truncated, instead a scrollbar appears)<br><br />
- fixed error in switch.sh for XT701<br><br />
- fixed color24.console.front in the themes -> default is supposed to be #E5E5E5<br><br />
<br />
====Version 1.32====<br />
Features<br><br />
- pressing MENU + ALT + C forcibly quits the console<br><br />
<br><br />
Changes<br><br />
- ui.prop contains more options<br><br />
- when applying any update.zip package, there is a confirmation menu<br><br />
- cursor in console blinks<br><br />
<br><br />
Bugfixes<br><br />
- Error message when ext2 partition on sdcard doesn't exist fixed<br><br />
- fixed the bug with imenu when ran more than once in one script<br><br />
<br />
====Version 1.30a====<br />
Bugfixes<br><br />
- Console layout for QWERTZ / AZERTY fixed<br><br />
<br />
====Version 1.30====<br />
Features<br><br />
- on-phone console<br><br />
- keyboard layout changer included<br><br />
- new nandroid, with support of backing up and restoring ext2 partition on sdcard (Note: uses new format of the backup, new backups are located in /sdcard/nandroid/openrecovery, there is a backwards compatibility to restore the old backups)<br><br />
- ability to create compressed backups (and autoreboot when done)<br><br />
- better nandroid menu<br><br />
- menus wrap around<br><br />
- theming for the recovery (3 themes included, to apply just rename the "res.*" folder to "res"); color settings can be manipulated in the ui.prop file under the res folder)<br><br />
- new commands for menu (tag, label, break)<br><br />
- scripts (command "shell") are able to show menu interactively when requesting user feedback (sample included)<br><br />
<br />
====Version 1.14====<br />
Changes<br><br />
- UI<br><br />
- switch.sh is separated (menu creation is in init_recovery.sh and called later by the recovery)<br><br />
- Volume keys and Camera key can be used to navigate in Open Recovery<br><br />
<br />
====Version 1.12d====<br />
Bugfixes<br><br />
- wipe commands working properly<br><br />
<br><br />
Changes<br><br />
- Bash Settings menu, to enable/disable coloured output (preset to disabled), this is persistent settings, it will last through reboots<br><br />
<br><br />
Features<br><br />
- ability to wipe dalvik-cache only (via script)<br><br />
<br />
====Version 1.12c====<br />
Bugfixes<br><br />
- reboot command is working properly<br><br />
- the content of the sdcard is no longer changed when running, everything is being copied into the ramdisk<br><br />
- minor fixes<br><br />
<br><br />
Changes<br><br />
- removed the 'init' command, instead uses 'scripted_menu'<br><br />
- adbd uses bash (interactively) instead of sh<br><br />
- payload installs also bash and toolbox<br><br />
- different the menu system (deprecated 'init' command, used), each menu must be generated from a script (notes later)<br><br />
- added init folder, scripts (with extension *.sh) are ran there on startup of the open recovery.<br><br />
- the diode is blinking in blue instead of red.<br><br />
<br><br />
Features<br><br />
- the recovery prints the output of the scripts / programs (prints their stdout)<br><br />
- application menu (described later)<br><br />
- new su and SuperUser.apk by ChainsDD<br><br />
- if sdcard has ext2 partition, it is noted in fstab under "/sddata" (the module is inserted automatically)<br><br />
<br />
====Version 1.05====<br />
Bugfixes<br><br />
- fixed a bug in payload making it dependant on the system<br><br />
- there is now nothing in the /system folder when unmounted<br><br />
- toolbox linked statically<br><br />
- busybox now installs symlinks, instead of copying itself<br><br />
- fixed a bug in adb about the shell being in /sbin/sh instead of /system/bin/sh<br><br />
- cleaned up, removed unecessary libraries and binaries<br><br />
- switch.sh now initializes the Open Recovery completely, no other script is used for initialization<br><br />
- permissions set correctly<br><br />
<br><br />
Features<br><br />
- added option to wipe<br><br />
- menu's now have header (the menu file structure has been changed)<br><br />
- added the possibility to run scripts, with .*sh extension located in scripts folder under OpenRecovery folder (shell is /sbin/sh or /sbin/bash)<br><br />
<br />
====Version 1.02====<br />
- fixed root install<br />
<br />
====Version 1.01====<br />
- initial release<br />
<br />
==Developer Notes==<br />
<br />
The recovery contains an update.zip with payload, which doesn't do anything else than restarts to the open recovery. All the files for OpenRecovery are under the OpenRecovery folder under the root of the sdcard. The payload installs busybox to /sbin runs the "switch.sh" under the bin folder in open recovery.<br />
<br />
====Menu System====<br />
<br />
The menu for the Open Recovery is created dynamically. The files must be created inside "/menu" folder by scripts, which can either be specified (if the menu is scripted_menu) or created by a *.sh script in /sdcard/OpenRecovery/init where the scripts are executed at startup. A menu creating script has to create a *.menu file inside the /menu folder. If the menu is supposed to be created on startup and not modified, place the script into /init folder, otherwise use "scripted_menu" item, where the script is ran right before the menu is created. sdcard, system and data partitions are mounted when the scripts are ran. A typical example for "scripted_menu" item is under the tutorial for application menu. For application menu see lower section. The structure of the menu file is different from the CustomUpdate by mankind:<br />
First line is the menu name (normal string), then use the following structure:<br><br />
"item name:type:argument"<br><br />
- item name is what is seen in the menu<br><br />
- type: type of the command (described later)<br><br />
- argument: argument passed to the command (file, or anything else; if empty, put "*" there, otherwise the item will be discarded)<br><br />
<br />
====Commands====<br />
<br />
- reboot: reboots the phone<br><br />
- shell: calls a file specified in arguments (default path is to /bin, if not specified)<br><br />
- menu: opens another menu file (specified in argument), if the argument is "..", it returns to up one level meu<br><br />
- scripted_menu: argument is in format "menu file:menu script", the menu script is called with variable MENU_FILE containing the menu name (default path for the script is to /bin, if not specified)<br><br />
- update: applies an update *.zip file, specified in argument (format SDCARD:$path_to_the_file_in_sdcard)<br><br />
- tag: if ticked, file "tags/.[I]argument[/I]" is created<br><br />
- break: unselectable item, argument is ignored (use "*") and creates a menu item like "---- name ----"; using "*" as name will create just "--------------"<br><br />
- label: unselectable item, argument is ignored (use "*") and creates normal menu item "name "<br><br />
- wipe_data: factory reset<br><br />
- wipe_cahce: wipe cache<br><br />
<br><br />
The menu is refreshed (the script is called if the menu is scripted) on a menu change, applying an update or running a script. Whenever a script is ran, system, data and sdcard is mounted.<br><br />
<br />
====Application menu====<br />
<br />
Application menu is designed for anything that is run on the startup and can malfunction under any circumstances. Here is one example - suppose you have a mount on font in the startup. You'll have something like this in your startup script:<br />
<pre><br />
mount -o bind /system/myfonts/segoeui.ttf /system/fonts/DroidSans.ttf<br />
mount -o bind /system/myfonts/segoeuib.ttf /system/fonts/DroidSans-Bold.ttf<br />
</pre><br />
<br />
Well the idea is that you add a condition to the script, to run only under some circumstances, like:<br />
<br />
<pre><br />
if [ ! -f /system/switch/.nocustomfont ]; then<br />
mount -o bind /system/myfonts/segoeui.ttf /system/fonts/DroidSans.ttf<br />
mount -o bind /system/myfonts/segoeuib.ttf /system/fonts/DroidSans-Bold.ttf<br />
fi<br />
</pre><br />
<br />
which mounts the font only when /system/switch/.nocustomfont is not existing. If you want this controlable from the recovery, you register in into the application menu this way: all *.sh scripts in /app (where /sdcard/OpenRecovery/app is copied) are called at startup. They are passed variable "APP_MENU_FILE", which is the name of the used menu file (preinitalized). The script will look like this:<br />
<br />
<pre><br />
#!/sbin/sh<br />
<br />
#create the menu item<br />
echo "Custom Font:scripted_menu:custfont.menu:/app/custfont/menu.sh" >> "$APP_MENU_FILE"<br />
</pre><br />
<br />
Since the scripts are in /app and not /bin, use absolute path. This will add an item to the applications menu, now we need a menu when it is selected, which is the "/app/custfont/menu.sh":<br />
<br />
<pre><br />
#!/sbin/sh<br />
<br />
if [ -f /system/switch/.nocustomfont ]; then<br />
# menu name - custom font is disabled<br />
echo "Custom Font (Disabled)" > "$MENU_FILE"<br />
# go to upper level menu<br />
echo "Go Back:menu:.." >> "$MENU_FILE"<br />
# enable it<br />
echo "Enable:shell:/app/custfont/enable.sh" >> "$MENU_FILE"<br />
else<br />
# menu name - custom font is enabled<br />
echo "Custom Font (Enabled)" > "$MENU_FILE"<br />
# go to upper level menu<br />
echo "Go Back:menu:.." >> "$MENU_FILE"<br />
# disable it<br />
echo "Disable:shell:/app/custfont/disable.sh" >> "$MENU_FILE"<br />
fi<br />
</pre><br />
Notice the shells are in /sbin, so use /sbin/sh (or /sbin/bash). The script checks if the switch is on or off and generates the menu accordingly. Since the menu is refreshed each time the script is run, it will always submit the correct option. The "enable.sh" simply touches the file and "disable.sh" just deletes it.<br />
<br />
==Download==<br />
Binaries: [[http://rapidshare.com/files/414530880/OpenRecovery_v1_37_SHOLS.rar.html Open Recovery 1.37 for Milestone]], [[http://rapidshare.com/files/414925211/OpenRecovery_v1_37_STCU.rar.html Open Recovery 1.37 for Sholes Tablet]]<br><br />
Source: [[http://rapidshare.com/files/414696074/OpenRecovery_v1_37_src.tar.gz.html Open Recovery 1.37 source]]<br><br />
<br />
==Support forum==<br />
[[http://www.modmymobile.com/forums/showthread.php?t=531599 ModMyMobile]]</div>Skrilax CZhttp://droid-developers.org/wiki/Open_recoveryOpen recovery2010-08-24T21:32:52Z<p>Skrilax CZ: /* Download */</p>
<hr />
<div>Developed by Skrilax_CZ.<br><br />
Credit for mankind (from alldroid) for the CustomUpdate, on which this recovery is based,<br><br />
credit for poseidon (also from alldroid) for ADBRecovery,<br><br />
credit for koush for mtd-utils and nandroid (uses script based on it),<br><br />
credit for nadlabak for keyboard layout change script.<br><br />
Current version 1.37 [08/23/2010]<br />
<br />
====Features====<br />
- on-phone console (limited) - MILESTONE ONLY!<br><br />
- rooting the phone from menu (using ChainsDD su and SuperUser.apk (version 2.2.2))<br><br />
- nandroid backup/restore from menu<br><br />
- apply update *.zip files from menu (located in OpenRecovery/updates under the sdcard root folder, there is a sample one (just unpacks a file named "babble" to /system), no signatures are needed :)<br><br />
- wipe data (factory reset)<br><br />
- wipe cache<br><br />
- wipe dalvik-cache<br><br />
- adb in recovery, using bash shell<br><br />
- run a script<br><br />
- recovery options for applications<br><br />
<br />
The open recovery files are located under the OpenRecovery folder under the root of the sd card. The own update *.zip files are under the "updates" folder, sample one is included. The scripts must have *.sh extension and reside under the "scripts" folder. The recovery contains an update.zip with payload, which doesn't do anything else than restarts to the open recovery. All the files for OpenRecovery are under the OpenRecovery folder under the root of the sdcard. The payload installs busybox to /sbin runs the "switch.sh" under the bin folder in open recovery. The initial menu file is in OpenRecovery/menu/init.menu under sdcard root.<br />
<br />
====Download & Installation (MILESTONE)====<br />
1) You need to have the vulnerable recovery installed.<br><br />
2) Download the archive and unpack it to the root folder of the sdcard.<br><br />
<br />
====Usage (MILESTONE)====<br />
1) Reboot into recovery (hold 'X' button on bootloader 90.78, on others hold camera button; until you see triangle; then press camera + volume up)<br><br />
2) Apply the update.zip<br><br />
3) You are now in Open Recovery<br><br />
<br />
====Download & Installation (XT701)====<br />
1) Download the archive and unpack it.<br><br />
2) Either flash the sbf file using RSD Lite (preffered, recommended version 4.6+), or flash using the flash_image the *.img file to recovery partition.<br><br />
3) Unpack the "OpenRecovery" folder and "OpenRecovery.zip" to the root folder of the sdcard.<br><br />
<br />
====Usage (XT701)====<br />
1) Reboot into recovery (hold camera button; until you see triangle; then press camera + volume up)<br><br />
2) If no error occurs, you're now in Open Recovery. If error occurs you're in Open Recovery Lite.<br><br />
<br />
==Notes==<br />
<br />
====Console (MILESTONE ONLY)====<br />
- MENU key is CTRL, pressing MENU + ALT + C forcibly quits the console<br><br />
- scrolling (pressing volume keys by a row (or eight rows if ALT is pressed))<br><br />
- don't forget to select correct keyboard layout (under settings menu)<br><br />
- search key is tab<br><br />
- Alt+A prints "|" instead of Euro, Alt+F prints "$" instead of Pound<br><br />
- limited support for escape characters but allowing to use "clear" and "ls" coloured<br><br />
<br />
====Changing a theme====<br />
On /sdcard/OpenRecovery, the current theme is in "res" subfolder. The other two included are under "res.stock" or "res.squirtle". To change to another theme, let's say stock theme, rename the current "res" folder to "res.or" and "res.stock" to "res".<br><br />
<br />
====OR update.zip format====<br />
- the update.zip is extracted to "/sdcard/OpenRecovery/tmp/update"<br><br />
- shell script, located in the archive in "META-INF/update-or.sh" is called; under env. variable PACKAGE is the root folder of the extraction: "/sdcard/OpenRecovery/tmp/update"<br><br />
- the script can do the very same as script called from the menu (can call imenu)<br><br />
- progress bar is not supported in this format<br><br />
<br />
====ui.prop file====<br />
This file sets the colors for the theme. It's located right under the "res" folder.<br><br />
color3.LED=#100 <- led diode color (3-bit RGB, use only 0 or 1)<br><br />
color32.background=#000000A0 <- recovery background color<br><br />
color32.menu=#FF3705FF <- recovery menu color<br><br />
color32.selection=#FFFFFFFF <- recovery selected item color<br><br />
color32.script=#FFFF00FF <- recovery script color<br><br />
<br><br />
#Console color properties<br><br />
color24.console.header=#FFFF00 <- console header color<br><br />
color24.console.background=#000000 <- console background color<br><br />
color24.console.front=#E5E5E5 <- console foreground color<br><br />
<br><br />
(The example values are used by default when the property is not found.)<br><br />
<br />
====Lite vs. Full version (XT701 ONLY)====<br />
- The recovery image contains Lite version, with minimal options (moreless only difference from stock recovery is the GUI and applying update.zip doesn't need any signatures.)<br><br />
- When booting into recovery, the Lite version is started. It will automatically switch to full version by applying the OpenRecovery.zip).<br><br />
<br />
==Changelog==<br />
<br />
====Version 1.37====<br />
Bugfixes<br><br />
- fixed nandroid restore not properly restoring yaffs2 partitions in old format<br><br />
- fixed nandroid restore not restoring compressed backups<br><br />
- fixed nandroid backup not taking md5 checksums<br><br />
<br><br />
Changes<br><br />
- console buffers up to 1000 lats printed lines (extended from 200)<br><br />
<br />
====Version 1.36====<br />
Bugfixes<br><br />
- fixed nandroid when doing "Backup All" and not having apps2sd; which would fail complaining that /sddata could not be mounted<br><br />
(Ticking all partitions in the menu and selecting "Backup Selected" was working properly and the backup has been done correctly.)<br><br />
- fixed console cursor blinking<br><br />
- squirtle theme fixed<br><br />
<br />
====Version 1.35====<br />
Features<br><br />
- update.zip can be in new OR format using a shell script (described lower, there are samples of each one)<br><br />
- console has now signalling implemented (menu key = CTRL)<br><br />
- console has arrow keys implemented<br><br />
- console has support for displaying front colors; thus it is no longer needed to disable bash colors<br><br />
- console supports calling clear<br><br />
<br><br />
Changes<br><br />
- recovery binary will exit if not run by init (to prevent running it from adb or console)<br><br />
- scripts in scripts folder are dos2unixed (on -FuFu- advice)<br><br />
- switch files (.nobashcolors, .kdb_qwertz, etc.) are now located in /etc<br><br />
- manual settings of the timezone (/etc/timezone), applied if the env. variable TZ doesn't exist<br><br />
- update.zip no longer need to have the "update-binary", a default one is used if not found<br><br />
<br><br />
Bugfixes<br><br />
- fixed unyaffs not restoring sticky bit / suid / sgid<br><br />
- fixed displaying long menus (it will not be truncated, instead a scrollbar appears)<br><br />
- fixed error in switch.sh for XT701<br><br />
- fixed color24.console.front in the themes -> default is supposed to be #E5E5E5<br><br />
<br />
====Version 1.32====<br />
Features<br><br />
- pressing MENU + ALT + C forcibly quits the console<br><br />
<br><br />
Changes<br><br />
- ui.prop contains more options<br><br />
- when applying any update.zip package, there is a confirmation menu<br><br />
- cursor in console blinks<br><br />
<br><br />
Bugfixes<br><br />
- Error message when ext2 partition on sdcard doesn't exist fixed<br><br />
- fixed the bug with imenu when ran more than once in one script<br><br />
<br />
====Version 1.30a====<br />
Bugfixes<br><br />
- Console layout for QWERTZ / AZERTY fixed<br><br />
<br />
====Version 1.30====<br />
Features<br><br />
- on-phone console<br><br />
- keyboard layout changer included<br><br />
- new nandroid, with support of backing up and restoring ext2 partition on sdcard (Note: uses new format of the backup, new backups are located in /sdcard/nandroid/openrecovery, there is a backwards compatibility to restore the old backups)<br><br />
- ability to create compressed backups (and autoreboot when done)<br><br />
- better nandroid menu<br><br />
- menus wrap around<br><br />
- theming for the recovery (3 themes included, to apply just rename the "res.*" folder to "res"); color settings can be manipulated in the ui.prop file under the res folder)<br><br />
- new commands for menu (tag, label, break)<br><br />
- scripts (command "shell") are able to show menu interactively when requesting user feedback (sample included)<br><br />
<br />
====Version 1.14====<br />
Changes<br><br />
- UI<br><br />
- switch.sh is separated (menu creation is in init_recovery.sh and called later by the recovery)<br><br />
- Volume keys and Camera key can be used to navigate in Open Recovery<br><br />
<br />
====Version 1.12d====<br />
Bugfixes<br><br />
- wipe commands working properly<br><br />
<br><br />
Changes<br><br />
- Bash Settings menu, to enable/disable coloured output (preset to disabled), this is persistent settings, it will last through reboots<br><br />
<br><br />
Features<br><br />
- ability to wipe dalvik-cache only (via script)<br><br />
<br />
====Version 1.12c====<br />
Bugfixes<br><br />
- reboot command is working properly<br><br />
- the content of the sdcard is no longer changed when running, everything is being copied into the ramdisk<br><br />
- minor fixes<br><br />
<br><br />
Changes<br><br />
- removed the 'init' command, instead uses 'scripted_menu'<br><br />
- adbd uses bash (interactively) instead of sh<br><br />
- payload installs also bash and toolbox<br><br />
- different the menu system (deprecated 'init' command, used), each menu must be generated from a script (notes later)<br><br />
- added init folder, scripts (with extension *.sh) are ran there on startup of the open recovery.<br><br />
- the diode is blinking in blue instead of red.<br><br />
<br><br />
Features<br><br />
- the recovery prints the output of the scripts / programs (prints their stdout)<br><br />
- application menu (described later)<br><br />
- new su and SuperUser.apk by ChainsDD<br><br />
- if sdcard has ext2 partition, it is noted in fstab under "/sddata" (the module is inserted automatically)<br><br />
<br />
====Version 1.05====<br />
Bugfixes<br><br />
- fixed a bug in payload making it dependant on the system<br><br />
- there is now nothing in the /system folder when unmounted<br><br />
- toolbox linked statically<br><br />
- busybox now installs symlinks, instead of copying itself<br><br />
- fixed a bug in adb about the shell being in /sbin/sh instead of /system/bin/sh<br><br />
- cleaned up, removed unecessary libraries and binaries<br><br />
- switch.sh now initializes the Open Recovery completely, no other script is used for initialization<br><br />
- permissions set correctly<br><br />
<br><br />
Features<br><br />
- added option to wipe<br><br />
- menu's now have header (the menu file structure has been changed)<br><br />
- added the possibility to run scripts, with .*sh extension located in scripts folder under OpenRecovery folder (shell is /sbin/sh or /sbin/bash)<br><br />
<br />
====Version 1.02====<br />
- fixed root install<br />
<br />
====Version 1.01====<br />
- initial release<br />
<br />
==Developer Notes==<br />
<br />
The recovery contains an update.zip with payload, which doesn't do anything else than restarts to the open recovery. All the files for OpenRecovery are under the OpenRecovery folder under the root of the sdcard. The payload installs busybox to /sbin runs the "switch.sh" under the bin folder in open recovery.<br />
<br />
====Menu System====<br />
<br />
The menu for the Open Recovery is created dynamically. The files must be created inside "/menu" folder by scripts, which can either be specified (if the menu is scripted_menu) or created by a *.sh script in /sdcard/OpenRecovery/init where the scripts are executed at startup. A menu creating script has to create a *.menu file inside the /menu folder. If the menu is supposed to be created on startup and not modified, place the script into /init folder, otherwise use "scripted_menu" item, where the script is ran right before the menu is created. sdcard, system and data partitions are mounted when the scripts are ran. A typical example for "scripted_menu" item is under the tutorial for application menu. For application menu see lower section. The structure of the menu file is different from the CustomUpdate by mankind:<br />
First line is the menu name (normal string), then use the following structure:<br><br />
"item name:type:argument"<br><br />
- item name is what is seen in the menu<br><br />
- type: type of the command (described later)<br><br />
- argument: argument passed to the command (file, or anything else; if empty, put "*" there, otherwise the item will be discarded)<br><br />
<br />
====Commands====<br />
<br />
- reboot: reboots the phone<br><br />
- shell: calls a file specified in arguments (default path is to /bin, if not specified)<br><br />
- menu: opens another menu file (specified in argument), if the argument is "..", it returns to up one level meu<br><br />
- scripted_menu: argument is in format "menu file:menu script", the menu script is called with variable MENU_FILE containing the menu name (default path for the script is to /bin, if not specified)<br><br />
- update: applies an update *.zip file, specified in argument (format SDCARD:$path_to_the_file_in_sdcard)<br><br />
- tag: if ticked, file "tags/.[I]argument[/I]" is created<br><br />
- break: unselectable item, argument is ignored (use "*") and creates a menu item like "---- name ----"; using "*" as name will create just "--------------"<br><br />
- label: unselectable item, argument is ignored (use "*") and creates normal menu item "name "<br><br />
- wipe_data: factory reset<br><br />
- wipe_cahce: wipe cache<br><br />
<br><br />
The menu is refreshed (the script is called if the menu is scripted) on a menu change, applying an update or running a script. Whenever a script is ran, system, data and sdcard is mounted.<br><br />
<br />
====Application menu====<br />
<br />
Application menu is designed for anything that is run on the startup and can malfunction under any circumstances. Here is one example - suppose you have a mount on font in the startup. You'll have something like this in your startup script:<br />
<pre><br />
mount -o bind /system/myfonts/segoeui.ttf /system/fonts/DroidSans.ttf<br />
mount -o bind /system/myfonts/segoeuib.ttf /system/fonts/DroidSans-Bold.ttf<br />
</pre><br />
<br />
Well the idea is that you add a condition to the script, to run only under some circumstances, like:<br />
<br />
<pre><br />
if [ ! -f /system/switch/.nocustomfont ]; then<br />
mount -o bind /system/myfonts/segoeui.ttf /system/fonts/DroidSans.ttf<br />
mount -o bind /system/myfonts/segoeuib.ttf /system/fonts/DroidSans-Bold.ttf<br />
fi<br />
</pre><br />
<br />
which mounts the font only when /system/switch/.nocustomfont is not existing. If you want this controlable from the recovery, you register in into the application menu this way: all *.sh scripts in /app (where /sdcard/OpenRecovery/app is copied) are called at startup. They are passed variable "APP_MENU_FILE", which is the name of the used menu file (preinitalized). The script will look like this:<br />
<br />
<pre><br />
#!/sbin/sh<br />
<br />
#create the menu item<br />
echo "Custom Font:scripted_menu:custfont.menu:/app/custfont/menu.sh" >> "$APP_MENU_FILE"<br />
</pre><br />
<br />
Since the scripts are in /app and not /bin, use absolute path. This will add an item to the applications menu, now we need a menu when it is selected, which is the "/app/custfont/menu.sh":<br />
<br />
<pre><br />
#!/sbin/sh<br />
<br />
if [ -f /system/switch/.nocustomfont ]; then<br />
# menu name - custom font is disabled<br />
echo "Custom Font (Disabled)" > "$MENU_FILE"<br />
# go to upper level menu<br />
echo "Go Back:menu:.." >> "$MENU_FILE"<br />
# enable it<br />
echo "Enable:shell:/app/custfont/enable.sh" >> "$MENU_FILE"<br />
else<br />
# menu name - custom font is enabled<br />
echo "Custom Font (Enabled)" > "$MENU_FILE"<br />
# go to upper level menu<br />
echo "Go Back:menu:.." >> "$MENU_FILE"<br />
# disable it<br />
echo "Disable:shell:/app/custfont/disable.sh" >> "$MENU_FILE"<br />
fi<br />
</pre><br />
Notice the shells are in /sbin, so use /sbin/sh (or /sbin/bash). The script checks if the switch is on or off and generates the menu accordingly. Since the menu is refreshed each time the script is run, it will always submit the correct option. The "enable.sh" simply touches the file and "disable.sh" just deletes it.<br />
<br />
==Download==<br />
Binaries: [[http://rapidshare.com/files/414530880/OpenRecovery_v1_37_SHOLS.rar.html Open Recovery 1.37 for Milestone]], [[http://rapidshare.com/files/414925211/OpenRecovery_v1_37_STCU.rar.html Open Recovery 1.37 for Sholes Tablet]]<br><br />
Source: [[http://rapidshare.com/files/414696074/OpenRecovery_v1_37_src.tar.gz.html Open Recovery 1.37 source]]<br><br />
<br />
===Support forum===<br />
[[http://www.modmymobile.com/forums/showthread.php?t=531599 ModMyMobile]]</div>Skrilax CZhttp://droid-developers.org/wiki/Open_recoveryOpen recovery2010-08-24T21:32:22Z<p>Skrilax CZ: /* Developer Notes */</p>
<hr />
<div>Developed by Skrilax_CZ.<br><br />
Credit for mankind (from alldroid) for the CustomUpdate, on which this recovery is based,<br><br />
credit for poseidon (also from alldroid) for ADBRecovery,<br><br />
credit for koush for mtd-utils and nandroid (uses script based on it),<br><br />
credit for nadlabak for keyboard layout change script.<br><br />
Current version 1.37 [08/23/2010]<br />
<br />
====Features====<br />
- on-phone console (limited) - MILESTONE ONLY!<br><br />
- rooting the phone from menu (using ChainsDD su and SuperUser.apk (version 2.2.2))<br><br />
- nandroid backup/restore from menu<br><br />
- apply update *.zip files from menu (located in OpenRecovery/updates under the sdcard root folder, there is a sample one (just unpacks a file named "babble" to /system), no signatures are needed :)<br><br />
- wipe data (factory reset)<br><br />
- wipe cache<br><br />
- wipe dalvik-cache<br><br />
- adb in recovery, using bash shell<br><br />
- run a script<br><br />
- recovery options for applications<br><br />
<br />
The open recovery files are located under the OpenRecovery folder under the root of the sd card. The own update *.zip files are under the "updates" folder, sample one is included. The scripts must have *.sh extension and reside under the "scripts" folder. The recovery contains an update.zip with payload, which doesn't do anything else than restarts to the open recovery. All the files for OpenRecovery are under the OpenRecovery folder under the root of the sdcard. The payload installs busybox to /sbin runs the "switch.sh" under the bin folder in open recovery. The initial menu file is in OpenRecovery/menu/init.menu under sdcard root.<br />
<br />
====Download & Installation (MILESTONE)====<br />
1) You need to have the vulnerable recovery installed.<br><br />
2) Download the archive and unpack it to the root folder of the sdcard.<br><br />
<br />
====Usage (MILESTONE)====<br />
1) Reboot into recovery (hold 'X' button on bootloader 90.78, on others hold camera button; until you see triangle; then press camera + volume up)<br><br />
2) Apply the update.zip<br><br />
3) You are now in Open Recovery<br><br />
<br />
====Download & Installation (XT701)====<br />
1) Download the archive and unpack it.<br><br />
2) Either flash the sbf file using RSD Lite (preffered, recommended version 4.6+), or flash using the flash_image the *.img file to recovery partition.<br><br />
3) Unpack the "OpenRecovery" folder and "OpenRecovery.zip" to the root folder of the sdcard.<br><br />
<br />
====Usage (XT701)====<br />
1) Reboot into recovery (hold camera button; until you see triangle; then press camera + volume up)<br><br />
2) If no error occurs, you're now in Open Recovery. If error occurs you're in Open Recovery Lite.<br><br />
<br />
==Notes==<br />
<br />
====Console (MILESTONE ONLY)====<br />
- MENU key is CTRL, pressing MENU + ALT + C forcibly quits the console<br><br />
- scrolling (pressing volume keys by a row (or eight rows if ALT is pressed))<br><br />
- don't forget to select correct keyboard layout (under settings menu)<br><br />
- search key is tab<br><br />
- Alt+A prints "|" instead of Euro, Alt+F prints "$" instead of Pound<br><br />
- limited support for escape characters but allowing to use "clear" and "ls" coloured<br><br />
<br />
====Changing a theme====<br />
On /sdcard/OpenRecovery, the current theme is in "res" subfolder. The other two included are under "res.stock" or "res.squirtle". To change to another theme, let's say stock theme, rename the current "res" folder to "res.or" and "res.stock" to "res".<br><br />
<br />
====OR update.zip format====<br />
- the update.zip is extracted to "/sdcard/OpenRecovery/tmp/update"<br><br />
- shell script, located in the archive in "META-INF/update-or.sh" is called; under env. variable PACKAGE is the root folder of the extraction: "/sdcard/OpenRecovery/tmp/update"<br><br />
- the script can do the very same as script called from the menu (can call imenu)<br><br />
- progress bar is not supported in this format<br><br />
<br />
====ui.prop file====<br />
This file sets the colors for the theme. It's located right under the "res" folder.<br><br />
color3.LED=#100 <- led diode color (3-bit RGB, use only 0 or 1)<br><br />
color32.background=#000000A0 <- recovery background color<br><br />
color32.menu=#FF3705FF <- recovery menu color<br><br />
color32.selection=#FFFFFFFF <- recovery selected item color<br><br />
color32.script=#FFFF00FF <- recovery script color<br><br />
<br><br />
#Console color properties<br><br />
color24.console.header=#FFFF00 <- console header color<br><br />
color24.console.background=#000000 <- console background color<br><br />
color24.console.front=#E5E5E5 <- console foreground color<br><br />
<br><br />
(The example values are used by default when the property is not found.)<br><br />
<br />
====Lite vs. Full version (XT701 ONLY)====<br />
- The recovery image contains Lite version, with minimal options (moreless only difference from stock recovery is the GUI and applying update.zip doesn't need any signatures.)<br><br />
- When booting into recovery, the Lite version is started. It will automatically switch to full version by applying the OpenRecovery.zip).<br><br />
<br />
==Changelog==<br />
<br />
====Version 1.37====<br />
Bugfixes<br><br />
- fixed nandroid restore not properly restoring yaffs2 partitions in old format<br><br />
- fixed nandroid restore not restoring compressed backups<br><br />
- fixed nandroid backup not taking md5 checksums<br><br />
<br><br />
Changes<br><br />
- console buffers up to 1000 lats printed lines (extended from 200)<br><br />
<br />
====Version 1.36====<br />
Bugfixes<br><br />
- fixed nandroid when doing "Backup All" and not having apps2sd; which would fail complaining that /sddata could not be mounted<br><br />
(Ticking all partitions in the menu and selecting "Backup Selected" was working properly and the backup has been done correctly.)<br><br />
- fixed console cursor blinking<br><br />
- squirtle theme fixed<br><br />
<br />
====Version 1.35====<br />
Features<br><br />
- update.zip can be in new OR format using a shell script (described lower, there are samples of each one)<br><br />
- console has now signalling implemented (menu key = CTRL)<br><br />
- console has arrow keys implemented<br><br />
- console has support for displaying front colors; thus it is no longer needed to disable bash colors<br><br />
- console supports calling clear<br><br />
<br><br />
Changes<br><br />
- recovery binary will exit if not run by init (to prevent running it from adb or console)<br><br />
- scripts in scripts folder are dos2unixed (on -FuFu- advice)<br><br />
- switch files (.nobashcolors, .kdb_qwertz, etc.) are now located in /etc<br><br />
- manual settings of the timezone (/etc/timezone), applied if the env. variable TZ doesn't exist<br><br />
- update.zip no longer need to have the "update-binary", a default one is used if not found<br><br />
<br><br />
Bugfixes<br><br />
- fixed unyaffs not restoring sticky bit / suid / sgid<br><br />
- fixed displaying long menus (it will not be truncated, instead a scrollbar appears)<br><br />
- fixed error in switch.sh for XT701<br><br />
- fixed color24.console.front in the themes -> default is supposed to be #E5E5E5<br><br />
<br />
====Version 1.32====<br />
Features<br><br />
- pressing MENU + ALT + C forcibly quits the console<br><br />
<br><br />
Changes<br><br />
- ui.prop contains more options<br><br />
- when applying any update.zip package, there is a confirmation menu<br><br />
- cursor in console blinks<br><br />
<br><br />
Bugfixes<br><br />
- Error message when ext2 partition on sdcard doesn't exist fixed<br><br />
- fixed the bug with imenu when ran more than once in one script<br><br />
<br />
====Version 1.30a====<br />
Bugfixes<br><br />
- Console layout for QWERTZ / AZERTY fixed<br><br />
<br />
====Version 1.30====<br />
Features<br><br />
- on-phone console<br><br />
- keyboard layout changer included<br><br />
- new nandroid, with support of backing up and restoring ext2 partition on sdcard (Note: uses new format of the backup, new backups are located in /sdcard/nandroid/openrecovery, there is a backwards compatibility to restore the old backups)<br><br />
- ability to create compressed backups (and autoreboot when done)<br><br />
- better nandroid menu<br><br />
- menus wrap around<br><br />
- theming for the recovery (3 themes included, to apply just rename the "res.*" folder to "res"); color settings can be manipulated in the ui.prop file under the res folder)<br><br />
- new commands for menu (tag, label, break)<br><br />
- scripts (command "shell") are able to show menu interactively when requesting user feedback (sample included)<br><br />
<br />
====Version 1.14====<br />
Changes<br><br />
- UI<br><br />
- switch.sh is separated (menu creation is in init_recovery.sh and called later by the recovery)<br><br />
- Volume keys and Camera key can be used to navigate in Open Recovery<br><br />
<br />
====Version 1.12d====<br />
Bugfixes<br><br />
- wipe commands working properly<br><br />
<br><br />
Changes<br><br />
- Bash Settings menu, to enable/disable coloured output (preset to disabled), this is persistent settings, it will last through reboots<br><br />
<br><br />
Features<br><br />
- ability to wipe dalvik-cache only (via script)<br><br />
<br />
====Version 1.12c====<br />
Bugfixes<br><br />
- reboot command is working properly<br><br />
- the content of the sdcard is no longer changed when running, everything is being copied into the ramdisk<br><br />
- minor fixes<br><br />
<br><br />
Changes<br><br />
- removed the 'init' command, instead uses 'scripted_menu'<br><br />
- adbd uses bash (interactively) instead of sh<br><br />
- payload installs also bash and toolbox<br><br />
- different the menu system (deprecated 'init' command, used), each menu must be generated from a script (notes later)<br><br />
- added init folder, scripts (with extension *.sh) are ran there on startup of the open recovery.<br><br />
- the diode is blinking in blue instead of red.<br><br />
<br><br />
Features<br><br />
- the recovery prints the output of the scripts / programs (prints their stdout)<br><br />
- application menu (described later)<br><br />
- new su and SuperUser.apk by ChainsDD<br><br />
- if sdcard has ext2 partition, it is noted in fstab under "/sddata" (the module is inserted automatically)<br><br />
<br />
====Version 1.05====<br />
Bugfixes<br><br />
- fixed a bug in payload making it dependant on the system<br><br />
- there is now nothing in the /system folder when unmounted<br><br />
- toolbox linked statically<br><br />
- busybox now installs symlinks, instead of copying itself<br><br />
- fixed a bug in adb about the shell being in /sbin/sh instead of /system/bin/sh<br><br />
- cleaned up, removed unecessary libraries and binaries<br><br />
- switch.sh now initializes the Open Recovery completely, no other script is used for initialization<br><br />
- permissions set correctly<br><br />
<br><br />
Features<br><br />
- added option to wipe<br><br />
- menu's now have header (the menu file structure has been changed)<br><br />
- added the possibility to run scripts, with .*sh extension located in scripts folder under OpenRecovery folder (shell is /sbin/sh or /sbin/bash)<br><br />
<br />
====Version 1.02====<br />
- fixed root install<br />
<br />
====Version 1.01====<br />
- initial release<br />
<br />
==Developer Notes==<br />
<br />
The recovery contains an update.zip with payload, which doesn't do anything else than restarts to the open recovery. All the files for OpenRecovery are under the OpenRecovery folder under the root of the sdcard. The payload installs busybox to /sbin runs the "switch.sh" under the bin folder in open recovery.<br />
<br />
====Menu System====<br />
<br />
The menu for the Open Recovery is created dynamically. The files must be created inside "/menu" folder by scripts, which can either be specified (if the menu is scripted_menu) or created by a *.sh script in /sdcard/OpenRecovery/init where the scripts are executed at startup. A menu creating script has to create a *.menu file inside the /menu folder. If the menu is supposed to be created on startup and not modified, place the script into /init folder, otherwise use "scripted_menu" item, where the script is ran right before the menu is created. sdcard, system and data partitions are mounted when the scripts are ran. A typical example for "scripted_menu" item is under the tutorial for application menu. For application menu see lower section. The structure of the menu file is different from the CustomUpdate by mankind:<br />
First line is the menu name (normal string), then use the following structure:<br><br />
"item name:type:argument"<br><br />
- item name is what is seen in the menu<br><br />
- type: type of the command (described later)<br><br />
- argument: argument passed to the command (file, or anything else; if empty, put "*" there, otherwise the item will be discarded)<br><br />
<br />
====Commands====<br />
<br />
- reboot: reboots the phone<br><br />
- shell: calls a file specified in arguments (default path is to /bin, if not specified)<br><br />
- menu: opens another menu file (specified in argument), if the argument is "..", it returns to up one level meu<br><br />
- scripted_menu: argument is in format "menu file:menu script", the menu script is called with variable MENU_FILE containing the menu name (default path for the script is to /bin, if not specified)<br><br />
- update: applies an update *.zip file, specified in argument (format SDCARD:$path_to_the_file_in_sdcard)<br><br />
- tag: if ticked, file "tags/.[I]argument[/I]" is created<br><br />
- break: unselectable item, argument is ignored (use "*") and creates a menu item like "---- name ----"; using "*" as name will create just "--------------"<br><br />
- label: unselectable item, argument is ignored (use "*") and creates normal menu item "name "<br><br />
- wipe_data: factory reset<br><br />
- wipe_cahce: wipe cache<br><br />
<br><br />
The menu is refreshed (the script is called if the menu is scripted) on a menu change, applying an update or running a script. Whenever a script is ran, system, data and sdcard is mounted.<br><br />
<br />
====Application menu====<br />
<br />
Application menu is designed for anything that is run on the startup and can malfunction under any circumstances. Here is one example - suppose you have a mount on font in the startup. You'll have something like this in your startup script:<br />
<pre><br />
mount -o bind /system/myfonts/segoeui.ttf /system/fonts/DroidSans.ttf<br />
mount -o bind /system/myfonts/segoeuib.ttf /system/fonts/DroidSans-Bold.ttf<br />
</pre><br />
<br />
Well the idea is that you add a condition to the script, to run only under some circumstances, like:<br />
<br />
<pre><br />
if [ ! -f /system/switch/.nocustomfont ]; then<br />
mount -o bind /system/myfonts/segoeui.ttf /system/fonts/DroidSans.ttf<br />
mount -o bind /system/myfonts/segoeuib.ttf /system/fonts/DroidSans-Bold.ttf<br />
fi<br />
</pre><br />
<br />
which mounts the font only when /system/switch/.nocustomfont is not existing. If you want this controlable from the recovery, you register in into the application menu this way: all *.sh scripts in /app (where /sdcard/OpenRecovery/app is copied) are called at startup. They are passed variable "APP_MENU_FILE", which is the name of the used menu file (preinitalized). The script will look like this:<br />
<br />
<pre><br />
#!/sbin/sh<br />
<br />
#create the menu item<br />
echo "Custom Font:scripted_menu:custfont.menu:/app/custfont/menu.sh" >> "$APP_MENU_FILE"<br />
</pre><br />
<br />
Since the scripts are in /app and not /bin, use absolute path. This will add an item to the applications menu, now we need a menu when it is selected, which is the "/app/custfont/menu.sh":<br />
<br />
<pre><br />
#!/sbin/sh<br />
<br />
if [ -f /system/switch/.nocustomfont ]; then<br />
# menu name - custom font is disabled<br />
echo "Custom Font (Disabled)" > "$MENU_FILE"<br />
# go to upper level menu<br />
echo "Go Back:menu:.." >> "$MENU_FILE"<br />
# enable it<br />
echo "Enable:shell:/app/custfont/enable.sh" >> "$MENU_FILE"<br />
else<br />
# menu name - custom font is enabled<br />
echo "Custom Font (Enabled)" > "$MENU_FILE"<br />
# go to upper level menu<br />
echo "Go Back:menu:.." >> "$MENU_FILE"<br />
# disable it<br />
echo "Disable:shell:/app/custfont/disable.sh" >> "$MENU_FILE"<br />
fi<br />
</pre><br />
Notice the shells are in /sbin, so use /sbin/sh (or /sbin/bash). The script checks if the switch is on or off and generates the menu accordingly. Since the menu is refreshed each time the script is run, it will always submit the correct option. The "enable.sh" simply touches the file and "disable.sh" just deletes it.<br />
<br />
===Download===<br />
Binaries: [[http://rapidshare.com/files/414530880/OpenRecovery_v1_37_SHOLS.rar.html Open Recovery 1.37 for Milestone]], [[http://rapidshare.com/files/414925211/OpenRecovery_v1_37_STCU.rar.html Open Recovery 1.37 for Sholes Tablet]]<br><br />
Source: [[http://rapidshare.com/files/414696074/OpenRecovery_v1_37_src.tar.gz.html Open Recovery 1.37 source]]<br><br />
<br />
===Support forum===<br />
[[http://www.modmymobile.com/forums/showthread.php?t=531599 ModMyMobile]]</div>Skrilax CZhttp://droid-developers.org/wiki/Open_recoveryOpen recovery2010-08-24T21:31:37Z<p>Skrilax CZ: /* Developer Notes */</p>
<hr />
<div>Developed by Skrilax_CZ.<br><br />
Credit for mankind (from alldroid) for the CustomUpdate, on which this recovery is based,<br><br />
credit for poseidon (also from alldroid) for ADBRecovery,<br><br />
credit for koush for mtd-utils and nandroid (uses script based on it),<br><br />
credit for nadlabak for keyboard layout change script.<br><br />
Current version 1.37 [08/23/2010]<br />
<br />
====Features====<br />
- on-phone console (limited) - MILESTONE ONLY!<br><br />
- rooting the phone from menu (using ChainsDD su and SuperUser.apk (version 2.2.2))<br><br />
- nandroid backup/restore from menu<br><br />
- apply update *.zip files from menu (located in OpenRecovery/updates under the sdcard root folder, there is a sample one (just unpacks a file named "babble" to /system), no signatures are needed :)<br><br />
- wipe data (factory reset)<br><br />
- wipe cache<br><br />
- wipe dalvik-cache<br><br />
- adb in recovery, using bash shell<br><br />
- run a script<br><br />
- recovery options for applications<br><br />
<br />
The open recovery files are located under the OpenRecovery folder under the root of the sd card. The own update *.zip files are under the "updates" folder, sample one is included. The scripts must have *.sh extension and reside under the "scripts" folder. The recovery contains an update.zip with payload, which doesn't do anything else than restarts to the open recovery. All the files for OpenRecovery are under the OpenRecovery folder under the root of the sdcard. The payload installs busybox to /sbin runs the "switch.sh" under the bin folder in open recovery. The initial menu file is in OpenRecovery/menu/init.menu under sdcard root.<br />
<br />
====Download & Installation (MILESTONE)====<br />
1) You need to have the vulnerable recovery installed.<br><br />
2) Download the archive and unpack it to the root folder of the sdcard.<br><br />
<br />
====Usage (MILESTONE)====<br />
1) Reboot into recovery (hold 'X' button on bootloader 90.78, on others hold camera button; until you see triangle; then press camera + volume up)<br><br />
2) Apply the update.zip<br><br />
3) You are now in Open Recovery<br><br />
<br />
====Download & Installation (XT701)====<br />
1) Download the archive and unpack it.<br><br />
2) Either flash the sbf file using RSD Lite (preffered, recommended version 4.6+), or flash using the flash_image the *.img file to recovery partition.<br><br />
3) Unpack the "OpenRecovery" folder and "OpenRecovery.zip" to the root folder of the sdcard.<br><br />
<br />
====Usage (XT701)====<br />
1) Reboot into recovery (hold camera button; until you see triangle; then press camera + volume up)<br><br />
2) If no error occurs, you're now in Open Recovery. If error occurs you're in Open Recovery Lite.<br><br />
<br />
==Notes==<br />
<br />
====Console (MILESTONE ONLY)====<br />
- MENU key is CTRL, pressing MENU + ALT + C forcibly quits the console<br><br />
- scrolling (pressing volume keys by a row (or eight rows if ALT is pressed))<br><br />
- don't forget to select correct keyboard layout (under settings menu)<br><br />
- search key is tab<br><br />
- Alt+A prints "|" instead of Euro, Alt+F prints "$" instead of Pound<br><br />
- limited support for escape characters but allowing to use "clear" and "ls" coloured<br><br />
<br />
====Changing a theme====<br />
On /sdcard/OpenRecovery, the current theme is in "res" subfolder. The other two included are under "res.stock" or "res.squirtle". To change to another theme, let's say stock theme, rename the current "res" folder to "res.or" and "res.stock" to "res".<br><br />
<br />
====OR update.zip format====<br />
- the update.zip is extracted to "/sdcard/OpenRecovery/tmp/update"<br><br />
- shell script, located in the archive in "META-INF/update-or.sh" is called; under env. variable PACKAGE is the root folder of the extraction: "/sdcard/OpenRecovery/tmp/update"<br><br />
- the script can do the very same as script called from the menu (can call imenu)<br><br />
- progress bar is not supported in this format<br><br />
<br />
====ui.prop file====<br />
This file sets the colors for the theme. It's located right under the "res" folder.<br><br />
color3.LED=#100 <- led diode color (3-bit RGB, use only 0 or 1)<br><br />
color32.background=#000000A0 <- recovery background color<br><br />
color32.menu=#FF3705FF <- recovery menu color<br><br />
color32.selection=#FFFFFFFF <- recovery selected item color<br><br />
color32.script=#FFFF00FF <- recovery script color<br><br />
<br><br />
#Console color properties<br><br />
color24.console.header=#FFFF00 <- console header color<br><br />
color24.console.background=#000000 <- console background color<br><br />
color24.console.front=#E5E5E5 <- console foreground color<br><br />
<br><br />
(The example values are used by default when the property is not found.)<br><br />
<br />
====Lite vs. Full version (XT701 ONLY)====<br />
- The recovery image contains Lite version, with minimal options (moreless only difference from stock recovery is the GUI and applying update.zip doesn't need any signatures.)<br><br />
- When booting into recovery, the Lite version is started. It will automatically switch to full version by applying the OpenRecovery.zip).<br><br />
<br />
==Changelog==<br />
<br />
====Version 1.37====<br />
Bugfixes<br><br />
- fixed nandroid restore not properly restoring yaffs2 partitions in old format<br><br />
- fixed nandroid restore not restoring compressed backups<br><br />
- fixed nandroid backup not taking md5 checksums<br><br />
<br><br />
Changes<br><br />
- console buffers up to 1000 lats printed lines (extended from 200)<br><br />
<br />
====Version 1.36====<br />
Bugfixes<br><br />
- fixed nandroid when doing "Backup All" and not having apps2sd; which would fail complaining that /sddata could not be mounted<br><br />
(Ticking all partitions in the menu and selecting "Backup Selected" was working properly and the backup has been done correctly.)<br><br />
- fixed console cursor blinking<br><br />
- squirtle theme fixed<br><br />
<br />
====Version 1.35====<br />
Features<br><br />
- update.zip can be in new OR format using a shell script (described lower, there are samples of each one)<br><br />
- console has now signalling implemented (menu key = CTRL)<br><br />
- console has arrow keys implemented<br><br />
- console has support for displaying front colors; thus it is no longer needed to disable bash colors<br><br />
- console supports calling clear<br><br />
<br><br />
Changes<br><br />
- recovery binary will exit if not run by init (to prevent running it from adb or console)<br><br />
- scripts in scripts folder are dos2unixed (on -FuFu- advice)<br><br />
- switch files (.nobashcolors, .kdb_qwertz, etc.) are now located in /etc<br><br />
- manual settings of the timezone (/etc/timezone), applied if the env. variable TZ doesn't exist<br><br />
- update.zip no longer need to have the "update-binary", a default one is used if not found<br><br />
<br><br />
Bugfixes<br><br />
- fixed unyaffs not restoring sticky bit / suid / sgid<br><br />
- fixed displaying long menus (it will not be truncated, instead a scrollbar appears)<br><br />
- fixed error in switch.sh for XT701<br><br />
- fixed color24.console.front in the themes -> default is supposed to be #E5E5E5<br><br />
<br />
====Version 1.32====<br />
Features<br><br />
- pressing MENU + ALT + C forcibly quits the console<br><br />
<br><br />
Changes<br><br />
- ui.prop contains more options<br><br />
- when applying any update.zip package, there is a confirmation menu<br><br />
- cursor in console blinks<br><br />
<br><br />
Bugfixes<br><br />
- Error message when ext2 partition on sdcard doesn't exist fixed<br><br />
- fixed the bug with imenu when ran more than once in one script<br><br />
<br />
====Version 1.30a====<br />
Bugfixes<br><br />
- Console layout for QWERTZ / AZERTY fixed<br><br />
<br />
====Version 1.30====<br />
Features<br><br />
- on-phone console<br><br />
- keyboard layout changer included<br><br />
- new nandroid, with support of backing up and restoring ext2 partition on sdcard (Note: uses new format of the backup, new backups are located in /sdcard/nandroid/openrecovery, there is a backwards compatibility to restore the old backups)<br><br />
- ability to create compressed backups (and autoreboot when done)<br><br />
- better nandroid menu<br><br />
- menus wrap around<br><br />
- theming for the recovery (3 themes included, to apply just rename the "res.*" folder to "res"); color settings can be manipulated in the ui.prop file under the res folder)<br><br />
- new commands for menu (tag, label, break)<br><br />
- scripts (command "shell") are able to show menu interactively when requesting user feedback (sample included)<br><br />
<br />
====Version 1.14====<br />
Changes<br><br />
- UI<br><br />
- switch.sh is separated (menu creation is in init_recovery.sh and called later by the recovery)<br><br />
- Volume keys and Camera key can be used to navigate in Open Recovery<br><br />
<br />
====Version 1.12d====<br />
Bugfixes<br><br />
- wipe commands working properly<br><br />
<br><br />
Changes<br><br />
- Bash Settings menu, to enable/disable coloured output (preset to disabled), this is persistent settings, it will last through reboots<br><br />
<br><br />
Features<br><br />
- ability to wipe dalvik-cache only (via script)<br><br />
<br />
====Version 1.12c====<br />
Bugfixes<br><br />
- reboot command is working properly<br><br />
- the content of the sdcard is no longer changed when running, everything is being copied into the ramdisk<br><br />
- minor fixes<br><br />
<br><br />
Changes<br><br />
- removed the 'init' command, instead uses 'scripted_menu'<br><br />
- adbd uses bash (interactively) instead of sh<br><br />
- payload installs also bash and toolbox<br><br />
- different the menu system (deprecated 'init' command, used), each menu must be generated from a script (notes later)<br><br />
- added init folder, scripts (with extension *.sh) are ran there on startup of the open recovery.<br><br />
- the diode is blinking in blue instead of red.<br><br />
<br><br />
Features<br><br />
- the recovery prints the output of the scripts / programs (prints their stdout)<br><br />
- application menu (described later)<br><br />
- new su and SuperUser.apk by ChainsDD<br><br />
- if sdcard has ext2 partition, it is noted in fstab under "/sddata" (the module is inserted automatically)<br><br />
<br />
====Version 1.05====<br />
Bugfixes<br><br />
- fixed a bug in payload making it dependant on the system<br><br />
- there is now nothing in the /system folder when unmounted<br><br />
- toolbox linked statically<br><br />
- busybox now installs symlinks, instead of copying itself<br><br />
- fixed a bug in adb about the shell being in /sbin/sh instead of /system/bin/sh<br><br />
- cleaned up, removed unecessary libraries and binaries<br><br />
- switch.sh now initializes the Open Recovery completely, no other script is used for initialization<br><br />
- permissions set correctly<br><br />
<br><br />
Features<br><br />
- added option to wipe<br><br />
- menu's now have header (the menu file structure has been changed)<br><br />
- added the possibility to run scripts, with .*sh extension located in scripts folder under OpenRecovery folder (shell is /sbin/sh or /sbin/bash)<br><br />
<br />
====Version 1.02====<br />
- fixed root install<br />
<br />
====Version 1.01====<br />
- initial release<br />
<br />
====Developer Notes====<br />
<br />
The recovery contains an update.zip with payload, which doesn't do anything else than restarts to the open recovery. All the files for OpenRecovery are under the OpenRecovery folder under the root of the sdcard. The payload installs busybox to /sbin runs the "switch.sh" under the bin folder in open recovery.<br />
<br />
====Menu System====<br />
<br />
The menu for the Open Recovery is created dynamically. The files must be created inside "/menu" folder by scripts, which can either be specified (if the menu is scripted_menu) or created by a *.sh script in /sdcard/OpenRecovery/init where the scripts are executed at startup. A menu creating script has to create a *.menu file inside the /menu folder. If the menu is supposed to be created on startup and not modified, place the script into /init folder, otherwise use "scripted_menu" item, where the script is ran right before the menu is created. sdcard, system and data partitions are mounted when the scripts are ran. A typical example for "scripted_menu" item is under the tutorial for application menu. For application menu see lower section. The structure of the menu file is different from the CustomUpdate by mankind:<br />
First line is the menu name (normal string), then use the following structure:<br><br />
"item name:type:argument"<br><br />
- item name is what is seen in the menu<br><br />
- type: type of the command (described later)<br><br />
- argument: argument passed to the command (file, or anything else; if empty, put "*" there, otherwise the item will be discarded)<br><br />
<br />
====Commands====<br />
<br />
- reboot: reboots the phone<br><br />
- shell: calls a file specified in arguments (default path is to /bin, if not specified)<br><br />
- menu: opens another menu file (specified in argument), if the argument is "..", it returns to up one level meu<br><br />
- scripted_menu: argument is in format "menu file:menu script", the menu script is called with variable MENU_FILE containing the menu name (default path for the script is to /bin, if not specified)<br><br />
- update: applies an update *.zip file, specified in argument (format SDCARD:$path_to_the_file_in_sdcard)<br><br />
- tag: if ticked, file "tags/.[I]argument[/I]" is created<br><br />
- break: unselectable item, argument is ignored (use "*") and creates a menu item like "---- name ----"; using "*" as name will create just "--------------"<br><br />
- label: unselectable item, argument is ignored (use "*") and creates normal menu item "name "<br><br />
- wipe_data: factory reset<br><br />
- wipe_cahce: wipe cache<br><br />
<br><br />
The menu is refreshed (the script is called if the menu is scripted) on a menu change, applying an update or running a script. Whenever a script is ran, system, data and sdcard is mounted.<br><br />
<br />
====Application menu====<br />
<br />
Application menu is designed for anything that is run on the startup and can malfunction under any circumstances. Here is one example - suppose you have a mount on font in the startup. You'll have something like this in your startup script:<br />
<pre><br />
mount -o bind /system/myfonts/segoeui.ttf /system/fonts/DroidSans.ttf<br />
mount -o bind /system/myfonts/segoeuib.ttf /system/fonts/DroidSans-Bold.ttf<br />
</pre><br />
<br />
Well the idea is that you add a condition to the script, to run only under some circumstances, like:<br />
<br />
<pre><br />
if [ ! -f /system/switch/.nocustomfont ]; then<br />
mount -o bind /system/myfonts/segoeui.ttf /system/fonts/DroidSans.ttf<br />
mount -o bind /system/myfonts/segoeuib.ttf /system/fonts/DroidSans-Bold.ttf<br />
fi<br />
</pre><br />
<br />
which mounts the font only when /system/switch/.nocustomfont is not existing. If you want this controlable from the recovery, you register in into the application menu this way: all *.sh scripts in /app (where /sdcard/OpenRecovery/app is copied) are called at startup. They are passed variable "APP_MENU_FILE", which is the name of the used menu file (preinitalized). The script will look like this:<br />
<br />
<pre><br />
#!/sbin/sh<br />
<br />
#create the menu item<br />
echo "Custom Font:scripted_menu:custfont.menu:/app/custfont/menu.sh" >> "$APP_MENU_FILE"<br />
</pre><br />
<br />
Since the scripts are in /app and not /bin, use absolute path. This will add an item to the applications menu, now we need a menu when it is selected, which is the "/app/custfont/menu.sh":<br />
<br />
<pre><br />
#!/sbin/sh<br />
<br />
if [ -f /system/switch/.nocustomfont ]; then<br />
# menu name - custom font is disabled<br />
echo "Custom Font (Disabled)" > "$MENU_FILE"<br />
# go to upper level menu<br />
echo "Go Back:menu:.." >> "$MENU_FILE"<br />
# enable it<br />
echo "Enable:shell:/app/custfont/enable.sh" >> "$MENU_FILE"<br />
else<br />
# menu name - custom font is enabled<br />
echo "Custom Font (Enabled)" > "$MENU_FILE"<br />
# go to upper level menu<br />
echo "Go Back:menu:.." >> "$MENU_FILE"<br />
# disable it<br />
echo "Disable:shell:/app/custfont/disable.sh" >> "$MENU_FILE"<br />
fi<br />
</pre><br />
Notice the shells are in /sbin, so use /sbin/sh (or /sbin/bash). The script checks if the switch is on or off and generates the menu accordingly. Since the menu is refreshed each time the script is run, it will always submit the correct option. The "enable.sh" simply touches the file and "disable.sh" just deletes it.<br />
<br />
===Download===<br />
Binaries: [[http://rapidshare.com/files/414530880/OpenRecovery_v1_37_SHOLS.rar.html Open Recovery 1.37 for Milestone]], [[http://rapidshare.com/files/414925211/OpenRecovery_v1_37_STCU.rar.html Open Recovery 1.37 for Sholes Tablet]]<br><br />
Source: [[http://rapidshare.com/files/414696074/OpenRecovery_v1_37_src.tar.gz.html Open Recovery 1.37 source]]<br><br />
<br />
===Support forum===<br />
[[http://www.modmymobile.com/forums/showthread.php?t=531599 ModMyMobile]]</div>Skrilax CZhttp://droid-developers.org/wiki/Open_recoveryOpen recovery2010-08-24T21:31:05Z<p>Skrilax CZ: /* Changelog */</p>
<hr />
<div>Developed by Skrilax_CZ.<br><br />
Credit for mankind (from alldroid) for the CustomUpdate, on which this recovery is based,<br><br />
credit for poseidon (also from alldroid) for ADBRecovery,<br><br />
credit for koush for mtd-utils and nandroid (uses script based on it),<br><br />
credit for nadlabak for keyboard layout change script.<br><br />
Current version 1.37 [08/23/2010]<br />
<br />
====Features====<br />
- on-phone console (limited) - MILESTONE ONLY!<br><br />
- rooting the phone from menu (using ChainsDD su and SuperUser.apk (version 2.2.2))<br><br />
- nandroid backup/restore from menu<br><br />
- apply update *.zip files from menu (located in OpenRecovery/updates under the sdcard root folder, there is a sample one (just unpacks a file named "babble" to /system), no signatures are needed :)<br><br />
- wipe data (factory reset)<br><br />
- wipe cache<br><br />
- wipe dalvik-cache<br><br />
- adb in recovery, using bash shell<br><br />
- run a script<br><br />
- recovery options for applications<br><br />
<br />
The open recovery files are located under the OpenRecovery folder under the root of the sd card. The own update *.zip files are under the "updates" folder, sample one is included. The scripts must have *.sh extension and reside under the "scripts" folder. The recovery contains an update.zip with payload, which doesn't do anything else than restarts to the open recovery. All the files for OpenRecovery are under the OpenRecovery folder under the root of the sdcard. The payload installs busybox to /sbin runs the "switch.sh" under the bin folder in open recovery. The initial menu file is in OpenRecovery/menu/init.menu under sdcard root.<br />
<br />
====Download & Installation (MILESTONE)====<br />
1) You need to have the vulnerable recovery installed.<br><br />
2) Download the archive and unpack it to the root folder of the sdcard.<br><br />
<br />
====Usage (MILESTONE)====<br />
1) Reboot into recovery (hold 'X' button on bootloader 90.78, on others hold camera button; until you see triangle; then press camera + volume up)<br><br />
2) Apply the update.zip<br><br />
3) You are now in Open Recovery<br><br />
<br />
====Download & Installation (XT701)====<br />
1) Download the archive and unpack it.<br><br />
2) Either flash the sbf file using RSD Lite (preffered, recommended version 4.6+), or flash using the flash_image the *.img file to recovery partition.<br><br />
3) Unpack the "OpenRecovery" folder and "OpenRecovery.zip" to the root folder of the sdcard.<br><br />
<br />
====Usage (XT701)====<br />
1) Reboot into recovery (hold camera button; until you see triangle; then press camera + volume up)<br><br />
2) If no error occurs, you're now in Open Recovery. If error occurs you're in Open Recovery Lite.<br><br />
<br />
==Notes==<br />
<br />
====Console (MILESTONE ONLY)====<br />
- MENU key is CTRL, pressing MENU + ALT + C forcibly quits the console<br><br />
- scrolling (pressing volume keys by a row (or eight rows if ALT is pressed))<br><br />
- don't forget to select correct keyboard layout (under settings menu)<br><br />
- search key is tab<br><br />
- Alt+A prints "|" instead of Euro, Alt+F prints "$" instead of Pound<br><br />
- limited support for escape characters but allowing to use "clear" and "ls" coloured<br><br />
<br />
====Changing a theme====<br />
On /sdcard/OpenRecovery, the current theme is in "res" subfolder. The other two included are under "res.stock" or "res.squirtle". To change to another theme, let's say stock theme, rename the current "res" folder to "res.or" and "res.stock" to "res".<br><br />
<br />
====OR update.zip format====<br />
- the update.zip is extracted to "/sdcard/OpenRecovery/tmp/update"<br><br />
- shell script, located in the archive in "META-INF/update-or.sh" is called; under env. variable PACKAGE is the root folder of the extraction: "/sdcard/OpenRecovery/tmp/update"<br><br />
- the script can do the very same as script called from the menu (can call imenu)<br><br />
- progress bar is not supported in this format<br><br />
<br />
====ui.prop file====<br />
This file sets the colors for the theme. It's located right under the "res" folder.<br><br />
color3.LED=#100 <- led diode color (3-bit RGB, use only 0 or 1)<br><br />
color32.background=#000000A0 <- recovery background color<br><br />
color32.menu=#FF3705FF <- recovery menu color<br><br />
color32.selection=#FFFFFFFF <- recovery selected item color<br><br />
color32.script=#FFFF00FF <- recovery script color<br><br />
<br><br />
#Console color properties<br><br />
color24.console.header=#FFFF00 <- console header color<br><br />
color24.console.background=#000000 <- console background color<br><br />
color24.console.front=#E5E5E5 <- console foreground color<br><br />
<br><br />
(The example values are used by default when the property is not found.)<br><br />
<br />
====Lite vs. Full version (XT701 ONLY)====<br />
- The recovery image contains Lite version, with minimal options (moreless only difference from stock recovery is the GUI and applying update.zip doesn't need any signatures.)<br><br />
- When booting into recovery, the Lite version is started. It will automatically switch to full version by applying the OpenRecovery.zip).<br><br />
<br />
==Changelog==<br />
<br />
====Version 1.37====<br />
Bugfixes<br><br />
- fixed nandroid restore not properly restoring yaffs2 partitions in old format<br><br />
- fixed nandroid restore not restoring compressed backups<br><br />
- fixed nandroid backup not taking md5 checksums<br><br />
<br><br />
Changes<br><br />
- console buffers up to 1000 lats printed lines (extended from 200)<br><br />
<br />
====Version 1.36====<br />
Bugfixes<br><br />
- fixed nandroid when doing "Backup All" and not having apps2sd; which would fail complaining that /sddata could not be mounted<br><br />
(Ticking all partitions in the menu and selecting "Backup Selected" was working properly and the backup has been done correctly.)<br><br />
- fixed console cursor blinking<br><br />
- squirtle theme fixed<br><br />
<br />
====Version 1.35====<br />
Features<br><br />
- update.zip can be in new OR format using a shell script (described lower, there are samples of each one)<br><br />
- console has now signalling implemented (menu key = CTRL)<br><br />
- console has arrow keys implemented<br><br />
- console has support for displaying front colors; thus it is no longer needed to disable bash colors<br><br />
- console supports calling clear<br><br />
<br><br />
Changes<br><br />
- recovery binary will exit if not run by init (to prevent running it from adb or console)<br><br />
- scripts in scripts folder are dos2unixed (on -FuFu- advice)<br><br />
- switch files (.nobashcolors, .kdb_qwertz, etc.) are now located in /etc<br><br />
- manual settings of the timezone (/etc/timezone), applied if the env. variable TZ doesn't exist<br><br />
- update.zip no longer need to have the "update-binary", a default one is used if not found<br><br />
<br><br />
Bugfixes<br><br />
- fixed unyaffs not restoring sticky bit / suid / sgid<br><br />
- fixed displaying long menus (it will not be truncated, instead a scrollbar appears)<br><br />
- fixed error in switch.sh for XT701<br><br />
- fixed color24.console.front in the themes -> default is supposed to be #E5E5E5<br><br />
<br />
====Version 1.32====<br />
Features<br><br />
- pressing MENU + ALT + C forcibly quits the console<br><br />
<br><br />
Changes<br><br />
- ui.prop contains more options<br><br />
- when applying any update.zip package, there is a confirmation menu<br><br />
- cursor in console blinks<br><br />
<br><br />
Bugfixes<br><br />
- Error message when ext2 partition on sdcard doesn't exist fixed<br><br />
- fixed the bug with imenu when ran more than once in one script<br><br />
<br />
====Version 1.30a====<br />
Bugfixes<br><br />
- Console layout for QWERTZ / AZERTY fixed<br><br />
<br />
====Version 1.30====<br />
Features<br><br />
- on-phone console<br><br />
- keyboard layout changer included<br><br />
- new nandroid, with support of backing up and restoring ext2 partition on sdcard (Note: uses new format of the backup, new backups are located in /sdcard/nandroid/openrecovery, there is a backwards compatibility to restore the old backups)<br><br />
- ability to create compressed backups (and autoreboot when done)<br><br />
- better nandroid menu<br><br />
- menus wrap around<br><br />
- theming for the recovery (3 themes included, to apply just rename the "res.*" folder to "res"); color settings can be manipulated in the ui.prop file under the res folder)<br><br />
- new commands for menu (tag, label, break)<br><br />
- scripts (command "shell") are able to show menu interactively when requesting user feedback (sample included)<br><br />
<br />
====Version 1.14====<br />
Changes<br><br />
- UI<br><br />
- switch.sh is separated (menu creation is in init_recovery.sh and called later by the recovery)<br><br />
- Volume keys and Camera key can be used to navigate in Open Recovery<br><br />
<br />
====Version 1.12d====<br />
Bugfixes<br><br />
- wipe commands working properly<br><br />
<br><br />
Changes<br><br />
- Bash Settings menu, to enable/disable coloured output (preset to disabled), this is persistent settings, it will last through reboots<br><br />
<br><br />
Features<br><br />
- ability to wipe dalvik-cache only (via script)<br><br />
<br />
====Version 1.12c====<br />
Bugfixes<br><br />
- reboot command is working properly<br><br />
- the content of the sdcard is no longer changed when running, everything is being copied into the ramdisk<br><br />
- minor fixes<br><br />
<br><br />
Changes<br><br />
- removed the 'init' command, instead uses 'scripted_menu'<br><br />
- adbd uses bash (interactively) instead of sh<br><br />
- payload installs also bash and toolbox<br><br />
- different the menu system (deprecated 'init' command, used), each menu must be generated from a script (notes later)<br><br />
- added init folder, scripts (with extension *.sh) are ran there on startup of the open recovery.<br><br />
- the diode is blinking in blue instead of red.<br><br />
<br><br />
Features<br><br />
- the recovery prints the output of the scripts / programs (prints their stdout)<br><br />
- application menu (described later)<br><br />
- new su and SuperUser.apk by ChainsDD<br><br />
- if sdcard has ext2 partition, it is noted in fstab under "/sddata" (the module is inserted automatically)<br><br />
<br />
====Version 1.05====<br />
Bugfixes<br><br />
- fixed a bug in payload making it dependant on the system<br><br />
- there is now nothing in the /system folder when unmounted<br><br />
- toolbox linked statically<br><br />
- busybox now installs symlinks, instead of copying itself<br><br />
- fixed a bug in adb about the shell being in /sbin/sh instead of /system/bin/sh<br><br />
- cleaned up, removed unecessary libraries and binaries<br><br />
- switch.sh now initializes the Open Recovery completely, no other script is used for initialization<br><br />
- permissions set correctly<br><br />
<br><br />
Features<br><br />
- added option to wipe<br><br />
- menu's now have header (the menu file structure has been changed)<br><br />
- added the possibility to run scripts, with .*sh extension located in scripts folder under OpenRecovery folder (shell is /sbin/sh or /sbin/bash)<br><br />
<br />
====Version 1.02====<br />
- fixed root install<br />
<br />
====Version 1.01====<br />
- initial release<br />
<br />
===Developer Notes===<br />
<br />
The recovery contains an update.zip with payload, which doesn't do anything else than restarts to the open recovery. All the files for OpenRecovery are under the OpenRecovery folder under the root of the sdcard. The payload installs busybox to /sbin runs the "switch.sh" under the bin folder in open recovery.<br />
<br />
====Menu System====<br />
<br />
The menu for the Open Recovery is created dynamically. The files must be created inside "/menu" folder by scripts, which can either be specified (if the menu is scripted_menu) or created by a *.sh script in /sdcard/OpenRecovery/init where the scripts are executed at startup. A menu creating script has to create a *.menu file inside the /menu folder. If the menu is supposed to be created on startup and not modified, place the script into /init folder, otherwise use "scripted_menu" item, where the script is ran right before the menu is created. sdcard, system and data partitions are mounted when the scripts are ran. A typical example for "scripted_menu" item is under the tutorial for application menu. For application menu see lower section. The structure of the menu file is different from the CustomUpdate by mankind:<br />
First line is the menu name (normal string), then use the following structure:<br><br />
"item name:type:argument"<br><br />
- item name is what is seen in the menu<br><br />
- type: type of the command (described later)<br><br />
- argument: argument passed to the command (file, or anything else; if empty, put "*" there, otherwise the item will be discarded)<br><br />
<br />
====Commands====<br />
<br />
- reboot: reboots the phone<br><br />
- shell: calls a file specified in arguments (default path is to /bin, if not specified)<br><br />
- menu: opens another menu file (specified in argument), if the argument is "..", it returns to up one level meu<br><br />
- scripted_menu: argument is in format "menu file:menu script", the menu script is called with variable MENU_FILE containing the menu name (default path for the script is to /bin, if not specified)<br><br />
- update: applies an update *.zip file, specified in argument (format SDCARD:$path_to_the_file_in_sdcard)<br><br />
- tag: if ticked, file "tags/.[I]argument[/I]" is created<br><br />
- break: unselectable item, argument is ignored (use "*") and creates a menu item like "---- name ----"; using "*" as name will create just "--------------"<br><br />
- label: unselectable item, argument is ignored (use "*") and creates normal menu item "name "<br><br />
- wipe_data: factory reset<br><br />
- wipe_cahce: wipe cache<br><br />
<br><br />
The menu is refreshed (the script is called if the menu is scripted) on a menu change, applying an update or running a script. Whenever a script is ran, system, data and sdcard is mounted.<br><br />
<br />
====Application menu====<br />
<br />
Application menu is designed for anything that is run on the startup and can malfunction under any circumstances. Here is one example - suppose you have a mount on font in the startup. You'll have something like this in your startup script:<br />
<pre><br />
mount -o bind /system/myfonts/segoeui.ttf /system/fonts/DroidSans.ttf<br />
mount -o bind /system/myfonts/segoeuib.ttf /system/fonts/DroidSans-Bold.ttf<br />
</pre><br />
<br />
Well the idea is that you add a condition to the script, to run only under some circumstances, like:<br />
<br />
<pre><br />
if [ ! -f /system/switch/.nocustomfont ]; then<br />
mount -o bind /system/myfonts/segoeui.ttf /system/fonts/DroidSans.ttf<br />
mount -o bind /system/myfonts/segoeuib.ttf /system/fonts/DroidSans-Bold.ttf<br />
fi<br />
</pre><br />
<br />
which mounts the font only when /system/switch/.nocustomfont is not existing. If you want this controlable from the recovery, you register in into the application menu this way: all *.sh scripts in /app (where /sdcard/OpenRecovery/app is copied) are called at startup. They are passed variable "APP_MENU_FILE", which is the name of the used menu file (preinitalized). The script will look like this:<br />
<br />
<pre><br />
#!/sbin/sh<br />
<br />
#create the menu item<br />
echo "Custom Font:scripted_menu:custfont.menu:/app/custfont/menu.sh" >> "$APP_MENU_FILE"<br />
</pre><br />
<br />
Since the scripts are in /app and not /bin, use absolute path. This will add an item to the applications menu, now we need a menu when it is selected, which is the "/app/custfont/menu.sh":<br />
<br />
<pre><br />
#!/sbin/sh<br />
<br />
if [ -f /system/switch/.nocustomfont ]; then<br />
# menu name - custom font is disabled<br />
echo "Custom Font (Disabled)" > "$MENU_FILE"<br />
# go to upper level menu<br />
echo "Go Back:menu:.." >> "$MENU_FILE"<br />
# enable it<br />
echo "Enable:shell:/app/custfont/enable.sh" >> "$MENU_FILE"<br />
else<br />
# menu name - custom font is enabled<br />
echo "Custom Font (Enabled)" > "$MENU_FILE"<br />
# go to upper level menu<br />
echo "Go Back:menu:.." >> "$MENU_FILE"<br />
# disable it<br />
echo "Disable:shell:/app/custfont/disable.sh" >> "$MENU_FILE"<br />
fi<br />
</pre><br />
Notice the shells are in /sbin, so use /sbin/sh (or /sbin/bash). The script checks if the switch is on or off and generates the menu accordingly. Since the menu is refreshed each time the script is run, it will always submit the correct option. The "enable.sh" simply touches the file and "disable.sh" just deletes it.<br />
<br />
===Download===<br />
Binaries: [[http://rapidshare.com/files/414530880/OpenRecovery_v1_37_SHOLS.rar.html Open Recovery 1.37 for Milestone]], [[http://rapidshare.com/files/414925211/OpenRecovery_v1_37_STCU.rar.html Open Recovery 1.37 for Sholes Tablet]]<br><br />
Source: [[http://rapidshare.com/files/414696074/OpenRecovery_v1_37_src.tar.gz.html Open Recovery 1.37 source]]<br><br />
<br />
===Support forum===<br />
[[http://www.modmymobile.com/forums/showthread.php?t=531599 ModMyMobile]]</div>Skrilax CZhttp://droid-developers.org/wiki/Open_recoveryOpen recovery2010-08-24T21:30:39Z<p>Skrilax CZ: /* Notes */</p>
<hr />
<div>Developed by Skrilax_CZ.<br><br />
Credit for mankind (from alldroid) for the CustomUpdate, on which this recovery is based,<br><br />
credit for poseidon (also from alldroid) for ADBRecovery,<br><br />
credit for koush for mtd-utils and nandroid (uses script based on it),<br><br />
credit for nadlabak for keyboard layout change script.<br><br />
Current version 1.37 [08/23/2010]<br />
<br />
====Features====<br />
- on-phone console (limited) - MILESTONE ONLY!<br><br />
- rooting the phone from menu (using ChainsDD su and SuperUser.apk (version 2.2.2))<br><br />
- nandroid backup/restore from menu<br><br />
- apply update *.zip files from menu (located in OpenRecovery/updates under the sdcard root folder, there is a sample one (just unpacks a file named "babble" to /system), no signatures are needed :)<br><br />
- wipe data (factory reset)<br><br />
- wipe cache<br><br />
- wipe dalvik-cache<br><br />
- adb in recovery, using bash shell<br><br />
- run a script<br><br />
- recovery options for applications<br><br />
<br />
The open recovery files are located under the OpenRecovery folder under the root of the sd card. The own update *.zip files are under the "updates" folder, sample one is included. The scripts must have *.sh extension and reside under the "scripts" folder. The recovery contains an update.zip with payload, which doesn't do anything else than restarts to the open recovery. All the files for OpenRecovery are under the OpenRecovery folder under the root of the sdcard. The payload installs busybox to /sbin runs the "switch.sh" under the bin folder in open recovery. The initial menu file is in OpenRecovery/menu/init.menu under sdcard root.<br />
<br />
====Download & Installation (MILESTONE)====<br />
1) You need to have the vulnerable recovery installed.<br><br />
2) Download the archive and unpack it to the root folder of the sdcard.<br><br />
<br />
====Usage (MILESTONE)====<br />
1) Reboot into recovery (hold 'X' button on bootloader 90.78, on others hold camera button; until you see triangle; then press camera + volume up)<br><br />
2) Apply the update.zip<br><br />
3) You are now in Open Recovery<br><br />
<br />
====Download & Installation (XT701)====<br />
1) Download the archive and unpack it.<br><br />
2) Either flash the sbf file using RSD Lite (preffered, recommended version 4.6+), or flash using the flash_image the *.img file to recovery partition.<br><br />
3) Unpack the "OpenRecovery" folder and "OpenRecovery.zip" to the root folder of the sdcard.<br><br />
<br />
====Usage (XT701)====<br />
1) Reboot into recovery (hold camera button; until you see triangle; then press camera + volume up)<br><br />
2) If no error occurs, you're now in Open Recovery. If error occurs you're in Open Recovery Lite.<br><br />
<br />
==Notes==<br />
<br />
====Console (MILESTONE ONLY)====<br />
- MENU key is CTRL, pressing MENU + ALT + C forcibly quits the console<br><br />
- scrolling (pressing volume keys by a row (or eight rows if ALT is pressed))<br><br />
- don't forget to select correct keyboard layout (under settings menu)<br><br />
- search key is tab<br><br />
- Alt+A prints "|" instead of Euro, Alt+F prints "$" instead of Pound<br><br />
- limited support for escape characters but allowing to use "clear" and "ls" coloured<br><br />
<br />
====Changing a theme====<br />
On /sdcard/OpenRecovery, the current theme is in "res" subfolder. The other two included are under "res.stock" or "res.squirtle". To change to another theme, let's say stock theme, rename the current "res" folder to "res.or" and "res.stock" to "res".<br><br />
<br />
====OR update.zip format====<br />
- the update.zip is extracted to "/sdcard/OpenRecovery/tmp/update"<br><br />
- shell script, located in the archive in "META-INF/update-or.sh" is called; under env. variable PACKAGE is the root folder of the extraction: "/sdcard/OpenRecovery/tmp/update"<br><br />
- the script can do the very same as script called from the menu (can call imenu)<br><br />
- progress bar is not supported in this format<br><br />
<br />
====ui.prop file====<br />
This file sets the colors for the theme. It's located right under the "res" folder.<br><br />
color3.LED=#100 <- led diode color (3-bit RGB, use only 0 or 1)<br><br />
color32.background=#000000A0 <- recovery background color<br><br />
color32.menu=#FF3705FF <- recovery menu color<br><br />
color32.selection=#FFFFFFFF <- recovery selected item color<br><br />
color32.script=#FFFF00FF <- recovery script color<br><br />
<br><br />
#Console color properties<br><br />
color24.console.header=#FFFF00 <- console header color<br><br />
color24.console.background=#000000 <- console background color<br><br />
color24.console.front=#E5E5E5 <- console foreground color<br><br />
<br><br />
(The example values are used by default when the property is not found.)<br><br />
<br />
====Lite vs. Full version (XT701 ONLY)====<br />
- The recovery image contains Lite version, with minimal options (moreless only difference from stock recovery is the GUI and applying update.zip doesn't need any signatures.)<br><br />
- When booting into recovery, the Lite version is started. It will automatically switch to full version by applying the OpenRecovery.zip).<br><br />
<br />
===Changelog===<br />
<br />
====Version 1.37====<br />
Bugfixes<br><br />
- fixed nandroid restore not properly restoring yaffs2 partitions in old format<br><br />
- fixed nandroid restore not restoring compressed backups<br><br />
- fixed nandroid backup not taking md5 checksums<br><br />
<br><br />
Changes<br><br />
- console buffers up to 1000 lats printed lines (extended from 200)<br><br />
<br />
====Version 1.36====<br />
Bugfixes<br><br />
- fixed nandroid when doing "Backup All" and not having apps2sd; which would fail complaining that /sddata could not be mounted<br><br />
(Ticking all partitions in the menu and selecting "Backup Selected" was working properly and the backup has been done correctly.)<br><br />
- fixed console cursor blinking<br><br />
- squirtle theme fixed<br><br />
<br />
====Version 1.35====<br />
Features<br><br />
- update.zip can be in new OR format using a shell script (described lower, there are samples of each one)<br><br />
- console has now signalling implemented (menu key = CTRL)<br><br />
- console has arrow keys implemented<br><br />
- console has support for displaying front colors; thus it is no longer needed to disable bash colors<br><br />
- console supports calling clear<br><br />
<br><br />
Changes<br><br />
- recovery binary will exit if not run by init (to prevent running it from adb or console)<br><br />
- scripts in scripts folder are dos2unixed (on -FuFu- advice)<br><br />
- switch files (.nobashcolors, .kdb_qwertz, etc.) are now located in /etc<br><br />
- manual settings of the timezone (/etc/timezone), applied if the env. variable TZ doesn't exist<br><br />
- update.zip no longer need to have the "update-binary", a default one is used if not found<br><br />
<br><br />
Bugfixes<br><br />
- fixed unyaffs not restoring sticky bit / suid / sgid<br><br />
- fixed displaying long menus (it will not be truncated, instead a scrollbar appears)<br><br />
- fixed error in switch.sh for XT701<br><br />
- fixed color24.console.front in the themes -> default is supposed to be #E5E5E5<br><br />
<br />
====Version 1.32====<br />
Features<br><br />
- pressing MENU + ALT + C forcibly quits the console<br><br />
<br><br />
Changes<br><br />
- ui.prop contains more options<br><br />
- when applying any update.zip package, there is a confirmation menu<br><br />
- cursor in console blinks<br><br />
<br><br />
Bugfixes<br><br />
- Error message when ext2 partition on sdcard doesn't exist fixed<br><br />
- fixed the bug with imenu when ran more than once in one script<br><br />
<br />
====Version 1.30a====<br />
Bugfixes<br><br />
- Console layout for QWERTZ / AZERTY fixed<br><br />
<br />
====Version 1.30====<br />
Features<br><br />
- on-phone console<br><br />
- keyboard layout changer included<br><br />
- new nandroid, with support of backing up and restoring ext2 partition on sdcard (Note: uses new format of the backup, new backups are located in /sdcard/nandroid/openrecovery, there is a backwards compatibility to restore the old backups)<br><br />
- ability to create compressed backups (and autoreboot when done)<br><br />
- better nandroid menu<br><br />
- menus wrap around<br><br />
- theming for the recovery (3 themes included, to apply just rename the "res.*" folder to "res"); color settings can be manipulated in the ui.prop file under the res folder)<br><br />
- new commands for menu (tag, label, break)<br><br />
- scripts (command "shell") are able to show menu interactively when requesting user feedback (sample included)<br><br />
<br />
====Version 1.14====<br />
Changes<br><br />
- UI<br><br />
- switch.sh is separated (menu creation is in init_recovery.sh and called later by the recovery)<br><br />
- Volume keys and Camera key can be used to navigate in Open Recovery<br><br />
<br />
====Version 1.12d====<br />
Bugfixes<br><br />
- wipe commands working properly<br><br />
<br><br />
Changes<br><br />
- Bash Settings menu, to enable/disable coloured output (preset to disabled), this is persistent settings, it will last through reboots<br><br />
<br><br />
Features<br><br />
- ability to wipe dalvik-cache only (via script)<br><br />
<br />
====Version 1.12c====<br />
Bugfixes<br><br />
- reboot command is working properly<br><br />
- the content of the sdcard is no longer changed when running, everything is being copied into the ramdisk<br><br />
- minor fixes<br><br />
<br><br />
Changes<br><br />
- removed the 'init' command, instead uses 'scripted_menu'<br><br />
- adbd uses bash (interactively) instead of sh<br><br />
- payload installs also bash and toolbox<br><br />
- different the menu system (deprecated 'init' command, used), each menu must be generated from a script (notes later)<br><br />
- added init folder, scripts (with extension *.sh) are ran there on startup of the open recovery.<br><br />
- the diode is blinking in blue instead of red.<br><br />
<br><br />
Features<br><br />
- the recovery prints the output of the scripts / programs (prints their stdout)<br><br />
- application menu (described later)<br><br />
- new su and SuperUser.apk by ChainsDD<br><br />
- if sdcard has ext2 partition, it is noted in fstab under "/sddata" (the module is inserted automatically)<br><br />
<br />
====Version 1.05====<br />
Bugfixes<br><br />
- fixed a bug in payload making it dependant on the system<br><br />
- there is now nothing in the /system folder when unmounted<br><br />
- toolbox linked statically<br><br />
- busybox now installs symlinks, instead of copying itself<br><br />
- fixed a bug in adb about the shell being in /sbin/sh instead of /system/bin/sh<br><br />
- cleaned up, removed unecessary libraries and binaries<br><br />
- switch.sh now initializes the Open Recovery completely, no other script is used for initialization<br><br />
- permissions set correctly<br><br />
<br><br />
Features<br><br />
- added option to wipe<br><br />
- menu's now have header (the menu file structure has been changed)<br><br />
- added the possibility to run scripts, with .*sh extension located in scripts folder under OpenRecovery folder (shell is /sbin/sh or /sbin/bash)<br><br />
<br />
====Version 1.02====<br />
- fixed root install<br />
<br />
====Version 1.01====<br />
- initial release<br />
<br />
===Developer Notes===<br />
<br />
The recovery contains an update.zip with payload, which doesn't do anything else than restarts to the open recovery. All the files for OpenRecovery are under the OpenRecovery folder under the root of the sdcard. The payload installs busybox to /sbin runs the "switch.sh" under the bin folder in open recovery.<br />
<br />
====Menu System====<br />
<br />
The menu for the Open Recovery is created dynamically. The files must be created inside "/menu" folder by scripts, which can either be specified (if the menu is scripted_menu) or created by a *.sh script in /sdcard/OpenRecovery/init where the scripts are executed at startup. A menu creating script has to create a *.menu file inside the /menu folder. If the menu is supposed to be created on startup and not modified, place the script into /init folder, otherwise use "scripted_menu" item, where the script is ran right before the menu is created. sdcard, system and data partitions are mounted when the scripts are ran. A typical example for "scripted_menu" item is under the tutorial for application menu. For application menu see lower section. The structure of the menu file is different from the CustomUpdate by mankind:<br />
First line is the menu name (normal string), then use the following structure:<br><br />
"item name:type:argument"<br><br />
- item name is what is seen in the menu<br><br />
- type: type of the command (described later)<br><br />
- argument: argument passed to the command (file, or anything else; if empty, put "*" there, otherwise the item will be discarded)<br><br />
<br />
====Commands====<br />
<br />
- reboot: reboots the phone<br><br />
- shell: calls a file specified in arguments (default path is to /bin, if not specified)<br><br />
- menu: opens another menu file (specified in argument), if the argument is "..", it returns to up one level meu<br><br />
- scripted_menu: argument is in format "menu file:menu script", the menu script is called with variable MENU_FILE containing the menu name (default path for the script is to /bin, if not specified)<br><br />
- update: applies an update *.zip file, specified in argument (format SDCARD:$path_to_the_file_in_sdcard)<br><br />
- tag: if ticked, file "tags/.[I]argument[/I]" is created<br><br />
- break: unselectable item, argument is ignored (use "*") and creates a menu item like "---- name ----"; using "*" as name will create just "--------------"<br><br />
- label: unselectable item, argument is ignored (use "*") and creates normal menu item "name "<br><br />
- wipe_data: factory reset<br><br />
- wipe_cahce: wipe cache<br><br />
<br><br />
The menu is refreshed (the script is called if the menu is scripted) on a menu change, applying an update or running a script. Whenever a script is ran, system, data and sdcard is mounted.<br><br />
<br />
====Application menu====<br />
<br />
Application menu is designed for anything that is run on the startup and can malfunction under any circumstances. Here is one example - suppose you have a mount on font in the startup. You'll have something like this in your startup script:<br />
<pre><br />
mount -o bind /system/myfonts/segoeui.ttf /system/fonts/DroidSans.ttf<br />
mount -o bind /system/myfonts/segoeuib.ttf /system/fonts/DroidSans-Bold.ttf<br />
</pre><br />
<br />
Well the idea is that you add a condition to the script, to run only under some circumstances, like:<br />
<br />
<pre><br />
if [ ! -f /system/switch/.nocustomfont ]; then<br />
mount -o bind /system/myfonts/segoeui.ttf /system/fonts/DroidSans.ttf<br />
mount -o bind /system/myfonts/segoeuib.ttf /system/fonts/DroidSans-Bold.ttf<br />
fi<br />
</pre><br />
<br />
which mounts the font only when /system/switch/.nocustomfont is not existing. If you want this controlable from the recovery, you register in into the application menu this way: all *.sh scripts in /app (where /sdcard/OpenRecovery/app is copied) are called at startup. They are passed variable "APP_MENU_FILE", which is the name of the used menu file (preinitalized). The script will look like this:<br />
<br />
<pre><br />
#!/sbin/sh<br />
<br />
#create the menu item<br />
echo "Custom Font:scripted_menu:custfont.menu:/app/custfont/menu.sh" >> "$APP_MENU_FILE"<br />
</pre><br />
<br />
Since the scripts are in /app and not /bin, use absolute path. This will add an item to the applications menu, now we need a menu when it is selected, which is the "/app/custfont/menu.sh":<br />
<br />
<pre><br />
#!/sbin/sh<br />
<br />
if [ -f /system/switch/.nocustomfont ]; then<br />
# menu name - custom font is disabled<br />
echo "Custom Font (Disabled)" > "$MENU_FILE"<br />
# go to upper level menu<br />
echo "Go Back:menu:.." >> "$MENU_FILE"<br />
# enable it<br />
echo "Enable:shell:/app/custfont/enable.sh" >> "$MENU_FILE"<br />
else<br />
# menu name - custom font is enabled<br />
echo "Custom Font (Enabled)" > "$MENU_FILE"<br />
# go to upper level menu<br />
echo "Go Back:menu:.." >> "$MENU_FILE"<br />
# disable it<br />
echo "Disable:shell:/app/custfont/disable.sh" >> "$MENU_FILE"<br />
fi<br />
</pre><br />
Notice the shells are in /sbin, so use /sbin/sh (or /sbin/bash). The script checks if the switch is on or off and generates the menu accordingly. Since the menu is refreshed each time the script is run, it will always submit the correct option. The "enable.sh" simply touches the file and "disable.sh" just deletes it.<br />
<br />
===Download===<br />
Binaries: [[http://rapidshare.com/files/414530880/OpenRecovery_v1_37_SHOLS.rar.html Open Recovery 1.37 for Milestone]], [[http://rapidshare.com/files/414925211/OpenRecovery_v1_37_STCU.rar.html Open Recovery 1.37 for Sholes Tablet]]<br><br />
Source: [[http://rapidshare.com/files/414696074/OpenRecovery_v1_37_src.tar.gz.html Open Recovery 1.37 source]]<br><br />
<br />
===Support forum===<br />
[[http://www.modmymobile.com/forums/showthread.php?t=531599 ModMyMobile]]</div>Skrilax CZhttp://droid-developers.org/wiki/Open_recoveryOpen recovery2010-08-24T21:30:11Z<p>Skrilax CZ: /* Open Recovery */</p>
<hr />
<div>Developed by Skrilax_CZ.<br><br />
Credit for mankind (from alldroid) for the CustomUpdate, on which this recovery is based,<br><br />
credit for poseidon (also from alldroid) for ADBRecovery,<br><br />
credit for koush for mtd-utils and nandroid (uses script based on it),<br><br />
credit for nadlabak for keyboard layout change script.<br><br />
Current version 1.37 [08/23/2010]<br />
<br />
====Features====<br />
- on-phone console (limited) - MILESTONE ONLY!<br><br />
- rooting the phone from menu (using ChainsDD su and SuperUser.apk (version 2.2.2))<br><br />
- nandroid backup/restore from menu<br><br />
- apply update *.zip files from menu (located in OpenRecovery/updates under the sdcard root folder, there is a sample one (just unpacks a file named "babble" to /system), no signatures are needed :)<br><br />
- wipe data (factory reset)<br><br />
- wipe cache<br><br />
- wipe dalvik-cache<br><br />
- adb in recovery, using bash shell<br><br />
- run a script<br><br />
- recovery options for applications<br><br />
<br />
The open recovery files are located under the OpenRecovery folder under the root of the sd card. The own update *.zip files are under the "updates" folder, sample one is included. The scripts must have *.sh extension and reside under the "scripts" folder. The recovery contains an update.zip with payload, which doesn't do anything else than restarts to the open recovery. All the files for OpenRecovery are under the OpenRecovery folder under the root of the sdcard. The payload installs busybox to /sbin runs the "switch.sh" under the bin folder in open recovery. The initial menu file is in OpenRecovery/menu/init.menu under sdcard root.<br />
<br />
====Download & Installation (MILESTONE)====<br />
1) You need to have the vulnerable recovery installed.<br><br />
2) Download the archive and unpack it to the root folder of the sdcard.<br><br />
<br />
====Usage (MILESTONE)====<br />
1) Reboot into recovery (hold 'X' button on bootloader 90.78, on others hold camera button; until you see triangle; then press camera + volume up)<br><br />
2) Apply the update.zip<br><br />
3) You are now in Open Recovery<br><br />
<br />
====Download & Installation (XT701)====<br />
1) Download the archive and unpack it.<br><br />
2) Either flash the sbf file using RSD Lite (preffered, recommended version 4.6+), or flash using the flash_image the *.img file to recovery partition.<br><br />
3) Unpack the "OpenRecovery" folder and "OpenRecovery.zip" to the root folder of the sdcard.<br><br />
<br />
====Usage (XT701)====<br />
1) Reboot into recovery (hold camera button; until you see triangle; then press camera + volume up)<br><br />
2) If no error occurs, you're now in Open Recovery. If error occurs you're in Open Recovery Lite.<br><br />
<br />
===Notes===<br />
<br />
====Console (MILESTONE ONLY)====<br />
- MENU key is CTRL, pressing MENU + ALT + C forcibly quits the console<br><br />
- scrolling (pressing volume keys by a row (or eight rows if ALT is pressed))<br><br />
- don't forget to select correct keyboard layout (under settings menu)<br><br />
- search key is tab<br><br />
- Alt+A prints "|" instead of Euro, Alt+F prints "$" instead of Pound<br><br />
- limited support for escape characters but allowing to use "clear" and "ls" coloured<br><br />
<br />
====Changing a theme====<br />
On /sdcard/OpenRecovery, the current theme is in "res" subfolder. The other two included are under "res.stock" or "res.squirtle". To change to another theme, let's say stock theme, rename the current "res" folder to "res.or" and "res.stock" to "res".<br><br />
<br />
====OR update.zip format====<br />
- the update.zip is extracted to "/sdcard/OpenRecovery/tmp/update"<br><br />
- shell script, located in the archive in "META-INF/update-or.sh" is called; under env. variable PACKAGE is the root folder of the extraction: "/sdcard/OpenRecovery/tmp/update"<br><br />
- the script can do the very same as script called from the menu (can call imenu)<br><br />
- progress bar is not supported in this format<br><br />
<br />
====ui.prop file====<br />
This file sets the colors for the theme. It's located right under the "res" folder.<br><br />
color3.LED=#100 <- led diode color (3-bit RGB, use only 0 or 1)<br><br />
color32.background=#000000A0 <- recovery background color<br><br />
color32.menu=#FF3705FF <- recovery menu color<br><br />
color32.selection=#FFFFFFFF <- recovery selected item color<br><br />
color32.script=#FFFF00FF <- recovery script color<br><br />
<br><br />
#Console color properties<br><br />
color24.console.header=#FFFF00 <- console header color<br><br />
color24.console.background=#000000 <- console background color<br><br />
color24.console.front=#E5E5E5 <- console foreground color<br><br />
<br><br />
(The example values are used by default when the property is not found.)<br><br />
<br />
====Lite vs. Full version (XT701 ONLY)====<br />
- The recovery image contains Lite version, with minimal options (moreless only difference from stock recovery is the GUI and applying update.zip doesn't need any signatures.)<br><br />
- When booting into recovery, the Lite version is started. It will automatically switch to full version by applying the OpenRecovery.zip).<br><br />
<br />
===Changelog===<br />
<br />
====Version 1.37====<br />
Bugfixes<br><br />
- fixed nandroid restore not properly restoring yaffs2 partitions in old format<br><br />
- fixed nandroid restore not restoring compressed backups<br><br />
- fixed nandroid backup not taking md5 checksums<br><br />
<br><br />
Changes<br><br />
- console buffers up to 1000 lats printed lines (extended from 200)<br><br />
<br />
====Version 1.36====<br />
Bugfixes<br><br />
- fixed nandroid when doing "Backup All" and not having apps2sd; which would fail complaining that /sddata could not be mounted<br><br />
(Ticking all partitions in the menu and selecting "Backup Selected" was working properly and the backup has been done correctly.)<br><br />
- fixed console cursor blinking<br><br />
- squirtle theme fixed<br><br />
<br />
====Version 1.35====<br />
Features<br><br />
- update.zip can be in new OR format using a shell script (described lower, there are samples of each one)<br><br />
- console has now signalling implemented (menu key = CTRL)<br><br />
- console has arrow keys implemented<br><br />
- console has support for displaying front colors; thus it is no longer needed to disable bash colors<br><br />
- console supports calling clear<br><br />
<br><br />
Changes<br><br />
- recovery binary will exit if not run by init (to prevent running it from adb or console)<br><br />
- scripts in scripts folder are dos2unixed (on -FuFu- advice)<br><br />
- switch files (.nobashcolors, .kdb_qwertz, etc.) are now located in /etc<br><br />
- manual settings of the timezone (/etc/timezone), applied if the env. variable TZ doesn't exist<br><br />
- update.zip no longer need to have the "update-binary", a default one is used if not found<br><br />
<br><br />
Bugfixes<br><br />
- fixed unyaffs not restoring sticky bit / suid / sgid<br><br />
- fixed displaying long menus (it will not be truncated, instead a scrollbar appears)<br><br />
- fixed error in switch.sh for XT701<br><br />
- fixed color24.console.front in the themes -> default is supposed to be #E5E5E5<br><br />
<br />
====Version 1.32====<br />
Features<br><br />
- pressing MENU + ALT + C forcibly quits the console<br><br />
<br><br />
Changes<br><br />
- ui.prop contains more options<br><br />
- when applying any update.zip package, there is a confirmation menu<br><br />
- cursor in console blinks<br><br />
<br><br />
Bugfixes<br><br />
- Error message when ext2 partition on sdcard doesn't exist fixed<br><br />
- fixed the bug with imenu when ran more than once in one script<br><br />
<br />
====Version 1.30a====<br />
Bugfixes<br><br />
- Console layout for QWERTZ / AZERTY fixed<br><br />
<br />
====Version 1.30====<br />
Features<br><br />
- on-phone console<br><br />
- keyboard layout changer included<br><br />
- new nandroid, with support of backing up and restoring ext2 partition on sdcard (Note: uses new format of the backup, new backups are located in /sdcard/nandroid/openrecovery, there is a backwards compatibility to restore the old backups)<br><br />
- ability to create compressed backups (and autoreboot when done)<br><br />
- better nandroid menu<br><br />
- menus wrap around<br><br />
- theming for the recovery (3 themes included, to apply just rename the "res.*" folder to "res"); color settings can be manipulated in the ui.prop file under the res folder)<br><br />
- new commands for menu (tag, label, break)<br><br />
- scripts (command "shell") are able to show menu interactively when requesting user feedback (sample included)<br><br />
<br />
====Version 1.14====<br />
Changes<br><br />
- UI<br><br />
- switch.sh is separated (menu creation is in init_recovery.sh and called later by the recovery)<br><br />
- Volume keys and Camera key can be used to navigate in Open Recovery<br><br />
<br />
====Version 1.12d====<br />
Bugfixes<br><br />
- wipe commands working properly<br><br />
<br><br />
Changes<br><br />
- Bash Settings menu, to enable/disable coloured output (preset to disabled), this is persistent settings, it will last through reboots<br><br />
<br><br />
Features<br><br />
- ability to wipe dalvik-cache only (via script)<br><br />
<br />
====Version 1.12c====<br />
Bugfixes<br><br />
- reboot command is working properly<br><br />
- the content of the sdcard is no longer changed when running, everything is being copied into the ramdisk<br><br />
- minor fixes<br><br />
<br><br />
Changes<br><br />
- removed the 'init' command, instead uses 'scripted_menu'<br><br />
- adbd uses bash (interactively) instead of sh<br><br />
- payload installs also bash and toolbox<br><br />
- different the menu system (deprecated 'init' command, used), each menu must be generated from a script (notes later)<br><br />
- added init folder, scripts (with extension *.sh) are ran there on startup of the open recovery.<br><br />
- the diode is blinking in blue instead of red.<br><br />
<br><br />
Features<br><br />
- the recovery prints the output of the scripts / programs (prints their stdout)<br><br />
- application menu (described later)<br><br />
- new su and SuperUser.apk by ChainsDD<br><br />
- if sdcard has ext2 partition, it is noted in fstab under "/sddata" (the module is inserted automatically)<br><br />
<br />
====Version 1.05====<br />
Bugfixes<br><br />
- fixed a bug in payload making it dependant on the system<br><br />
- there is now nothing in the /system folder when unmounted<br><br />
- toolbox linked statically<br><br />
- busybox now installs symlinks, instead of copying itself<br><br />
- fixed a bug in adb about the shell being in /sbin/sh instead of /system/bin/sh<br><br />
- cleaned up, removed unecessary libraries and binaries<br><br />
- switch.sh now initializes the Open Recovery completely, no other script is used for initialization<br><br />
- permissions set correctly<br><br />
<br><br />
Features<br><br />
- added option to wipe<br><br />
- menu's now have header (the menu file structure has been changed)<br><br />
- added the possibility to run scripts, with .*sh extension located in scripts folder under OpenRecovery folder (shell is /sbin/sh or /sbin/bash)<br><br />
<br />
====Version 1.02====<br />
- fixed root install<br />
<br />
====Version 1.01====<br />
- initial release<br />
<br />
===Developer Notes===<br />
<br />
The recovery contains an update.zip with payload, which doesn't do anything else than restarts to the open recovery. All the files for OpenRecovery are under the OpenRecovery folder under the root of the sdcard. The payload installs busybox to /sbin runs the "switch.sh" under the bin folder in open recovery.<br />
<br />
====Menu System====<br />
<br />
The menu for the Open Recovery is created dynamically. The files must be created inside "/menu" folder by scripts, which can either be specified (if the menu is scripted_menu) or created by a *.sh script in /sdcard/OpenRecovery/init where the scripts are executed at startup. A menu creating script has to create a *.menu file inside the /menu folder. If the menu is supposed to be created on startup and not modified, place the script into /init folder, otherwise use "scripted_menu" item, where the script is ran right before the menu is created. sdcard, system and data partitions are mounted when the scripts are ran. A typical example for "scripted_menu" item is under the tutorial for application menu. For application menu see lower section. The structure of the menu file is different from the CustomUpdate by mankind:<br />
First line is the menu name (normal string), then use the following structure:<br><br />
"item name:type:argument"<br><br />
- item name is what is seen in the menu<br><br />
- type: type of the command (described later)<br><br />
- argument: argument passed to the command (file, or anything else; if empty, put "*" there, otherwise the item will be discarded)<br><br />
<br />
====Commands====<br />
<br />
- reboot: reboots the phone<br><br />
- shell: calls a file specified in arguments (default path is to /bin, if not specified)<br><br />
- menu: opens another menu file (specified in argument), if the argument is "..", it returns to up one level meu<br><br />
- scripted_menu: argument is in format "menu file:menu script", the menu script is called with variable MENU_FILE containing the menu name (default path for the script is to /bin, if not specified)<br><br />
- update: applies an update *.zip file, specified in argument (format SDCARD:$path_to_the_file_in_sdcard)<br><br />
- tag: if ticked, file "tags/.[I]argument[/I]" is created<br><br />
- break: unselectable item, argument is ignored (use "*") and creates a menu item like "---- name ----"; using "*" as name will create just "--------------"<br><br />
- label: unselectable item, argument is ignored (use "*") and creates normal menu item "name "<br><br />
- wipe_data: factory reset<br><br />
- wipe_cahce: wipe cache<br><br />
<br><br />
The menu is refreshed (the script is called if the menu is scripted) on a menu change, applying an update or running a script. Whenever a script is ran, system, data and sdcard is mounted.<br><br />
<br />
====Application menu====<br />
<br />
Application menu is designed for anything that is run on the startup and can malfunction under any circumstances. Here is one example - suppose you have a mount on font in the startup. You'll have something like this in your startup script:<br />
<pre><br />
mount -o bind /system/myfonts/segoeui.ttf /system/fonts/DroidSans.ttf<br />
mount -o bind /system/myfonts/segoeuib.ttf /system/fonts/DroidSans-Bold.ttf<br />
</pre><br />
<br />
Well the idea is that you add a condition to the script, to run only under some circumstances, like:<br />
<br />
<pre><br />
if [ ! -f /system/switch/.nocustomfont ]; then<br />
mount -o bind /system/myfonts/segoeui.ttf /system/fonts/DroidSans.ttf<br />
mount -o bind /system/myfonts/segoeuib.ttf /system/fonts/DroidSans-Bold.ttf<br />
fi<br />
</pre><br />
<br />
which mounts the font only when /system/switch/.nocustomfont is not existing. If you want this controlable from the recovery, you register in into the application menu this way: all *.sh scripts in /app (where /sdcard/OpenRecovery/app is copied) are called at startup. They are passed variable "APP_MENU_FILE", which is the name of the used menu file (preinitalized). The script will look like this:<br />
<br />
<pre><br />
#!/sbin/sh<br />
<br />
#create the menu item<br />
echo "Custom Font:scripted_menu:custfont.menu:/app/custfont/menu.sh" >> "$APP_MENU_FILE"<br />
</pre><br />
<br />
Since the scripts are in /app and not /bin, use absolute path. This will add an item to the applications menu, now we need a menu when it is selected, which is the "/app/custfont/menu.sh":<br />
<br />
<pre><br />
#!/sbin/sh<br />
<br />
if [ -f /system/switch/.nocustomfont ]; then<br />
# menu name - custom font is disabled<br />
echo "Custom Font (Disabled)" > "$MENU_FILE"<br />
# go to upper level menu<br />
echo "Go Back:menu:.." >> "$MENU_FILE"<br />
# enable it<br />
echo "Enable:shell:/app/custfont/enable.sh" >> "$MENU_FILE"<br />
else<br />
# menu name - custom font is enabled<br />
echo "Custom Font (Enabled)" > "$MENU_FILE"<br />
# go to upper level menu<br />
echo "Go Back:menu:.." >> "$MENU_FILE"<br />
# disable it<br />
echo "Disable:shell:/app/custfont/disable.sh" >> "$MENU_FILE"<br />
fi<br />
</pre><br />
Notice the shells are in /sbin, so use /sbin/sh (or /sbin/bash). The script checks if the switch is on or off and generates the menu accordingly. Since the menu is refreshed each time the script is run, it will always submit the correct option. The "enable.sh" simply touches the file and "disable.sh" just deletes it.<br />
<br />
===Download===<br />
Binaries: [[http://rapidshare.com/files/414530880/OpenRecovery_v1_37_SHOLS.rar.html Open Recovery 1.37 for Milestone]], [[http://rapidshare.com/files/414925211/OpenRecovery_v1_37_STCU.rar.html Open Recovery 1.37 for Sholes Tablet]]<br><br />
Source: [[http://rapidshare.com/files/414696074/OpenRecovery_v1_37_src.tar.gz.html Open Recovery 1.37 source]]<br><br />
<br />
===Support forum===<br />
[[http://www.modmymobile.com/forums/showthread.php?t=531599 ModMyMobile]]</div>Skrilax CZhttp://droid-developers.org/wiki/Open_recoveryOpen recovery2010-08-24T21:29:58Z<p>Skrilax CZ: /* Open Recovery */</p>
<hr />
<div>==Open Recovery==<br />
<br />
Developed by Skrilax_CZ.<br><br />
Credit for mankind (from alldroid) for the CustomUpdate, on which this recovery is based,<br><br />
credit for poseidon (also from alldroid) for ADBRecovery,<br><br />
credit for koush for mtd-utils and nandroid (uses script based on it),<br><br />
credit for nadlabak for keyboard layout change script.<br><br />
Current version 1.37 [08/23/2010]<br />
<br />
====Features====<br />
- on-phone console (limited) - MILESTONE ONLY!<br><br />
- rooting the phone from menu (using ChainsDD su and SuperUser.apk (version 2.2.2))<br><br />
- nandroid backup/restore from menu<br><br />
- apply update *.zip files from menu (located in OpenRecovery/updates under the sdcard root folder, there is a sample one (just unpacks a file named "babble" to /system), no signatures are needed :)<br><br />
- wipe data (factory reset)<br><br />
- wipe cache<br><br />
- wipe dalvik-cache<br><br />
- adb in recovery, using bash shell<br><br />
- run a script<br><br />
- recovery options for applications<br><br />
<br />
The open recovery files are located under the OpenRecovery folder under the root of the sd card. The own update *.zip files are under the "updates" folder, sample one is included. The scripts must have *.sh extension and reside under the "scripts" folder. The recovery contains an update.zip with payload, which doesn't do anything else than restarts to the open recovery. All the files for OpenRecovery are under the OpenRecovery folder under the root of the sdcard. The payload installs busybox to /sbin runs the "switch.sh" under the bin folder in open recovery. The initial menu file is in OpenRecovery/menu/init.menu under sdcard root.<br />
<br />
====Download & Installation (MILESTONE)====<br />
1) You need to have the vulnerable recovery installed.<br><br />
2) Download the archive and unpack it to the root folder of the sdcard.<br><br />
<br />
====Usage (MILESTONE)====<br />
1) Reboot into recovery (hold 'X' button on bootloader 90.78, on others hold camera button; until you see triangle; then press camera + volume up)<br><br />
2) Apply the update.zip<br><br />
3) You are now in Open Recovery<br><br />
<br />
====Download & Installation (XT701)====<br />
1) Download the archive and unpack it.<br><br />
2) Either flash the sbf file using RSD Lite (preffered, recommended version 4.6+), or flash using the flash_image the *.img file to recovery partition.<br><br />
3) Unpack the "OpenRecovery" folder and "OpenRecovery.zip" to the root folder of the sdcard.<br><br />
<br />
====Usage (XT701)====<br />
1) Reboot into recovery (hold camera button; until you see triangle; then press camera + volume up)<br><br />
2) If no error occurs, you're now in Open Recovery. If error occurs you're in Open Recovery Lite.<br><br />
<br />
===Notes===<br />
<br />
====Console (MILESTONE ONLY)====<br />
- MENU key is CTRL, pressing MENU + ALT + C forcibly quits the console<br><br />
- scrolling (pressing volume keys by a row (or eight rows if ALT is pressed))<br><br />
- don't forget to select correct keyboard layout (under settings menu)<br><br />
- search key is tab<br><br />
- Alt+A prints "|" instead of Euro, Alt+F prints "$" instead of Pound<br><br />
- limited support for escape characters but allowing to use "clear" and "ls" coloured<br><br />
<br />
====Changing a theme====<br />
On /sdcard/OpenRecovery, the current theme is in "res" subfolder. The other two included are under "res.stock" or "res.squirtle". To change to another theme, let's say stock theme, rename the current "res" folder to "res.or" and "res.stock" to "res".<br><br />
<br />
====OR update.zip format====<br />
- the update.zip is extracted to "/sdcard/OpenRecovery/tmp/update"<br><br />
- shell script, located in the archive in "META-INF/update-or.sh" is called; under env. variable PACKAGE is the root folder of the extraction: "/sdcard/OpenRecovery/tmp/update"<br><br />
- the script can do the very same as script called from the menu (can call imenu)<br><br />
- progress bar is not supported in this format<br><br />
<br />
====ui.prop file====<br />
This file sets the colors for the theme. It's located right under the "res" folder.<br><br />
color3.LED=#100 <- led diode color (3-bit RGB, use only 0 or 1)<br><br />
color32.background=#000000A0 <- recovery background color<br><br />
color32.menu=#FF3705FF <- recovery menu color<br><br />
color32.selection=#FFFFFFFF <- recovery selected item color<br><br />
color32.script=#FFFF00FF <- recovery script color<br><br />
<br><br />
#Console color properties<br><br />
color24.console.header=#FFFF00 <- console header color<br><br />
color24.console.background=#000000 <- console background color<br><br />
color24.console.front=#E5E5E5 <- console foreground color<br><br />
<br><br />
(The example values are used by default when the property is not found.)<br><br />
<br />
====Lite vs. Full version (XT701 ONLY)====<br />
- The recovery image contains Lite version, with minimal options (moreless only difference from stock recovery is the GUI and applying update.zip doesn't need any signatures.)<br><br />
- When booting into recovery, the Lite version is started. It will automatically switch to full version by applying the OpenRecovery.zip).<br><br />
<br />
===Changelog===<br />
<br />
====Version 1.37====<br />
Bugfixes<br><br />
- fixed nandroid restore not properly restoring yaffs2 partitions in old format<br><br />
- fixed nandroid restore not restoring compressed backups<br><br />
- fixed nandroid backup not taking md5 checksums<br><br />
<br><br />
Changes<br><br />
- console buffers up to 1000 lats printed lines (extended from 200)<br><br />
<br />
====Version 1.36====<br />
Bugfixes<br><br />
- fixed nandroid when doing "Backup All" and not having apps2sd; which would fail complaining that /sddata could not be mounted<br><br />
(Ticking all partitions in the menu and selecting "Backup Selected" was working properly and the backup has been done correctly.)<br><br />
- fixed console cursor blinking<br><br />
- squirtle theme fixed<br><br />
<br />
====Version 1.35====<br />
Features<br><br />
- update.zip can be in new OR format using a shell script (described lower, there are samples of each one)<br><br />
- console has now signalling implemented (menu key = CTRL)<br><br />
- console has arrow keys implemented<br><br />
- console has support for displaying front colors; thus it is no longer needed to disable bash colors<br><br />
- console supports calling clear<br><br />
<br><br />
Changes<br><br />
- recovery binary will exit if not run by init (to prevent running it from adb or console)<br><br />
- scripts in scripts folder are dos2unixed (on -FuFu- advice)<br><br />
- switch files (.nobashcolors, .kdb_qwertz, etc.) are now located in /etc<br><br />
- manual settings of the timezone (/etc/timezone), applied if the env. variable TZ doesn't exist<br><br />
- update.zip no longer need to have the "update-binary", a default one is used if not found<br><br />
<br><br />
Bugfixes<br><br />
- fixed unyaffs not restoring sticky bit / suid / sgid<br><br />
- fixed displaying long menus (it will not be truncated, instead a scrollbar appears)<br><br />
- fixed error in switch.sh for XT701<br><br />
- fixed color24.console.front in the themes -> default is supposed to be #E5E5E5<br><br />
<br />
====Version 1.32====<br />
Features<br><br />
- pressing MENU + ALT + C forcibly quits the console<br><br />
<br><br />
Changes<br><br />
- ui.prop contains more options<br><br />
- when applying any update.zip package, there is a confirmation menu<br><br />
- cursor in console blinks<br><br />
<br><br />
Bugfixes<br><br />
- Error message when ext2 partition on sdcard doesn't exist fixed<br><br />
- fixed the bug with imenu when ran more than once in one script<br><br />
<br />
====Version 1.30a====<br />
Bugfixes<br><br />
- Console layout for QWERTZ / AZERTY fixed<br><br />
<br />
====Version 1.30====<br />
Features<br><br />
- on-phone console<br><br />
- keyboard layout changer included<br><br />
- new nandroid, with support of backing up and restoring ext2 partition on sdcard (Note: uses new format of the backup, new backups are located in /sdcard/nandroid/openrecovery, there is a backwards compatibility to restore the old backups)<br><br />
- ability to create compressed backups (and autoreboot when done)<br><br />
- better nandroid menu<br><br />
- menus wrap around<br><br />
- theming for the recovery (3 themes included, to apply just rename the "res.*" folder to "res"); color settings can be manipulated in the ui.prop file under the res folder)<br><br />
- new commands for menu (tag, label, break)<br><br />
- scripts (command "shell") are able to show menu interactively when requesting user feedback (sample included)<br><br />
<br />
====Version 1.14====<br />
Changes<br><br />
- UI<br><br />
- switch.sh is separated (menu creation is in init_recovery.sh and called later by the recovery)<br><br />
- Volume keys and Camera key can be used to navigate in Open Recovery<br><br />
<br />
====Version 1.12d====<br />
Bugfixes<br><br />
- wipe commands working properly<br><br />
<br><br />
Changes<br><br />
- Bash Settings menu, to enable/disable coloured output (preset to disabled), this is persistent settings, it will last through reboots<br><br />
<br><br />
Features<br><br />
- ability to wipe dalvik-cache only (via script)<br><br />
<br />
====Version 1.12c====<br />
Bugfixes<br><br />
- reboot command is working properly<br><br />
- the content of the sdcard is no longer changed when running, everything is being copied into the ramdisk<br><br />
- minor fixes<br><br />
<br><br />
Changes<br><br />
- removed the 'init' command, instead uses 'scripted_menu'<br><br />
- adbd uses bash (interactively) instead of sh<br><br />
- payload installs also bash and toolbox<br><br />
- different the menu system (deprecated 'init' command, used), each menu must be generated from a script (notes later)<br><br />
- added init folder, scripts (with extension *.sh) are ran there on startup of the open recovery.<br><br />
- the diode is blinking in blue instead of red.<br><br />
<br><br />
Features<br><br />
- the recovery prints the output of the scripts / programs (prints their stdout)<br><br />
- application menu (described later)<br><br />
- new su and SuperUser.apk by ChainsDD<br><br />
- if sdcard has ext2 partition, it is noted in fstab under "/sddata" (the module is inserted automatically)<br><br />
<br />
====Version 1.05====<br />
Bugfixes<br><br />
- fixed a bug in payload making it dependant on the system<br><br />
- there is now nothing in the /system folder when unmounted<br><br />
- toolbox linked statically<br><br />
- busybox now installs symlinks, instead of copying itself<br><br />
- fixed a bug in adb about the shell being in /sbin/sh instead of /system/bin/sh<br><br />
- cleaned up, removed unecessary libraries and binaries<br><br />
- switch.sh now initializes the Open Recovery completely, no other script is used for initialization<br><br />
- permissions set correctly<br><br />
<br><br />
Features<br><br />
- added option to wipe<br><br />
- menu's now have header (the menu file structure has been changed)<br><br />
- added the possibility to run scripts, with .*sh extension located in scripts folder under OpenRecovery folder (shell is /sbin/sh or /sbin/bash)<br><br />
<br />
====Version 1.02====<br />
- fixed root install<br />
<br />
====Version 1.01====<br />
- initial release<br />
<br />
===Developer Notes===<br />
<br />
The recovery contains an update.zip with payload, which doesn't do anything else than restarts to the open recovery. All the files for OpenRecovery are under the OpenRecovery folder under the root of the sdcard. The payload installs busybox to /sbin runs the "switch.sh" under the bin folder in open recovery.<br />
<br />
====Menu System====<br />
<br />
The menu for the Open Recovery is created dynamically. The files must be created inside "/menu" folder by scripts, which can either be specified (if the menu is scripted_menu) or created by a *.sh script in /sdcard/OpenRecovery/init where the scripts are executed at startup. A menu creating script has to create a *.menu file inside the /menu folder. If the menu is supposed to be created on startup and not modified, place the script into /init folder, otherwise use "scripted_menu" item, where the script is ran right before the menu is created. sdcard, system and data partitions are mounted when the scripts are ran. A typical example for "scripted_menu" item is under the tutorial for application menu. For application menu see lower section. The structure of the menu file is different from the CustomUpdate by mankind:<br />
First line is the menu name (normal string), then use the following structure:<br><br />
"item name:type:argument"<br><br />
- item name is what is seen in the menu<br><br />
- type: type of the command (described later)<br><br />
- argument: argument passed to the command (file, or anything else; if empty, put "*" there, otherwise the item will be discarded)<br><br />
<br />
====Commands====<br />
<br />
- reboot: reboots the phone<br><br />
- shell: calls a file specified in arguments (default path is to /bin, if not specified)<br><br />
- menu: opens another menu file (specified in argument), if the argument is "..", it returns to up one level meu<br><br />
- scripted_menu: argument is in format "menu file:menu script", the menu script is called with variable MENU_FILE containing the menu name (default path for the script is to /bin, if not specified)<br><br />
- update: applies an update *.zip file, specified in argument (format SDCARD:$path_to_the_file_in_sdcard)<br><br />
- tag: if ticked, file "tags/.[I]argument[/I]" is created<br><br />
- break: unselectable item, argument is ignored (use "*") and creates a menu item like "---- name ----"; using "*" as name will create just "--------------"<br><br />
- label: unselectable item, argument is ignored (use "*") and creates normal menu item "name "<br><br />
- wipe_data: factory reset<br><br />
- wipe_cahce: wipe cache<br><br />
<br><br />
The menu is refreshed (the script is called if the menu is scripted) on a menu change, applying an update or running a script. Whenever a script is ran, system, data and sdcard is mounted.<br><br />
<br />
====Application menu====<br />
<br />
Application menu is designed for anything that is run on the startup and can malfunction under any circumstances. Here is one example - suppose you have a mount on font in the startup. You'll have something like this in your startup script:<br />
<pre><br />
mount -o bind /system/myfonts/segoeui.ttf /system/fonts/DroidSans.ttf<br />
mount -o bind /system/myfonts/segoeuib.ttf /system/fonts/DroidSans-Bold.ttf<br />
</pre><br />
<br />
Well the idea is that you add a condition to the script, to run only under some circumstances, like:<br />
<br />
<pre><br />
if [ ! -f /system/switch/.nocustomfont ]; then<br />
mount -o bind /system/myfonts/segoeui.ttf /system/fonts/DroidSans.ttf<br />
mount -o bind /system/myfonts/segoeuib.ttf /system/fonts/DroidSans-Bold.ttf<br />
fi<br />
</pre><br />
<br />
which mounts the font only when /system/switch/.nocustomfont is not existing. If you want this controlable from the recovery, you register in into the application menu this way: all *.sh scripts in /app (where /sdcard/OpenRecovery/app is copied) are called at startup. They are passed variable "APP_MENU_FILE", which is the name of the used menu file (preinitalized). The script will look like this:<br />
<br />
<pre><br />
#!/sbin/sh<br />
<br />
#create the menu item<br />
echo "Custom Font:scripted_menu:custfont.menu:/app/custfont/menu.sh" >> "$APP_MENU_FILE"<br />
</pre><br />
<br />
Since the scripts are in /app and not /bin, use absolute path. This will add an item to the applications menu, now we need a menu when it is selected, which is the "/app/custfont/menu.sh":<br />
<br />
<pre><br />
#!/sbin/sh<br />
<br />
if [ -f /system/switch/.nocustomfont ]; then<br />
# menu name - custom font is disabled<br />
echo "Custom Font (Disabled)" > "$MENU_FILE"<br />
# go to upper level menu<br />
echo "Go Back:menu:.." >> "$MENU_FILE"<br />
# enable it<br />
echo "Enable:shell:/app/custfont/enable.sh" >> "$MENU_FILE"<br />
else<br />
# menu name - custom font is enabled<br />
echo "Custom Font (Enabled)" > "$MENU_FILE"<br />
# go to upper level menu<br />
echo "Go Back:menu:.." >> "$MENU_FILE"<br />
# disable it<br />
echo "Disable:shell:/app/custfont/disable.sh" >> "$MENU_FILE"<br />
fi<br />
</pre><br />
Notice the shells are in /sbin, so use /sbin/sh (or /sbin/bash). The script checks if the switch is on or off and generates the menu accordingly. Since the menu is refreshed each time the script is run, it will always submit the correct option. The "enable.sh" simply touches the file and "disable.sh" just deletes it.<br />
<br />
===Download===<br />
Binaries: [[http://rapidshare.com/files/414530880/OpenRecovery_v1_37_SHOLS.rar.html Open Recovery 1.37 for Milestone]], [[http://rapidshare.com/files/414925211/OpenRecovery_v1_37_STCU.rar.html Open Recovery 1.37 for Sholes Tablet]]<br><br />
Source: [[http://rapidshare.com/files/414696074/OpenRecovery_v1_37_src.tar.gz.html Open Recovery 1.37 source]]<br><br />
<br />
===Support forum===<br />
[[http://www.modmymobile.com/forums/showthread.php?t=531599 ModMyMobile]]</div>Skrilax CZhttp://droid-developers.org/wiki/Open_recoveryOpen recovery2010-08-24T21:29:17Z<p>Skrilax CZ: /* Usage (XT701) */</p>
<hr />
<div>===Open Recovery===<br />
<br />
Developed by Skrilax_CZ.<br><br />
Credit for mankind (from alldroid) for the CustomUpdate, on which this recovery is based,<br><br />
credit for poseidon (also from alldroid) for ADBRecovery,<br><br />
credit for koush for mtd-utils and nandroid (uses script based on it),<br><br />
credit for nadlabak for keyboard layout change script.<br><br />
Current version 1.37 [08/23/2010]<br />
<br />
====Features====<br />
- on-phone console (limited) - MILESTONE ONLY!<br><br />
- rooting the phone from menu (using ChainsDD su and SuperUser.apk (version 2.2.2))<br><br />
- nandroid backup/restore from menu<br><br />
- apply update *.zip files from menu (located in OpenRecovery/updates under the sdcard root folder, there is a sample one (just unpacks a file named "babble" to /system), no signatures are needed :)<br><br />
- wipe data (factory reset)<br><br />
- wipe cache<br><br />
- wipe dalvik-cache<br><br />
- adb in recovery, using bash shell<br><br />
- run a script<br><br />
- recovery options for applications<br><br />
<br />
The open recovery files are located under the OpenRecovery folder under the root of the sd card. The own update *.zip files are under the "updates" folder, sample one is included. The scripts must have *.sh extension and reside under the "scripts" folder. The recovery contains an update.zip with payload, which doesn't do anything else than restarts to the open recovery. All the files for OpenRecovery are under the OpenRecovery folder under the root of the sdcard. The payload installs busybox to /sbin runs the "switch.sh" under the bin folder in open recovery. The initial menu file is in OpenRecovery/menu/init.menu under sdcard root.<br />
<br />
====Download & Installation (MILESTONE)====<br />
1) You need to have the vulnerable recovery installed.<br><br />
2) Download the archive and unpack it to the root folder of the sdcard.<br><br />
<br />
====Usage (MILESTONE)====<br />
1) Reboot into recovery (hold 'X' button on bootloader 90.78, on others hold camera button; until you see triangle; then press camera + volume up)<br><br />
2) Apply the update.zip<br><br />
3) You are now in Open Recovery<br><br />
<br />
====Download & Installation (XT701)====<br />
1) Download the archive and unpack it.<br><br />
2) Either flash the sbf file using RSD Lite (preffered, recommended version 4.6+), or flash using the flash_image the *.img file to recovery partition.<br><br />
3) Unpack the "OpenRecovery" folder and "OpenRecovery.zip" to the root folder of the sdcard.<br><br />
<br />
====Usage (XT701)====<br />
1) Reboot into recovery (hold camera button; until you see triangle; then press camera + volume up)<br><br />
2) If no error occurs, you're now in Open Recovery. If error occurs you're in Open Recovery Lite.<br><br />
<br />
===Notes===<br />
<br />
====Console (MILESTONE ONLY)====<br />
- MENU key is CTRL, pressing MENU + ALT + C forcibly quits the console<br><br />
- scrolling (pressing volume keys by a row (or eight rows if ALT is pressed))<br><br />
- don't forget to select correct keyboard layout (under settings menu)<br><br />
- search key is tab<br><br />
- Alt+A prints "|" instead of Euro, Alt+F prints "$" instead of Pound<br><br />
- limited support for escape characters but allowing to use "clear" and "ls" coloured<br><br />
<br />
====Changing a theme====<br />
On /sdcard/OpenRecovery, the current theme is in "res" subfolder. The other two included are under "res.stock" or "res.squirtle". To change to another theme, let's say stock theme, rename the current "res" folder to "res.or" and "res.stock" to "res".<br><br />
<br />
====OR update.zip format====<br />
- the update.zip is extracted to "/sdcard/OpenRecovery/tmp/update"<br><br />
- shell script, located in the archive in "META-INF/update-or.sh" is called; under env. variable PACKAGE is the root folder of the extraction: "/sdcard/OpenRecovery/tmp/update"<br><br />
- the script can do the very same as script called from the menu (can call imenu)<br><br />
- progress bar is not supported in this format<br><br />
<br />
====ui.prop file====<br />
This file sets the colors for the theme. It's located right under the "res" folder.<br><br />
color3.LED=#100 <- led diode color (3-bit RGB, use only 0 or 1)<br><br />
color32.background=#000000A0 <- recovery background color<br><br />
color32.menu=#FF3705FF <- recovery menu color<br><br />
color32.selection=#FFFFFFFF <- recovery selected item color<br><br />
color32.script=#FFFF00FF <- recovery script color<br><br />
<br><br />
#Console color properties<br><br />
color24.console.header=#FFFF00 <- console header color<br><br />
color24.console.background=#000000 <- console background color<br><br />
color24.console.front=#E5E5E5 <- console foreground color<br><br />
<br><br />
(The example values are used by default when the property is not found.)<br><br />
<br />
====Lite vs. Full version (XT701 ONLY)====<br />
- The recovery image contains Lite version, with minimal options (moreless only difference from stock recovery is the GUI and applying update.zip doesn't need any signatures.)<br><br />
- When booting into recovery, the Lite version is started. It will automatically switch to full version by applying the OpenRecovery.zip).<br><br />
<br />
===Changelog===<br />
<br />
====Version 1.37====<br />
Bugfixes<br><br />
- fixed nandroid restore not properly restoring yaffs2 partitions in old format<br><br />
- fixed nandroid restore not restoring compressed backups<br><br />
- fixed nandroid backup not taking md5 checksums<br><br />
<br><br />
Changes<br><br />
- console buffers up to 1000 lats printed lines (extended from 200)<br><br />
<br />
====Version 1.36====<br />
Bugfixes<br><br />
- fixed nandroid when doing "Backup All" and not having apps2sd; which would fail complaining that /sddata could not be mounted<br><br />
(Ticking all partitions in the menu and selecting "Backup Selected" was working properly and the backup has been done correctly.)<br><br />
- fixed console cursor blinking<br><br />
- squirtle theme fixed<br><br />
<br />
====Version 1.35====<br />
Features<br><br />
- update.zip can be in new OR format using a shell script (described lower, there are samples of each one)<br><br />
- console has now signalling implemented (menu key = CTRL)<br><br />
- console has arrow keys implemented<br><br />
- console has support for displaying front colors; thus it is no longer needed to disable bash colors<br><br />
- console supports calling clear<br><br />
<br><br />
Changes<br><br />
- recovery binary will exit if not run by init (to prevent running it from adb or console)<br><br />
- scripts in scripts folder are dos2unixed (on -FuFu- advice)<br><br />
- switch files (.nobashcolors, .kdb_qwertz, etc.) are now located in /etc<br><br />
- manual settings of the timezone (/etc/timezone), applied if the env. variable TZ doesn't exist<br><br />
- update.zip no longer need to have the "update-binary", a default one is used if not found<br><br />
<br><br />
Bugfixes<br><br />
- fixed unyaffs not restoring sticky bit / suid / sgid<br><br />
- fixed displaying long menus (it will not be truncated, instead a scrollbar appears)<br><br />
- fixed error in switch.sh for XT701<br><br />
- fixed color24.console.front in the themes -> default is supposed to be #E5E5E5<br><br />
<br />
====Version 1.32====<br />
Features<br><br />
- pressing MENU + ALT + C forcibly quits the console<br><br />
<br><br />
Changes<br><br />
- ui.prop contains more options<br><br />
- when applying any update.zip package, there is a confirmation menu<br><br />
- cursor in console blinks<br><br />
<br><br />
Bugfixes<br><br />
- Error message when ext2 partition on sdcard doesn't exist fixed<br><br />
- fixed the bug with imenu when ran more than once in one script<br><br />
<br />
====Version 1.30a====<br />
Bugfixes<br><br />
- Console layout for QWERTZ / AZERTY fixed<br><br />
<br />
====Version 1.30====<br />
Features<br><br />
- on-phone console<br><br />
- keyboard layout changer included<br><br />
- new nandroid, with support of backing up and restoring ext2 partition on sdcard (Note: uses new format of the backup, new backups are located in /sdcard/nandroid/openrecovery, there is a backwards compatibility to restore the old backups)<br><br />
- ability to create compressed backups (and autoreboot when done)<br><br />
- better nandroid menu<br><br />
- menus wrap around<br><br />
- theming for the recovery (3 themes included, to apply just rename the "res.*" folder to "res"); color settings can be manipulated in the ui.prop file under the res folder)<br><br />
- new commands for menu (tag, label, break)<br><br />
- scripts (command "shell") are able to show menu interactively when requesting user feedback (sample included)<br><br />
<br />
====Version 1.14====<br />
Changes<br><br />
- UI<br><br />
- switch.sh is separated (menu creation is in init_recovery.sh and called later by the recovery)<br><br />
- Volume keys and Camera key can be used to navigate in Open Recovery<br><br />
<br />
====Version 1.12d====<br />
Bugfixes<br><br />
- wipe commands working properly<br><br />
<br><br />
Changes<br><br />
- Bash Settings menu, to enable/disable coloured output (preset to disabled), this is persistent settings, it will last through reboots<br><br />
<br><br />
Features<br><br />
- ability to wipe dalvik-cache only (via script)<br><br />
<br />
====Version 1.12c====<br />
Bugfixes<br><br />
- reboot command is working properly<br><br />
- the content of the sdcard is no longer changed when running, everything is being copied into the ramdisk<br><br />
- minor fixes<br><br />
<br><br />
Changes<br><br />
- removed the 'init' command, instead uses 'scripted_menu'<br><br />
- adbd uses bash (interactively) instead of sh<br><br />
- payload installs also bash and toolbox<br><br />
- different the menu system (deprecated 'init' command, used), each menu must be generated from a script (notes later)<br><br />
- added init folder, scripts (with extension *.sh) are ran there on startup of the open recovery.<br><br />
- the diode is blinking in blue instead of red.<br><br />
<br><br />
Features<br><br />
- the recovery prints the output of the scripts / programs (prints their stdout)<br><br />
- application menu (described later)<br><br />
- new su and SuperUser.apk by ChainsDD<br><br />
- if sdcard has ext2 partition, it is noted in fstab under "/sddata" (the module is inserted automatically)<br><br />
<br />
====Version 1.05====<br />
Bugfixes<br><br />
- fixed a bug in payload making it dependant on the system<br><br />
- there is now nothing in the /system folder when unmounted<br><br />
- toolbox linked statically<br><br />
- busybox now installs symlinks, instead of copying itself<br><br />
- fixed a bug in adb about the shell being in /sbin/sh instead of /system/bin/sh<br><br />
- cleaned up, removed unecessary libraries and binaries<br><br />
- switch.sh now initializes the Open Recovery completely, no other script is used for initialization<br><br />
- permissions set correctly<br><br />
<br><br />
Features<br><br />
- added option to wipe<br><br />
- menu's now have header (the menu file structure has been changed)<br><br />
- added the possibility to run scripts, with .*sh extension located in scripts folder under OpenRecovery folder (shell is /sbin/sh or /sbin/bash)<br><br />
<br />
====Version 1.02====<br />
- fixed root install<br />
<br />
====Version 1.01====<br />
- initial release<br />
<br />
===Developer Notes===<br />
<br />
The recovery contains an update.zip with payload, which doesn't do anything else than restarts to the open recovery. All the files for OpenRecovery are under the OpenRecovery folder under the root of the sdcard. The payload installs busybox to /sbin runs the "switch.sh" under the bin folder in open recovery.<br />
<br />
====Menu System====<br />
<br />
The menu for the Open Recovery is created dynamically. The files must be created inside "/menu" folder by scripts, which can either be specified (if the menu is scripted_menu) or created by a *.sh script in /sdcard/OpenRecovery/init where the scripts are executed at startup. A menu creating script has to create a *.menu file inside the /menu folder. If the menu is supposed to be created on startup and not modified, place the script into /init folder, otherwise use "scripted_menu" item, where the script is ran right before the menu is created. sdcard, system and data partitions are mounted when the scripts are ran. A typical example for "scripted_menu" item is under the tutorial for application menu. For application menu see lower section. The structure of the menu file is different from the CustomUpdate by mankind:<br />
First line is the menu name (normal string), then use the following structure:<br><br />
"item name:type:argument"<br><br />
- item name is what is seen in the menu<br><br />
- type: type of the command (described later)<br><br />
- argument: argument passed to the command (file, or anything else; if empty, put "*" there, otherwise the item will be discarded)<br><br />
<br />
====Commands====<br />
<br />
- reboot: reboots the phone<br><br />
- shell: calls a file specified in arguments (default path is to /bin, if not specified)<br><br />
- menu: opens another menu file (specified in argument), if the argument is "..", it returns to up one level meu<br><br />
- scripted_menu: argument is in format "menu file:menu script", the menu script is called with variable MENU_FILE containing the menu name (default path for the script is to /bin, if not specified)<br><br />
- update: applies an update *.zip file, specified in argument (format SDCARD:$path_to_the_file_in_sdcard)<br><br />
- tag: if ticked, file "tags/.[I]argument[/I]" is created<br><br />
- break: unselectable item, argument is ignored (use "*") and creates a menu item like "---- name ----"; using "*" as name will create just "--------------"<br><br />
- label: unselectable item, argument is ignored (use "*") and creates normal menu item "name "<br><br />
- wipe_data: factory reset<br><br />
- wipe_cahce: wipe cache<br><br />
<br><br />
The menu is refreshed (the script is called if the menu is scripted) on a menu change, applying an update or running a script. Whenever a script is ran, system, data and sdcard is mounted.<br><br />
<br />
====Application menu====<br />
<br />
Application menu is designed for anything that is run on the startup and can malfunction under any circumstances. Here is one example - suppose you have a mount on font in the startup. You'll have something like this in your startup script:<br />
<pre><br />
mount -o bind /system/myfonts/segoeui.ttf /system/fonts/DroidSans.ttf<br />
mount -o bind /system/myfonts/segoeuib.ttf /system/fonts/DroidSans-Bold.ttf<br />
</pre><br />
<br />
Well the idea is that you add a condition to the script, to run only under some circumstances, like:<br />
<br />
<pre><br />
if [ ! -f /system/switch/.nocustomfont ]; then<br />
mount -o bind /system/myfonts/segoeui.ttf /system/fonts/DroidSans.ttf<br />
mount -o bind /system/myfonts/segoeuib.ttf /system/fonts/DroidSans-Bold.ttf<br />
fi<br />
</pre><br />
<br />
which mounts the font only when /system/switch/.nocustomfont is not existing. If you want this controlable from the recovery, you register in into the application menu this way: all *.sh scripts in /app (where /sdcard/OpenRecovery/app is copied) are called at startup. They are passed variable "APP_MENU_FILE", which is the name of the used menu file (preinitalized). The script will look like this:<br />
<br />
<pre><br />
#!/sbin/sh<br />
<br />
#create the menu item<br />
echo "Custom Font:scripted_menu:custfont.menu:/app/custfont/menu.sh" >> "$APP_MENU_FILE"<br />
</pre><br />
<br />
Since the scripts are in /app and not /bin, use absolute path. This will add an item to the applications menu, now we need a menu when it is selected, which is the "/app/custfont/menu.sh":<br />
<br />
<pre><br />
#!/sbin/sh<br />
<br />
if [ -f /system/switch/.nocustomfont ]; then<br />
# menu name - custom font is disabled<br />
echo "Custom Font (Disabled)" > "$MENU_FILE"<br />
# go to upper level menu<br />
echo "Go Back:menu:.." >> "$MENU_FILE"<br />
# enable it<br />
echo "Enable:shell:/app/custfont/enable.sh" >> "$MENU_FILE"<br />
else<br />
# menu name - custom font is enabled<br />
echo "Custom Font (Enabled)" > "$MENU_FILE"<br />
# go to upper level menu<br />
echo "Go Back:menu:.." >> "$MENU_FILE"<br />
# disable it<br />
echo "Disable:shell:/app/custfont/disable.sh" >> "$MENU_FILE"<br />
fi<br />
</pre><br />
Notice the shells are in /sbin, so use /sbin/sh (or /sbin/bash). The script checks if the switch is on or off and generates the menu accordingly. Since the menu is refreshed each time the script is run, it will always submit the correct option. The "enable.sh" simply touches the file and "disable.sh" just deletes it.<br />
<br />
===Download===<br />
Binaries: [[http://rapidshare.com/files/414530880/OpenRecovery_v1_37_SHOLS.rar.html Open Recovery 1.37 for Milestone]], [[http://rapidshare.com/files/414925211/OpenRecovery_v1_37_STCU.rar.html Open Recovery 1.37 for Sholes Tablet]]<br><br />
Source: [[http://rapidshare.com/files/414696074/OpenRecovery_v1_37_src.tar.gz.html Open Recovery 1.37 source]]<br><br />
<br />
===Support forum===<br />
[[http://www.modmymobile.com/forums/showthread.php?t=531599 ModMyMobile]]</div>Skrilax CZhttp://droid-developers.org/wiki/Open_recoveryOpen recovery2010-08-24T21:27:21Z<p>Skrilax CZ: /* Version 1.36 */</p>
<hr />
<div>===Open Recovery===<br />
<br />
Developed by Skrilax_CZ.<br><br />
Credit for mankind (from alldroid) for the CustomUpdate, on which this recovery is based,<br><br />
credit for poseidon (also from alldroid) for ADBRecovery,<br><br />
credit for koush for mtd-utils and nandroid (uses script based on it),<br><br />
credit for nadlabak for keyboard layout change script.<br><br />
Current version 1.37 [08/23/2010]<br />
<br />
====Features====<br />
- on-phone console (limited) - MILESTONE ONLY!<br><br />
- rooting the phone from menu (using ChainsDD su and SuperUser.apk (version 2.2.2))<br><br />
- nandroid backup/restore from menu<br><br />
- apply update *.zip files from menu (located in OpenRecovery/updates under the sdcard root folder, there is a sample one (just unpacks a file named "babble" to /system), no signatures are needed :)<br><br />
- wipe data (factory reset)<br><br />
- wipe cache<br><br />
- wipe dalvik-cache<br><br />
- adb in recovery, using bash shell<br><br />
- run a script<br><br />
- recovery options for applications<br><br />
<br />
The open recovery files are located under the OpenRecovery folder under the root of the sd card. The own update *.zip files are under the "updates" folder, sample one is included. The scripts must have *.sh extension and reside under the "scripts" folder. The recovery contains an update.zip with payload, which doesn't do anything else than restarts to the open recovery. All the files for OpenRecovery are under the OpenRecovery folder under the root of the sdcard. The payload installs busybox to /sbin runs the "switch.sh" under the bin folder in open recovery. The initial menu file is in OpenRecovery/menu/init.menu under sdcard root.<br />
<br />
====Download & Installation (MILESTONE)====<br />
1) You need to have the vulnerable recovery installed.<br><br />
2) Download the archive and unpack it to the root folder of the sdcard.<br><br />
<br />
====Usage (MILESTONE)====<br />
1) Reboot into recovery (hold 'X' button on bootloader 90.78, on others hold camera button; until you see triangle; then press camera + volume up)<br><br />
2) Apply the update.zip<br><br />
3) You are now in Open Recovery<br><br />
<br />
====Download & Installation (XT701)====<br />
1) Download the archive and unpack it.<br><br />
2) Either flash the sbf file using RSD Lite (preffered, recommended version 4.6+), or flash using the flash_image the *.img file to recovery partition.<br><br />
3) Unpack the "OpenRecovery" folder and "OpenRecovery.zip" to the root folder of the sdcard.<br><br />
<br />
====Usage (XT701)====<br />
1) Reboot into recovery (hold camera button; until you see triangle; then press camera + volume up)<br><br />
2) If no error occurs, you're now in Open Recovery. If error occurs you're in Open Recovery Lite.<br><br />
<br />
===Changelog===<br />
<br />
====Version 1.37====<br />
Bugfixes<br><br />
- fixed nandroid restore not properly restoring yaffs2 partitions in old format<br><br />
- fixed nandroid restore not restoring compressed backups<br><br />
- fixed nandroid backup not taking md5 checksums<br><br />
<br><br />
Changes<br><br />
- console buffers up to 1000 lats printed lines (extended from 200)<br><br />
<br />
====Version 1.36====<br />
Bugfixes<br><br />
- fixed nandroid when doing "Backup All" and not having apps2sd; which would fail complaining that /sddata could not be mounted<br><br />
(Ticking all partitions in the menu and selecting "Backup Selected" was working properly and the backup has been done correctly.)<br><br />
- fixed console cursor blinking<br><br />
- squirtle theme fixed<br><br />
<br />
====Version 1.35====<br />
Features<br><br />
- update.zip can be in new OR format using a shell script (described lower, there are samples of each one)<br><br />
- console has now signalling implemented (menu key = CTRL)<br><br />
- console has arrow keys implemented<br><br />
- console has support for displaying front colors; thus it is no longer needed to disable bash colors<br><br />
- console supports calling clear<br><br />
<br><br />
Changes<br><br />
- recovery binary will exit if not run by init (to prevent running it from adb or console)<br><br />
- scripts in scripts folder are dos2unixed (on -FuFu- advice)<br><br />
- switch files (.nobashcolors, .kdb_qwertz, etc.) are now located in /etc<br><br />
- manual settings of the timezone (/etc/timezone), applied if the env. variable TZ doesn't exist<br><br />
- update.zip no longer need to have the "update-binary", a default one is used if not found<br><br />
<br><br />
Bugfixes<br><br />
- fixed unyaffs not restoring sticky bit / suid / sgid<br><br />
- fixed displaying long menus (it will not be truncated, instead a scrollbar appears)<br><br />
- fixed error in switch.sh for XT701<br><br />
- fixed color24.console.front in the themes -> default is supposed to be #E5E5E5<br><br />
<br />
====Version 1.32====<br />
Features<br><br />
- pressing MENU + ALT + C forcibly quits the console<br><br />
<br><br />
Changes<br><br />
- ui.prop contains more options<br><br />
- when applying any update.zip package, there is a confirmation menu<br><br />
- cursor in console blinks<br><br />
<br><br />
Bugfixes<br><br />
- Error message when ext2 partition on sdcard doesn't exist fixed<br><br />
- fixed the bug with imenu when ran more than once in one script<br><br />
<br />
====Version 1.30a====<br />
Bugfixes<br><br />
- Console layout for QWERTZ / AZERTY fixed<br><br />
<br />
====Version 1.30====<br />
Features<br><br />
- on-phone console<br><br />
- keyboard layout changer included<br><br />
- new nandroid, with support of backing up and restoring ext2 partition on sdcard (Note: uses new format of the backup, new backups are located in /sdcard/nandroid/openrecovery, there is a backwards compatibility to restore the old backups)<br><br />
- ability to create compressed backups (and autoreboot when done)<br><br />
- better nandroid menu<br><br />
- menus wrap around<br><br />
- theming for the recovery (3 themes included, to apply just rename the "res.*" folder to "res"); color settings can be manipulated in the ui.prop file under the res folder)<br><br />
- new commands for menu (tag, label, break)<br><br />
- scripts (command "shell") are able to show menu interactively when requesting user feedback (sample included)<br><br />
<br />
====Version 1.14====<br />
Changes<br><br />
- UI<br><br />
- switch.sh is separated (menu creation is in init_recovery.sh and called later by the recovery)<br><br />
- Volume keys and Camera key can be used to navigate in Open Recovery<br><br />
<br />
====Version 1.12d====<br />
Bugfixes<br><br />
- wipe commands working properly<br><br />
<br><br />
Changes<br><br />
- Bash Settings menu, to enable/disable coloured output (preset to disabled), this is persistent settings, it will last through reboots<br><br />
<br><br />
Features<br><br />
- ability to wipe dalvik-cache only (via script)<br><br />
<br />
====Version 1.12c====<br />
Bugfixes<br><br />
- reboot command is working properly<br><br />
- the content of the sdcard is no longer changed when running, everything is being copied into the ramdisk<br><br />
- minor fixes<br><br />
<br><br />
Changes<br><br />
- removed the 'init' command, instead uses 'scripted_menu'<br><br />
- adbd uses bash (interactively) instead of sh<br><br />
- payload installs also bash and toolbox<br><br />
- different the menu system (deprecated 'init' command, used), each menu must be generated from a script (notes later)<br><br />
- added init folder, scripts (with extension *.sh) are ran there on startup of the open recovery.<br><br />
- the diode is blinking in blue instead of red.<br><br />
<br><br />
Features<br><br />
- the recovery prints the output of the scripts / programs (prints their stdout)<br><br />
- application menu (described later)<br><br />
- new su and SuperUser.apk by ChainsDD<br><br />
- if sdcard has ext2 partition, it is noted in fstab under "/sddata" (the module is inserted automatically)<br><br />
<br />
====Version 1.05====<br />
Bugfixes<br><br />
- fixed a bug in payload making it dependant on the system<br><br />
- there is now nothing in the /system folder when unmounted<br><br />
- toolbox linked statically<br><br />
- busybox now installs symlinks, instead of copying itself<br><br />
- fixed a bug in adb about the shell being in /sbin/sh instead of /system/bin/sh<br><br />
- cleaned up, removed unecessary libraries and binaries<br><br />
- switch.sh now initializes the Open Recovery completely, no other script is used for initialization<br><br />
- permissions set correctly<br><br />
<br><br />
Features<br><br />
- added option to wipe<br><br />
- menu's now have header (the menu file structure has been changed)<br><br />
- added the possibility to run scripts, with .*sh extension located in scripts folder under OpenRecovery folder (shell is /sbin/sh or /sbin/bash)<br><br />
<br />
====Version 1.02====<br />
- fixed root install<br />
<br />
====Version 1.01====<br />
- initial release<br />
<br />
===Developer Notes===<br />
<br />
The recovery contains an update.zip with payload, which doesn't do anything else than restarts to the open recovery. All the files for OpenRecovery are under the OpenRecovery folder under the root of the sdcard. The payload installs busybox to /sbin runs the "switch.sh" under the bin folder in open recovery.<br />
<br />
====Menu System====<br />
<br />
The menu for the Open Recovery is created dynamically. The files must be created inside "/menu" folder by scripts, which can either be specified (if the menu is scripted_menu) or created by a *.sh script in /sdcard/OpenRecovery/init where the scripts are executed at startup. A menu creating script has to create a *.menu file inside the /menu folder. If the menu is supposed to be created on startup and not modified, place the script into /init folder, otherwise use "scripted_menu" item, where the script is ran right before the menu is created. sdcard, system and data partitions are mounted when the scripts are ran. A typical example for "scripted_menu" item is under the tutorial for application menu. For application menu see lower section. The structure of the menu file is different from the CustomUpdate by mankind:<br />
First line is the menu name (normal string), then use the following structure:<br><br />
"item name:type:argument"<br><br />
- item name is what is seen in the menu<br><br />
- type: type of the command (described later)<br><br />
- argument: argument passed to the command (file, or anything else; if empty, put "*" there, otherwise the item will be discarded)<br><br />
<br />
====Commands====<br />
<br />
- reboot: reboots the phone<br><br />
- shell: calls a file specified in arguments (default path is to /bin, if not specified)<br><br />
- menu: opens another menu file (specified in argument), if the argument is "..", it returns to up one level meu<br><br />
- scripted_menu: argument is in format "menu file:menu script", the menu script is called with variable MENU_FILE containing the menu name (default path for the script is to /bin, if not specified)<br><br />
- update: applies an update *.zip file, specified in argument (format SDCARD:$path_to_the_file_in_sdcard)<br><br />
- tag: if ticked, file "tags/.[I]argument[/I]" is created<br><br />
- break: unselectable item, argument is ignored (use "*") and creates a menu item like "---- name ----"; using "*" as name will create just "--------------"<br><br />
- label: unselectable item, argument is ignored (use "*") and creates normal menu item "name "<br><br />
- wipe_data: factory reset<br><br />
- wipe_cahce: wipe cache<br><br />
<br><br />
The menu is refreshed (the script is called if the menu is scripted) on a menu change, applying an update or running a script. Whenever a script is ran, system, data and sdcard is mounted.<br><br />
<br />
====Application menu====<br />
<br />
Application menu is designed for anything that is run on the startup and can malfunction under any circumstances. Here is one example - suppose you have a mount on font in the startup. You'll have something like this in your startup script:<br />
<pre><br />
mount -o bind /system/myfonts/segoeui.ttf /system/fonts/DroidSans.ttf<br />
mount -o bind /system/myfonts/segoeuib.ttf /system/fonts/DroidSans-Bold.ttf<br />
</pre><br />
<br />
Well the idea is that you add a condition to the script, to run only under some circumstances, like:<br />
<br />
<pre><br />
if [ ! -f /system/switch/.nocustomfont ]; then<br />
mount -o bind /system/myfonts/segoeui.ttf /system/fonts/DroidSans.ttf<br />
mount -o bind /system/myfonts/segoeuib.ttf /system/fonts/DroidSans-Bold.ttf<br />
fi<br />
</pre><br />
<br />
which mounts the font only when /system/switch/.nocustomfont is not existing. If you want this controlable from the recovery, you register in into the application menu this way: all *.sh scripts in /app (where /sdcard/OpenRecovery/app is copied) are called at startup. They are passed variable "APP_MENU_FILE", which is the name of the used menu file (preinitalized). The script will look like this:<br />
<br />
<pre><br />
#!/sbin/sh<br />
<br />
#create the menu item<br />
echo "Custom Font:scripted_menu:custfont.menu:/app/custfont/menu.sh" >> "$APP_MENU_FILE"<br />
</pre><br />
<br />
Since the scripts are in /app and not /bin, use absolute path. This will add an item to the applications menu, now we need a menu when it is selected, which is the "/app/custfont/menu.sh":<br />
<br />
<pre><br />
#!/sbin/sh<br />
<br />
if [ -f /system/switch/.nocustomfont ]; then<br />
# menu name - custom font is disabled<br />
echo "Custom Font (Disabled)" > "$MENU_FILE"<br />
# go to upper level menu<br />
echo "Go Back:menu:.." >> "$MENU_FILE"<br />
# enable it<br />
echo "Enable:shell:/app/custfont/enable.sh" >> "$MENU_FILE"<br />
else<br />
# menu name - custom font is enabled<br />
echo "Custom Font (Enabled)" > "$MENU_FILE"<br />
# go to upper level menu<br />
echo "Go Back:menu:.." >> "$MENU_FILE"<br />
# disable it<br />
echo "Disable:shell:/app/custfont/disable.sh" >> "$MENU_FILE"<br />
fi<br />
</pre><br />
Notice the shells are in /sbin, so use /sbin/sh (or /sbin/bash). The script checks if the switch is on or off and generates the menu accordingly. Since the menu is refreshed each time the script is run, it will always submit the correct option. The "enable.sh" simply touches the file and "disable.sh" just deletes it.<br />
<br />
===Download===<br />
Binaries: [[http://rapidshare.com/files/414530880/OpenRecovery_v1_37_SHOLS.rar.html Open Recovery 1.37 for Milestone]], [[http://rapidshare.com/files/414925211/OpenRecovery_v1_37_STCU.rar.html Open Recovery 1.37 for Sholes Tablet]]<br><br />
Source: [[http://rapidshare.com/files/414696074/OpenRecovery_v1_37_src.tar.gz.html Open Recovery 1.37 source]]<br><br />
<br />
===Support forum===<br />
[[http://www.modmymobile.com/forums/showthread.php?t=531599 ModMyMobile]]</div>Skrilax CZhttp://droid-developers.org/wiki/Open_recoveryOpen recovery2010-08-24T21:25:54Z<p>Skrilax CZ: /* Version 1.12c */</p>
<hr />
<div>===Open Recovery===<br />
<br />
Developed by Skrilax_CZ.<br><br />
Credit for mankind (from alldroid) for the CustomUpdate, on which this recovery is based,<br><br />
credit for poseidon (also from alldroid) for ADBRecovery,<br><br />
credit for koush for mtd-utils and nandroid (uses script based on it),<br><br />
credit for nadlabak for keyboard layout change script.<br><br />
Current version 1.37 [08/23/2010]<br />
<br />
====Features====<br />
- on-phone console (limited) - MILESTONE ONLY!<br><br />
- rooting the phone from menu (using ChainsDD su and SuperUser.apk (version 2.2.2))<br><br />
- nandroid backup/restore from menu<br><br />
- apply update *.zip files from menu (located in OpenRecovery/updates under the sdcard root folder, there is a sample one (just unpacks a file named "babble" to /system), no signatures are needed :)<br><br />
- wipe data (factory reset)<br><br />
- wipe cache<br><br />
- wipe dalvik-cache<br><br />
- adb in recovery, using bash shell<br><br />
- run a script<br><br />
- recovery options for applications<br><br />
<br />
The open recovery files are located under the OpenRecovery folder under the root of the sd card. The own update *.zip files are under the "updates" folder, sample one is included. The scripts must have *.sh extension and reside under the "scripts" folder. The recovery contains an update.zip with payload, which doesn't do anything else than restarts to the open recovery. All the files for OpenRecovery are under the OpenRecovery folder under the root of the sdcard. The payload installs busybox to /sbin runs the "switch.sh" under the bin folder in open recovery. The initial menu file is in OpenRecovery/menu/init.menu under sdcard root.<br />
<br />
====Download & Installation (MILESTONE)====<br />
1) You need to have the vulnerable recovery installed.<br><br />
2) Download the archive and unpack it to the root folder of the sdcard.<br><br />
<br />
====Usage (MILESTONE)====<br />
1) Reboot into recovery (hold 'X' button on bootloader 90.78, on others hold camera button; until you see triangle; then press camera + volume up)<br><br />
2) Apply the update.zip<br><br />
3) You are now in Open Recovery<br><br />
<br />
====Download & Installation (XT701)====<br />
1) Download the archive and unpack it.<br><br />
2) Either flash the sbf file using RSD Lite (preffered, recommended version 4.6+), or flash using the flash_image the *.img file to recovery partition.<br><br />
3) Unpack the "OpenRecovery" folder and "OpenRecovery.zip" to the root folder of the sdcard.<br><br />
<br />
====Usage (XT701)====<br />
1) Reboot into recovery (hold camera button; until you see triangle; then press camera + volume up)<br><br />
2) If no error occurs, you're now in Open Recovery. If error occurs you're in Open Recovery Lite.<br><br />
<br />
===Changelog===<br />
<br />
====Version 1.37====<br />
Bugfixes<br><br />
- fixed nandroid restore not properly restoring yaffs2 partitions in old format<br><br />
- fixed nandroid restore not restoring compressed backups<br><br />
- fixed nandroid backup not taking md5 checksums<br><br />
<br><br />
Changes<br><br />
- console buffers up to 1000 lats printed lines (extended from 200)<br><br />
<br />
====Version 1.36====<br />
Bugfixes<br><br />
- fixed nandroid when doing "Backup All" and not having apps2sd; which would fail complaining that /sddata could not be mounted<br><br />
(Ticking all partitions in the menu and selecting "Backup Selected" was working properly and the backup has been done correctly.)<br><br />
- fixed console cursor blinking<br><br />
- squirtle theme fixed<br><br />
<br />
====Version 1.35====<br><br />
Features<br><br />
- update.zip can be in new OR format using a shell script (described lower, there are samples of each one)<br><br />
- console has now signalling implemented (menu key = CTRL)<br><br />
- console has arrow keys implemented<br><br />
- console has support for displaying front colors; thus it is no longer needed to disable bash colors<br><br />
- console supports calling clear<br><br />
<br><br />
Changes<br><br />
- recovery binary will exit if not run by init (to prevent running it from adb or console)<br><br />
- scripts in scripts folder are dos2unixed (on -FuFu- advice)<br><br />
- switch files (.nobashcolors, .kdb_qwertz, etc.) are now located in /etc<br><br />
- manual settings of the timezone (/etc/timezone), applied if the env. variable TZ doesn't exist<br><br />
- update.zip no longer need to have the "update-binary", a default one is used if not found<br><br />
<br><br />
Bugfixes<br><br />
- fixed unyaffs not restoring sticky bit / suid / sgid<br><br />
- fixed displaying long menus (it will not be truncated, instead a scrollbar appears)<br><br />
- fixed error in switch.sh for XT701<br><br />
- fixed color24.console.front in the themes -> default is supposed to be #E5E5E5<br><br />
<br />
====Version 1.32====<br />
Features<br><br />
- pressing MENU + ALT + C forcibly quits the console<br><br />
<br><br />
Changes<br><br />
- ui.prop contains more options<br><br />
- when applying any update.zip package, there is a confirmation menu<br><br />
- cursor in console blinks<br><br />
<br><br />
Bugfixes<br><br />
- Error message when ext2 partition on sdcard doesn't exist fixed<br><br />
- fixed the bug with imenu when ran more than once in one script<br><br />
<br />
====Version 1.30a====<br />
Bugfixes<br><br />
- Console layout for QWERTZ / AZERTY fixed<br><br />
<br />
====Version 1.30====<br />
Features<br><br />
- on-phone console<br><br />
- keyboard layout changer included<br><br />
- new nandroid, with support of backing up and restoring ext2 partition on sdcard (Note: uses new format of the backup, new backups are located in /sdcard/nandroid/openrecovery, there is a backwards compatibility to restore the old backups)<br><br />
- ability to create compressed backups (and autoreboot when done)<br><br />
- better nandroid menu<br><br />
- menus wrap around<br><br />
- theming for the recovery (3 themes included, to apply just rename the "res.*" folder to "res"); color settings can be manipulated in the ui.prop file under the res folder)<br><br />
- new commands for menu (tag, label, break)<br><br />
- scripts (command "shell") are able to show menu interactively when requesting user feedback (sample included)<br><br />
<br />
====Version 1.14====<br />
Changes<br><br />
- UI<br><br />
- switch.sh is separated (menu creation is in init_recovery.sh and called later by the recovery)<br><br />
- Volume keys and Camera key can be used to navigate in Open Recovery<br><br />
<br />
====Version 1.12d====<br />
Bugfixes<br><br />
- wipe commands working properly<br><br />
<br><br />
Changes<br><br />
- Bash Settings menu, to enable/disable coloured output (preset to disabled), this is persistent settings, it will last through reboots<br><br />
<br><br />
Features<br><br />
- ability to wipe dalvik-cache only (via script)<br><br />
<br />
====Version 1.12c====<br />
Bugfixes<br><br />
- reboot command is working properly<br><br />
- the content of the sdcard is no longer changed when running, everything is being copied into the ramdisk<br><br />
- minor fixes<br><br />
<br><br />
Changes<br><br />
- removed the 'init' command, instead uses 'scripted_menu'<br><br />
- adbd uses bash (interactively) instead of sh<br><br />
- payload installs also bash and toolbox<br><br />
- different the menu system (deprecated 'init' command, used), each menu must be generated from a script (notes later)<br><br />
- added init folder, scripts (with extension *.sh) are ran there on startup of the open recovery.<br><br />
- the diode is blinking in blue instead of red.<br><br />
<br><br />
Features<br><br />
- the recovery prints the output of the scripts / programs (prints their stdout)<br><br />
- application menu (described later)<br><br />
- new su and SuperUser.apk by ChainsDD<br><br />
- if sdcard has ext2 partition, it is noted in fstab under "/sddata" (the module is inserted automatically)<br><br />
<br />
====Version 1.05====<br />
Bugfixes<br><br />
- fixed a bug in payload making it dependant on the system<br><br />
- there is now nothing in the /system folder when unmounted<br><br />
- toolbox linked statically<br><br />
- busybox now installs symlinks, instead of copying itself<br><br />
- fixed a bug in adb about the shell being in /sbin/sh instead of /system/bin/sh<br><br />
- cleaned up, removed unecessary libraries and binaries<br><br />
- switch.sh now initializes the Open Recovery completely, no other script is used for initialization<br><br />
- permissions set correctly<br><br />
<br><br />
Features<br><br />
- added option to wipe<br><br />
- menu's now have header (the menu file structure has been changed)<br><br />
- added the possibility to run scripts, with .*sh extension located in scripts folder under OpenRecovery folder (shell is /sbin/sh or /sbin/bash)<br><br />
<br />
====Version 1.02====<br />
- fixed root install<br />
<br />
====Version 1.01====<br />
- initial release<br />
<br />
===Developer Notes===<br />
<br />
The recovery contains an update.zip with payload, which doesn't do anything else than restarts to the open recovery. All the files for OpenRecovery are under the OpenRecovery folder under the root of the sdcard. The payload installs busybox to /sbin runs the "switch.sh" under the bin folder in open recovery.<br />
<br />
====Menu System====<br />
<br />
The menu for the Open Recovery is created dynamically. The files must be created inside "/menu" folder by scripts, which can either be specified (if the menu is scripted_menu) or created by a *.sh script in /sdcard/OpenRecovery/init where the scripts are executed at startup. A menu creating script has to create a *.menu file inside the /menu folder. If the menu is supposed to be created on startup and not modified, place the script into /init folder, otherwise use "scripted_menu" item, where the script is ran right before the menu is created. sdcard, system and data partitions are mounted when the scripts are ran. A typical example for "scripted_menu" item is under the tutorial for application menu. For application menu see lower section. The structure of the menu file is different from the CustomUpdate by mankind:<br />
First line is the menu name (normal string), then use the following structure:<br><br />
"item name:type:argument"<br><br />
- item name is what is seen in the menu<br><br />
- type: type of the command (described later)<br><br />
- argument: argument passed to the command (file, or anything else; if empty, put "*" there, otherwise the item will be discarded)<br><br />
<br />
====Commands====<br />
<br />
- reboot: reboots the phone<br><br />
- shell: calls a file specified in arguments (default path is to /bin, if not specified)<br><br />
- menu: opens another menu file (specified in argument), if the argument is "..", it returns to up one level meu<br><br />
- scripted_menu: argument is in format "menu file:menu script", the menu script is called with variable MENU_FILE containing the menu name (default path for the script is to /bin, if not specified)<br><br />
- update: applies an update *.zip file, specified in argument (format SDCARD:$path_to_the_file_in_sdcard)<br><br />
- tag: if ticked, file "tags/.[I]argument[/I]" is created<br><br />
- break: unselectable item, argument is ignored (use "*") and creates a menu item like "---- name ----"; using "*" as name will create just "--------------"<br><br />
- label: unselectable item, argument is ignored (use "*") and creates normal menu item "name "<br><br />
- wipe_data: factory reset<br><br />
- wipe_cahce: wipe cache<br><br />
<br><br />
The menu is refreshed (the script is called if the menu is scripted) on a menu change, applying an update or running a script. Whenever a script is ran, system, data and sdcard is mounted.<br><br />
<br />
====Application menu====<br />
<br />
Application menu is designed for anything that is run on the startup and can malfunction under any circumstances. Here is one example - suppose you have a mount on font in the startup. You'll have something like this in your startup script:<br />
<pre><br />
mount -o bind /system/myfonts/segoeui.ttf /system/fonts/DroidSans.ttf<br />
mount -o bind /system/myfonts/segoeuib.ttf /system/fonts/DroidSans-Bold.ttf<br />
</pre><br />
<br />
Well the idea is that you add a condition to the script, to run only under some circumstances, like:<br />
<br />
<pre><br />
if [ ! -f /system/switch/.nocustomfont ]; then<br />
mount -o bind /system/myfonts/segoeui.ttf /system/fonts/DroidSans.ttf<br />
mount -o bind /system/myfonts/segoeuib.ttf /system/fonts/DroidSans-Bold.ttf<br />
fi<br />
</pre><br />
<br />
which mounts the font only when /system/switch/.nocustomfont is not existing. If you want this controlable from the recovery, you register in into the application menu this way: all *.sh scripts in /app (where /sdcard/OpenRecovery/app is copied) are called at startup. They are passed variable "APP_MENU_FILE", which is the name of the used menu file (preinitalized). The script will look like this:<br />
<br />
<pre><br />
#!/sbin/sh<br />
<br />
#create the menu item<br />
echo "Custom Font:scripted_menu:custfont.menu:/app/custfont/menu.sh" >> "$APP_MENU_FILE"<br />
</pre><br />
<br />
Since the scripts are in /app and not /bin, use absolute path. This will add an item to the applications menu, now we need a menu when it is selected, which is the "/app/custfont/menu.sh":<br />
<br />
<pre><br />
#!/sbin/sh<br />
<br />
if [ -f /system/switch/.nocustomfont ]; then<br />
# menu name - custom font is disabled<br />
echo "Custom Font (Disabled)" > "$MENU_FILE"<br />
# go to upper level menu<br />
echo "Go Back:menu:.." >> "$MENU_FILE"<br />
# enable it<br />
echo "Enable:shell:/app/custfont/enable.sh" >> "$MENU_FILE"<br />
else<br />
# menu name - custom font is enabled<br />
echo "Custom Font (Enabled)" > "$MENU_FILE"<br />
# go to upper level menu<br />
echo "Go Back:menu:.." >> "$MENU_FILE"<br />
# disable it<br />
echo "Disable:shell:/app/custfont/disable.sh" >> "$MENU_FILE"<br />
fi<br />
</pre><br />
Notice the shells are in /sbin, so use /sbin/sh (or /sbin/bash). The script checks if the switch is on or off and generates the menu accordingly. Since the menu is refreshed each time the script is run, it will always submit the correct option. The "enable.sh" simply touches the file and "disable.sh" just deletes it.<br />
<br />
===Download===<br />
Binaries: [[http://rapidshare.com/files/414530880/OpenRecovery_v1_37_SHOLS.rar.html Open Recovery 1.37 for Milestone]], [[http://rapidshare.com/files/414925211/OpenRecovery_v1_37_STCU.rar.html Open Recovery 1.37 for Sholes Tablet]]<br><br />
Source: [[http://rapidshare.com/files/414696074/OpenRecovery_v1_37_src.tar.gz.html Open Recovery 1.37 source]]<br><br />
<br />
===Support forum===<br />
[[http://www.modmymobile.com/forums/showthread.php?t=531599 ModMyMobile]]</div>Skrilax CZhttp://droid-developers.org/wiki/Open_recoveryOpen recovery2010-08-24T21:25:45Z<p>Skrilax CZ: /* Version 1.30 */</p>
<hr />
<div>===Open Recovery===<br />
<br />
Developed by Skrilax_CZ.<br><br />
Credit for mankind (from alldroid) for the CustomUpdate, on which this recovery is based,<br><br />
credit for poseidon (also from alldroid) for ADBRecovery,<br><br />
credit for koush for mtd-utils and nandroid (uses script based on it),<br><br />
credit for nadlabak for keyboard layout change script.<br><br />
Current version 1.37 [08/23/2010]<br />
<br />
====Features====<br />
- on-phone console (limited) - MILESTONE ONLY!<br><br />
- rooting the phone from menu (using ChainsDD su and SuperUser.apk (version 2.2.2))<br><br />
- nandroid backup/restore from menu<br><br />
- apply update *.zip files from menu (located in OpenRecovery/updates under the sdcard root folder, there is a sample one (just unpacks a file named "babble" to /system), no signatures are needed :)<br><br />
- wipe data (factory reset)<br><br />
- wipe cache<br><br />
- wipe dalvik-cache<br><br />
- adb in recovery, using bash shell<br><br />
- run a script<br><br />
- recovery options for applications<br><br />
<br />
The open recovery files are located under the OpenRecovery folder under the root of the sd card. The own update *.zip files are under the "updates" folder, sample one is included. The scripts must have *.sh extension and reside under the "scripts" folder. The recovery contains an update.zip with payload, which doesn't do anything else than restarts to the open recovery. All the files for OpenRecovery are under the OpenRecovery folder under the root of the sdcard. The payload installs busybox to /sbin runs the "switch.sh" under the bin folder in open recovery. The initial menu file is in OpenRecovery/menu/init.menu under sdcard root.<br />
<br />
====Download & Installation (MILESTONE)====<br />
1) You need to have the vulnerable recovery installed.<br><br />
2) Download the archive and unpack it to the root folder of the sdcard.<br><br />
<br />
====Usage (MILESTONE)====<br />
1) Reboot into recovery (hold 'X' button on bootloader 90.78, on others hold camera button; until you see triangle; then press camera + volume up)<br><br />
2) Apply the update.zip<br><br />
3) You are now in Open Recovery<br><br />
<br />
====Download & Installation (XT701)====<br />
1) Download the archive and unpack it.<br><br />
2) Either flash the sbf file using RSD Lite (preffered, recommended version 4.6+), or flash using the flash_image the *.img file to recovery partition.<br><br />
3) Unpack the "OpenRecovery" folder and "OpenRecovery.zip" to the root folder of the sdcard.<br><br />
<br />
====Usage (XT701)====<br />
1) Reboot into recovery (hold camera button; until you see triangle; then press camera + volume up)<br><br />
2) If no error occurs, you're now in Open Recovery. If error occurs you're in Open Recovery Lite.<br><br />
<br />
===Changelog===<br />
<br />
====Version 1.37====<br />
Bugfixes<br><br />
- fixed nandroid restore not properly restoring yaffs2 partitions in old format<br><br />
- fixed nandroid restore not restoring compressed backups<br><br />
- fixed nandroid backup not taking md5 checksums<br><br />
<br><br />
Changes<br><br />
- console buffers up to 1000 lats printed lines (extended from 200)<br><br />
<br />
====Version 1.36====<br />
Bugfixes<br><br />
- fixed nandroid when doing "Backup All" and not having apps2sd; which would fail complaining that /sddata could not be mounted<br><br />
(Ticking all partitions in the menu and selecting "Backup Selected" was working properly and the backup has been done correctly.)<br><br />
- fixed console cursor blinking<br><br />
- squirtle theme fixed<br><br />
<br />
====Version 1.35====<br><br />
Features<br><br />
- update.zip can be in new OR format using a shell script (described lower, there are samples of each one)<br><br />
- console has now signalling implemented (menu key = CTRL)<br><br />
- console has arrow keys implemented<br><br />
- console has support for displaying front colors; thus it is no longer needed to disable bash colors<br><br />
- console supports calling clear<br><br />
<br><br />
Changes<br><br />
- recovery binary will exit if not run by init (to prevent running it from adb or console)<br><br />
- scripts in scripts folder are dos2unixed (on -FuFu- advice)<br><br />
- switch files (.nobashcolors, .kdb_qwertz, etc.) are now located in /etc<br><br />
- manual settings of the timezone (/etc/timezone), applied if the env. variable TZ doesn't exist<br><br />
- update.zip no longer need to have the "update-binary", a default one is used if not found<br><br />
<br><br />
Bugfixes<br><br />
- fixed unyaffs not restoring sticky bit / suid / sgid<br><br />
- fixed displaying long menus (it will not be truncated, instead a scrollbar appears)<br><br />
- fixed error in switch.sh for XT701<br><br />
- fixed color24.console.front in the themes -> default is supposed to be #E5E5E5<br><br />
<br />
====Version 1.32====<br />
Features<br><br />
- pressing MENU + ALT + C forcibly quits the console<br><br />
<br><br />
Changes<br><br />
- ui.prop contains more options<br><br />
- when applying any update.zip package, there is a confirmation menu<br><br />
- cursor in console blinks<br><br />
<br><br />
Bugfixes<br><br />
- Error message when ext2 partition on sdcard doesn't exist fixed<br><br />
- fixed the bug with imenu when ran more than once in one script<br><br />
<br />
====Version 1.30a====<br />
Bugfixes<br><br />
- Console layout for QWERTZ / AZERTY fixed<br><br />
<br />
====Version 1.30====<br />
Features<br><br />
- on-phone console<br><br />
- keyboard layout changer included<br><br />
- new nandroid, with support of backing up and restoring ext2 partition on sdcard (Note: uses new format of the backup, new backups are located in /sdcard/nandroid/openrecovery, there is a backwards compatibility to restore the old backups)<br><br />
- ability to create compressed backups (and autoreboot when done)<br><br />
- better nandroid menu<br><br />
- menus wrap around<br><br />
- theming for the recovery (3 themes included, to apply just rename the "res.*" folder to "res"); color settings can be manipulated in the ui.prop file under the res folder)<br><br />
- new commands for menu (tag, label, break)<br><br />
- scripts (command "shell") are able to show menu interactively when requesting user feedback (sample included)<br><br />
<br />
====Version 1.14====<br />
Changes<br><br />
- UI<br><br />
- switch.sh is separated (menu creation is in init_recovery.sh and called later by the recovery)<br><br />
- Volume keys and Camera key can be used to navigate in Open Recovery<br><br />
<br />
====Version 1.12d====<br />
Bugfixes<br><br />
- wipe commands working properly<br><br />
<br><br />
Changes<br><br />
- Bash Settings menu, to enable/disable coloured output (preset to disabled), this is persistent settings, it will last through reboots<br><br />
<br><br />
Features<br><br />
- ability to wipe dalvik-cache only (via script)<br><br />
<br />
===Version 1.12c===<br />
Bugfixes<br><br />
- reboot command is working properly<br><br />
- the content of the sdcard is no longer changed when running, everything is being copied into the ramdisk<br><br />
- minor fixes<br><br />
<br><br />
Changes<br><br />
- removed the 'init' command, instead uses 'scripted_menu'<br><br />
- adbd uses bash (interactively) instead of sh<br><br />
- payload installs also bash and toolbox<br><br />
- different the menu system (deprecated 'init' command, used), each menu must be generated from a script (notes later)<br><br />
- added init folder, scripts (with extension *.sh) are ran there on startup of the open recovery.<br><br />
- the diode is blinking in blue instead of red.<br><br />
<br><br />
Features<br><br />
- the recovery prints the output of the scripts / programs (prints their stdout)<br><br />
- application menu (described later)<br><br />
- new su and SuperUser.apk by ChainsDD<br><br />
- if sdcard has ext2 partition, it is noted in fstab under "/sddata" (the module is inserted automatically)<br><br />
<br />
====Version 1.05====<br />
Bugfixes<br><br />
- fixed a bug in payload making it dependant on the system<br><br />
- there is now nothing in the /system folder when unmounted<br><br />
- toolbox linked statically<br><br />
- busybox now installs symlinks, instead of copying itself<br><br />
- fixed a bug in adb about the shell being in /sbin/sh instead of /system/bin/sh<br><br />
- cleaned up, removed unecessary libraries and binaries<br><br />
- switch.sh now initializes the Open Recovery completely, no other script is used for initialization<br><br />
- permissions set correctly<br><br />
<br><br />
Features<br><br />
- added option to wipe<br><br />
- menu's now have header (the menu file structure has been changed)<br><br />
- added the possibility to run scripts, with .*sh extension located in scripts folder under OpenRecovery folder (shell is /sbin/sh or /sbin/bash)<br><br />
<br />
====Version 1.02====<br />
- fixed root install<br />
<br />
====Version 1.01====<br />
- initial release<br />
<br />
===Developer Notes===<br />
<br />
The recovery contains an update.zip with payload, which doesn't do anything else than restarts to the open recovery. All the files for OpenRecovery are under the OpenRecovery folder under the root of the sdcard. The payload installs busybox to /sbin runs the "switch.sh" under the bin folder in open recovery.<br />
<br />
====Menu System====<br />
<br />
The menu for the Open Recovery is created dynamically. The files must be created inside "/menu" folder by scripts, which can either be specified (if the menu is scripted_menu) or created by a *.sh script in /sdcard/OpenRecovery/init where the scripts are executed at startup. A menu creating script has to create a *.menu file inside the /menu folder. If the menu is supposed to be created on startup and not modified, place the script into /init folder, otherwise use "scripted_menu" item, where the script is ran right before the menu is created. sdcard, system and data partitions are mounted when the scripts are ran. A typical example for "scripted_menu" item is under the tutorial for application menu. For application menu see lower section. The structure of the menu file is different from the CustomUpdate by mankind:<br />
First line is the menu name (normal string), then use the following structure:<br><br />
"item name:type:argument"<br><br />
- item name is what is seen in the menu<br><br />
- type: type of the command (described later)<br><br />
- argument: argument passed to the command (file, or anything else; if empty, put "*" there, otherwise the item will be discarded)<br><br />
<br />
====Commands====<br />
<br />
- reboot: reboots the phone<br><br />
- shell: calls a file specified in arguments (default path is to /bin, if not specified)<br><br />
- menu: opens another menu file (specified in argument), if the argument is "..", it returns to up one level meu<br><br />
- scripted_menu: argument is in format "menu file:menu script", the menu script is called with variable MENU_FILE containing the menu name (default path for the script is to /bin, if not specified)<br><br />
- update: applies an update *.zip file, specified in argument (format SDCARD:$path_to_the_file_in_sdcard)<br><br />
- tag: if ticked, file "tags/.[I]argument[/I]" is created<br><br />
- break: unselectable item, argument is ignored (use "*") and creates a menu item like "---- name ----"; using "*" as name will create just "--------------"<br><br />
- label: unselectable item, argument is ignored (use "*") and creates normal menu item "name "<br><br />
- wipe_data: factory reset<br><br />
- wipe_cahce: wipe cache<br><br />
<br><br />
The menu is refreshed (the script is called if the menu is scripted) on a menu change, applying an update or running a script. Whenever a script is ran, system, data and sdcard is mounted.<br><br />
<br />
====Application menu====<br />
<br />
Application menu is designed for anything that is run on the startup and can malfunction under any circumstances. Here is one example - suppose you have a mount on font in the startup. You'll have something like this in your startup script:<br />
<pre><br />
mount -o bind /system/myfonts/segoeui.ttf /system/fonts/DroidSans.ttf<br />
mount -o bind /system/myfonts/segoeuib.ttf /system/fonts/DroidSans-Bold.ttf<br />
</pre><br />
<br />
Well the idea is that you add a condition to the script, to run only under some circumstances, like:<br />
<br />
<pre><br />
if [ ! -f /system/switch/.nocustomfont ]; then<br />
mount -o bind /system/myfonts/segoeui.ttf /system/fonts/DroidSans.ttf<br />
mount -o bind /system/myfonts/segoeuib.ttf /system/fonts/DroidSans-Bold.ttf<br />
fi<br />
</pre><br />
<br />
which mounts the font only when /system/switch/.nocustomfont is not existing. If you want this controlable from the recovery, you register in into the application menu this way: all *.sh scripts in /app (where /sdcard/OpenRecovery/app is copied) are called at startup. They are passed variable "APP_MENU_FILE", which is the name of the used menu file (preinitalized). The script will look like this:<br />
<br />
<pre><br />
#!/sbin/sh<br />
<br />
#create the menu item<br />
echo "Custom Font:scripted_menu:custfont.menu:/app/custfont/menu.sh" >> "$APP_MENU_FILE"<br />
</pre><br />
<br />
Since the scripts are in /app and not /bin, use absolute path. This will add an item to the applications menu, now we need a menu when it is selected, which is the "/app/custfont/menu.sh":<br />
<br />
<pre><br />
#!/sbin/sh<br />
<br />
if [ -f /system/switch/.nocustomfont ]; then<br />
# menu name - custom font is disabled<br />
echo "Custom Font (Disabled)" > "$MENU_FILE"<br />
# go to upper level menu<br />
echo "Go Back:menu:.." >> "$MENU_FILE"<br />
# enable it<br />
echo "Enable:shell:/app/custfont/enable.sh" >> "$MENU_FILE"<br />
else<br />
# menu name - custom font is enabled<br />
echo "Custom Font (Enabled)" > "$MENU_FILE"<br />
# go to upper level menu<br />
echo "Go Back:menu:.." >> "$MENU_FILE"<br />
# disable it<br />
echo "Disable:shell:/app/custfont/disable.sh" >> "$MENU_FILE"<br />
fi<br />
</pre><br />
Notice the shells are in /sbin, so use /sbin/sh (or /sbin/bash). The script checks if the switch is on or off and generates the menu accordingly. Since the menu is refreshed each time the script is run, it will always submit the correct option. The "enable.sh" simply touches the file and "disable.sh" just deletes it.<br />
<br />
===Download===<br />
Binaries: [[http://rapidshare.com/files/414530880/OpenRecovery_v1_37_SHOLS.rar.html Open Recovery 1.37 for Milestone]], [[http://rapidshare.com/files/414925211/OpenRecovery_v1_37_STCU.rar.html Open Recovery 1.37 for Sholes Tablet]]<br><br />
Source: [[http://rapidshare.com/files/414696074/OpenRecovery_v1_37_src.tar.gz.html Open Recovery 1.37 source]]<br><br />
<br />
===Support forum===<br />
[[http://www.modmymobile.com/forums/showthread.php?t=531599 ModMyMobile]]</div>Skrilax CZhttp://droid-developers.org/wiki/Open_recoveryOpen recovery2010-08-24T21:23:54Z<p>Skrilax CZ: /* Version 1.30a */</p>
<hr />
<div>===Open Recovery===<br />
<br />
Developed by Skrilax_CZ.<br><br />
Credit for mankind (from alldroid) for the CustomUpdate, on which this recovery is based,<br><br />
credit for poseidon (also from alldroid) for ADBRecovery,<br><br />
credit for koush for mtd-utils and nandroid (uses script based on it),<br><br />
credit for nadlabak for keyboard layout change script.<br><br />
Current version 1.37 [08/23/2010]<br />
<br />
====Features====<br />
- on-phone console (limited) - MILESTONE ONLY!<br><br />
- rooting the phone from menu (using ChainsDD su and SuperUser.apk (version 2.2.2))<br><br />
- nandroid backup/restore from menu<br><br />
- apply update *.zip files from menu (located in OpenRecovery/updates under the sdcard root folder, there is a sample one (just unpacks a file named "babble" to /system), no signatures are needed :)<br><br />
- wipe data (factory reset)<br><br />
- wipe cache<br><br />
- wipe dalvik-cache<br><br />
- adb in recovery, using bash shell<br><br />
- run a script<br><br />
- recovery options for applications<br><br />
<br />
The open recovery files are located under the OpenRecovery folder under the root of the sd card. The own update *.zip files are under the "updates" folder, sample one is included. The scripts must have *.sh extension and reside under the "scripts" folder. The recovery contains an update.zip with payload, which doesn't do anything else than restarts to the open recovery. All the files for OpenRecovery are under the OpenRecovery folder under the root of the sdcard. The payload installs busybox to /sbin runs the "switch.sh" under the bin folder in open recovery. The initial menu file is in OpenRecovery/menu/init.menu under sdcard root.<br />
<br />
====Download & Installation (MILESTONE)====<br />
1) You need to have the vulnerable recovery installed.<br><br />
2) Download the archive and unpack it to the root folder of the sdcard.<br><br />
<br />
====Usage (MILESTONE)====<br />
1) Reboot into recovery (hold 'X' button on bootloader 90.78, on others hold camera button; until you see triangle; then press camera + volume up)<br><br />
2) Apply the update.zip<br><br />
3) You are now in Open Recovery<br><br />
<br />
====Download & Installation (XT701)====<br />
1) Download the archive and unpack it.<br><br />
2) Either flash the sbf file using RSD Lite (preffered, recommended version 4.6+), or flash using the flash_image the *.img file to recovery partition.<br><br />
3) Unpack the "OpenRecovery" folder and "OpenRecovery.zip" to the root folder of the sdcard.<br><br />
<br />
====Usage (XT701)====<br />
1) Reboot into recovery (hold camera button; until you see triangle; then press camera + volume up)<br><br />
2) If no error occurs, you're now in Open Recovery. If error occurs you're in Open Recovery Lite.<br><br />
<br />
===Changelog===<br />
<br />
====Version 1.37====<br />
Bugfixes<br><br />
- fixed nandroid restore not properly restoring yaffs2 partitions in old format<br><br />
- fixed nandroid restore not restoring compressed backups<br><br />
- fixed nandroid backup not taking md5 checksums<br><br />
<br><br />
Changes<br><br />
- console buffers up to 1000 lats printed lines (extended from 200)<br><br />
<br />
====Version 1.36====<br />
Bugfixes<br><br />
- fixed nandroid when doing "Backup All" and not having apps2sd; which would fail complaining that /sddata could not be mounted<br><br />
(Ticking all partitions in the menu and selecting "Backup Selected" was working properly and the backup has been done correctly.)<br><br />
- fixed console cursor blinking<br><br />
- squirtle theme fixed<br><br />
<br />
====Version 1.35====<br><br />
Features<br><br />
- update.zip can be in new OR format using a shell script (described lower, there are samples of each one)<br><br />
- console has now signalling implemented (menu key = CTRL)<br><br />
- console has arrow keys implemented<br><br />
- console has support for displaying front colors; thus it is no longer needed to disable bash colors<br><br />
- console supports calling clear<br><br />
<br><br />
Changes<br><br />
- recovery binary will exit if not run by init (to prevent running it from adb or console)<br><br />
- scripts in scripts folder are dos2unixed (on -FuFu- advice)<br><br />
- switch files (.nobashcolors, .kdb_qwertz, etc.) are now located in /etc<br><br />
- manual settings of the timezone (/etc/timezone), applied if the env. variable TZ doesn't exist<br><br />
- update.zip no longer need to have the "update-binary", a default one is used if not found<br><br />
<br><br />
Bugfixes<br><br />
- fixed unyaffs not restoring sticky bit / suid / sgid<br><br />
- fixed displaying long menus (it will not be truncated, instead a scrollbar appears)<br><br />
- fixed error in switch.sh for XT701<br><br />
- fixed color24.console.front in the themes -> default is supposed to be #E5E5E5<br><br />
<br />
====Version 1.32====<br />
Features<br><br />
- pressing MENU + ALT + C forcibly quits the console<br><br />
<br><br />
Changes<br><br />
- ui.prop contains more options<br><br />
- when applying any update.zip package, there is a confirmation menu<br><br />
- cursor in console blinks<br><br />
<br><br />
Bugfixes<br><br />
- Error message when ext2 partition on sdcard doesn't exist fixed<br><br />
- fixed the bug with imenu when ran more than once in one script<br><br />
<br />
====Version 1.30a====<br />
Bugfixes<br><br />
- Console layout for QWERTZ / AZERTY fixed<br><br />
<br />
===Version 1.30===<br />
Features<br><br />
- on-phone console<br><br />
- keyboard layout changer included<br><br />
- new nandroid, with support of backing up and restoring ext2 partition on sdcard (Note: uses new format of the backup, new backups are located in /sdcard/nandroid/openrecovery, there is a backwards compatibility to restore the old backups)<br><br />
- ability to create compressed backups (and autoreboot when done)<br><br />
- better nandroid menu<br><br />
- menus wrap around<br><br />
- theming for the recovery (3 themes included, to apply just rename the "res.*" folder to "res"); color settings can be manipulated in the ui.prop file under the res folder)<br><br />
- new commands for menu (tag, label, break)<br><br />
- scripts (command "shell") are able to show menu interactively when requesting user feedback (sample included)<br><br />
<br />
====Version 1.14====<br />
Changes<br><br />
- UI<br><br />
- switch.sh is separated (menu creation is in init_recovery.sh and called later by the recovery)<br><br />
- Volume keys and Camera key can be used to navigate in Open Recovery<br><br />
<br />
====Version 1.12d====<br />
Bugfixes<br><br />
- wipe commands working properly<br><br />
<br><br />
Changes<br><br />
- Bash Settings menu, to enable/disable coloured output (preset to disabled), this is persistent settings, it will last through reboots<br><br />
<br><br />
Features<br><br />
- ability to wipe dalvik-cache only (via script)<br><br />
<br />
===Version 1.12c===<br />
Bugfixes<br><br />
- reboot command is working properly<br><br />
- the content of the sdcard is no longer changed when running, everything is being copied into the ramdisk<br><br />
- minor fixes<br><br />
<br><br />
Changes<br><br />
- removed the 'init' command, instead uses 'scripted_menu'<br><br />
- adbd uses bash (interactively) instead of sh<br><br />
- payload installs also bash and toolbox<br><br />
- different the menu system (deprecated 'init' command, used), each menu must be generated from a script (notes later)<br><br />
- added init folder, scripts (with extension *.sh) are ran there on startup of the open recovery.<br><br />
- the diode is blinking in blue instead of red.<br><br />
<br><br />
Features<br><br />
- the recovery prints the output of the scripts / programs (prints their stdout)<br><br />
- application menu (described later)<br><br />
- new su and SuperUser.apk by ChainsDD<br><br />
- if sdcard has ext2 partition, it is noted in fstab under "/sddata" (the module is inserted automatically)<br><br />
<br />
====Version 1.05====<br />
Bugfixes<br><br />
- fixed a bug in payload making it dependant on the system<br><br />
- there is now nothing in the /system folder when unmounted<br><br />
- toolbox linked statically<br><br />
- busybox now installs symlinks, instead of copying itself<br><br />
- fixed a bug in adb about the shell being in /sbin/sh instead of /system/bin/sh<br><br />
- cleaned up, removed unecessary libraries and binaries<br><br />
- switch.sh now initializes the Open Recovery completely, no other script is used for initialization<br><br />
- permissions set correctly<br><br />
<br><br />
Features<br><br />
- added option to wipe<br><br />
- menu's now have header (the menu file structure has been changed)<br><br />
- added the possibility to run scripts, with .*sh extension located in scripts folder under OpenRecovery folder (shell is /sbin/sh or /sbin/bash)<br><br />
<br />
====Version 1.02====<br />
- fixed root install<br />
<br />
====Version 1.01====<br />
- initial release<br />
<br />
===Developer Notes===<br />
<br />
The recovery contains an update.zip with payload, which doesn't do anything else than restarts to the open recovery. All the files for OpenRecovery are under the OpenRecovery folder under the root of the sdcard. The payload installs busybox to /sbin runs the "switch.sh" under the bin folder in open recovery.<br />
<br />
====Menu System====<br />
<br />
The menu for the Open Recovery is created dynamically. The files must be created inside "/menu" folder by scripts, which can either be specified (if the menu is scripted_menu) or created by a *.sh script in /sdcard/OpenRecovery/init where the scripts are executed at startup. A menu creating script has to create a *.menu file inside the /menu folder. If the menu is supposed to be created on startup and not modified, place the script into /init folder, otherwise use "scripted_menu" item, where the script is ran right before the menu is created. sdcard, system and data partitions are mounted when the scripts are ran. A typical example for "scripted_menu" item is under the tutorial for application menu. For application menu see lower section. The structure of the menu file is different from the CustomUpdate by mankind:<br />
First line is the menu name (normal string), then use the following structure:<br><br />
"item name:type:argument"<br><br />
- item name is what is seen in the menu<br><br />
- type: type of the command (described later)<br><br />
- argument: argument passed to the command (file, or anything else; if empty, put "*" there, otherwise the item will be discarded)<br><br />
<br />
====Commands====<br />
<br />
- reboot: reboots the phone<br><br />
- shell: calls a file specified in arguments (default path is to /bin, if not specified)<br><br />
- menu: opens another menu file (specified in argument), if the argument is "..", it returns to up one level meu<br><br />
- scripted_menu: argument is in format "menu file:menu script", the menu script is called with variable MENU_FILE containing the menu name (default path for the script is to /bin, if not specified)<br><br />
- update: applies an update *.zip file, specified in argument (format SDCARD:$path_to_the_file_in_sdcard)<br><br />
- tag: if ticked, file "tags/.[I]argument[/I]" is created<br><br />
- break: unselectable item, argument is ignored (use "*") and creates a menu item like "---- name ----"; using "*" as name will create just "--------------"<br><br />
- label: unselectable item, argument is ignored (use "*") and creates normal menu item "name "<br><br />
- wipe_data: factory reset<br><br />
- wipe_cahce: wipe cache<br><br />
<br><br />
The menu is refreshed (the script is called if the menu is scripted) on a menu change, applying an update or running a script. Whenever a script is ran, system, data and sdcard is mounted.<br><br />
<br />
====Application menu====<br />
<br />
Application menu is designed for anything that is run on the startup and can malfunction under any circumstances. Here is one example - suppose you have a mount on font in the startup. You'll have something like this in your startup script:<br />
<pre><br />
mount -o bind /system/myfonts/segoeui.ttf /system/fonts/DroidSans.ttf<br />
mount -o bind /system/myfonts/segoeuib.ttf /system/fonts/DroidSans-Bold.ttf<br />
</pre><br />
<br />
Well the idea is that you add a condition to the script, to run only under some circumstances, like:<br />
<br />
<pre><br />
if [ ! -f /system/switch/.nocustomfont ]; then<br />
mount -o bind /system/myfonts/segoeui.ttf /system/fonts/DroidSans.ttf<br />
mount -o bind /system/myfonts/segoeuib.ttf /system/fonts/DroidSans-Bold.ttf<br />
fi<br />
</pre><br />
<br />
which mounts the font only when /system/switch/.nocustomfont is not existing. If you want this controlable from the recovery, you register in into the application menu this way: all *.sh scripts in /app (where /sdcard/OpenRecovery/app is copied) are called at startup. They are passed variable "APP_MENU_FILE", which is the name of the used menu file (preinitalized). The script will look like this:<br />
<br />
<pre><br />
#!/sbin/sh<br />
<br />
#create the menu item<br />
echo "Custom Font:scripted_menu:custfont.menu:/app/custfont/menu.sh" >> "$APP_MENU_FILE"<br />
</pre><br />
<br />
Since the scripts are in /app and not /bin, use absolute path. This will add an item to the applications menu, now we need a menu when it is selected, which is the "/app/custfont/menu.sh":<br />
<br />
<pre><br />
#!/sbin/sh<br />
<br />
if [ -f /system/switch/.nocustomfont ]; then<br />
# menu name - custom font is disabled<br />
echo "Custom Font (Disabled)" > "$MENU_FILE"<br />
# go to upper level menu<br />
echo "Go Back:menu:.." >> "$MENU_FILE"<br />
# enable it<br />
echo "Enable:shell:/app/custfont/enable.sh" >> "$MENU_FILE"<br />
else<br />
# menu name - custom font is enabled<br />
echo "Custom Font (Enabled)" > "$MENU_FILE"<br />
# go to upper level menu<br />
echo "Go Back:menu:.." >> "$MENU_FILE"<br />
# disable it<br />
echo "Disable:shell:/app/custfont/disable.sh" >> "$MENU_FILE"<br />
fi<br />
</pre><br />
Notice the shells are in /sbin, so use /sbin/sh (or /sbin/bash). The script checks if the switch is on or off and generates the menu accordingly. Since the menu is refreshed each time the script is run, it will always submit the correct option. The "enable.sh" simply touches the file and "disable.sh" just deletes it.<br />
<br />
===Download===<br />
Binaries: [[http://rapidshare.com/files/414530880/OpenRecovery_v1_37_SHOLS.rar.html Open Recovery 1.37 for Milestone]], [[http://rapidshare.com/files/414925211/OpenRecovery_v1_37_STCU.rar.html Open Recovery 1.37 for Sholes Tablet]]<br><br />
Source: [[http://rapidshare.com/files/414696074/OpenRecovery_v1_37_src.tar.gz.html Open Recovery 1.37 source]]<br><br />
<br />
===Support forum===<br />
[[http://www.modmymobile.com/forums/showthread.php?t=531599 ModMyMobile]]</div>Skrilax CZhttp://droid-developers.org/wiki/Open_recoveryOpen recovery2010-08-24T21:23:31Z<p>Skrilax CZ: /* Changelog */</p>
<hr />
<div>===Open Recovery===<br />
<br />
Developed by Skrilax_CZ.<br><br />
Credit for mankind (from alldroid) for the CustomUpdate, on which this recovery is based,<br><br />
credit for poseidon (also from alldroid) for ADBRecovery,<br><br />
credit for koush for mtd-utils and nandroid (uses script based on it),<br><br />
credit for nadlabak for keyboard layout change script.<br><br />
Current version 1.37 [08/23/2010]<br />
<br />
====Features====<br />
- on-phone console (limited) - MILESTONE ONLY!<br><br />
- rooting the phone from menu (using ChainsDD su and SuperUser.apk (version 2.2.2))<br><br />
- nandroid backup/restore from menu<br><br />
- apply update *.zip files from menu (located in OpenRecovery/updates under the sdcard root folder, there is a sample one (just unpacks a file named "babble" to /system), no signatures are needed :)<br><br />
- wipe data (factory reset)<br><br />
- wipe cache<br><br />
- wipe dalvik-cache<br><br />
- adb in recovery, using bash shell<br><br />
- run a script<br><br />
- recovery options for applications<br><br />
<br />
The open recovery files are located under the OpenRecovery folder under the root of the sd card. The own update *.zip files are under the "updates" folder, sample one is included. The scripts must have *.sh extension and reside under the "scripts" folder. The recovery contains an update.zip with payload, which doesn't do anything else than restarts to the open recovery. All the files for OpenRecovery are under the OpenRecovery folder under the root of the sdcard. The payload installs busybox to /sbin runs the "switch.sh" under the bin folder in open recovery. The initial menu file is in OpenRecovery/menu/init.menu under sdcard root.<br />
<br />
====Download & Installation (MILESTONE)====<br />
1) You need to have the vulnerable recovery installed.<br><br />
2) Download the archive and unpack it to the root folder of the sdcard.<br><br />
<br />
====Usage (MILESTONE)====<br />
1) Reboot into recovery (hold 'X' button on bootloader 90.78, on others hold camera button; until you see triangle; then press camera + volume up)<br><br />
2) Apply the update.zip<br><br />
3) You are now in Open Recovery<br><br />
<br />
====Download & Installation (XT701)====<br />
1) Download the archive and unpack it.<br><br />
2) Either flash the sbf file using RSD Lite (preffered, recommended version 4.6+), or flash using the flash_image the *.img file to recovery partition.<br><br />
3) Unpack the "OpenRecovery" folder and "OpenRecovery.zip" to the root folder of the sdcard.<br><br />
<br />
====Usage (XT701)====<br />
1) Reboot into recovery (hold camera button; until you see triangle; then press camera + volume up)<br><br />
2) If no error occurs, you're now in Open Recovery. If error occurs you're in Open Recovery Lite.<br><br />
<br />
===Changelog===<br />
<br />
====Version 1.37====<br />
Bugfixes<br><br />
- fixed nandroid restore not properly restoring yaffs2 partitions in old format<br><br />
- fixed nandroid restore not restoring compressed backups<br><br />
- fixed nandroid backup not taking md5 checksums<br><br />
<br><br />
Changes<br><br />
- console buffers up to 1000 lats printed lines (extended from 200)<br><br />
<br />
====Version 1.36====<br />
Bugfixes<br><br />
- fixed nandroid when doing "Backup All" and not having apps2sd; which would fail complaining that /sddata could not be mounted<br><br />
(Ticking all partitions in the menu and selecting "Backup Selected" was working properly and the backup has been done correctly.)<br><br />
- fixed console cursor blinking<br><br />
- squirtle theme fixed<br><br />
<br />
====Version 1.35====<br><br />
Features<br><br />
- update.zip can be in new OR format using a shell script (described lower, there are samples of each one)<br><br />
- console has now signalling implemented (menu key = CTRL)<br><br />
- console has arrow keys implemented<br><br />
- console has support for displaying front colors; thus it is no longer needed to disable bash colors<br><br />
- console supports calling clear<br><br />
<br><br />
Changes<br><br />
- recovery binary will exit if not run by init (to prevent running it from adb or console)<br><br />
- scripts in scripts folder are dos2unixed (on -FuFu- advice)<br><br />
- switch files (.nobashcolors, .kdb_qwertz, etc.) are now located in /etc<br><br />
- manual settings of the timezone (/etc/timezone), applied if the env. variable TZ doesn't exist<br><br />
- update.zip no longer need to have the "update-binary", a default one is used if not found<br><br />
<br><br />
Bugfixes<br><br />
- fixed unyaffs not restoring sticky bit / suid / sgid<br><br />
- fixed displaying long menus (it will not be truncated, instead a scrollbar appears)<br><br />
- fixed error in switch.sh for XT701<br><br />
- fixed color24.console.front in the themes -> default is supposed to be #E5E5E5<br><br />
<br />
====Version 1.32====<br />
Features<br><br />
- pressing MENU + ALT + C forcibly quits the console<br><br />
<br><br />
Changes<br><br />
- ui.prop contains more options<br><br />
- when applying any update.zip package, there is a confirmation menu<br><br />
- cursor in console blinks<br><br />
<br><br />
Bugfixes<br><br />
- Error message when ext2 partition on sdcard doesn't exist fixed<br><br />
- fixed the bug with imenu when ran more than once in one script<br><br />
<br />
===Version 1.30a===<br />
Bugfixes<br><br />
- Console layout for QWERTZ / AZERTY fixed<br><br />
<br />
===Version 1.30===<br />
Features<br><br />
- on-phone console<br><br />
- keyboard layout changer included<br><br />
- new nandroid, with support of backing up and restoring ext2 partition on sdcard (Note: uses new format of the backup, new backups are located in /sdcard/nandroid/openrecovery, there is a backwards compatibility to restore the old backups)<br><br />
- ability to create compressed backups (and autoreboot when done)<br><br />
- better nandroid menu<br><br />
- menus wrap around<br><br />
- theming for the recovery (3 themes included, to apply just rename the "res.*" folder to "res"); color settings can be manipulated in the ui.prop file under the res folder)<br><br />
- new commands for menu (tag, label, break)<br><br />
- scripts (command "shell") are able to show menu interactively when requesting user feedback (sample included)<br><br />
<br />
====Version 1.14====<br />
Changes<br><br />
- UI<br><br />
- switch.sh is separated (menu creation is in init_recovery.sh and called later by the recovery)<br><br />
- Volume keys and Camera key can be used to navigate in Open Recovery<br><br />
<br />
====Version 1.12d====<br />
Bugfixes<br><br />
- wipe commands working properly<br><br />
<br><br />
Changes<br><br />
- Bash Settings menu, to enable/disable coloured output (preset to disabled), this is persistent settings, it will last through reboots<br><br />
<br><br />
Features<br><br />
- ability to wipe dalvik-cache only (via script)<br><br />
<br />
===Version 1.12c===<br />
Bugfixes<br><br />
- reboot command is working properly<br><br />
- the content of the sdcard is no longer changed when running, everything is being copied into the ramdisk<br><br />
- minor fixes<br><br />
<br><br />
Changes<br><br />
- removed the 'init' command, instead uses 'scripted_menu'<br><br />
- adbd uses bash (interactively) instead of sh<br><br />
- payload installs also bash and toolbox<br><br />
- different the menu system (deprecated 'init' command, used), each menu must be generated from a script (notes later)<br><br />
- added init folder, scripts (with extension *.sh) are ran there on startup of the open recovery.<br><br />
- the diode is blinking in blue instead of red.<br><br />
<br><br />
Features<br><br />
- the recovery prints the output of the scripts / programs (prints their stdout)<br><br />
- application menu (described later)<br><br />
- new su and SuperUser.apk by ChainsDD<br><br />
- if sdcard has ext2 partition, it is noted in fstab under "/sddata" (the module is inserted automatically)<br><br />
<br />
====Version 1.05====<br />
Bugfixes<br><br />
- fixed a bug in payload making it dependant on the system<br><br />
- there is now nothing in the /system folder when unmounted<br><br />
- toolbox linked statically<br><br />
- busybox now installs symlinks, instead of copying itself<br><br />
- fixed a bug in adb about the shell being in /sbin/sh instead of /system/bin/sh<br><br />
- cleaned up, removed unecessary libraries and binaries<br><br />
- switch.sh now initializes the Open Recovery completely, no other script is used for initialization<br><br />
- permissions set correctly<br><br />
<br><br />
Features<br><br />
- added option to wipe<br><br />
- menu's now have header (the menu file structure has been changed)<br><br />
- added the possibility to run scripts, with .*sh extension located in scripts folder under OpenRecovery folder (shell is /sbin/sh or /sbin/bash)<br><br />
<br />
====Version 1.02====<br />
- fixed root install<br />
<br />
====Version 1.01====<br />
- initial release<br />
<br />
===Developer Notes===<br />
<br />
The recovery contains an update.zip with payload, which doesn't do anything else than restarts to the open recovery. All the files for OpenRecovery are under the OpenRecovery folder under the root of the sdcard. The payload installs busybox to /sbin runs the "switch.sh" under the bin folder in open recovery.<br />
<br />
====Menu System====<br />
<br />
The menu for the Open Recovery is created dynamically. The files must be created inside "/menu" folder by scripts, which can either be specified (if the menu is scripted_menu) or created by a *.sh script in /sdcard/OpenRecovery/init where the scripts are executed at startup. A menu creating script has to create a *.menu file inside the /menu folder. If the menu is supposed to be created on startup and not modified, place the script into /init folder, otherwise use "scripted_menu" item, where the script is ran right before the menu is created. sdcard, system and data partitions are mounted when the scripts are ran. A typical example for "scripted_menu" item is under the tutorial for application menu. For application menu see lower section. The structure of the menu file is different from the CustomUpdate by mankind:<br />
First line is the menu name (normal string), then use the following structure:<br><br />
"item name:type:argument"<br><br />
- item name is what is seen in the menu<br><br />
- type: type of the command (described later)<br><br />
- argument: argument passed to the command (file, or anything else; if empty, put "*" there, otherwise the item will be discarded)<br><br />
<br />
====Commands====<br />
<br />
- reboot: reboots the phone<br><br />
- shell: calls a file specified in arguments (default path is to /bin, if not specified)<br><br />
- menu: opens another menu file (specified in argument), if the argument is "..", it returns to up one level meu<br><br />
- scripted_menu: argument is in format "menu file:menu script", the menu script is called with variable MENU_FILE containing the menu name (default path for the script is to /bin, if not specified)<br><br />
- update: applies an update *.zip file, specified in argument (format SDCARD:$path_to_the_file_in_sdcard)<br><br />
- tag: if ticked, file "tags/.[I]argument[/I]" is created<br><br />
- break: unselectable item, argument is ignored (use "*") and creates a menu item like "---- name ----"; using "*" as name will create just "--------------"<br><br />
- label: unselectable item, argument is ignored (use "*") and creates normal menu item "name "<br><br />
- wipe_data: factory reset<br><br />
- wipe_cahce: wipe cache<br><br />
<br><br />
The menu is refreshed (the script is called if the menu is scripted) on a menu change, applying an update or running a script. Whenever a script is ran, system, data and sdcard is mounted.<br><br />
<br />
====Application menu====<br />
<br />
Application menu is designed for anything that is run on the startup and can malfunction under any circumstances. Here is one example - suppose you have a mount on font in the startup. You'll have something like this in your startup script:<br />
<pre><br />
mount -o bind /system/myfonts/segoeui.ttf /system/fonts/DroidSans.ttf<br />
mount -o bind /system/myfonts/segoeuib.ttf /system/fonts/DroidSans-Bold.ttf<br />
</pre><br />
<br />
Well the idea is that you add a condition to the script, to run only under some circumstances, like:<br />
<br />
<pre><br />
if [ ! -f /system/switch/.nocustomfont ]; then<br />
mount -o bind /system/myfonts/segoeui.ttf /system/fonts/DroidSans.ttf<br />
mount -o bind /system/myfonts/segoeuib.ttf /system/fonts/DroidSans-Bold.ttf<br />
fi<br />
</pre><br />
<br />
which mounts the font only when /system/switch/.nocustomfont is not existing. If you want this controlable from the recovery, you register in into the application menu this way: all *.sh scripts in /app (where /sdcard/OpenRecovery/app is copied) are called at startup. They are passed variable "APP_MENU_FILE", which is the name of the used menu file (preinitalized). The script will look like this:<br />
<br />
<pre><br />
#!/sbin/sh<br />
<br />
#create the menu item<br />
echo "Custom Font:scripted_menu:custfont.menu:/app/custfont/menu.sh" >> "$APP_MENU_FILE"<br />
</pre><br />
<br />
Since the scripts are in /app and not /bin, use absolute path. This will add an item to the applications menu, now we need a menu when it is selected, which is the "/app/custfont/menu.sh":<br />
<br />
<pre><br />
#!/sbin/sh<br />
<br />
if [ -f /system/switch/.nocustomfont ]; then<br />
# menu name - custom font is disabled<br />
echo "Custom Font (Disabled)" > "$MENU_FILE"<br />
# go to upper level menu<br />
echo "Go Back:menu:.." >> "$MENU_FILE"<br />
# enable it<br />
echo "Enable:shell:/app/custfont/enable.sh" >> "$MENU_FILE"<br />
else<br />
# menu name - custom font is enabled<br />
echo "Custom Font (Enabled)" > "$MENU_FILE"<br />
# go to upper level menu<br />
echo "Go Back:menu:.." >> "$MENU_FILE"<br />
# disable it<br />
echo "Disable:shell:/app/custfont/disable.sh" >> "$MENU_FILE"<br />
fi<br />
</pre><br />
Notice the shells are in /sbin, so use /sbin/sh (or /sbin/bash). The script checks if the switch is on or off and generates the menu accordingly. Since the menu is refreshed each time the script is run, it will always submit the correct option. The "enable.sh" simply touches the file and "disable.sh" just deletes it.<br />
<br />
===Download===<br />
Binaries: [[http://rapidshare.com/files/414530880/OpenRecovery_v1_37_SHOLS.rar.html Open Recovery 1.37 for Milestone]], [[http://rapidshare.com/files/414925211/OpenRecovery_v1_37_STCU.rar.html Open Recovery 1.37 for Sholes Tablet]]<br><br />
Source: [[http://rapidshare.com/files/414696074/OpenRecovery_v1_37_src.tar.gz.html Open Recovery 1.37 source]]<br><br />
<br />
===Support forum===<br />
[[http://www.modmymobile.com/forums/showthread.php?t=531599 ModMyMobile]]</div>Skrilax CZhttp://droid-developers.org/wiki/Open_recoveryOpen recovery2010-08-24T21:21:17Z<p>Skrilax CZ: /* Changelog */</p>
<hr />
<div>===Open Recovery===<br />
<br />
Developed by Skrilax_CZ.<br><br />
Credit for mankind (from alldroid) for the CustomUpdate, on which this recovery is based,<br><br />
credit for poseidon (also from alldroid) for ADBRecovery,<br><br />
credit for koush for mtd-utils and nandroid (uses script based on it),<br><br />
credit for nadlabak for keyboard layout change script.<br><br />
Current version 1.37 [08/23/2010]<br />
<br />
====Features====<br />
- on-phone console (limited) - MILESTONE ONLY!<br><br />
- rooting the phone from menu (using ChainsDD su and SuperUser.apk (version 2.2.2))<br><br />
- nandroid backup/restore from menu<br><br />
- apply update *.zip files from menu (located in OpenRecovery/updates under the sdcard root folder, there is a sample one (just unpacks a file named "babble" to /system), no signatures are needed :)<br><br />
- wipe data (factory reset)<br><br />
- wipe cache<br><br />
- wipe dalvik-cache<br><br />
- adb in recovery, using bash shell<br><br />
- run a script<br><br />
- recovery options for applications<br><br />
<br />
The open recovery files are located under the OpenRecovery folder under the root of the sd card. The own update *.zip files are under the "updates" folder, sample one is included. The scripts must have *.sh extension and reside under the "scripts" folder. The recovery contains an update.zip with payload, which doesn't do anything else than restarts to the open recovery. All the files for OpenRecovery are under the OpenRecovery folder under the root of the sdcard. The payload installs busybox to /sbin runs the "switch.sh" under the bin folder in open recovery. The initial menu file is in OpenRecovery/menu/init.menu under sdcard root.<br />
<br />
====Download & Installation (MILESTONE)====<br />
1) You need to have the vulnerable recovery installed.<br><br />
2) Download the archive and unpack it to the root folder of the sdcard.<br><br />
<br />
====Usage (MILESTONE)====<br />
1) Reboot into recovery (hold 'X' button on bootloader 90.78, on others hold camera button; until you see triangle; then press camera + volume up)<br><br />
2) Apply the update.zip<br><br />
3) You are now in Open Recovery<br><br />
<br />
====Download & Installation (XT701)====<br />
1) Download the archive and unpack it.<br><br />
2) Either flash the sbf file using RSD Lite (preffered, recommended version 4.6+), or flash using the flash_image the *.img file to recovery partition.<br><br />
3) Unpack the "OpenRecovery" folder and "OpenRecovery.zip" to the root folder of the sdcard.<br><br />
<br />
====Usage (XT701)====<br />
1) Reboot into recovery (hold camera button; until you see triangle; then press camera + volume up)<br><br />
2) If no error occurs, you're now in Open Recovery. If error occurs you're in Open Recovery Lite.<br><br />
<br />
==Changelog==<br />
<br />
===Version 1.37===<br />
Bugfixes<br><br />
- fixed nandroid restore not properly restoring yaffs2 partitions in old format<br><br />
- fixed nandroid restore not restoring compressed backups<br><br />
- fixed nandroid backup not taking md5 checksums<br><br />
<br><br />
Changes<br><br />
- console buffers up to 1000 lats printed lines (extended from 200)<br><br />
<br />
===Version 1.36===<br />
Bugfixes<br><br />
- fixed nandroid when doing "Backup All" and not having apps2sd; which would fail complaining that /sddata could not be mounted<br><br />
(Ticking all partitions in the menu and selecting "Backup Selected" was working properly and the backup has been done correctly.)<br><br />
- fixed console cursor blinking<br><br />
- squirtle theme fixed<br><br />
<br />
===Version 1.35===<br><br />
Features<br><br />
- update.zip can be in new OR format using a shell script (described lower, there are samples of each one)<br><br />
- console has now signalling implemented (menu key = CTRL)<br><br />
- console has arrow keys implemented<br><br />
- console has support for displaying front colors; thus it is no longer needed to disable bash colors<br><br />
- console supports calling clear<br><br />
<br><br />
Changes<br><br />
- recovery binary will exit if not run by init (to prevent running it from adb or console)<br><br />
- scripts in scripts folder are dos2unixed (on -FuFu- advice)<br><br />
- switch files (.nobashcolors, .kdb_qwertz, etc.) are now located in /etc<br><br />
- manual settings of the timezone (/etc/timezone), applied if the env. variable TZ doesn't exist<br><br />
- update.zip no longer need to have the "update-binary", a default one is used if not found<br><br />
<br><br />
Bugfixes<br><br />
- fixed unyaffs not restoring sticky bit / suid / sgid<br><br />
- fixed displaying long menus (it will not be truncated, instead a scrollbar appears)<br><br />
- fixed error in switch.sh for XT701<br><br />
- fixed color24.console.front in the themes -> default is supposed to be #E5E5E5<br><br />
<br />
===Version 1.32===<br />
Features<br><br />
- pressing MENU + ALT + C forcibly quits the console<br><br />
<br><br />
Changes<br><br />
- ui.prop contains more options<br><br />
- when applying any update.zip package, there is a confirmation menu<br><br />
- cursor in console blinks<br><br />
<br><br />
Bugfixes<br><br />
- Error message when ext2 partition on sdcard doesn't exist fixed<br><br />
- fixed the bug with imenu when ran more than once in one script<br><br />
<br />
===Version 1.30a===<br />
Bugfixes<br><br />
- Console layout for QWERTZ / AZERTY fixed<br><br />
<br />
===Version 1.30===<br />
Features<br><br />
- on-phone console<br><br />
- keyboard layout changer included<br><br />
- new nandroid, with support of backing up and restoring ext2 partition on sdcard (Note: uses new format of the backup, new backups are located in /sdcard/nandroid/openrecovery, there is a backwards compatibility to restore the old backups)<br><br />
- ability to create compressed backups (and autoreboot when done)<br><br />
- better nandroid menu<br><br />
- menus wrap around<br><br />
- theming for the recovery (3 themes included, to apply just rename the "res.*" folder to "res"); color settings can be manipulated in the ui.prop file under the res folder)<br><br />
- new commands for menu (tag, label, break)<br><br />
- scripts (command "shell") are able to show menu interactively when requesting user feedback (sample included)<br><br />
<br />
===Version 1.14===<br />
Changes<br><br />
- UI<br><br />
- switch.sh is separated (menu creation is in init_recovery.sh and called later by the recovery)<br><br />
- Volume keys and Camera key can be used to navigate in Open Recovery<br><br />
<br />
===Version 1.12d===<br />
Bugfixes<br><br />
- wipe commands working properly<br><br />
<br><br />
Changes<br><br />
- Bash Settings menu, to enable/disable coloured output (preset to disabled), this is persistent settings, it will last through reboots<br><br />
<br><br />
Features<br><br />
- ability to wipe dalvik-cache only (via script)<br><br />
<br />
===Version 1.12c===<br />
Bugfixes<br><br />
- reboot command is working properly<br><br />
- the content of the sdcard is no longer changed when running, everything is being copied into the ramdisk<br><br />
- minor fixes<br><br />
<br><br />
Changes<br><br />
- removed the 'init' command, instead uses 'scripted_menu'<br><br />
- adbd uses bash (interactively) instead of sh<br><br />
- payload installs also bash and toolbox<br><br />
- different the menu system (deprecated 'init' command, used), each menu must be generated from a script (notes later)<br><br />
- added init folder, scripts (with extension *.sh) are ran there on startup of the open recovery.<br><br />
- the diode is blinking in blue instead of red.<br><br />
<br><br />
Features<br><br />
- the recovery prints the output of the scripts / programs (prints their stdout)<br><br />
- application menu (described later)<br><br />
- new su and SuperUser.apk by ChainsDD<br><br />
- if sdcard has ext2 partition, it is noted in fstab under "/sddata" (the module is inserted automatically)<br><br />
<br />
===Version 1.05===<br />
Bugfixes<br><br />
- fixed a bug in payload making it dependant on the system<br><br />
- there is now nothing in the /system folder when unmounted<br><br />
- toolbox linked statically<br><br />
- busybox now installs symlinks, instead of copying itself<br><br />
- fixed a bug in adb about the shell being in /sbin/sh instead of /system/bin/sh<br><br />
- cleaned up, removed unecessary libraries and binaries<br><br />
- switch.sh now initializes the Open Recovery completely, no other script is used for initialization<br><br />
- permissions set correctly<br><br />
<br><br />
Features<br><br />
- added option to wipe<br><br />
- menu's now have header (the menu file structure has been changed)<br><br />
- added the possibility to run scripts, with .*sh extension located in scripts folder under OpenRecovery folder (shell is /sbin/sh or /sbin/bash)<br><br />
<br />
===Version 1.02===<br />
- fixed root install<br />
<br />
The recovery contains an update.zip with payload, which doesn't do anything else than restarts to the open recovery. All the files for OpenRecovery are under the OpenRecovery folder under the root of the sdcard. The payload installs busybox to /sbin runs the "switch.sh" under the bin folder in open recovery. <br />
====Menu System====<br />
<br />
The menu for the Open Recovery is created dynamically. The files must be created inside "/menu" folder by scripts, which can either be specified (if the menu is scripted_menu) or created by a *.sh script in /sdcard/OpenRecovery/init where the scripts are executed at startup. A menu creating script has to create a *.menu file inside the /menu folder. If the menu is supposed to be created on startup and not modified, place the script into /init folder, otherwise use "scripted_menu" item, where the script is ran right before the menu is created. sdcard, system and data partitions are mounted when the scripts are ran. A typical example for "scripted_menu" item is under the tutorial for application menu. For application menu see lower section. The structure of the menu file is different from the CustomUpdate by mankind:<br />
First line is the menu name (normal string), then use the following structure:<br><br />
"item name:type:argument"<br><br />
- item name is what is seen in the menu<br><br />
- type: type of the command (described later)<br><br />
- argument: argument passed to the command (file, or anything else; if empty, put "*" there, otherwise the item will be discarded)<br><br />
<br />
===Commands===<br />
<br />
- reboot: reboots the phone<br><br />
- shell: calls a file specified in arguments (default path is to /bin, if not specified)<br><br />
- menu: opens another menu file (specified in argument), if the argument is "..", it returns to up one level meu<br><br />
- scripted_menu: argument is in format "menu file:menu script", the menu script is called with variable MENU_FILE containing the menu name (default path for the script is to /bin, if not specified)<br><br />
- update: applies an update *.zip file, specified in argument (format SDCARD:$path_to_the_file_in_sdcard)<br><br />
- wipe_data: factory reset<br><br />
- wipe_cahce: wipe cache<br><br />
<br><br />
The menu is refreshed (the script is called if the menu is scripted) on a menu change, applying an update or running a script. Whenever a script is ran, system, data and sdcard is mounted.<br><br />
<br />
===Application menu===<br />
<br />
Application menu is designed for anything that is run on the startup and can malfunction under any circumstances. Here is one example - suppose you have a mount on font in the startup. You'll have something like this in your startup script:<br />
<pre><br />
mount -o bind /system/myfonts/segoeui.ttf /system/fonts/DroidSans.ttf<br />
mount -o bind /system/myfonts/segoeuib.ttf /system/fonts/DroidSans-Bold.ttf<br />
</pre><br />
<br />
Well the idea is that you add a condition to the script, to run only under some circumstances, like:<br />
<br />
<pre><br />
if [ ! -f /system/switch/.nocustomfont ]; then<br />
mount -o bind /system/myfonts/segoeui.ttf /system/fonts/DroidSans.ttf<br />
mount -o bind /system/myfonts/segoeuib.ttf /system/fonts/DroidSans-Bold.ttf<br />
fi<br />
</pre><br />
<br />
which mounts the font only when /system/switch/.nocustomfont is not existing. If you want this controlable from the recovery, you register in into the application menu this way: all *.sh scripts in /app (where /sdcard/OpenRecovery/app is copied) are called at startup. They are passed variable "APP_MENU_FILE", which is the name of the used menu file (preinitalized). The script will look like this:<br />
<br />
<pre><br />
#!/sbin/sh<br />
<br />
#create the menu item<br />
echo "Custom Font:scripted_menu:custfont.menu:/app/custfont/menu.sh" >> "$APP_MENU_FILE"<br />
</pre><br />
<br />
Since the scripts are in /app and not /bin, use absolute path. This will add an item to the applications menu, now we need a menu when it is selected, which is the "/app/custfont/menu.sh":<br />
<br />
<pre><br />
#!/sbin/sh<br />
<br />
if [ -f /system/switch/.nocustomfont ]; then<br />
# menu name - custom font is disabled<br />
echo "Custom Font (Disabled)" > "$MENU_FILE"<br />
# go to upper level menu<br />
echo "Go Back:menu:.." >> "$MENU_FILE"<br />
# enable it<br />
echo "Enable:shell:/app/custfont/enable.sh" >> "$MENU_FILE"<br />
else<br />
# menu name - custom font is enabled<br />
echo "Custom Font (Enabled)" > "$MENU_FILE"<br />
# go to upper level menu<br />
echo "Go Back:menu:.." >> "$MENU_FILE"<br />
# disable it<br />
echo "Disable:shell:/app/custfont/disable.sh" >> "$MENU_FILE"<br />
fi<br />
</pre><br />
Notice the shells are in /sbin, so use /sbin/sh (or /sbin/bash). The script checks if the switch is on or off and generates the menu accordingly. Since the menu is refreshed each time the script is run, it will always submit the correct option. The "enable.sh" simply touches the file and "disable.sh" just deletes it.<br />
<br />
===Download===<br />
Binaries: [[http://rapidshare.com/files/414530880/OpenRecovery_v1_37_SHOLS.rar.html Open Recovery 1.37 for Milestone]], [[http://rapidshare.com/files/414925211/OpenRecovery_v1_37_STCU.rar.html Open Recovery 1.37 for Sholes Tablet]]<br><br />
Source: [[http://rapidshare.com/files/414696074/OpenRecovery_v1_37_src.tar.gz.html Open Recovery 1.37 source]]<br><br />
<br />
===Support forum===<br />
[[http://www.modmymobile.com/forums/showthread.php?t=531599 ModMyMobile]]</div>Skrilax CZhttp://droid-developers.org/wiki/Open_recoveryOpen recovery2010-08-24T21:21:06Z<p>Skrilax CZ: /* Changelog */</p>
<hr />
<div>===Open Recovery===<br />
<br />
Developed by Skrilax_CZ.<br><br />
Credit for mankind (from alldroid) for the CustomUpdate, on which this recovery is based,<br><br />
credit for poseidon (also from alldroid) for ADBRecovery,<br><br />
credit for koush for mtd-utils and nandroid (uses script based on it),<br><br />
credit for nadlabak for keyboard layout change script.<br><br />
Current version 1.37 [08/23/2010]<br />
<br />
====Features====<br />
- on-phone console (limited) - MILESTONE ONLY!<br><br />
- rooting the phone from menu (using ChainsDD su and SuperUser.apk (version 2.2.2))<br><br />
- nandroid backup/restore from menu<br><br />
- apply update *.zip files from menu (located in OpenRecovery/updates under the sdcard root folder, there is a sample one (just unpacks a file named "babble" to /system), no signatures are needed :)<br><br />
- wipe data (factory reset)<br><br />
- wipe cache<br><br />
- wipe dalvik-cache<br><br />
- adb in recovery, using bash shell<br><br />
- run a script<br><br />
- recovery options for applications<br><br />
<br />
The open recovery files are located under the OpenRecovery folder under the root of the sd card. The own update *.zip files are under the "updates" folder, sample one is included. The scripts must have *.sh extension and reside under the "scripts" folder. The recovery contains an update.zip with payload, which doesn't do anything else than restarts to the open recovery. All the files for OpenRecovery are under the OpenRecovery folder under the root of the sdcard. The payload installs busybox to /sbin runs the "switch.sh" under the bin folder in open recovery. The initial menu file is in OpenRecovery/menu/init.menu under sdcard root.<br />
<br />
====Download & Installation (MILESTONE)====<br />
1) You need to have the vulnerable recovery installed.<br><br />
2) Download the archive and unpack it to the root folder of the sdcard.<br><br />
<br />
====Usage (MILESTONE)====<br />
1) Reboot into recovery (hold 'X' button on bootloader 90.78, on others hold camera button; until you see triangle; then press camera + volume up)<br><br />
2) Apply the update.zip<br><br />
3) You are now in Open Recovery<br><br />
<br />
====Download & Installation (XT701)====<br />
1) Download the archive and unpack it.<br><br />
2) Either flash the sbf file using RSD Lite (preffered, recommended version 4.6+), or flash using the flash_image the *.img file to recovery partition.<br><br />
3) Unpack the "OpenRecovery" folder and "OpenRecovery.zip" to the root folder of the sdcard.<br><br />
<br />
====Usage (XT701)====<br />
1) Reboot into recovery (hold camera button; until you see triangle; then press camera + volume up)<br><br />
2) If no error occurs, you're now in Open Recovery. If error occurs you're in Open Recovery Lite.<br><br />
<br />
===Changelog===<br />
<br />
===Version 1.37===<br />
Bugfixes<br><br />
- fixed nandroid restore not properly restoring yaffs2 partitions in old format<br><br />
- fixed nandroid restore not restoring compressed backups<br><br />
- fixed nandroid backup not taking md5 checksums<br><br />
<br><br />
Changes<br><br />
- console buffers up to 1000 lats printed lines (extended from 200)<br><br />
<br />
===Version 1.36===<br />
Bugfixes<br><br />
- fixed nandroid when doing "Backup All" and not having apps2sd; which would fail complaining that /sddata could not be mounted<br><br />
(Ticking all partitions in the menu and selecting "Backup Selected" was working properly and the backup has been done correctly.)<br><br />
- fixed console cursor blinking<br><br />
- squirtle theme fixed<br><br />
<br />
===Version 1.35===<br><br />
Features<br><br />
- update.zip can be in new OR format using a shell script (described lower, there are samples of each one)<br><br />
- console has now signalling implemented (menu key = CTRL)<br><br />
- console has arrow keys implemented<br><br />
- console has support for displaying front colors; thus it is no longer needed to disable bash colors<br><br />
- console supports calling clear<br><br />
<br><br />
Changes<br><br />
- recovery binary will exit if not run by init (to prevent running it from adb or console)<br><br />
- scripts in scripts folder are dos2unixed (on -FuFu- advice)<br><br />
- switch files (.nobashcolors, .kdb_qwertz, etc.) are now located in /etc<br><br />
- manual settings of the timezone (/etc/timezone), applied if the env. variable TZ doesn't exist<br><br />
- update.zip no longer need to have the "update-binary", a default one is used if not found<br><br />
<br><br />
Bugfixes<br><br />
- fixed unyaffs not restoring sticky bit / suid / sgid<br><br />
- fixed displaying long menus (it will not be truncated, instead a scrollbar appears)<br><br />
- fixed error in switch.sh for XT701<br><br />
- fixed color24.console.front in the themes -> default is supposed to be #E5E5E5<br><br />
<br />
===Version 1.32===<br />
Features<br><br />
- pressing MENU + ALT + C forcibly quits the console<br><br />
<br><br />
Changes<br><br />
- ui.prop contains more options<br><br />
- when applying any update.zip package, there is a confirmation menu<br><br />
- cursor in console blinks<br><br />
<br><br />
Bugfixes<br><br />
- Error message when ext2 partition on sdcard doesn't exist fixed<br><br />
- fixed the bug with imenu when ran more than once in one script<br><br />
<br />
===Version 1.30a===<br />
Bugfixes<br><br />
- Console layout for QWERTZ / AZERTY fixed<br><br />
<br />
===Version 1.30===<br />
Features<br><br />
- on-phone console<br><br />
- keyboard layout changer included<br><br />
- new nandroid, with support of backing up and restoring ext2 partition on sdcard (Note: uses new format of the backup, new backups are located in /sdcard/nandroid/openrecovery, there is a backwards compatibility to restore the old backups)<br><br />
- ability to create compressed backups (and autoreboot when done)<br><br />
- better nandroid menu<br><br />
- menus wrap around<br><br />
- theming for the recovery (3 themes included, to apply just rename the "res.*" folder to "res"); color settings can be manipulated in the ui.prop file under the res folder)<br><br />
- new commands for menu (tag, label, break)<br><br />
- scripts (command "shell") are able to show menu interactively when requesting user feedback (sample included)<br><br />
<br />
===Version 1.14===<br />
Changes<br><br />
- UI<br><br />
- switch.sh is separated (menu creation is in init_recovery.sh and called later by the recovery)<br><br />
- Volume keys and Camera key can be used to navigate in Open Recovery<br><br />
<br />
===Version 1.12d===<br />
Bugfixes<br><br />
- wipe commands working properly<br><br />
<br><br />
Changes<br><br />
- Bash Settings menu, to enable/disable coloured output (preset to disabled), this is persistent settings, it will last through reboots<br><br />
<br><br />
Features<br><br />
- ability to wipe dalvik-cache only (via script)<br><br />
<br />
===Version 1.12c===<br />
Bugfixes<br><br />
- reboot command is working properly<br><br />
- the content of the sdcard is no longer changed when running, everything is being copied into the ramdisk<br><br />
- minor fixes<br><br />
<br><br />
Changes<br><br />
- removed the 'init' command, instead uses 'scripted_menu'<br><br />
- adbd uses bash (interactively) instead of sh<br><br />
- payload installs also bash and toolbox<br><br />
- different the menu system (deprecated 'init' command, used), each menu must be generated from a script (notes later)<br><br />
- added init folder, scripts (with extension *.sh) are ran there on startup of the open recovery.<br><br />
- the diode is blinking in blue instead of red.<br><br />
<br><br />
Features<br><br />
- the recovery prints the output of the scripts / programs (prints their stdout)<br><br />
- application menu (described later)<br><br />
- new su and SuperUser.apk by ChainsDD<br><br />
- if sdcard has ext2 partition, it is noted in fstab under "/sddata" (the module is inserted automatically)<br><br />
<br />
===Version 1.05===<br />
Bugfixes<br><br />
- fixed a bug in payload making it dependant on the system<br><br />
- there is now nothing in the /system folder when unmounted<br><br />
- toolbox linked statically<br><br />
- busybox now installs symlinks, instead of copying itself<br><br />
- fixed a bug in adb about the shell being in /sbin/sh instead of /system/bin/sh<br><br />
- cleaned up, removed unecessary libraries and binaries<br><br />
- switch.sh now initializes the Open Recovery completely, no other script is used for initialization<br><br />
- permissions set correctly<br><br />
<br><br />
Features<br><br />
- added option to wipe<br><br />
- menu's now have header (the menu file structure has been changed)<br><br />
- added the possibility to run scripts, with .*sh extension located in scripts folder under OpenRecovery folder (shell is /sbin/sh or /sbin/bash)<br><br />
<br />
===Version 1.02===<br />
- fixed root install<br />
<br />
The recovery contains an update.zip with payload, which doesn't do anything else than restarts to the open recovery. All the files for OpenRecovery are under the OpenRecovery folder under the root of the sdcard. The payload installs busybox to /sbin runs the "switch.sh" under the bin folder in open recovery. <br />
====Menu System====<br />
<br />
The menu for the Open Recovery is created dynamically. The files must be created inside "/menu" folder by scripts, which can either be specified (if the menu is scripted_menu) or created by a *.sh script in /sdcard/OpenRecovery/init where the scripts are executed at startup. A menu creating script has to create a *.menu file inside the /menu folder. If the menu is supposed to be created on startup and not modified, place the script into /init folder, otherwise use "scripted_menu" item, where the script is ran right before the menu is created. sdcard, system and data partitions are mounted when the scripts are ran. A typical example for "scripted_menu" item is under the tutorial for application menu. For application menu see lower section. The structure of the menu file is different from the CustomUpdate by mankind:<br />
First line is the menu name (normal string), then use the following structure:<br><br />
"item name:type:argument"<br><br />
- item name is what is seen in the menu<br><br />
- type: type of the command (described later)<br><br />
- argument: argument passed to the command (file, or anything else; if empty, put "*" there, otherwise the item will be discarded)<br><br />
<br />
===Commands===<br />
<br />
- reboot: reboots the phone<br><br />
- shell: calls a file specified in arguments (default path is to /bin, if not specified)<br><br />
- menu: opens another menu file (specified in argument), if the argument is "..", it returns to up one level meu<br><br />
- scripted_menu: argument is in format "menu file:menu script", the menu script is called with variable MENU_FILE containing the menu name (default path for the script is to /bin, if not specified)<br><br />
- update: applies an update *.zip file, specified in argument (format SDCARD:$path_to_the_file_in_sdcard)<br><br />
- wipe_data: factory reset<br><br />
- wipe_cahce: wipe cache<br><br />
<br><br />
The menu is refreshed (the script is called if the menu is scripted) on a menu change, applying an update or running a script. Whenever a script is ran, system, data and sdcard is mounted.<br><br />
<br />
===Application menu===<br />
<br />
Application menu is designed for anything that is run on the startup and can malfunction under any circumstances. Here is one example - suppose you have a mount on font in the startup. You'll have something like this in your startup script:<br />
<pre><br />
mount -o bind /system/myfonts/segoeui.ttf /system/fonts/DroidSans.ttf<br />
mount -o bind /system/myfonts/segoeuib.ttf /system/fonts/DroidSans-Bold.ttf<br />
</pre><br />
<br />
Well the idea is that you add a condition to the script, to run only under some circumstances, like:<br />
<br />
<pre><br />
if [ ! -f /system/switch/.nocustomfont ]; then<br />
mount -o bind /system/myfonts/segoeui.ttf /system/fonts/DroidSans.ttf<br />
mount -o bind /system/myfonts/segoeuib.ttf /system/fonts/DroidSans-Bold.ttf<br />
fi<br />
</pre><br />
<br />
which mounts the font only when /system/switch/.nocustomfont is not existing. If you want this controlable from the recovery, you register in into the application menu this way: all *.sh scripts in /app (where /sdcard/OpenRecovery/app is copied) are called at startup. They are passed variable "APP_MENU_FILE", which is the name of the used menu file (preinitalized). The script will look like this:<br />
<br />
<pre><br />
#!/sbin/sh<br />
<br />
#create the menu item<br />
echo "Custom Font:scripted_menu:custfont.menu:/app/custfont/menu.sh" >> "$APP_MENU_FILE"<br />
</pre><br />
<br />
Since the scripts are in /app and not /bin, use absolute path. This will add an item to the applications menu, now we need a menu when it is selected, which is the "/app/custfont/menu.sh":<br />
<br />
<pre><br />
#!/sbin/sh<br />
<br />
if [ -f /system/switch/.nocustomfont ]; then<br />
# menu name - custom font is disabled<br />
echo "Custom Font (Disabled)" > "$MENU_FILE"<br />
# go to upper level menu<br />
echo "Go Back:menu:.." >> "$MENU_FILE"<br />
# enable it<br />
echo "Enable:shell:/app/custfont/enable.sh" >> "$MENU_FILE"<br />
else<br />
# menu name - custom font is enabled<br />
echo "Custom Font (Enabled)" > "$MENU_FILE"<br />
# go to upper level menu<br />
echo "Go Back:menu:.." >> "$MENU_FILE"<br />
# disable it<br />
echo "Disable:shell:/app/custfont/disable.sh" >> "$MENU_FILE"<br />
fi<br />
</pre><br />
Notice the shells are in /sbin, so use /sbin/sh (or /sbin/bash). The script checks if the switch is on or off and generates the menu accordingly. Since the menu is refreshed each time the script is run, it will always submit the correct option. The "enable.sh" simply touches the file and "disable.sh" just deletes it.<br />
<br />
===Download===<br />
Binaries: [[http://rapidshare.com/files/414530880/OpenRecovery_v1_37_SHOLS.rar.html Open Recovery 1.37 for Milestone]], [[http://rapidshare.com/files/414925211/OpenRecovery_v1_37_STCU.rar.html Open Recovery 1.37 for Sholes Tablet]]<br><br />
Source: [[http://rapidshare.com/files/414696074/OpenRecovery_v1_37_src.tar.gz.html Open Recovery 1.37 source]]<br><br />
<br />
===Support forum===<br />
[[http://www.modmymobile.com/forums/showthread.php?t=531599 ModMyMobile]]</div>Skrilax CZhttp://droid-developers.org/wiki/Open_recoveryOpen recovery2010-08-24T21:20:54Z<p>Skrilax CZ: /* Usage (XT701): */</p>
<hr />
<div>===Open Recovery===<br />
<br />
Developed by Skrilax_CZ.<br><br />
Credit for mankind (from alldroid) for the CustomUpdate, on which this recovery is based,<br><br />
credit for poseidon (also from alldroid) for ADBRecovery,<br><br />
credit for koush for mtd-utils and nandroid (uses script based on it),<br><br />
credit for nadlabak for keyboard layout change script.<br><br />
Current version 1.37 [08/23/2010]<br />
<br />
====Features====<br />
- on-phone console (limited) - MILESTONE ONLY!<br><br />
- rooting the phone from menu (using ChainsDD su and SuperUser.apk (version 2.2.2))<br><br />
- nandroid backup/restore from menu<br><br />
- apply update *.zip files from menu (located in OpenRecovery/updates under the sdcard root folder, there is a sample one (just unpacks a file named "babble" to /system), no signatures are needed :)<br><br />
- wipe data (factory reset)<br><br />
- wipe cache<br><br />
- wipe dalvik-cache<br><br />
- adb in recovery, using bash shell<br><br />
- run a script<br><br />
- recovery options for applications<br><br />
<br />
The open recovery files are located under the OpenRecovery folder under the root of the sd card. The own update *.zip files are under the "updates" folder, sample one is included. The scripts must have *.sh extension and reside under the "scripts" folder. The recovery contains an update.zip with payload, which doesn't do anything else than restarts to the open recovery. All the files for OpenRecovery are under the OpenRecovery folder under the root of the sdcard. The payload installs busybox to /sbin runs the "switch.sh" under the bin folder in open recovery. The initial menu file is in OpenRecovery/menu/init.menu under sdcard root.<br />
<br />
====Download & Installation (MILESTONE)====<br />
1) You need to have the vulnerable recovery installed.<br><br />
2) Download the archive and unpack it to the root folder of the sdcard.<br><br />
<br />
====Usage (MILESTONE)====<br />
1) Reboot into recovery (hold 'X' button on bootloader 90.78, on others hold camera button; until you see triangle; then press camera + volume up)<br><br />
2) Apply the update.zip<br><br />
3) You are now in Open Recovery<br><br />
<br />
====Download & Installation (XT701)====<br />
1) Download the archive and unpack it.<br><br />
2) Either flash the sbf file using RSD Lite (preffered, recommended version 4.6+), or flash using the flash_image the *.img file to recovery partition.<br><br />
3) Unpack the "OpenRecovery" folder and "OpenRecovery.zip" to the root folder of the sdcard.<br><br />
<br />
====Usage (XT701)====<br />
1) Reboot into recovery (hold camera button; until you see triangle; then press camera + volume up)<br><br />
2) If no error occurs, you're now in Open Recovery. If error occurs you're in Open Recovery Lite.<br><br />
<br />
====Changelog====<br />
<br />
===Version 1.37===<br />
Bugfixes<br><br />
- fixed nandroid restore not properly restoring yaffs2 partitions in old format<br><br />
- fixed nandroid restore not restoring compressed backups<br><br />
- fixed nandroid backup not taking md5 checksums<br><br />
<br><br />
Changes<br><br />
- console buffers up to 1000 lats printed lines (extended from 200)<br><br />
<br />
===Version 1.36===<br />
Bugfixes<br><br />
- fixed nandroid when doing "Backup All" and not having apps2sd; which would fail complaining that /sddata could not be mounted<br><br />
(Ticking all partitions in the menu and selecting "Backup Selected" was working properly and the backup has been done correctly.)<br><br />
- fixed console cursor blinking<br><br />
- squirtle theme fixed<br><br />
<br />
===Version 1.35===<br><br />
Features<br><br />
- update.zip can be in new OR format using a shell script (described lower, there are samples of each one)<br><br />
- console has now signalling implemented (menu key = CTRL)<br><br />
- console has arrow keys implemented<br><br />
- console has support for displaying front colors; thus it is no longer needed to disable bash colors<br><br />
- console supports calling clear<br><br />
<br><br />
Changes<br><br />
- recovery binary will exit if not run by init (to prevent running it from adb or console)<br><br />
- scripts in scripts folder are dos2unixed (on -FuFu- advice)<br><br />
- switch files (.nobashcolors, .kdb_qwertz, etc.) are now located in /etc<br><br />
- manual settings of the timezone (/etc/timezone), applied if the env. variable TZ doesn't exist<br><br />
- update.zip no longer need to have the "update-binary", a default one is used if not found<br><br />
<br><br />
Bugfixes<br><br />
- fixed unyaffs not restoring sticky bit / suid / sgid<br><br />
- fixed displaying long menus (it will not be truncated, instead a scrollbar appears)<br><br />
- fixed error in switch.sh for XT701<br><br />
- fixed color24.console.front in the themes -> default is supposed to be #E5E5E5<br><br />
<br />
===Version 1.32===<br />
Features<br><br />
- pressing MENU + ALT + C forcibly quits the console<br><br />
<br><br />
Changes<br><br />
- ui.prop contains more options<br><br />
- when applying any update.zip package, there is a confirmation menu<br><br />
- cursor in console blinks<br><br />
<br><br />
Bugfixes<br><br />
- Error message when ext2 partition on sdcard doesn't exist fixed<br><br />
- fixed the bug with imenu when ran more than once in one script<br><br />
<br />
===Version 1.30a===<br />
Bugfixes<br><br />
- Console layout for QWERTZ / AZERTY fixed<br><br />
<br />
===Version 1.30===<br />
Features<br><br />
- on-phone console<br><br />
- keyboard layout changer included<br><br />
- new nandroid, with support of backing up and restoring ext2 partition on sdcard (Note: uses new format of the backup, new backups are located in /sdcard/nandroid/openrecovery, there is a backwards compatibility to restore the old backups)<br><br />
- ability to create compressed backups (and autoreboot when done)<br><br />
- better nandroid menu<br><br />
- menus wrap around<br><br />
- theming for the recovery (3 themes included, to apply just rename the "res.*" folder to "res"); color settings can be manipulated in the ui.prop file under the res folder)<br><br />
- new commands for menu (tag, label, break)<br><br />
- scripts (command "shell") are able to show menu interactively when requesting user feedback (sample included)<br><br />
<br />
===Version 1.14===<br />
Changes<br><br />
- UI<br><br />
- switch.sh is separated (menu creation is in init_recovery.sh and called later by the recovery)<br><br />
- Volume keys and Camera key can be used to navigate in Open Recovery<br><br />
<br />
===Version 1.12d===<br />
Bugfixes<br><br />
- wipe commands working properly<br><br />
<br><br />
Changes<br><br />
- Bash Settings menu, to enable/disable coloured output (preset to disabled), this is persistent settings, it will last through reboots<br><br />
<br><br />
Features<br><br />
- ability to wipe dalvik-cache only (via script)<br><br />
<br />
===Version 1.12c===<br />
Bugfixes<br><br />
- reboot command is working properly<br><br />
- the content of the sdcard is no longer changed when running, everything is being copied into the ramdisk<br><br />
- minor fixes<br><br />
<br><br />
Changes<br><br />
- removed the 'init' command, instead uses 'scripted_menu'<br><br />
- adbd uses bash (interactively) instead of sh<br><br />
- payload installs also bash and toolbox<br><br />
- different the menu system (deprecated 'init' command, used), each menu must be generated from a script (notes later)<br><br />
- added init folder, scripts (with extension *.sh) are ran there on startup of the open recovery.<br><br />
- the diode is blinking in blue instead of red.<br><br />
<br><br />
Features<br><br />
- the recovery prints the output of the scripts / programs (prints their stdout)<br><br />
- application menu (described later)<br><br />
- new su and SuperUser.apk by ChainsDD<br><br />
- if sdcard has ext2 partition, it is noted in fstab under "/sddata" (the module is inserted automatically)<br><br />
<br />
===Version 1.05===<br />
Bugfixes<br><br />
- fixed a bug in payload making it dependant on the system<br><br />
- there is now nothing in the /system folder when unmounted<br><br />
- toolbox linked statically<br><br />
- busybox now installs symlinks, instead of copying itself<br><br />
- fixed a bug in adb about the shell being in /sbin/sh instead of /system/bin/sh<br><br />
- cleaned up, removed unecessary libraries and binaries<br><br />
- switch.sh now initializes the Open Recovery completely, no other script is used for initialization<br><br />
- permissions set correctly<br><br />
<br><br />
Features<br><br />
- added option to wipe<br><br />
- menu's now have header (the menu file structure has been changed)<br><br />
- added the possibility to run scripts, with .*sh extension located in scripts folder under OpenRecovery folder (shell is /sbin/sh or /sbin/bash)<br><br />
<br />
===Version 1.02===<br />
- fixed root install<br />
<br />
The recovery contains an update.zip with payload, which doesn't do anything else than restarts to the open recovery. All the files for OpenRecovery are under the OpenRecovery folder under the root of the sdcard. The payload installs busybox to /sbin runs the "switch.sh" under the bin folder in open recovery. <br />
====Menu System====<br />
<br />
The menu for the Open Recovery is created dynamically. The files must be created inside "/menu" folder by scripts, which can either be specified (if the menu is scripted_menu) or created by a *.sh script in /sdcard/OpenRecovery/init where the scripts are executed at startup. A menu creating script has to create a *.menu file inside the /menu folder. If the menu is supposed to be created on startup and not modified, place the script into /init folder, otherwise use "scripted_menu" item, where the script is ran right before the menu is created. sdcard, system and data partitions are mounted when the scripts are ran. A typical example for "scripted_menu" item is under the tutorial for application menu. For application menu see lower section. The structure of the menu file is different from the CustomUpdate by mankind:<br />
First line is the menu name (normal string), then use the following structure:<br><br />
"item name:type:argument"<br><br />
- item name is what is seen in the menu<br><br />
- type: type of the command (described later)<br><br />
- argument: argument passed to the command (file, or anything else; if empty, put "*" there, otherwise the item will be discarded)<br><br />
<br />
===Commands===<br />
<br />
- reboot: reboots the phone<br><br />
- shell: calls a file specified in arguments (default path is to /bin, if not specified)<br><br />
- menu: opens another menu file (specified in argument), if the argument is "..", it returns to up one level meu<br><br />
- scripted_menu: argument is in format "menu file:menu script", the menu script is called with variable MENU_FILE containing the menu name (default path for the script is to /bin, if not specified)<br><br />
- update: applies an update *.zip file, specified in argument (format SDCARD:$path_to_the_file_in_sdcard)<br><br />
- wipe_data: factory reset<br><br />
- wipe_cahce: wipe cache<br><br />
<br><br />
The menu is refreshed (the script is called if the menu is scripted) on a menu change, applying an update or running a script. Whenever a script is ran, system, data and sdcard is mounted.<br><br />
<br />
===Application menu===<br />
<br />
Application menu is designed for anything that is run on the startup and can malfunction under any circumstances. Here is one example - suppose you have a mount on font in the startup. You'll have something like this in your startup script:<br />
<pre><br />
mount -o bind /system/myfonts/segoeui.ttf /system/fonts/DroidSans.ttf<br />
mount -o bind /system/myfonts/segoeuib.ttf /system/fonts/DroidSans-Bold.ttf<br />
</pre><br />
<br />
Well the idea is that you add a condition to the script, to run only under some circumstances, like:<br />
<br />
<pre><br />
if [ ! -f /system/switch/.nocustomfont ]; then<br />
mount -o bind /system/myfonts/segoeui.ttf /system/fonts/DroidSans.ttf<br />
mount -o bind /system/myfonts/segoeuib.ttf /system/fonts/DroidSans-Bold.ttf<br />
fi<br />
</pre><br />
<br />
which mounts the font only when /system/switch/.nocustomfont is not existing. If you want this controlable from the recovery, you register in into the application menu this way: all *.sh scripts in /app (where /sdcard/OpenRecovery/app is copied) are called at startup. They are passed variable "APP_MENU_FILE", which is the name of the used menu file (preinitalized). The script will look like this:<br />
<br />
<pre><br />
#!/sbin/sh<br />
<br />
#create the menu item<br />
echo "Custom Font:scripted_menu:custfont.menu:/app/custfont/menu.sh" >> "$APP_MENU_FILE"<br />
</pre><br />
<br />
Since the scripts are in /app and not /bin, use absolute path. This will add an item to the applications menu, now we need a menu when it is selected, which is the "/app/custfont/menu.sh":<br />
<br />
<pre><br />
#!/sbin/sh<br />
<br />
if [ -f /system/switch/.nocustomfont ]; then<br />
# menu name - custom font is disabled<br />
echo "Custom Font (Disabled)" > "$MENU_FILE"<br />
# go to upper level menu<br />
echo "Go Back:menu:.." >> "$MENU_FILE"<br />
# enable it<br />
echo "Enable:shell:/app/custfont/enable.sh" >> "$MENU_FILE"<br />
else<br />
# menu name - custom font is enabled<br />
echo "Custom Font (Enabled)" > "$MENU_FILE"<br />
# go to upper level menu<br />
echo "Go Back:menu:.." >> "$MENU_FILE"<br />
# disable it<br />
echo "Disable:shell:/app/custfont/disable.sh" >> "$MENU_FILE"<br />
fi<br />
</pre><br />
Notice the shells are in /sbin, so use /sbin/sh (or /sbin/bash). The script checks if the switch is on or off and generates the menu accordingly. Since the menu is refreshed each time the script is run, it will always submit the correct option. The "enable.sh" simply touches the file and "disable.sh" just deletes it.<br />
<br />
===Download===<br />
Binaries: [[http://rapidshare.com/files/414530880/OpenRecovery_v1_37_SHOLS.rar.html Open Recovery 1.37 for Milestone]], [[http://rapidshare.com/files/414925211/OpenRecovery_v1_37_STCU.rar.html Open Recovery 1.37 for Sholes Tablet]]<br><br />
Source: [[http://rapidshare.com/files/414696074/OpenRecovery_v1_37_src.tar.gz.html Open Recovery 1.37 source]]<br><br />
<br />
===Support forum===<br />
[[http://www.modmymobile.com/forums/showthread.php?t=531599 ModMyMobile]]</div>Skrilax CZhttp://droid-developers.org/wiki/Open_recoveryOpen recovery2010-08-24T21:20:42Z<p>Skrilax CZ: /* Download & Installation (XT701): */</p>
<hr />
<div>===Open Recovery===<br />
<br />
Developed by Skrilax_CZ.<br><br />
Credit for mankind (from alldroid) for the CustomUpdate, on which this recovery is based,<br><br />
credit for poseidon (also from alldroid) for ADBRecovery,<br><br />
credit for koush for mtd-utils and nandroid (uses script based on it),<br><br />
credit for nadlabak for keyboard layout change script.<br><br />
Current version 1.37 [08/23/2010]<br />
<br />
====Features====<br />
- on-phone console (limited) - MILESTONE ONLY!<br><br />
- rooting the phone from menu (using ChainsDD su and SuperUser.apk (version 2.2.2))<br><br />
- nandroid backup/restore from menu<br><br />
- apply update *.zip files from menu (located in OpenRecovery/updates under the sdcard root folder, there is a sample one (just unpacks a file named "babble" to /system), no signatures are needed :)<br><br />
- wipe data (factory reset)<br><br />
- wipe cache<br><br />
- wipe dalvik-cache<br><br />
- adb in recovery, using bash shell<br><br />
- run a script<br><br />
- recovery options for applications<br><br />
<br />
The open recovery files are located under the OpenRecovery folder under the root of the sd card. The own update *.zip files are under the "updates" folder, sample one is included. The scripts must have *.sh extension and reside under the "scripts" folder. The recovery contains an update.zip with payload, which doesn't do anything else than restarts to the open recovery. All the files for OpenRecovery are under the OpenRecovery folder under the root of the sdcard. The payload installs busybox to /sbin runs the "switch.sh" under the bin folder in open recovery. The initial menu file is in OpenRecovery/menu/init.menu under sdcard root.<br />
<br />
====Download & Installation (MILESTONE)====<br />
1) You need to have the vulnerable recovery installed.<br><br />
2) Download the archive and unpack it to the root folder of the sdcard.<br><br />
<br />
====Usage (MILESTONE)====<br />
1) Reboot into recovery (hold 'X' button on bootloader 90.78, on others hold camera button; until you see triangle; then press camera + volume up)<br><br />
2) Apply the update.zip<br><br />
3) You are now in Open Recovery<br><br />
<br />
====Download & Installation (XT701)====<br />
1) Download the archive and unpack it.<br><br />
2) Either flash the sbf file using RSD Lite (preffered, recommended version 4.6+), or flash using the flash_image the *.img file to recovery partition.<br><br />
3) Unpack the "OpenRecovery" folder and "OpenRecovery.zip" to the root folder of the sdcard.<br><br />
<br />
====Usage (XT701):====<br />
1) Reboot into recovery (hold camera button; until you see triangle; then press camera + volume up)<br><br />
2) If no error occurs, you're now in Open Recovery. If error occurs you're in Open Recovery Lite.<br><br />
<br />
====Changelog====<br />
<br />
===Version 1.37===<br />
Bugfixes<br><br />
- fixed nandroid restore not properly restoring yaffs2 partitions in old format<br><br />
- fixed nandroid restore not restoring compressed backups<br><br />
- fixed nandroid backup not taking md5 checksums<br><br />
<br><br />
Changes<br><br />
- console buffers up to 1000 lats printed lines (extended from 200)<br><br />
<br />
===Version 1.36===<br />
Bugfixes<br><br />
- fixed nandroid when doing "Backup All" and not having apps2sd; which would fail complaining that /sddata could not be mounted<br><br />
(Ticking all partitions in the menu and selecting "Backup Selected" was working properly and the backup has been done correctly.)<br><br />
- fixed console cursor blinking<br><br />
- squirtle theme fixed<br><br />
<br />
===Version 1.35===<br><br />
Features<br><br />
- update.zip can be in new OR format using a shell script (described lower, there are samples of each one)<br><br />
- console has now signalling implemented (menu key = CTRL)<br><br />
- console has arrow keys implemented<br><br />
- console has support for displaying front colors; thus it is no longer needed to disable bash colors<br><br />
- console supports calling clear<br><br />
<br><br />
Changes<br><br />
- recovery binary will exit if not run by init (to prevent running it from adb or console)<br><br />
- scripts in scripts folder are dos2unixed (on -FuFu- advice)<br><br />
- switch files (.nobashcolors, .kdb_qwertz, etc.) are now located in /etc<br><br />
- manual settings of the timezone (/etc/timezone), applied if the env. variable TZ doesn't exist<br><br />
- update.zip no longer need to have the "update-binary", a default one is used if not found<br><br />
<br><br />
Bugfixes<br><br />
- fixed unyaffs not restoring sticky bit / suid / sgid<br><br />
- fixed displaying long menus (it will not be truncated, instead a scrollbar appears)<br><br />
- fixed error in switch.sh for XT701<br><br />
- fixed color24.console.front in the themes -> default is supposed to be #E5E5E5<br><br />
<br />
===Version 1.32===<br />
Features<br><br />
- pressing MENU + ALT + C forcibly quits the console<br><br />
<br><br />
Changes<br><br />
- ui.prop contains more options<br><br />
- when applying any update.zip package, there is a confirmation menu<br><br />
- cursor in console blinks<br><br />
<br><br />
Bugfixes<br><br />
- Error message when ext2 partition on sdcard doesn't exist fixed<br><br />
- fixed the bug with imenu when ran more than once in one script<br><br />
<br />
===Version 1.30a===<br />
Bugfixes<br><br />
- Console layout for QWERTZ / AZERTY fixed<br><br />
<br />
===Version 1.30===<br />
Features<br><br />
- on-phone console<br><br />
- keyboard layout changer included<br><br />
- new nandroid, with support of backing up and restoring ext2 partition on sdcard (Note: uses new format of the backup, new backups are located in /sdcard/nandroid/openrecovery, there is a backwards compatibility to restore the old backups)<br><br />
- ability to create compressed backups (and autoreboot when done)<br><br />
- better nandroid menu<br><br />
- menus wrap around<br><br />
- theming for the recovery (3 themes included, to apply just rename the "res.*" folder to "res"); color settings can be manipulated in the ui.prop file under the res folder)<br><br />
- new commands for menu (tag, label, break)<br><br />
- scripts (command "shell") are able to show menu interactively when requesting user feedback (sample included)<br><br />
<br />
===Version 1.14===<br />
Changes<br><br />
- UI<br><br />
- switch.sh is separated (menu creation is in init_recovery.sh and called later by the recovery)<br><br />
- Volume keys and Camera key can be used to navigate in Open Recovery<br><br />
<br />
===Version 1.12d===<br />
Bugfixes<br><br />
- wipe commands working properly<br><br />
<br><br />
Changes<br><br />
- Bash Settings menu, to enable/disable coloured output (preset to disabled), this is persistent settings, it will last through reboots<br><br />
<br><br />
Features<br><br />
- ability to wipe dalvik-cache only (via script)<br><br />
<br />
===Version 1.12c===<br />
Bugfixes<br><br />
- reboot command is working properly<br><br />
- the content of the sdcard is no longer changed when running, everything is being copied into the ramdisk<br><br />
- minor fixes<br><br />
<br><br />
Changes<br><br />
- removed the 'init' command, instead uses 'scripted_menu'<br><br />
- adbd uses bash (interactively) instead of sh<br><br />
- payload installs also bash and toolbox<br><br />
- different the menu system (deprecated 'init' command, used), each menu must be generated from a script (notes later)<br><br />
- added init folder, scripts (with extension *.sh) are ran there on startup of the open recovery.<br><br />
- the diode is blinking in blue instead of red.<br><br />
<br><br />
Features<br><br />
- the recovery prints the output of the scripts / programs (prints their stdout)<br><br />
- application menu (described later)<br><br />
- new su and SuperUser.apk by ChainsDD<br><br />
- if sdcard has ext2 partition, it is noted in fstab under "/sddata" (the module is inserted automatically)<br><br />
<br />
===Version 1.05===<br />
Bugfixes<br><br />
- fixed a bug in payload making it dependant on the system<br><br />
- there is now nothing in the /system folder when unmounted<br><br />
- toolbox linked statically<br><br />
- busybox now installs symlinks, instead of copying itself<br><br />
- fixed a bug in adb about the shell being in /sbin/sh instead of /system/bin/sh<br><br />
- cleaned up, removed unecessary libraries and binaries<br><br />
- switch.sh now initializes the Open Recovery completely, no other script is used for initialization<br><br />
- permissions set correctly<br><br />
<br><br />
Features<br><br />
- added option to wipe<br><br />
- menu's now have header (the menu file structure has been changed)<br><br />
- added the possibility to run scripts, with .*sh extension located in scripts folder under OpenRecovery folder (shell is /sbin/sh or /sbin/bash)<br><br />
<br />
===Version 1.02===<br />
- fixed root install<br />
<br />
The recovery contains an update.zip with payload, which doesn't do anything else than restarts to the open recovery. All the files for OpenRecovery are under the OpenRecovery folder under the root of the sdcard. The payload installs busybox to /sbin runs the "switch.sh" under the bin folder in open recovery. <br />
====Menu System====<br />
<br />
The menu for the Open Recovery is created dynamically. The files must be created inside "/menu" folder by scripts, which can either be specified (if the menu is scripted_menu) or created by a *.sh script in /sdcard/OpenRecovery/init where the scripts are executed at startup. A menu creating script has to create a *.menu file inside the /menu folder. If the menu is supposed to be created on startup and not modified, place the script into /init folder, otherwise use "scripted_menu" item, where the script is ran right before the menu is created. sdcard, system and data partitions are mounted when the scripts are ran. A typical example for "scripted_menu" item is under the tutorial for application menu. For application menu see lower section. The structure of the menu file is different from the CustomUpdate by mankind:<br />
First line is the menu name (normal string), then use the following structure:<br><br />
"item name:type:argument"<br><br />
- item name is what is seen in the menu<br><br />
- type: type of the command (described later)<br><br />
- argument: argument passed to the command (file, or anything else; if empty, put "*" there, otherwise the item will be discarded)<br><br />
<br />
===Commands===<br />
<br />
- reboot: reboots the phone<br><br />
- shell: calls a file specified in arguments (default path is to /bin, if not specified)<br><br />
- menu: opens another menu file (specified in argument), if the argument is "..", it returns to up one level meu<br><br />
- scripted_menu: argument is in format "menu file:menu script", the menu script is called with variable MENU_FILE containing the menu name (default path for the script is to /bin, if not specified)<br><br />
- update: applies an update *.zip file, specified in argument (format SDCARD:$path_to_the_file_in_sdcard)<br><br />
- wipe_data: factory reset<br><br />
- wipe_cahce: wipe cache<br><br />
<br><br />
The menu is refreshed (the script is called if the menu is scripted) on a menu change, applying an update or running a script. Whenever a script is ran, system, data and sdcard is mounted.<br><br />
<br />
===Application menu===<br />
<br />
Application menu is designed for anything that is run on the startup and can malfunction under any circumstances. Here is one example - suppose you have a mount on font in the startup. You'll have something like this in your startup script:<br />
<pre><br />
mount -o bind /system/myfonts/segoeui.ttf /system/fonts/DroidSans.ttf<br />
mount -o bind /system/myfonts/segoeuib.ttf /system/fonts/DroidSans-Bold.ttf<br />
</pre><br />
<br />
Well the idea is that you add a condition to the script, to run only under some circumstances, like:<br />
<br />
<pre><br />
if [ ! -f /system/switch/.nocustomfont ]; then<br />
mount -o bind /system/myfonts/segoeui.ttf /system/fonts/DroidSans.ttf<br />
mount -o bind /system/myfonts/segoeuib.ttf /system/fonts/DroidSans-Bold.ttf<br />
fi<br />
</pre><br />
<br />
which mounts the font only when /system/switch/.nocustomfont is not existing. If you want this controlable from the recovery, you register in into the application menu this way: all *.sh scripts in /app (where /sdcard/OpenRecovery/app is copied) are called at startup. They are passed variable "APP_MENU_FILE", which is the name of the used menu file (preinitalized). The script will look like this:<br />
<br />
<pre><br />
#!/sbin/sh<br />
<br />
#create the menu item<br />
echo "Custom Font:scripted_menu:custfont.menu:/app/custfont/menu.sh" >> "$APP_MENU_FILE"<br />
</pre><br />
<br />
Since the scripts are in /app and not /bin, use absolute path. This will add an item to the applications menu, now we need a menu when it is selected, which is the "/app/custfont/menu.sh":<br />
<br />
<pre><br />
#!/sbin/sh<br />
<br />
if [ -f /system/switch/.nocustomfont ]; then<br />
# menu name - custom font is disabled<br />
echo "Custom Font (Disabled)" > "$MENU_FILE"<br />
# go to upper level menu<br />
echo "Go Back:menu:.." >> "$MENU_FILE"<br />
# enable it<br />
echo "Enable:shell:/app/custfont/enable.sh" >> "$MENU_FILE"<br />
else<br />
# menu name - custom font is enabled<br />
echo "Custom Font (Enabled)" > "$MENU_FILE"<br />
# go to upper level menu<br />
echo "Go Back:menu:.." >> "$MENU_FILE"<br />
# disable it<br />
echo "Disable:shell:/app/custfont/disable.sh" >> "$MENU_FILE"<br />
fi<br />
</pre><br />
Notice the shells are in /sbin, so use /sbin/sh (or /sbin/bash). The script checks if the switch is on or off and generates the menu accordingly. Since the menu is refreshed each time the script is run, it will always submit the correct option. The "enable.sh" simply touches the file and "disable.sh" just deletes it.<br />
<br />
===Download===<br />
Binaries: [[http://rapidshare.com/files/414530880/OpenRecovery_v1_37_SHOLS.rar.html Open Recovery 1.37 for Milestone]], [[http://rapidshare.com/files/414925211/OpenRecovery_v1_37_STCU.rar.html Open Recovery 1.37 for Sholes Tablet]]<br><br />
Source: [[http://rapidshare.com/files/414696074/OpenRecovery_v1_37_src.tar.gz.html Open Recovery 1.37 source]]<br><br />
<br />
===Support forum===<br />
[[http://www.modmymobile.com/forums/showthread.php?t=531599 ModMyMobile]]</div>Skrilax CZhttp://droid-developers.org/wiki/Open_recoveryOpen recovery2010-08-24T21:20:23Z<p>Skrilax CZ: /* Open Recovery */</p>
<hr />
<div>===Open Recovery===<br />
<br />
Developed by Skrilax_CZ.<br><br />
Credit for mankind (from alldroid) for the CustomUpdate, on which this recovery is based,<br><br />
credit for poseidon (also from alldroid) for ADBRecovery,<br><br />
credit for koush for mtd-utils and nandroid (uses script based on it),<br><br />
credit for nadlabak for keyboard layout change script.<br><br />
Current version 1.37 [08/23/2010]<br />
<br />
====Features====<br />
- on-phone console (limited) - MILESTONE ONLY!<br><br />
- rooting the phone from menu (using ChainsDD su and SuperUser.apk (version 2.2.2))<br><br />
- nandroid backup/restore from menu<br><br />
- apply update *.zip files from menu (located in OpenRecovery/updates under the sdcard root folder, there is a sample one (just unpacks a file named "babble" to /system), no signatures are needed :)<br><br />
- wipe data (factory reset)<br><br />
- wipe cache<br><br />
- wipe dalvik-cache<br><br />
- adb in recovery, using bash shell<br><br />
- run a script<br><br />
- recovery options for applications<br><br />
<br />
The open recovery files are located under the OpenRecovery folder under the root of the sd card. The own update *.zip files are under the "updates" folder, sample one is included. The scripts must have *.sh extension and reside under the "scripts" folder. The recovery contains an update.zip with payload, which doesn't do anything else than restarts to the open recovery. All the files for OpenRecovery are under the OpenRecovery folder under the root of the sdcard. The payload installs busybox to /sbin runs the "switch.sh" under the bin folder in open recovery. The initial menu file is in OpenRecovery/menu/init.menu under sdcard root.<br />
<br />
====Download & Installation (MILESTONE)====<br />
1) You need to have the vulnerable recovery installed.<br><br />
2) Download the archive and unpack it to the root folder of the sdcard.<br><br />
<br />
====Usage (MILESTONE)====<br />
1) Reboot into recovery (hold 'X' button on bootloader 90.78, on others hold camera button; until you see triangle; then press camera + volume up)<br><br />
2) Apply the update.zip<br><br />
3) You are now in Open Recovery<br><br />
<br />
====Download & Installation (XT701):====<br />
1) Download the archive and unpack it.<br><br />
2) Either flash the sbf file using RSD Lite (preffered, recommended version 4.6+), or flash using the flash_image the *.img file to recovery partition.<br><br />
3) Unpack the "OpenRecovery" folder and "OpenRecovery.zip" to the root folder of the sdcard.<br><br />
<br />
====Usage (XT701):====<br />
1) Reboot into recovery (hold camera button; until you see triangle; then press camera + volume up)<br><br />
2) If no error occurs, you're now in Open Recovery. If error occurs you're in Open Recovery Lite.<br><br />
<br />
====Changelog====<br />
<br />
===Version 1.37===<br />
Bugfixes<br><br />
- fixed nandroid restore not properly restoring yaffs2 partitions in old format<br><br />
- fixed nandroid restore not restoring compressed backups<br><br />
- fixed nandroid backup not taking md5 checksums<br><br />
<br><br />
Changes<br><br />
- console buffers up to 1000 lats printed lines (extended from 200)<br><br />
<br />
===Version 1.36===<br />
Bugfixes<br><br />
- fixed nandroid when doing "Backup All" and not having apps2sd; which would fail complaining that /sddata could not be mounted<br><br />
(Ticking all partitions in the menu and selecting "Backup Selected" was working properly and the backup has been done correctly.)<br><br />
- fixed console cursor blinking<br><br />
- squirtle theme fixed<br><br />
<br />
===Version 1.35===<br><br />
Features<br><br />
- update.zip can be in new OR format using a shell script (described lower, there are samples of each one)<br><br />
- console has now signalling implemented (menu key = CTRL)<br><br />
- console has arrow keys implemented<br><br />
- console has support for displaying front colors; thus it is no longer needed to disable bash colors<br><br />
- console supports calling clear<br><br />
<br><br />
Changes<br><br />
- recovery binary will exit if not run by init (to prevent running it from adb or console)<br><br />
- scripts in scripts folder are dos2unixed (on -FuFu- advice)<br><br />
- switch files (.nobashcolors, .kdb_qwertz, etc.) are now located in /etc<br><br />
- manual settings of the timezone (/etc/timezone), applied if the env. variable TZ doesn't exist<br><br />
- update.zip no longer need to have the "update-binary", a default one is used if not found<br><br />
<br><br />
Bugfixes<br><br />
- fixed unyaffs not restoring sticky bit / suid / sgid<br><br />
- fixed displaying long menus (it will not be truncated, instead a scrollbar appears)<br><br />
- fixed error in switch.sh for XT701<br><br />
- fixed color24.console.front in the themes -> default is supposed to be #E5E5E5<br><br />
<br />
===Version 1.32===<br />
Features<br><br />
- pressing MENU + ALT + C forcibly quits the console<br><br />
<br><br />
Changes<br><br />
- ui.prop contains more options<br><br />
- when applying any update.zip package, there is a confirmation menu<br><br />
- cursor in console blinks<br><br />
<br><br />
Bugfixes<br><br />
- Error message when ext2 partition on sdcard doesn't exist fixed<br><br />
- fixed the bug with imenu when ran more than once in one script<br><br />
<br />
===Version 1.30a===<br />
Bugfixes<br><br />
- Console layout for QWERTZ / AZERTY fixed<br><br />
<br />
===Version 1.30===<br />
Features<br><br />
- on-phone console<br><br />
- keyboard layout changer included<br><br />
- new nandroid, with support of backing up and restoring ext2 partition on sdcard (Note: uses new format of the backup, new backups are located in /sdcard/nandroid/openrecovery, there is a backwards compatibility to restore the old backups)<br><br />
- ability to create compressed backups (and autoreboot when done)<br><br />
- better nandroid menu<br><br />
- menus wrap around<br><br />
- theming for the recovery (3 themes included, to apply just rename the "res.*" folder to "res"); color settings can be manipulated in the ui.prop file under the res folder)<br><br />
- new commands for menu (tag, label, break)<br><br />
- scripts (command "shell") are able to show menu interactively when requesting user feedback (sample included)<br><br />
<br />
===Version 1.14===<br />
Changes<br><br />
- UI<br><br />
- switch.sh is separated (menu creation is in init_recovery.sh and called later by the recovery)<br><br />
- Volume keys and Camera key can be used to navigate in Open Recovery<br><br />
<br />
===Version 1.12d===<br />
Bugfixes<br><br />
- wipe commands working properly<br><br />
<br><br />
Changes<br><br />
- Bash Settings menu, to enable/disable coloured output (preset to disabled), this is persistent settings, it will last through reboots<br><br />
<br><br />
Features<br><br />
- ability to wipe dalvik-cache only (via script)<br><br />
<br />
===Version 1.12c===<br />
Bugfixes<br><br />
- reboot command is working properly<br><br />
- the content of the sdcard is no longer changed when running, everything is being copied into the ramdisk<br><br />
- minor fixes<br><br />
<br><br />
Changes<br><br />
- removed the 'init' command, instead uses 'scripted_menu'<br><br />
- adbd uses bash (interactively) instead of sh<br><br />
- payload installs also bash and toolbox<br><br />
- different the menu system (deprecated 'init' command, used), each menu must be generated from a script (notes later)<br><br />
- added init folder, scripts (with extension *.sh) are ran there on startup of the open recovery.<br><br />
- the diode is blinking in blue instead of red.<br><br />
<br><br />
Features<br><br />
- the recovery prints the output of the scripts / programs (prints their stdout)<br><br />
- application menu (described later)<br><br />
- new su and SuperUser.apk by ChainsDD<br><br />
- if sdcard has ext2 partition, it is noted in fstab under "/sddata" (the module is inserted automatically)<br><br />
<br />
===Version 1.05===<br />
Bugfixes<br><br />
- fixed a bug in payload making it dependant on the system<br><br />
- there is now nothing in the /system folder when unmounted<br><br />
- toolbox linked statically<br><br />
- busybox now installs symlinks, instead of copying itself<br><br />
- fixed a bug in adb about the shell being in /sbin/sh instead of /system/bin/sh<br><br />
- cleaned up, removed unecessary libraries and binaries<br><br />
- switch.sh now initializes the Open Recovery completely, no other script is used for initialization<br><br />
- permissions set correctly<br><br />
<br><br />
Features<br><br />
- added option to wipe<br><br />
- menu's now have header (the menu file structure has been changed)<br><br />
- added the possibility to run scripts, with .*sh extension located in scripts folder under OpenRecovery folder (shell is /sbin/sh or /sbin/bash)<br><br />
<br />
===Version 1.02===<br />
- fixed root install<br />
<br />
The recovery contains an update.zip with payload, which doesn't do anything else than restarts to the open recovery. All the files for OpenRecovery are under the OpenRecovery folder under the root of the sdcard. The payload installs busybox to /sbin runs the "switch.sh" under the bin folder in open recovery. <br />
====Menu System====<br />
<br />
The menu for the Open Recovery is created dynamically. The files must be created inside "/menu" folder by scripts, which can either be specified (if the menu is scripted_menu) or created by a *.sh script in /sdcard/OpenRecovery/init where the scripts are executed at startup. A menu creating script has to create a *.menu file inside the /menu folder. If the menu is supposed to be created on startup and not modified, place the script into /init folder, otherwise use "scripted_menu" item, where the script is ran right before the menu is created. sdcard, system and data partitions are mounted when the scripts are ran. A typical example for "scripted_menu" item is under the tutorial for application menu. For application menu see lower section. The structure of the menu file is different from the CustomUpdate by mankind:<br />
First line is the menu name (normal string), then use the following structure:<br><br />
"item name:type:argument"<br><br />
- item name is what is seen in the menu<br><br />
- type: type of the command (described later)<br><br />
- argument: argument passed to the command (file, or anything else; if empty, put "*" there, otherwise the item will be discarded)<br><br />
<br />
===Commands===<br />
<br />
- reboot: reboots the phone<br><br />
- shell: calls a file specified in arguments (default path is to /bin, if not specified)<br><br />
- menu: opens another menu file (specified in argument), if the argument is "..", it returns to up one level meu<br><br />
- scripted_menu: argument is in format "menu file:menu script", the menu script is called with variable MENU_FILE containing the menu name (default path for the script is to /bin, if not specified)<br><br />
- update: applies an update *.zip file, specified in argument (format SDCARD:$path_to_the_file_in_sdcard)<br><br />
- wipe_data: factory reset<br><br />
- wipe_cahce: wipe cache<br><br />
<br><br />
The menu is refreshed (the script is called if the menu is scripted) on a menu change, applying an update or running a script. Whenever a script is ran, system, data and sdcard is mounted.<br><br />
<br />
===Application menu===<br />
<br />
Application menu is designed for anything that is run on the startup and can malfunction under any circumstances. Here is one example - suppose you have a mount on font in the startup. You'll have something like this in your startup script:<br />
<pre><br />
mount -o bind /system/myfonts/segoeui.ttf /system/fonts/DroidSans.ttf<br />
mount -o bind /system/myfonts/segoeuib.ttf /system/fonts/DroidSans-Bold.ttf<br />
</pre><br />
<br />
Well the idea is that you add a condition to the script, to run only under some circumstances, like:<br />
<br />
<pre><br />
if [ ! -f /system/switch/.nocustomfont ]; then<br />
mount -o bind /system/myfonts/segoeui.ttf /system/fonts/DroidSans.ttf<br />
mount -o bind /system/myfonts/segoeuib.ttf /system/fonts/DroidSans-Bold.ttf<br />
fi<br />
</pre><br />
<br />
which mounts the font only when /system/switch/.nocustomfont is not existing. If you want this controlable from the recovery, you register in into the application menu this way: all *.sh scripts in /app (where /sdcard/OpenRecovery/app is copied) are called at startup. They are passed variable "APP_MENU_FILE", which is the name of the used menu file (preinitalized). The script will look like this:<br />
<br />
<pre><br />
#!/sbin/sh<br />
<br />
#create the menu item<br />
echo "Custom Font:scripted_menu:custfont.menu:/app/custfont/menu.sh" >> "$APP_MENU_FILE"<br />
</pre><br />
<br />
Since the scripts are in /app and not /bin, use absolute path. This will add an item to the applications menu, now we need a menu when it is selected, which is the "/app/custfont/menu.sh":<br />
<br />
<pre><br />
#!/sbin/sh<br />
<br />
if [ -f /system/switch/.nocustomfont ]; then<br />
# menu name - custom font is disabled<br />
echo "Custom Font (Disabled)" > "$MENU_FILE"<br />
# go to upper level menu<br />
echo "Go Back:menu:.." >> "$MENU_FILE"<br />
# enable it<br />
echo "Enable:shell:/app/custfont/enable.sh" >> "$MENU_FILE"<br />
else<br />
# menu name - custom font is enabled<br />
echo "Custom Font (Enabled)" > "$MENU_FILE"<br />
# go to upper level menu<br />
echo "Go Back:menu:.." >> "$MENU_FILE"<br />
# disable it<br />
echo "Disable:shell:/app/custfont/disable.sh" >> "$MENU_FILE"<br />
fi<br />
</pre><br />
Notice the shells are in /sbin, so use /sbin/sh (or /sbin/bash). The script checks if the switch is on or off and generates the menu accordingly. Since the menu is refreshed each time the script is run, it will always submit the correct option. The "enable.sh" simply touches the file and "disable.sh" just deletes it.<br />
<br />
===Download===<br />
Binaries: [[http://rapidshare.com/files/414530880/OpenRecovery_v1_37_SHOLS.rar.html Open Recovery 1.37 for Milestone]], [[http://rapidshare.com/files/414925211/OpenRecovery_v1_37_STCU.rar.html Open Recovery 1.37 for Sholes Tablet]]<br><br />
Source: [[http://rapidshare.com/files/414696074/OpenRecovery_v1_37_src.tar.gz.html Open Recovery 1.37 source]]<br><br />
<br />
===Support forum===<br />
[[http://www.modmymobile.com/forums/showthread.php?t=531599 ModMyMobile]]</div>Skrilax CZhttp://droid-developers.org/wiki/Open_recoveryOpen recovery2010-08-24T21:20:00Z<p>Skrilax CZ: /* Open Recovery */</p>
<hr />
<div>==Open Recovery==<br />
<br />
Developed by Skrilax_CZ.<br><br />
Credit for mankind (from alldroid) for the CustomUpdate, on which this recovery is based,<br><br />
credit for poseidon (also from alldroid) for ADBRecovery,<br><br />
credit for koush for mtd-utils and nandroid (uses script based on it),<br><br />
credit for nadlabak for keyboard layout change script.<br><br />
Current version 1.37 [08/23/2010]<br />
<br />
====Features====<br />
- on-phone console (limited) - MILESTONE ONLY!<br><br />
- rooting the phone from menu (using ChainsDD su and SuperUser.apk (version 2.2.2))<br><br />
- nandroid backup/restore from menu<br><br />
- apply update *.zip files from menu (located in OpenRecovery/updates under the sdcard root folder, there is a sample one (just unpacks a file named "babble" to /system), no signatures are needed :)<br><br />
- wipe data (factory reset)<br><br />
- wipe cache<br><br />
- wipe dalvik-cache<br><br />
- adb in recovery, using bash shell<br><br />
- run a script<br><br />
- recovery options for applications<br><br />
<br />
The open recovery files are located under the OpenRecovery folder under the root of the sd card. The own update *.zip files are under the "updates" folder, sample one is included. The scripts must have *.sh extension and reside under the "scripts" folder. The recovery contains an update.zip with payload, which doesn't do anything else than restarts to the open recovery. All the files for OpenRecovery are under the OpenRecovery folder under the root of the sdcard. The payload installs busybox to /sbin runs the "switch.sh" under the bin folder in open recovery. The initial menu file is in OpenRecovery/menu/init.menu under sdcard root.<br />
<br />
====Download & Installation (MILESTONE)====<br />
1) You need to have the vulnerable recovery installed.<br><br />
2) Download the archive and unpack it to the root folder of the sdcard.<br><br />
<br />
====Usage (MILESTONE)====<br />
1) Reboot into recovery (hold 'X' button on bootloader 90.78, on others hold camera button; until you see triangle; then press camera + volume up)<br><br />
2) Apply the update.zip<br><br />
3) You are now in Open Recovery<br><br />
<br />
====Download & Installation (XT701):====<br />
1) Download the archive and unpack it.<br><br />
2) Either flash the sbf file using RSD Lite (preffered, recommended version 4.6+), or flash using the flash_image the *.img file to recovery partition.<br><br />
3) Unpack the "OpenRecovery" folder and "OpenRecovery.zip" to the root folder of the sdcard.<br><br />
<br />
====Usage (XT701):====<br />
1) Reboot into recovery (hold camera button; until you see triangle; then press camera + volume up)<br><br />
2) If no error occurs, you're now in Open Recovery. If error occurs you're in Open Recovery Lite.<br><br />
<br />
====Changelog====<br />
<br />
===Version 1.37===<br />
Bugfixes<br><br />
- fixed nandroid restore not properly restoring yaffs2 partitions in old format<br><br />
- fixed nandroid restore not restoring compressed backups<br><br />
- fixed nandroid backup not taking md5 checksums<br><br />
<br><br />
Changes<br><br />
- console buffers up to 1000 lats printed lines (extended from 200)<br><br />
<br />
===Version 1.36===<br />
Bugfixes<br><br />
- fixed nandroid when doing "Backup All" and not having apps2sd; which would fail complaining that /sddata could not be mounted<br><br />
(Ticking all partitions in the menu and selecting "Backup Selected" was working properly and the backup has been done correctly.)<br><br />
- fixed console cursor blinking<br><br />
- squirtle theme fixed<br><br />
<br />
===Version 1.35===<br><br />
Features<br><br />
- update.zip can be in new OR format using a shell script (described lower, there are samples of each one)<br><br />
- console has now signalling implemented (menu key = CTRL)<br><br />
- console has arrow keys implemented<br><br />
- console has support for displaying front colors; thus it is no longer needed to disable bash colors<br><br />
- console supports calling clear<br><br />
<br><br />
Changes<br><br />
- recovery binary will exit if not run by init (to prevent running it from adb or console)<br><br />
- scripts in scripts folder are dos2unixed (on -FuFu- advice)<br><br />
- switch files (.nobashcolors, .kdb_qwertz, etc.) are now located in /etc<br><br />
- manual settings of the timezone (/etc/timezone), applied if the env. variable TZ doesn't exist<br><br />
- update.zip no longer need to have the "update-binary", a default one is used if not found<br><br />
<br><br />
Bugfixes<br><br />
- fixed unyaffs not restoring sticky bit / suid / sgid<br><br />
- fixed displaying long menus (it will not be truncated, instead a scrollbar appears)<br><br />
- fixed error in switch.sh for XT701<br><br />
- fixed color24.console.front in the themes -> default is supposed to be #E5E5E5<br><br />
<br />
===Version 1.32===<br />
Features<br><br />
- pressing MENU + ALT + C forcibly quits the console<br><br />
<br><br />
Changes<br><br />
- ui.prop contains more options<br><br />
- when applying any update.zip package, there is a confirmation menu<br><br />
- cursor in console blinks<br><br />
<br><br />
Bugfixes<br><br />
- Error message when ext2 partition on sdcard doesn't exist fixed<br><br />
- fixed the bug with imenu when ran more than once in one script<br><br />
<br />
===Version 1.30a===<br />
Bugfixes<br><br />
- Console layout for QWERTZ / AZERTY fixed<br><br />
<br />
===Version 1.30===<br />
Features<br><br />
- on-phone console<br><br />
- keyboard layout changer included<br><br />
- new nandroid, with support of backing up and restoring ext2 partition on sdcard (Note: uses new format of the backup, new backups are located in /sdcard/nandroid/openrecovery, there is a backwards compatibility to restore the old backups)<br><br />
- ability to create compressed backups (and autoreboot when done)<br><br />
- better nandroid menu<br><br />
- menus wrap around<br><br />
- theming for the recovery (3 themes included, to apply just rename the "res.*" folder to "res"); color settings can be manipulated in the ui.prop file under the res folder)<br><br />
- new commands for menu (tag, label, break)<br><br />
- scripts (command "shell") are able to show menu interactively when requesting user feedback (sample included)<br><br />
<br />
===Version 1.14===<br />
Changes<br><br />
- UI<br><br />
- switch.sh is separated (menu creation is in init_recovery.sh and called later by the recovery)<br><br />
- Volume keys and Camera key can be used to navigate in Open Recovery<br><br />
<br />
===Version 1.12d===<br />
Bugfixes<br><br />
- wipe commands working properly<br><br />
<br><br />
Changes<br><br />
- Bash Settings menu, to enable/disable coloured output (preset to disabled), this is persistent settings, it will last through reboots<br><br />
<br><br />
Features<br><br />
- ability to wipe dalvik-cache only (via script)<br><br />
<br />
===Version 1.12c===<br />
Bugfixes<br><br />
- reboot command is working properly<br><br />
- the content of the sdcard is no longer changed when running, everything is being copied into the ramdisk<br><br />
- minor fixes<br><br />
<br><br />
Changes<br><br />
- removed the 'init' command, instead uses 'scripted_menu'<br><br />
- adbd uses bash (interactively) instead of sh<br><br />
- payload installs also bash and toolbox<br><br />
- different the menu system (deprecated 'init' command, used), each menu must be generated from a script (notes later)<br><br />
- added init folder, scripts (with extension *.sh) are ran there on startup of the open recovery.<br><br />
- the diode is blinking in blue instead of red.<br><br />
<br><br />
Features<br><br />
- the recovery prints the output of the scripts / programs (prints their stdout)<br><br />
- application menu (described later)<br><br />
- new su and SuperUser.apk by ChainsDD<br><br />
- if sdcard has ext2 partition, it is noted in fstab under "/sddata" (the module is inserted automatically)<br><br />
<br />
===Version 1.05===<br />
Bugfixes<br><br />
- fixed a bug in payload making it dependant on the system<br><br />
- there is now nothing in the /system folder when unmounted<br><br />
- toolbox linked statically<br><br />
- busybox now installs symlinks, instead of copying itself<br><br />
- fixed a bug in adb about the shell being in /sbin/sh instead of /system/bin/sh<br><br />
- cleaned up, removed unecessary libraries and binaries<br><br />
- switch.sh now initializes the Open Recovery completely, no other script is used for initialization<br><br />
- permissions set correctly<br><br />
<br><br />
Features<br><br />
- added option to wipe<br><br />
- menu's now have header (the menu file structure has been changed)<br><br />
- added the possibility to run scripts, with .*sh extension located in scripts folder under OpenRecovery folder (shell is /sbin/sh or /sbin/bash)<br><br />
<br />
===Version 1.02===<br />
- fixed root install<br />
<br />
The recovery contains an update.zip with payload, which doesn't do anything else than restarts to the open recovery. All the files for OpenRecovery are under the OpenRecovery folder under the root of the sdcard. The payload installs busybox to /sbin runs the "switch.sh" under the bin folder in open recovery. <br />
====Menu System====<br />
<br />
The menu for the Open Recovery is created dynamically. The files must be created inside "/menu" folder by scripts, which can either be specified (if the menu is scripted_menu) or created by a *.sh script in /sdcard/OpenRecovery/init where the scripts are executed at startup. A menu creating script has to create a *.menu file inside the /menu folder. If the menu is supposed to be created on startup and not modified, place the script into /init folder, otherwise use "scripted_menu" item, where the script is ran right before the menu is created. sdcard, system and data partitions are mounted when the scripts are ran. A typical example for "scripted_menu" item is under the tutorial for application menu. For application menu see lower section. The structure of the menu file is different from the CustomUpdate by mankind:<br />
First line is the menu name (normal string), then use the following structure:<br><br />
"item name:type:argument"<br><br />
- item name is what is seen in the menu<br><br />
- type: type of the command (described later)<br><br />
- argument: argument passed to the command (file, or anything else; if empty, put "*" there, otherwise the item will be discarded)<br><br />
<br />
===Commands===<br />
<br />
- reboot: reboots the phone<br><br />
- shell: calls a file specified in arguments (default path is to /bin, if not specified)<br><br />
- menu: opens another menu file (specified in argument), if the argument is "..", it returns to up one level meu<br><br />
- scripted_menu: argument is in format "menu file:menu script", the menu script is called with variable MENU_FILE containing the menu name (default path for the script is to /bin, if not specified)<br><br />
- update: applies an update *.zip file, specified in argument (format SDCARD:$path_to_the_file_in_sdcard)<br><br />
- wipe_data: factory reset<br><br />
- wipe_cahce: wipe cache<br><br />
<br><br />
The menu is refreshed (the script is called if the menu is scripted) on a menu change, applying an update or running a script. Whenever a script is ran, system, data and sdcard is mounted.<br><br />
<br />
===Application menu===<br />
<br />
Application menu is designed for anything that is run on the startup and can malfunction under any circumstances. Here is one example - suppose you have a mount on font in the startup. You'll have something like this in your startup script:<br />
<pre><br />
mount -o bind /system/myfonts/segoeui.ttf /system/fonts/DroidSans.ttf<br />
mount -o bind /system/myfonts/segoeuib.ttf /system/fonts/DroidSans-Bold.ttf<br />
</pre><br />
<br />
Well the idea is that you add a condition to the script, to run only under some circumstances, like:<br />
<br />
<pre><br />
if [ ! -f /system/switch/.nocustomfont ]; then<br />
mount -o bind /system/myfonts/segoeui.ttf /system/fonts/DroidSans.ttf<br />
mount -o bind /system/myfonts/segoeuib.ttf /system/fonts/DroidSans-Bold.ttf<br />
fi<br />
</pre><br />
<br />
which mounts the font only when /system/switch/.nocustomfont is not existing. If you want this controlable from the recovery, you register in into the application menu this way: all *.sh scripts in /app (where /sdcard/OpenRecovery/app is copied) are called at startup. They are passed variable "APP_MENU_FILE", which is the name of the used menu file (preinitalized). The script will look like this:<br />
<br />
<pre><br />
#!/sbin/sh<br />
<br />
#create the menu item<br />
echo "Custom Font:scripted_menu:custfont.menu:/app/custfont/menu.sh" >> "$APP_MENU_FILE"<br />
</pre><br />
<br />
Since the scripts are in /app and not /bin, use absolute path. This will add an item to the applications menu, now we need a menu when it is selected, which is the "/app/custfont/menu.sh":<br />
<br />
<pre><br />
#!/sbin/sh<br />
<br />
if [ -f /system/switch/.nocustomfont ]; then<br />
# menu name - custom font is disabled<br />
echo "Custom Font (Disabled)" > "$MENU_FILE"<br />
# go to upper level menu<br />
echo "Go Back:menu:.." >> "$MENU_FILE"<br />
# enable it<br />
echo "Enable:shell:/app/custfont/enable.sh" >> "$MENU_FILE"<br />
else<br />
# menu name - custom font is enabled<br />
echo "Custom Font (Enabled)" > "$MENU_FILE"<br />
# go to upper level menu<br />
echo "Go Back:menu:.." >> "$MENU_FILE"<br />
# disable it<br />
echo "Disable:shell:/app/custfont/disable.sh" >> "$MENU_FILE"<br />
fi<br />
</pre><br />
Notice the shells are in /sbin, so use /sbin/sh (or /sbin/bash). The script checks if the switch is on or off and generates the menu accordingly. Since the menu is refreshed each time the script is run, it will always submit the correct option. The "enable.sh" simply touches the file and "disable.sh" just deletes it.<br />
<br />
===Download===<br />
Binaries: [[http://rapidshare.com/files/414530880/OpenRecovery_v1_37_SHOLS.rar.html Open Recovery 1.37 for Milestone]], [[http://rapidshare.com/files/414925211/OpenRecovery_v1_37_STCU.rar.html Open Recovery 1.37 for Sholes Tablet]]<br><br />
Source: [[http://rapidshare.com/files/414696074/OpenRecovery_v1_37_src.tar.gz.html Open Recovery 1.37 source]]<br><br />
<br />
===Support forum===<br />
[[http://www.modmymobile.com/forums/showthread.php?t=531599 ModMyMobile]]</div>Skrilax CZhttp://droid-developers.org/wiki/Open_recoveryOpen recovery2010-08-24T21:19:32Z<p>Skrilax CZ: /* Download & Installation (MILESTONE) */</p>
<hr />
<div>===== Open Recovery =====<br />
<br />
Developed by Skrilax_CZ.<br><br />
Credit for mankind (from alldroid) for the CustomUpdate, on which this recovery is based,<br><br />
credit for poseidon (also from alldroid) for ADBRecovery,<br><br />
credit for koush for mtd-utils and nandroid (uses script based on it),<br><br />
credit for nadlabak for keyboard layout change script.<br><br />
Current version 1.37 [08/23/2010]<br />
<br />
====Features====<br />
- on-phone console (limited) - MILESTONE ONLY!<br><br />
- rooting the phone from menu (using ChainsDD su and SuperUser.apk (version 2.2.2))<br><br />
- nandroid backup/restore from menu<br><br />
- apply update *.zip files from menu (located in OpenRecovery/updates under the sdcard root folder, there is a sample one (just unpacks a file named "babble" to /system), no signatures are needed :)<br><br />
- wipe data (factory reset)<br><br />
- wipe cache<br><br />
- wipe dalvik-cache<br><br />
- adb in recovery, using bash shell<br><br />
- run a script<br><br />
- recovery options for applications<br><br />
<br />
The open recovery files are located under the OpenRecovery folder under the root of the sd card. The own update *.zip files are under the "updates" folder, sample one is included. The scripts must have *.sh extension and reside under the "scripts" folder. The recovery contains an update.zip with payload, which doesn't do anything else than restarts to the open recovery. All the files for OpenRecovery are under the OpenRecovery folder under the root of the sdcard. The payload installs busybox to /sbin runs the "switch.sh" under the bin folder in open recovery. The initial menu file is in OpenRecovery/menu/init.menu under sdcard root.<br />
<br />
====Download & Installation (MILESTONE)====<br />
1) You need to have the vulnerable recovery installed.<br><br />
2) Download the archive and unpack it to the root folder of the sdcard.<br><br />
<br />
====Usage (MILESTONE)====<br />
1) Reboot into recovery (hold 'X' button on bootloader 90.78, on others hold camera button; until you see triangle; then press camera + volume up)<br><br />
2) Apply the update.zip<br><br />
3) You are now in Open Recovery<br><br />
<br />
====Download & Installation (XT701):====<br />
1) Download the archive and unpack it.<br><br />
2) Either flash the sbf file using RSD Lite (preffered, recommended version 4.6+), or flash using the flash_image the *.img file to recovery partition.<br><br />
3) Unpack the "OpenRecovery" folder and "OpenRecovery.zip" to the root folder of the sdcard.<br><br />
<br />
====Usage (XT701):====<br />
1) Reboot into recovery (hold camera button; until you see triangle; then press camera + volume up)<br><br />
2) If no error occurs, you're now in Open Recovery. If error occurs you're in Open Recovery Lite.<br><br />
<br />
====Changelog====<br />
<br />
===Version 1.37===<br />
Bugfixes<br><br />
- fixed nandroid restore not properly restoring yaffs2 partitions in old format<br><br />
- fixed nandroid restore not restoring compressed backups<br><br />
- fixed nandroid backup not taking md5 checksums<br><br />
<br><br />
Changes<br><br />
- console buffers up to 1000 lats printed lines (extended from 200)<br><br />
<br />
===Version 1.36===<br />
Bugfixes<br><br />
- fixed nandroid when doing "Backup All" and not having apps2sd; which would fail complaining that /sddata could not be mounted<br><br />
(Ticking all partitions in the menu and selecting "Backup Selected" was working properly and the backup has been done correctly.)<br><br />
- fixed console cursor blinking<br><br />
- squirtle theme fixed<br><br />
<br />
===Version 1.35===<br><br />
Features<br><br />
- update.zip can be in new OR format using a shell script (described lower, there are samples of each one)<br><br />
- console has now signalling implemented (menu key = CTRL)<br><br />
- console has arrow keys implemented<br><br />
- console has support for displaying front colors; thus it is no longer needed to disable bash colors<br><br />
- console supports calling clear<br><br />
<br><br />
Changes<br><br />
- recovery binary will exit if not run by init (to prevent running it from adb or console)<br><br />
- scripts in scripts folder are dos2unixed (on -FuFu- advice)<br><br />
- switch files (.nobashcolors, .kdb_qwertz, etc.) are now located in /etc<br><br />
- manual settings of the timezone (/etc/timezone), applied if the env. variable TZ doesn't exist<br><br />
- update.zip no longer need to have the "update-binary", a default one is used if not found<br><br />
<br><br />
Bugfixes<br><br />
- fixed unyaffs not restoring sticky bit / suid / sgid<br><br />
- fixed displaying long menus (it will not be truncated, instead a scrollbar appears)<br><br />
- fixed error in switch.sh for XT701<br><br />
- fixed color24.console.front in the themes -> default is supposed to be #E5E5E5<br><br />
<br />
===Version 1.32===<br />
Features<br><br />
- pressing MENU + ALT + C forcibly quits the console<br><br />
<br><br />
Changes<br><br />
- ui.prop contains more options<br><br />
- when applying any update.zip package, there is a confirmation menu<br><br />
- cursor in console blinks<br><br />
<br><br />
Bugfixes<br><br />
- Error message when ext2 partition on sdcard doesn't exist fixed<br><br />
- fixed the bug with imenu when ran more than once in one script<br><br />
<br />
===Version 1.30a===<br />
Bugfixes<br><br />
- Console layout for QWERTZ / AZERTY fixed<br><br />
<br />
===Version 1.30===<br />
Features<br><br />
- on-phone console<br><br />
- keyboard layout changer included<br><br />
- new nandroid, with support of backing up and restoring ext2 partition on sdcard (Note: uses new format of the backup, new backups are located in /sdcard/nandroid/openrecovery, there is a backwards compatibility to restore the old backups)<br><br />
- ability to create compressed backups (and autoreboot when done)<br><br />
- better nandroid menu<br><br />
- menus wrap around<br><br />
- theming for the recovery (3 themes included, to apply just rename the "res.*" folder to "res"); color settings can be manipulated in the ui.prop file under the res folder)<br><br />
- new commands for menu (tag, label, break)<br><br />
- scripts (command "shell") are able to show menu interactively when requesting user feedback (sample included)<br><br />
<br />
===Version 1.14===<br />
Changes<br><br />
- UI<br><br />
- switch.sh is separated (menu creation is in init_recovery.sh and called later by the recovery)<br><br />
- Volume keys and Camera key can be used to navigate in Open Recovery<br><br />
<br />
===Version 1.12d===<br />
Bugfixes<br><br />
- wipe commands working properly<br><br />
<br><br />
Changes<br><br />
- Bash Settings menu, to enable/disable coloured output (preset to disabled), this is persistent settings, it will last through reboots<br><br />
<br><br />
Features<br><br />
- ability to wipe dalvik-cache only (via script)<br><br />
<br />
===Version 1.12c===<br />
Bugfixes<br><br />
- reboot command is working properly<br><br />
- the content of the sdcard is no longer changed when running, everything is being copied into the ramdisk<br><br />
- minor fixes<br><br />
<br><br />
Changes<br><br />
- removed the 'init' command, instead uses 'scripted_menu'<br><br />
- adbd uses bash (interactively) instead of sh<br><br />
- payload installs also bash and toolbox<br><br />
- different the menu system (deprecated 'init' command, used), each menu must be generated from a script (notes later)<br><br />
- added init folder, scripts (with extension *.sh) are ran there on startup of the open recovery.<br><br />
- the diode is blinking in blue instead of red.<br><br />
<br><br />
Features<br><br />
- the recovery prints the output of the scripts / programs (prints their stdout)<br><br />
- application menu (described later)<br><br />
- new su and SuperUser.apk by ChainsDD<br><br />
- if sdcard has ext2 partition, it is noted in fstab under "/sddata" (the module is inserted automatically)<br><br />
<br />
===Version 1.05===<br />
Bugfixes<br><br />
- fixed a bug in payload making it dependant on the system<br><br />
- there is now nothing in the /system folder when unmounted<br><br />
- toolbox linked statically<br><br />
- busybox now installs symlinks, instead of copying itself<br><br />
- fixed a bug in adb about the shell being in /sbin/sh instead of /system/bin/sh<br><br />
- cleaned up, removed unecessary libraries and binaries<br><br />
- switch.sh now initializes the Open Recovery completely, no other script is used for initialization<br><br />
- permissions set correctly<br><br />
<br><br />
Features<br><br />
- added option to wipe<br><br />
- menu's now have header (the menu file structure has been changed)<br><br />
- added the possibility to run scripts, with .*sh extension located in scripts folder under OpenRecovery folder (shell is /sbin/sh or /sbin/bash)<br><br />
<br />
===Version 1.02===<br />
- fixed root install<br />
<br />
The recovery contains an update.zip with payload, which doesn't do anything else than restarts to the open recovery. All the files for OpenRecovery are under the OpenRecovery folder under the root of the sdcard. The payload installs busybox to /sbin runs the "switch.sh" under the bin folder in open recovery. <br />
====Menu System====<br />
<br />
The menu for the Open Recovery is created dynamically. The files must be created inside "/menu" folder by scripts, which can either be specified (if the menu is scripted_menu) or created by a *.sh script in /sdcard/OpenRecovery/init where the scripts are executed at startup. A menu creating script has to create a *.menu file inside the /menu folder. If the menu is supposed to be created on startup and not modified, place the script into /init folder, otherwise use "scripted_menu" item, where the script is ran right before the menu is created. sdcard, system and data partitions are mounted when the scripts are ran. A typical example for "scripted_menu" item is under the tutorial for application menu. For application menu see lower section. The structure of the menu file is different from the CustomUpdate by mankind:<br />
First line is the menu name (normal string), then use the following structure:<br><br />
"item name:type:argument"<br><br />
- item name is what is seen in the menu<br><br />
- type: type of the command (described later)<br><br />
- argument: argument passed to the command (file, or anything else; if empty, put "*" there, otherwise the item will be discarded)<br><br />
<br />
===Commands===<br />
<br />
- reboot: reboots the phone<br><br />
- shell: calls a file specified in arguments (default path is to /bin, if not specified)<br><br />
- menu: opens another menu file (specified in argument), if the argument is "..", it returns to up one level meu<br><br />
- scripted_menu: argument is in format "menu file:menu script", the menu script is called with variable MENU_FILE containing the menu name (default path for the script is to /bin, if not specified)<br><br />
- update: applies an update *.zip file, specified in argument (format SDCARD:$path_to_the_file_in_sdcard)<br><br />
- wipe_data: factory reset<br><br />
- wipe_cahce: wipe cache<br><br />
<br><br />
The menu is refreshed (the script is called if the menu is scripted) on a menu change, applying an update or running a script. Whenever a script is ran, system, data and sdcard is mounted.<br><br />
<br />
===Application menu===<br />
<br />
Application menu is designed for anything that is run on the startup and can malfunction under any circumstances. Here is one example - suppose you have a mount on font in the startup. You'll have something like this in your startup script:<br />
<pre><br />
mount -o bind /system/myfonts/segoeui.ttf /system/fonts/DroidSans.ttf<br />
mount -o bind /system/myfonts/segoeuib.ttf /system/fonts/DroidSans-Bold.ttf<br />
</pre><br />
<br />
Well the idea is that you add a condition to the script, to run only under some circumstances, like:<br />
<br />
<pre><br />
if [ ! -f /system/switch/.nocustomfont ]; then<br />
mount -o bind /system/myfonts/segoeui.ttf /system/fonts/DroidSans.ttf<br />
mount -o bind /system/myfonts/segoeuib.ttf /system/fonts/DroidSans-Bold.ttf<br />
fi<br />
</pre><br />
<br />
which mounts the font only when /system/switch/.nocustomfont is not existing. If you want this controlable from the recovery, you register in into the application menu this way: all *.sh scripts in /app (where /sdcard/OpenRecovery/app is copied) are called at startup. They are passed variable "APP_MENU_FILE", which is the name of the used menu file (preinitalized). The script will look like this:<br />
<br />
<pre><br />
#!/sbin/sh<br />
<br />
#create the menu item<br />
echo "Custom Font:scripted_menu:custfont.menu:/app/custfont/menu.sh" >> "$APP_MENU_FILE"<br />
</pre><br />
<br />
Since the scripts are in /app and not /bin, use absolute path. This will add an item to the applications menu, now we need a menu when it is selected, which is the "/app/custfont/menu.sh":<br />
<br />
<pre><br />
#!/sbin/sh<br />
<br />
if [ -f /system/switch/.nocustomfont ]; then<br />
# menu name - custom font is disabled<br />
echo "Custom Font (Disabled)" > "$MENU_FILE"<br />
# go to upper level menu<br />
echo "Go Back:menu:.." >> "$MENU_FILE"<br />
# enable it<br />
echo "Enable:shell:/app/custfont/enable.sh" >> "$MENU_FILE"<br />
else<br />
# menu name - custom font is enabled<br />
echo "Custom Font (Enabled)" > "$MENU_FILE"<br />
# go to upper level menu<br />
echo "Go Back:menu:.." >> "$MENU_FILE"<br />
# disable it<br />
echo "Disable:shell:/app/custfont/disable.sh" >> "$MENU_FILE"<br />
fi<br />
</pre><br />
Notice the shells are in /sbin, so use /sbin/sh (or /sbin/bash). The script checks if the switch is on or off and generates the menu accordingly. Since the menu is refreshed each time the script is run, it will always submit the correct option. The "enable.sh" simply touches the file and "disable.sh" just deletes it.<br />
<br />
===Download===<br />
Binaries: [[http://rapidshare.com/files/414530880/OpenRecovery_v1_37_SHOLS.rar.html Open Recovery 1.37 for Milestone]], [[http://rapidshare.com/files/414925211/OpenRecovery_v1_37_STCU.rar.html Open Recovery 1.37 for Sholes Tablet]]<br><br />
Source: [[http://rapidshare.com/files/414696074/OpenRecovery_v1_37_src.tar.gz.html Open Recovery 1.37 source]]<br><br />
<br />
===Support forum===<br />
[[http://www.modmymobile.com/forums/showthread.php?t=531599 ModMyMobile]]</div>Skrilax CZhttp://droid-developers.org/wiki/Open_recoveryOpen recovery2010-08-24T21:19:20Z<p>Skrilax CZ: /* Usage (MILESTONE) */</p>
<hr />
<div>===== Open Recovery =====<br />
<br />
Developed by Skrilax_CZ.<br><br />
Credit for mankind (from alldroid) for the CustomUpdate, on which this recovery is based,<br><br />
credit for poseidon (also from alldroid) for ADBRecovery,<br><br />
credit for koush for mtd-utils and nandroid (uses script based on it),<br><br />
credit for nadlabak for keyboard layout change script.<br><br />
Current version 1.37 [08/23/2010]<br />
<br />
====Features====<br />
- on-phone console (limited) - MILESTONE ONLY!<br><br />
- rooting the phone from menu (using ChainsDD su and SuperUser.apk (version 2.2.2))<br><br />
- nandroid backup/restore from menu<br><br />
- apply update *.zip files from menu (located in OpenRecovery/updates under the sdcard root folder, there is a sample one (just unpacks a file named "babble" to /system), no signatures are needed :)<br><br />
- wipe data (factory reset)<br><br />
- wipe cache<br><br />
- wipe dalvik-cache<br><br />
- adb in recovery, using bash shell<br><br />
- run a script<br><br />
- recovery options for applications<br><br />
<br />
The open recovery files are located under the OpenRecovery folder under the root of the sd card. The own update *.zip files are under the "updates" folder, sample one is included. The scripts must have *.sh extension and reside under the "scripts" folder. The recovery contains an update.zip with payload, which doesn't do anything else than restarts to the open recovery. All the files for OpenRecovery are under the OpenRecovery folder under the root of the sdcard. The payload installs busybox to /sbin runs the "switch.sh" under the bin folder in open recovery. The initial menu file is in OpenRecovery/menu/init.menu under sdcard root.<br />
<br />
===Download & Installation (MILESTONE)===<br />
1) You need to have the vulnerable recovery installed.<br><br />
2) Download the archive and unpack it to the root folder of the sdcard.<br><br />
<br />
====Usage (MILESTONE)====<br />
1) Reboot into recovery (hold 'X' button on bootloader 90.78, on others hold camera button; until you see triangle; then press camera + volume up)<br><br />
2) Apply the update.zip<br><br />
3) You are now in Open Recovery<br><br />
<br />
====Download & Installation (XT701):====<br />
1) Download the archive and unpack it.<br><br />
2) Either flash the sbf file using RSD Lite (preffered, recommended version 4.6+), or flash using the flash_image the *.img file to recovery partition.<br><br />
3) Unpack the "OpenRecovery" folder and "OpenRecovery.zip" to the root folder of the sdcard.<br><br />
<br />
====Usage (XT701):====<br />
1) Reboot into recovery (hold camera button; until you see triangle; then press camera + volume up)<br><br />
2) If no error occurs, you're now in Open Recovery. If error occurs you're in Open Recovery Lite.<br><br />
<br />
====Changelog====<br />
<br />
===Version 1.37===<br />
Bugfixes<br><br />
- fixed nandroid restore not properly restoring yaffs2 partitions in old format<br><br />
- fixed nandroid restore not restoring compressed backups<br><br />
- fixed nandroid backup not taking md5 checksums<br><br />
<br><br />
Changes<br><br />
- console buffers up to 1000 lats printed lines (extended from 200)<br><br />
<br />
===Version 1.36===<br />
Bugfixes<br><br />
- fixed nandroid when doing "Backup All" and not having apps2sd; which would fail complaining that /sddata could not be mounted<br><br />
(Ticking all partitions in the menu and selecting "Backup Selected" was working properly and the backup has been done correctly.)<br><br />
- fixed console cursor blinking<br><br />
- squirtle theme fixed<br><br />
<br />
===Version 1.35===<br><br />
Features<br><br />
- update.zip can be in new OR format using a shell script (described lower, there are samples of each one)<br><br />
- console has now signalling implemented (menu key = CTRL)<br><br />
- console has arrow keys implemented<br><br />
- console has support for displaying front colors; thus it is no longer needed to disable bash colors<br><br />
- console supports calling clear<br><br />
<br><br />
Changes<br><br />
- recovery binary will exit if not run by init (to prevent running it from adb or console)<br><br />
- scripts in scripts folder are dos2unixed (on -FuFu- advice)<br><br />
- switch files (.nobashcolors, .kdb_qwertz, etc.) are now located in /etc<br><br />
- manual settings of the timezone (/etc/timezone), applied if the env. variable TZ doesn't exist<br><br />
- update.zip no longer need to have the "update-binary", a default one is used if not found<br><br />
<br><br />
Bugfixes<br><br />
- fixed unyaffs not restoring sticky bit / suid / sgid<br><br />
- fixed displaying long menus (it will not be truncated, instead a scrollbar appears)<br><br />
- fixed error in switch.sh for XT701<br><br />
- fixed color24.console.front in the themes -> default is supposed to be #E5E5E5<br><br />
<br />
===Version 1.32===<br />
Features<br><br />
- pressing MENU + ALT + C forcibly quits the console<br><br />
<br><br />
Changes<br><br />
- ui.prop contains more options<br><br />
- when applying any update.zip package, there is a confirmation menu<br><br />
- cursor in console blinks<br><br />
<br><br />
Bugfixes<br><br />
- Error message when ext2 partition on sdcard doesn't exist fixed<br><br />
- fixed the bug with imenu when ran more than once in one script<br><br />
<br />
===Version 1.30a===<br />
Bugfixes<br><br />
- Console layout for QWERTZ / AZERTY fixed<br><br />
<br />
===Version 1.30===<br />
Features<br><br />
- on-phone console<br><br />
- keyboard layout changer included<br><br />
- new nandroid, with support of backing up and restoring ext2 partition on sdcard (Note: uses new format of the backup, new backups are located in /sdcard/nandroid/openrecovery, there is a backwards compatibility to restore the old backups)<br><br />
- ability to create compressed backups (and autoreboot when done)<br><br />
- better nandroid menu<br><br />
- menus wrap around<br><br />
- theming for the recovery (3 themes included, to apply just rename the "res.*" folder to "res"); color settings can be manipulated in the ui.prop file under the res folder)<br><br />
- new commands for menu (tag, label, break)<br><br />
- scripts (command "shell") are able to show menu interactively when requesting user feedback (sample included)<br><br />
<br />
===Version 1.14===<br />
Changes<br><br />
- UI<br><br />
- switch.sh is separated (menu creation is in init_recovery.sh and called later by the recovery)<br><br />
- Volume keys and Camera key can be used to navigate in Open Recovery<br><br />
<br />
===Version 1.12d===<br />
Bugfixes<br><br />
- wipe commands working properly<br><br />
<br><br />
Changes<br><br />
- Bash Settings menu, to enable/disable coloured output (preset to disabled), this is persistent settings, it will last through reboots<br><br />
<br><br />
Features<br><br />
- ability to wipe dalvik-cache only (via script)<br><br />
<br />
===Version 1.12c===<br />
Bugfixes<br><br />
- reboot command is working properly<br><br />
- the content of the sdcard is no longer changed when running, everything is being copied into the ramdisk<br><br />
- minor fixes<br><br />
<br><br />
Changes<br><br />
- removed the 'init' command, instead uses 'scripted_menu'<br><br />
- adbd uses bash (interactively) instead of sh<br><br />
- payload installs also bash and toolbox<br><br />
- different the menu system (deprecated 'init' command, used), each menu must be generated from a script (notes later)<br><br />
- added init folder, scripts (with extension *.sh) are ran there on startup of the open recovery.<br><br />
- the diode is blinking in blue instead of red.<br><br />
<br><br />
Features<br><br />
- the recovery prints the output of the scripts / programs (prints their stdout)<br><br />
- application menu (described later)<br><br />
- new su and SuperUser.apk by ChainsDD<br><br />
- if sdcard has ext2 partition, it is noted in fstab under "/sddata" (the module is inserted automatically)<br><br />
<br />
===Version 1.05===<br />
Bugfixes<br><br />
- fixed a bug in payload making it dependant on the system<br><br />
- there is now nothing in the /system folder when unmounted<br><br />
- toolbox linked statically<br><br />
- busybox now installs symlinks, instead of copying itself<br><br />
- fixed a bug in adb about the shell being in /sbin/sh instead of /system/bin/sh<br><br />
- cleaned up, removed unecessary libraries and binaries<br><br />
- switch.sh now initializes the Open Recovery completely, no other script is used for initialization<br><br />
- permissions set correctly<br><br />
<br><br />
Features<br><br />
- added option to wipe<br><br />
- menu's now have header (the menu file structure has been changed)<br><br />
- added the possibility to run scripts, with .*sh extension located in scripts folder under OpenRecovery folder (shell is /sbin/sh or /sbin/bash)<br><br />
<br />
===Version 1.02===<br />
- fixed root install<br />
<br />
The recovery contains an update.zip with payload, which doesn't do anything else than restarts to the open recovery. All the files for OpenRecovery are under the OpenRecovery folder under the root of the sdcard. The payload installs busybox to /sbin runs the "switch.sh" under the bin folder in open recovery. <br />
====Menu System====<br />
<br />
The menu for the Open Recovery is created dynamically. The files must be created inside "/menu" folder by scripts, which can either be specified (if the menu is scripted_menu) or created by a *.sh script in /sdcard/OpenRecovery/init where the scripts are executed at startup. A menu creating script has to create a *.menu file inside the /menu folder. If the menu is supposed to be created on startup and not modified, place the script into /init folder, otherwise use "scripted_menu" item, where the script is ran right before the menu is created. sdcard, system and data partitions are mounted when the scripts are ran. A typical example for "scripted_menu" item is under the tutorial for application menu. For application menu see lower section. The structure of the menu file is different from the CustomUpdate by mankind:<br />
First line is the menu name (normal string), then use the following structure:<br><br />
"item name:type:argument"<br><br />
- item name is what is seen in the menu<br><br />
- type: type of the command (described later)<br><br />
- argument: argument passed to the command (file, or anything else; if empty, put "*" there, otherwise the item will be discarded)<br><br />
<br />
===Commands===<br />
<br />
- reboot: reboots the phone<br><br />
- shell: calls a file specified in arguments (default path is to /bin, if not specified)<br><br />
- menu: opens another menu file (specified in argument), if the argument is "..", it returns to up one level meu<br><br />
- scripted_menu: argument is in format "menu file:menu script", the menu script is called with variable MENU_FILE containing the menu name (default path for the script is to /bin, if not specified)<br><br />
- update: applies an update *.zip file, specified in argument (format SDCARD:$path_to_the_file_in_sdcard)<br><br />
- wipe_data: factory reset<br><br />
- wipe_cahce: wipe cache<br><br />
<br><br />
The menu is refreshed (the script is called if the menu is scripted) on a menu change, applying an update or running a script. Whenever a script is ran, system, data and sdcard is mounted.<br><br />
<br />
===Application menu===<br />
<br />
Application menu is designed for anything that is run on the startup and can malfunction under any circumstances. Here is one example - suppose you have a mount on font in the startup. You'll have something like this in your startup script:<br />
<pre><br />
mount -o bind /system/myfonts/segoeui.ttf /system/fonts/DroidSans.ttf<br />
mount -o bind /system/myfonts/segoeuib.ttf /system/fonts/DroidSans-Bold.ttf<br />
</pre><br />
<br />
Well the idea is that you add a condition to the script, to run only under some circumstances, like:<br />
<br />
<pre><br />
if [ ! -f /system/switch/.nocustomfont ]; then<br />
mount -o bind /system/myfonts/segoeui.ttf /system/fonts/DroidSans.ttf<br />
mount -o bind /system/myfonts/segoeuib.ttf /system/fonts/DroidSans-Bold.ttf<br />
fi<br />
</pre><br />
<br />
which mounts the font only when /system/switch/.nocustomfont is not existing. If you want this controlable from the recovery, you register in into the application menu this way: all *.sh scripts in /app (where /sdcard/OpenRecovery/app is copied) are called at startup. They are passed variable "APP_MENU_FILE", which is the name of the used menu file (preinitalized). The script will look like this:<br />
<br />
<pre><br />
#!/sbin/sh<br />
<br />
#create the menu item<br />
echo "Custom Font:scripted_menu:custfont.menu:/app/custfont/menu.sh" >> "$APP_MENU_FILE"<br />
</pre><br />
<br />
Since the scripts are in /app and not /bin, use absolute path. This will add an item to the applications menu, now we need a menu when it is selected, which is the "/app/custfont/menu.sh":<br />
<br />
<pre><br />
#!/sbin/sh<br />
<br />
if [ -f /system/switch/.nocustomfont ]; then<br />
# menu name - custom font is disabled<br />
echo "Custom Font (Disabled)" > "$MENU_FILE"<br />
# go to upper level menu<br />
echo "Go Back:menu:.." >> "$MENU_FILE"<br />
# enable it<br />
echo "Enable:shell:/app/custfont/enable.sh" >> "$MENU_FILE"<br />
else<br />
# menu name - custom font is enabled<br />
echo "Custom Font (Enabled)" > "$MENU_FILE"<br />
# go to upper level menu<br />
echo "Go Back:menu:.." >> "$MENU_FILE"<br />
# disable it<br />
echo "Disable:shell:/app/custfont/disable.sh" >> "$MENU_FILE"<br />
fi<br />
</pre><br />
Notice the shells are in /sbin, so use /sbin/sh (or /sbin/bash). The script checks if the switch is on or off and generates the menu accordingly. Since the menu is refreshed each time the script is run, it will always submit the correct option. The "enable.sh" simply touches the file and "disable.sh" just deletes it.<br />
<br />
===Download===<br />
Binaries: [[http://rapidshare.com/files/414530880/OpenRecovery_v1_37_SHOLS.rar.html Open Recovery 1.37 for Milestone]], [[http://rapidshare.com/files/414925211/OpenRecovery_v1_37_STCU.rar.html Open Recovery 1.37 for Sholes Tablet]]<br><br />
Source: [[http://rapidshare.com/files/414696074/OpenRecovery_v1_37_src.tar.gz.html Open Recovery 1.37 source]]<br><br />
<br />
===Support forum===<br />
[[http://www.modmymobile.com/forums/showthread.php?t=531599 ModMyMobile]]</div>Skrilax CZhttp://droid-developers.org/wiki/Open_recoveryOpen recovery2010-08-24T21:18:39Z<p>Skrilax CZ: /* Usage */</p>
<hr />
<div>===== Open Recovery =====<br />
<br />
Developed by Skrilax_CZ.<br><br />
Credit for mankind (from alldroid) for the CustomUpdate, on which this recovery is based,<br><br />
credit for poseidon (also from alldroid) for ADBRecovery,<br><br />
credit for koush for mtd-utils and nandroid (uses script based on it),<br><br />
credit for nadlabak for keyboard layout change script.<br><br />
Current version 1.37 [08/23/2010]<br />
<br />
====Features====<br />
- on-phone console (limited) - MILESTONE ONLY!<br><br />
- rooting the phone from menu (using ChainsDD su and SuperUser.apk (version 2.2.2))<br><br />
- nandroid backup/restore from menu<br><br />
- apply update *.zip files from menu (located in OpenRecovery/updates under the sdcard root folder, there is a sample one (just unpacks a file named "babble" to /system), no signatures are needed :)<br><br />
- wipe data (factory reset)<br><br />
- wipe cache<br><br />
- wipe dalvik-cache<br><br />
- adb in recovery, using bash shell<br><br />
- run a script<br><br />
- recovery options for applications<br><br />
<br />
The open recovery files are located under the OpenRecovery folder under the root of the sd card. The own update *.zip files are under the "updates" folder, sample one is included. The scripts must have *.sh extension and reside under the "scripts" folder. The recovery contains an update.zip with payload, which doesn't do anything else than restarts to the open recovery. All the files for OpenRecovery are under the OpenRecovery folder under the root of the sdcard. The payload installs busybox to /sbin runs the "switch.sh" under the bin folder in open recovery. The initial menu file is in OpenRecovery/menu/init.menu under sdcard root.<br />
<br />
===Download & Installation (MILESTONE)===<br />
1) You need to have the vulnerable recovery installed.<br><br />
2) Download the archive and unpack it to the root folder of the sdcard.<br><br />
<br />
===Usage (MILESTONE)===<br />
1) Reboot into recovery (hold 'X' button on bootloader 90.78, on others hold camera button; until you see triangle; then press camera + volume up)<br><br />
2) Apply the update.zip<br><br />
3) You are now in Open Recovery<br><br />
<br />
====Download & Installation (XT701):====<br />
1) Download the archive and unpack it.<br><br />
2) Either flash the sbf file using RSD Lite (preffered, recommended version 4.6+), or flash using the flash_image the *.img file to recovery partition.<br><br />
3) Unpack the "OpenRecovery" folder and "OpenRecovery.zip" to the root folder of the sdcard.<br><br />
<br />
====Usage (XT701):====<br />
1) Reboot into recovery (hold camera button; until you see triangle; then press camera + volume up)<br><br />
2) If no error occurs, you're now in Open Recovery. If error occurs you're in Open Recovery Lite.<br><br />
<br />
====Changelog====<br />
<br />
===Version 1.37===<br />
Bugfixes<br><br />
- fixed nandroid restore not properly restoring yaffs2 partitions in old format<br><br />
- fixed nandroid restore not restoring compressed backups<br><br />
- fixed nandroid backup not taking md5 checksums<br><br />
<br><br />
Changes<br><br />
- console buffers up to 1000 lats printed lines (extended from 200)<br><br />
<br />
===Version 1.36===<br />
Bugfixes<br><br />
- fixed nandroid when doing "Backup All" and not having apps2sd; which would fail complaining that /sddata could not be mounted<br><br />
(Ticking all partitions in the menu and selecting "Backup Selected" was working properly and the backup has been done correctly.)<br><br />
- fixed console cursor blinking<br><br />
- squirtle theme fixed<br><br />
<br />
===Version 1.35===<br><br />
Features<br><br />
- update.zip can be in new OR format using a shell script (described lower, there are samples of each one)<br><br />
- console has now signalling implemented (menu key = CTRL)<br><br />
- console has arrow keys implemented<br><br />
- console has support for displaying front colors; thus it is no longer needed to disable bash colors<br><br />
- console supports calling clear<br><br />
<br><br />
Changes<br><br />
- recovery binary will exit if not run by init (to prevent running it from adb or console)<br><br />
- scripts in scripts folder are dos2unixed (on -FuFu- advice)<br><br />
- switch files (.nobashcolors, .kdb_qwertz, etc.) are now located in /etc<br><br />
- manual settings of the timezone (/etc/timezone), applied if the env. variable TZ doesn't exist<br><br />
- update.zip no longer need to have the "update-binary", a default one is used if not found<br><br />
<br><br />
Bugfixes<br><br />
- fixed unyaffs not restoring sticky bit / suid / sgid<br><br />
- fixed displaying long menus (it will not be truncated, instead a scrollbar appears)<br><br />
- fixed error in switch.sh for XT701<br><br />
- fixed color24.console.front in the themes -> default is supposed to be #E5E5E5<br><br />
<br />
===Version 1.32===<br />
Features<br><br />
- pressing MENU + ALT + C forcibly quits the console<br><br />
<br><br />
Changes<br><br />
- ui.prop contains more options<br><br />
- when applying any update.zip package, there is a confirmation menu<br><br />
- cursor in console blinks<br><br />
<br><br />
Bugfixes<br><br />
- Error message when ext2 partition on sdcard doesn't exist fixed<br><br />
- fixed the bug with imenu when ran more than once in one script<br><br />
<br />
===Version 1.30a===<br />
Bugfixes<br><br />
- Console layout for QWERTZ / AZERTY fixed<br><br />
<br />
===Version 1.30===<br />
Features<br><br />
- on-phone console<br><br />
- keyboard layout changer included<br><br />
- new nandroid, with support of backing up and restoring ext2 partition on sdcard (Note: uses new format of the backup, new backups are located in /sdcard/nandroid/openrecovery, there is a backwards compatibility to restore the old backups)<br><br />
- ability to create compressed backups (and autoreboot when done)<br><br />
- better nandroid menu<br><br />
- menus wrap around<br><br />
- theming for the recovery (3 themes included, to apply just rename the "res.*" folder to "res"); color settings can be manipulated in the ui.prop file under the res folder)<br><br />
- new commands for menu (tag, label, break)<br><br />
- scripts (command "shell") are able to show menu interactively when requesting user feedback (sample included)<br><br />
<br />
===Version 1.14===<br />
Changes<br><br />
- UI<br><br />
- switch.sh is separated (menu creation is in init_recovery.sh and called later by the recovery)<br><br />
- Volume keys and Camera key can be used to navigate in Open Recovery<br><br />
<br />
===Version 1.12d===<br />
Bugfixes<br><br />
- wipe commands working properly<br><br />
<br><br />
Changes<br><br />
- Bash Settings menu, to enable/disable coloured output (preset to disabled), this is persistent settings, it will last through reboots<br><br />
<br><br />
Features<br><br />
- ability to wipe dalvik-cache only (via script)<br><br />
<br />
===Version 1.12c===<br />
Bugfixes<br><br />
- reboot command is working properly<br><br />
- the content of the sdcard is no longer changed when running, everything is being copied into the ramdisk<br><br />
- minor fixes<br><br />
<br><br />
Changes<br><br />
- removed the 'init' command, instead uses 'scripted_menu'<br><br />
- adbd uses bash (interactively) instead of sh<br><br />
- payload installs also bash and toolbox<br><br />
- different the menu system (deprecated 'init' command, used), each menu must be generated from a script (notes later)<br><br />
- added init folder, scripts (with extension *.sh) are ran there on startup of the open recovery.<br><br />
- the diode is blinking in blue instead of red.<br><br />
<br><br />
Features<br><br />
- the recovery prints the output of the scripts / programs (prints their stdout)<br><br />
- application menu (described later)<br><br />
- new su and SuperUser.apk by ChainsDD<br><br />
- if sdcard has ext2 partition, it is noted in fstab under "/sddata" (the module is inserted automatically)<br><br />
<br />
===Version 1.05===<br />
Bugfixes<br><br />
- fixed a bug in payload making it dependant on the system<br><br />
- there is now nothing in the /system folder when unmounted<br><br />
- toolbox linked statically<br><br />
- busybox now installs symlinks, instead of copying itself<br><br />
- fixed a bug in adb about the shell being in /sbin/sh instead of /system/bin/sh<br><br />
- cleaned up, removed unecessary libraries and binaries<br><br />
- switch.sh now initializes the Open Recovery completely, no other script is used for initialization<br><br />
- permissions set correctly<br><br />
<br><br />
Features<br><br />
- added option to wipe<br><br />
- menu's now have header (the menu file structure has been changed)<br><br />
- added the possibility to run scripts, with .*sh extension located in scripts folder under OpenRecovery folder (shell is /sbin/sh or /sbin/bash)<br><br />
<br />
===Version 1.02===<br />
- fixed root install<br />
<br />
The recovery contains an update.zip with payload, which doesn't do anything else than restarts to the open recovery. All the files for OpenRecovery are under the OpenRecovery folder under the root of the sdcard. The payload installs busybox to /sbin runs the "switch.sh" under the bin folder in open recovery. <br />
====Menu System====<br />
<br />
The menu for the Open Recovery is created dynamically. The files must be created inside "/menu" folder by scripts, which can either be specified (if the menu is scripted_menu) or created by a *.sh script in /sdcard/OpenRecovery/init where the scripts are executed at startup. A menu creating script has to create a *.menu file inside the /menu folder. If the menu is supposed to be created on startup and not modified, place the script into /init folder, otherwise use "scripted_menu" item, where the script is ran right before the menu is created. sdcard, system and data partitions are mounted when the scripts are ran. A typical example for "scripted_menu" item is under the tutorial for application menu. For application menu see lower section. The structure of the menu file is different from the CustomUpdate by mankind:<br />
First line is the menu name (normal string), then use the following structure:<br><br />
"item name:type:argument"<br><br />
- item name is what is seen in the menu<br><br />
- type: type of the command (described later)<br><br />
- argument: argument passed to the command (file, or anything else; if empty, put "*" there, otherwise the item will be discarded)<br><br />
<br />
===Commands===<br />
<br />
- reboot: reboots the phone<br><br />
- shell: calls a file specified in arguments (default path is to /bin, if not specified)<br><br />
- menu: opens another menu file (specified in argument), if the argument is "..", it returns to up one level meu<br><br />
- scripted_menu: argument is in format "menu file:menu script", the menu script is called with variable MENU_FILE containing the menu name (default path for the script is to /bin, if not specified)<br><br />
- update: applies an update *.zip file, specified in argument (format SDCARD:$path_to_the_file_in_sdcard)<br><br />
- wipe_data: factory reset<br><br />
- wipe_cahce: wipe cache<br><br />
<br><br />
The menu is refreshed (the script is called if the menu is scripted) on a menu change, applying an update or running a script. Whenever a script is ran, system, data and sdcard is mounted.<br><br />
<br />
===Application menu===<br />
<br />
Application menu is designed for anything that is run on the startup and can malfunction under any circumstances. Here is one example - suppose you have a mount on font in the startup. You'll have something like this in your startup script:<br />
<pre><br />
mount -o bind /system/myfonts/segoeui.ttf /system/fonts/DroidSans.ttf<br />
mount -o bind /system/myfonts/segoeuib.ttf /system/fonts/DroidSans-Bold.ttf<br />
</pre><br />
<br />
Well the idea is that you add a condition to the script, to run only under some circumstances, like:<br />
<br />
<pre><br />
if [ ! -f /system/switch/.nocustomfont ]; then<br />
mount -o bind /system/myfonts/segoeui.ttf /system/fonts/DroidSans.ttf<br />
mount -o bind /system/myfonts/segoeuib.ttf /system/fonts/DroidSans-Bold.ttf<br />
fi<br />
</pre><br />
<br />
which mounts the font only when /system/switch/.nocustomfont is not existing. If you want this controlable from the recovery, you register in into the application menu this way: all *.sh scripts in /app (where /sdcard/OpenRecovery/app is copied) are called at startup. They are passed variable "APP_MENU_FILE", which is the name of the used menu file (preinitalized). The script will look like this:<br />
<br />
<pre><br />
#!/sbin/sh<br />
<br />
#create the menu item<br />
echo "Custom Font:scripted_menu:custfont.menu:/app/custfont/menu.sh" >> "$APP_MENU_FILE"<br />
</pre><br />
<br />
Since the scripts are in /app and not /bin, use absolute path. This will add an item to the applications menu, now we need a menu when it is selected, which is the "/app/custfont/menu.sh":<br />
<br />
<pre><br />
#!/sbin/sh<br />
<br />
if [ -f /system/switch/.nocustomfont ]; then<br />
# menu name - custom font is disabled<br />
echo "Custom Font (Disabled)" > "$MENU_FILE"<br />
# go to upper level menu<br />
echo "Go Back:menu:.." >> "$MENU_FILE"<br />
# enable it<br />
echo "Enable:shell:/app/custfont/enable.sh" >> "$MENU_FILE"<br />
else<br />
# menu name - custom font is enabled<br />
echo "Custom Font (Enabled)" > "$MENU_FILE"<br />
# go to upper level menu<br />
echo "Go Back:menu:.." >> "$MENU_FILE"<br />
# disable it<br />
echo "Disable:shell:/app/custfont/disable.sh" >> "$MENU_FILE"<br />
fi<br />
</pre><br />
Notice the shells are in /sbin, so use /sbin/sh (or /sbin/bash). The script checks if the switch is on or off and generates the menu accordingly. Since the menu is refreshed each time the script is run, it will always submit the correct option. The "enable.sh" simply touches the file and "disable.sh" just deletes it.<br />
<br />
===Download===<br />
Binaries: [[http://rapidshare.com/files/414530880/OpenRecovery_v1_37_SHOLS.rar.html Open Recovery 1.37 for Milestone]], [[http://rapidshare.com/files/414925211/OpenRecovery_v1_37_STCU.rar.html Open Recovery 1.37 for Sholes Tablet]]<br><br />
Source: [[http://rapidshare.com/files/414696074/OpenRecovery_v1_37_src.tar.gz.html Open Recovery 1.37 source]]<br><br />
<br />
===Support forum===<br />
[[http://www.modmymobile.com/forums/showthread.php?t=531599 ModMyMobile]]</div>Skrilax CZhttp://droid-developers.org/wiki/Open_recoveryOpen recovery2010-08-24T21:15:36Z<p>Skrilax CZ: /* Installation */</p>
<hr />
<div>===== Open Recovery =====<br />
<br />
Developed by Skrilax_CZ.<br><br />
Credit for mankind (from alldroid) for the CustomUpdate, on which this recovery is based,<br><br />
credit for poseidon (also from alldroid) for ADBRecovery,<br><br />
credit for koush for mtd-utils and nandroid (uses script based on it),<br><br />
credit for nadlabak for keyboard layout change script.<br><br />
Current version 1.37 [08/23/2010]<br />
<br />
====Features====<br />
- on-phone console (limited) - MILESTONE ONLY!<br><br />
- rooting the phone from menu (using ChainsDD su and SuperUser.apk (version 2.2.2))<br><br />
- nandroid backup/restore from menu<br><br />
- apply update *.zip files from menu (located in OpenRecovery/updates under the sdcard root folder, there is a sample one (just unpacks a file named "babble" to /system), no signatures are needed :)<br><br />
- wipe data (factory reset)<br><br />
- wipe cache<br><br />
- wipe dalvik-cache<br><br />
- adb in recovery, using bash shell<br><br />
- run a script<br><br />
- recovery options for applications<br><br />
<br />
The open recovery files are located under the OpenRecovery folder under the root of the sd card. The own update *.zip files are under the "updates" folder, sample one is included. The scripts must have *.sh extension and reside under the "scripts" folder. The recovery contains an update.zip with payload, which doesn't do anything else than restarts to the open recovery. All the files for OpenRecovery are under the OpenRecovery folder under the root of the sdcard. The payload installs busybox to /sbin runs the "switch.sh" under the bin folder in open recovery. The initial menu file is in OpenRecovery/menu/init.menu under sdcard root.<br />
<br />
===Download & Installation (MILESTONE)===<br />
1) You need to have the vulnerable recovery installed.<br><br />
2) Download the archive and unpack it to the root folder of the sdcard.<br><br />
<br />
===Usage (MILESTONE)===<br />
1) Reboot into recovery (hold 'X' button on bootloader 90.78, on others hold camera button; until you see triangle; then press camera + volume up)<br><br />
2) Apply the update.zip<br><br />
3) You are now in Open Recovery<br><br />
<br />
====Usage====<br />
1) Reboot into recovery (hold 'X' button on bootloader 90.78, on others hold camera button; until you see triangle)<br><br />
2) Apply the update.zip<br><br />
3) You are now in Open Recovery<br><br />
<br />
====Changelog====<br />
<br />
===Version 1.37===<br />
Bugfixes<br><br />
- fixed nandroid restore not properly restoring yaffs2 partitions in old format<br><br />
- fixed nandroid restore not restoring compressed backups<br><br />
- fixed nandroid backup not taking md5 checksums<br><br />
<br><br />
Changes<br><br />
- console buffers up to 1000 lats printed lines (extended from 200)<br><br />
<br />
===Version 1.36===<br />
Bugfixes<br><br />
- fixed nandroid when doing "Backup All" and not having apps2sd; which would fail complaining that /sddata could not be mounted<br><br />
(Ticking all partitions in the menu and selecting "Backup Selected" was working properly and the backup has been done correctly.)<br><br />
- fixed console cursor blinking<br><br />
- squirtle theme fixed<br><br />
<br />
===Version 1.35===<br><br />
Features<br><br />
- update.zip can be in new OR format using a shell script (described lower, there are samples of each one)<br><br />
- console has now signalling implemented (menu key = CTRL)<br><br />
- console has arrow keys implemented<br><br />
- console has support for displaying front colors; thus it is no longer needed to disable bash colors<br><br />
- console supports calling clear<br><br />
<br><br />
Changes<br><br />
- recovery binary will exit if not run by init (to prevent running it from adb or console)<br><br />
- scripts in scripts folder are dos2unixed (on -FuFu- advice)<br><br />
- switch files (.nobashcolors, .kdb_qwertz, etc.) are now located in /etc<br><br />
- manual settings of the timezone (/etc/timezone), applied if the env. variable TZ doesn't exist<br><br />
- update.zip no longer need to have the "update-binary", a default one is used if not found<br><br />
<br><br />
Bugfixes<br><br />
- fixed unyaffs not restoring sticky bit / suid / sgid<br><br />
- fixed displaying long menus (it will not be truncated, instead a scrollbar appears)<br><br />
- fixed error in switch.sh for XT701<br><br />
- fixed color24.console.front in the themes -> default is supposed to be #E5E5E5<br><br />
<br />
===Version 1.32===<br />
Features<br><br />
- pressing MENU + ALT + C forcibly quits the console<br><br />
<br><br />
Changes<br><br />
- ui.prop contains more options<br><br />
- when applying any update.zip package, there is a confirmation menu<br><br />
- cursor in console blinks<br><br />
<br><br />
Bugfixes<br><br />
- Error message when ext2 partition on sdcard doesn't exist fixed<br><br />
- fixed the bug with imenu when ran more than once in one script<br><br />
<br />
===Version 1.30a===<br />
Bugfixes<br><br />
- Console layout for QWERTZ / AZERTY fixed<br><br />
<br />
===Version 1.30===<br />
Features<br><br />
- on-phone console<br><br />
- keyboard layout changer included<br><br />
- new nandroid, with support of backing up and restoring ext2 partition on sdcard (Note: uses new format of the backup, new backups are located in /sdcard/nandroid/openrecovery, there is a backwards compatibility to restore the old backups)<br><br />
- ability to create compressed backups (and autoreboot when done)<br><br />
- better nandroid menu<br><br />
- menus wrap around<br><br />
- theming for the recovery (3 themes included, to apply just rename the "res.*" folder to "res"); color settings can be manipulated in the ui.prop file under the res folder)<br><br />
- new commands for menu (tag, label, break)<br><br />
- scripts (command "shell") are able to show menu interactively when requesting user feedback (sample included)<br><br />
<br />
===Version 1.14===<br />
Changes<br><br />
- UI<br><br />
- switch.sh is separated (menu creation is in init_recovery.sh and called later by the recovery)<br><br />
- Volume keys and Camera key can be used to navigate in Open Recovery<br><br />
<br />
===Version 1.12d===<br />
Bugfixes<br><br />
- wipe commands working properly<br><br />
<br><br />
Changes<br><br />
- Bash Settings menu, to enable/disable coloured output (preset to disabled), this is persistent settings, it will last through reboots<br><br />
<br><br />
Features<br><br />
- ability to wipe dalvik-cache only (via script)<br><br />
<br />
===Version 1.12c===<br />
Bugfixes<br><br />
- reboot command is working properly<br><br />
- the content of the sdcard is no longer changed when running, everything is being copied into the ramdisk<br><br />
- minor fixes<br><br />
<br><br />
Changes<br><br />
- removed the 'init' command, instead uses 'scripted_menu'<br><br />
- adbd uses bash (interactively) instead of sh<br><br />
- payload installs also bash and toolbox<br><br />
- different the menu system (deprecated 'init' command, used), each menu must be generated from a script (notes later)<br><br />
- added init folder, scripts (with extension *.sh) are ran there on startup of the open recovery.<br><br />
- the diode is blinking in blue instead of red.<br><br />
<br><br />
Features<br><br />
- the recovery prints the output of the scripts / programs (prints their stdout)<br><br />
- application menu (described later)<br><br />
- new su and SuperUser.apk by ChainsDD<br><br />
- if sdcard has ext2 partition, it is noted in fstab under "/sddata" (the module is inserted automatically)<br><br />
<br />
===Version 1.05===<br />
Bugfixes<br><br />
- fixed a bug in payload making it dependant on the system<br><br />
- there is now nothing in the /system folder when unmounted<br><br />
- toolbox linked statically<br><br />
- busybox now installs symlinks, instead of copying itself<br><br />
- fixed a bug in adb about the shell being in /sbin/sh instead of /system/bin/sh<br><br />
- cleaned up, removed unecessary libraries and binaries<br><br />
- switch.sh now initializes the Open Recovery completely, no other script is used for initialization<br><br />
- permissions set correctly<br><br />
<br><br />
Features<br><br />
- added option to wipe<br><br />
- menu's now have header (the menu file structure has been changed)<br><br />
- added the possibility to run scripts, with .*sh extension located in scripts folder under OpenRecovery folder (shell is /sbin/sh or /sbin/bash)<br><br />
<br />
===Version 1.02===<br />
- fixed root install<br />
<br />
The recovery contains an update.zip with payload, which doesn't do anything else than restarts to the open recovery. All the files for OpenRecovery are under the OpenRecovery folder under the root of the sdcard. The payload installs busybox to /sbin runs the "switch.sh" under the bin folder in open recovery. <br />
====Menu System====<br />
<br />
The menu for the Open Recovery is created dynamically. The files must be created inside "/menu" folder by scripts, which can either be specified (if the menu is scripted_menu) or created by a *.sh script in /sdcard/OpenRecovery/init where the scripts are executed at startup. A menu creating script has to create a *.menu file inside the /menu folder. If the menu is supposed to be created on startup and not modified, place the script into /init folder, otherwise use "scripted_menu" item, where the script is ran right before the menu is created. sdcard, system and data partitions are mounted when the scripts are ran. A typical example for "scripted_menu" item is under the tutorial for application menu. For application menu see lower section. The structure of the menu file is different from the CustomUpdate by mankind:<br />
First line is the menu name (normal string), then use the following structure:<br><br />
"item name:type:argument"<br><br />
- item name is what is seen in the menu<br><br />
- type: type of the command (described later)<br><br />
- argument: argument passed to the command (file, or anything else; if empty, put "*" there, otherwise the item will be discarded)<br><br />
<br />
===Commands===<br />
<br />
- reboot: reboots the phone<br><br />
- shell: calls a file specified in arguments (default path is to /bin, if not specified)<br><br />
- menu: opens another menu file (specified in argument), if the argument is "..", it returns to up one level meu<br><br />
- scripted_menu: argument is in format "menu file:menu script", the menu script is called with variable MENU_FILE containing the menu name (default path for the script is to /bin, if not specified)<br><br />
- update: applies an update *.zip file, specified in argument (format SDCARD:$path_to_the_file_in_sdcard)<br><br />
- wipe_data: factory reset<br><br />
- wipe_cahce: wipe cache<br><br />
<br><br />
The menu is refreshed (the script is called if the menu is scripted) on a menu change, applying an update or running a script. Whenever a script is ran, system, data and sdcard is mounted.<br><br />
<br />
===Application menu===<br />
<br />
Application menu is designed for anything that is run on the startup and can malfunction under any circumstances. Here is one example - suppose you have a mount on font in the startup. You'll have something like this in your startup script:<br />
<pre><br />
mount -o bind /system/myfonts/segoeui.ttf /system/fonts/DroidSans.ttf<br />
mount -o bind /system/myfonts/segoeuib.ttf /system/fonts/DroidSans-Bold.ttf<br />
</pre><br />
<br />
Well the idea is that you add a condition to the script, to run only under some circumstances, like:<br />
<br />
<pre><br />
if [ ! -f /system/switch/.nocustomfont ]; then<br />
mount -o bind /system/myfonts/segoeui.ttf /system/fonts/DroidSans.ttf<br />
mount -o bind /system/myfonts/segoeuib.ttf /system/fonts/DroidSans-Bold.ttf<br />
fi<br />
</pre><br />
<br />
which mounts the font only when /system/switch/.nocustomfont is not existing. If you want this controlable from the recovery, you register in into the application menu this way: all *.sh scripts in /app (where /sdcard/OpenRecovery/app is copied) are called at startup. They are passed variable "APP_MENU_FILE", which is the name of the used menu file (preinitalized). The script will look like this:<br />
<br />
<pre><br />
#!/sbin/sh<br />
<br />
#create the menu item<br />
echo "Custom Font:scripted_menu:custfont.menu:/app/custfont/menu.sh" >> "$APP_MENU_FILE"<br />
</pre><br />
<br />
Since the scripts are in /app and not /bin, use absolute path. This will add an item to the applications menu, now we need a menu when it is selected, which is the "/app/custfont/menu.sh":<br />
<br />
<pre><br />
#!/sbin/sh<br />
<br />
if [ -f /system/switch/.nocustomfont ]; then<br />
# menu name - custom font is disabled<br />
echo "Custom Font (Disabled)" > "$MENU_FILE"<br />
# go to upper level menu<br />
echo "Go Back:menu:.." >> "$MENU_FILE"<br />
# enable it<br />
echo "Enable:shell:/app/custfont/enable.sh" >> "$MENU_FILE"<br />
else<br />
# menu name - custom font is enabled<br />
echo "Custom Font (Enabled)" > "$MENU_FILE"<br />
# go to upper level menu<br />
echo "Go Back:menu:.." >> "$MENU_FILE"<br />
# disable it<br />
echo "Disable:shell:/app/custfont/disable.sh" >> "$MENU_FILE"<br />
fi<br />
</pre><br />
Notice the shells are in /sbin, so use /sbin/sh (or /sbin/bash). The script checks if the switch is on or off and generates the menu accordingly. Since the menu is refreshed each time the script is run, it will always submit the correct option. The "enable.sh" simply touches the file and "disable.sh" just deletes it.<br />
<br />
===Download===<br />
Binaries: [[http://rapidshare.com/files/414530880/OpenRecovery_v1_37_SHOLS.rar.html Open Recovery 1.37 for Milestone]], [[http://rapidshare.com/files/414925211/OpenRecovery_v1_37_STCU.rar.html Open Recovery 1.37 for Sholes Tablet]]<br><br />
Source: [[http://rapidshare.com/files/414696074/OpenRecovery_v1_37_src.tar.gz.html Open Recovery 1.37 source]]<br><br />
<br />
===Support forum===<br />
[[http://www.modmymobile.com/forums/showthread.php?t=531599 ModMyMobile]]</div>Skrilax CZhttp://droid-developers.org/wiki/Open_recoveryOpen recovery2010-08-24T21:13:39Z<p>Skrilax CZ: /* Features */</p>
<hr />
<div>===== Open Recovery =====<br />
<br />
Developed by Skrilax_CZ.<br><br />
Credit for mankind (from alldroid) for the CustomUpdate, on which this recovery is based,<br><br />
credit for poseidon (also from alldroid) for ADBRecovery,<br><br />
credit for koush for mtd-utils and nandroid (uses script based on it),<br><br />
credit for nadlabak for keyboard layout change script.<br><br />
Current version 1.37 [08/23/2010]<br />
<br />
====Features====<br />
- on-phone console (limited) - MILESTONE ONLY!<br><br />
- rooting the phone from menu (using ChainsDD su and SuperUser.apk (version 2.2.2))<br><br />
- nandroid backup/restore from menu<br><br />
- apply update *.zip files from menu (located in OpenRecovery/updates under the sdcard root folder, there is a sample one (just unpacks a file named "babble" to /system), no signatures are needed :)<br><br />
- wipe data (factory reset)<br><br />
- wipe cache<br><br />
- wipe dalvik-cache<br><br />
- adb in recovery, using bash shell<br><br />
- run a script<br><br />
- recovery options for applications<br><br />
<br />
The open recovery files are located under the OpenRecovery folder under the root of the sd card. The own update *.zip files are under the "updates" folder, sample one is included. The scripts must have *.sh extension and reside under the "scripts" folder. The recovery contains an update.zip with payload, which doesn't do anything else than restarts to the open recovery. All the files for OpenRecovery are under the OpenRecovery folder under the root of the sdcard. The payload installs busybox to /sbin runs the "switch.sh" under the bin folder in open recovery. The initial menu file is in OpenRecovery/menu/init.menu under sdcard root.<br />
<br />
====Installation====<br />
1) You need to have the vulnerable recovery installed.<br><br />
2) Download and unpack the archive on the sdcard.<br><br />
<br />
====Usage====<br />
1) Reboot into recovery (hold 'X' button on bootloader 90.78, on others hold camera button; until you see triangle)<br><br />
2) Apply the update.zip<br><br />
3) You are now in Open Recovery<br><br />
<br />
====Changelog====<br />
<br />
===Version 1.37===<br />
Bugfixes<br><br />
- fixed nandroid restore not properly restoring yaffs2 partitions in old format<br><br />
- fixed nandroid restore not restoring compressed backups<br><br />
- fixed nandroid backup not taking md5 checksums<br><br />
<br><br />
Changes<br><br />
- console buffers up to 1000 lats printed lines (extended from 200)<br><br />
<br />
===Version 1.36===<br />
Bugfixes<br><br />
- fixed nandroid when doing "Backup All" and not having apps2sd; which would fail complaining that /sddata could not be mounted<br><br />
(Ticking all partitions in the menu and selecting "Backup Selected" was working properly and the backup has been done correctly.)<br><br />
- fixed console cursor blinking<br><br />
- squirtle theme fixed<br><br />
<br />
===Version 1.35===<br><br />
Features<br><br />
- update.zip can be in new OR format using a shell script (described lower, there are samples of each one)<br><br />
- console has now signalling implemented (menu key = CTRL)<br><br />
- console has arrow keys implemented<br><br />
- console has support for displaying front colors; thus it is no longer needed to disable bash colors<br><br />
- console supports calling clear<br><br />
<br><br />
Changes<br><br />
- recovery binary will exit if not run by init (to prevent running it from adb or console)<br><br />
- scripts in scripts folder are dos2unixed (on -FuFu- advice)<br><br />
- switch files (.nobashcolors, .kdb_qwertz, etc.) are now located in /etc<br><br />
- manual settings of the timezone (/etc/timezone), applied if the env. variable TZ doesn't exist<br><br />
- update.zip no longer need to have the "update-binary", a default one is used if not found<br><br />
<br><br />
Bugfixes<br><br />
- fixed unyaffs not restoring sticky bit / suid / sgid<br><br />
- fixed displaying long menus (it will not be truncated, instead a scrollbar appears)<br><br />
- fixed error in switch.sh for XT701<br><br />
- fixed color24.console.front in the themes -> default is supposed to be #E5E5E5<br><br />
<br />
===Version 1.32===<br />
Features<br><br />
- pressing MENU + ALT + C forcibly quits the console<br><br />
<br><br />
Changes<br><br />
- ui.prop contains more options<br><br />
- when applying any update.zip package, there is a confirmation menu<br><br />
- cursor in console blinks<br><br />
<br><br />
Bugfixes<br><br />
- Error message when ext2 partition on sdcard doesn't exist fixed<br><br />
- fixed the bug with imenu when ran more than once in one script<br><br />
<br />
===Version 1.30a===<br />
Bugfixes<br><br />
- Console layout for QWERTZ / AZERTY fixed<br><br />
<br />
===Version 1.30===<br />
Features<br><br />
- on-phone console<br><br />
- keyboard layout changer included<br><br />
- new nandroid, with support of backing up and restoring ext2 partition on sdcard (Note: uses new format of the backup, new backups are located in /sdcard/nandroid/openrecovery, there is a backwards compatibility to restore the old backups)<br><br />
- ability to create compressed backups (and autoreboot when done)<br><br />
- better nandroid menu<br><br />
- menus wrap around<br><br />
- theming for the recovery (3 themes included, to apply just rename the "res.*" folder to "res"); color settings can be manipulated in the ui.prop file under the res folder)<br><br />
- new commands for menu (tag, label, break)<br><br />
- scripts (command "shell") are able to show menu interactively when requesting user feedback (sample included)<br><br />
<br />
===Version 1.14===<br />
Changes<br><br />
- UI<br><br />
- switch.sh is separated (menu creation is in init_recovery.sh and called later by the recovery)<br><br />
- Volume keys and Camera key can be used to navigate in Open Recovery<br><br />
<br />
===Version 1.12d===<br />
Bugfixes<br><br />
- wipe commands working properly<br><br />
<br><br />
Changes<br><br />
- Bash Settings menu, to enable/disable coloured output (preset to disabled), this is persistent settings, it will last through reboots<br><br />
<br><br />
Features<br><br />
- ability to wipe dalvik-cache only (via script)<br><br />
<br />
===Version 1.12c===<br />
Bugfixes<br><br />
- reboot command is working properly<br><br />
- the content of the sdcard is no longer changed when running, everything is being copied into the ramdisk<br><br />
- minor fixes<br><br />
<br><br />
Changes<br><br />
- removed the 'init' command, instead uses 'scripted_menu'<br><br />
- adbd uses bash (interactively) instead of sh<br><br />
- payload installs also bash and toolbox<br><br />
- different the menu system (deprecated 'init' command, used), each menu must be generated from a script (notes later)<br><br />
- added init folder, scripts (with extension *.sh) are ran there on startup of the open recovery.<br><br />
- the diode is blinking in blue instead of red.<br><br />
<br><br />
Features<br><br />
- the recovery prints the output of the scripts / programs (prints their stdout)<br><br />
- application menu (described later)<br><br />
- new su and SuperUser.apk by ChainsDD<br><br />
- if sdcard has ext2 partition, it is noted in fstab under "/sddata" (the module is inserted automatically)<br><br />
<br />
===Version 1.05===<br />
Bugfixes<br><br />
- fixed a bug in payload making it dependant on the system<br><br />
- there is now nothing in the /system folder when unmounted<br><br />
- toolbox linked statically<br><br />
- busybox now installs symlinks, instead of copying itself<br><br />
- fixed a bug in adb about the shell being in /sbin/sh instead of /system/bin/sh<br><br />
- cleaned up, removed unecessary libraries and binaries<br><br />
- switch.sh now initializes the Open Recovery completely, no other script is used for initialization<br><br />
- permissions set correctly<br><br />
<br><br />
Features<br><br />
- added option to wipe<br><br />
- menu's now have header (the menu file structure has been changed)<br><br />
- added the possibility to run scripts, with .*sh extension located in scripts folder under OpenRecovery folder (shell is /sbin/sh or /sbin/bash)<br><br />
<br />
===Version 1.02===<br />
- fixed root install<br />
<br />
The recovery contains an update.zip with payload, which doesn't do anything else than restarts to the open recovery. All the files for OpenRecovery are under the OpenRecovery folder under the root of the sdcard. The payload installs busybox to /sbin runs the "switch.sh" under the bin folder in open recovery. <br />
====Menu System====<br />
<br />
The menu for the Open Recovery is created dynamically. The files must be created inside "/menu" folder by scripts, which can either be specified (if the menu is scripted_menu) or created by a *.sh script in /sdcard/OpenRecovery/init where the scripts are executed at startup. A menu creating script has to create a *.menu file inside the /menu folder. If the menu is supposed to be created on startup and not modified, place the script into /init folder, otherwise use "scripted_menu" item, where the script is ran right before the menu is created. sdcard, system and data partitions are mounted when the scripts are ran. A typical example for "scripted_menu" item is under the tutorial for application menu. For application menu see lower section. The structure of the menu file is different from the CustomUpdate by mankind:<br />
First line is the menu name (normal string), then use the following structure:<br><br />
"item name:type:argument"<br><br />
- item name is what is seen in the menu<br><br />
- type: type of the command (described later)<br><br />
- argument: argument passed to the command (file, or anything else; if empty, put "*" there, otherwise the item will be discarded)<br><br />
<br />
===Commands===<br />
<br />
- reboot: reboots the phone<br><br />
- shell: calls a file specified in arguments (default path is to /bin, if not specified)<br><br />
- menu: opens another menu file (specified in argument), if the argument is "..", it returns to up one level meu<br><br />
- scripted_menu: argument is in format "menu file:menu script", the menu script is called with variable MENU_FILE containing the menu name (default path for the script is to /bin, if not specified)<br><br />
- update: applies an update *.zip file, specified in argument (format SDCARD:$path_to_the_file_in_sdcard)<br><br />
- wipe_data: factory reset<br><br />
- wipe_cahce: wipe cache<br><br />
<br><br />
The menu is refreshed (the script is called if the menu is scripted) on a menu change, applying an update or running a script. Whenever a script is ran, system, data and sdcard is mounted.<br><br />
<br />
===Application menu===<br />
<br />
Application menu is designed for anything that is run on the startup and can malfunction under any circumstances. Here is one example - suppose you have a mount on font in the startup. You'll have something like this in your startup script:<br />
<pre><br />
mount -o bind /system/myfonts/segoeui.ttf /system/fonts/DroidSans.ttf<br />
mount -o bind /system/myfonts/segoeuib.ttf /system/fonts/DroidSans-Bold.ttf<br />
</pre><br />
<br />
Well the idea is that you add a condition to the script, to run only under some circumstances, like:<br />
<br />
<pre><br />
if [ ! -f /system/switch/.nocustomfont ]; then<br />
mount -o bind /system/myfonts/segoeui.ttf /system/fonts/DroidSans.ttf<br />
mount -o bind /system/myfonts/segoeuib.ttf /system/fonts/DroidSans-Bold.ttf<br />
fi<br />
</pre><br />
<br />
which mounts the font only when /system/switch/.nocustomfont is not existing. If you want this controlable from the recovery, you register in into the application menu this way: all *.sh scripts in /app (where /sdcard/OpenRecovery/app is copied) are called at startup. They are passed variable "APP_MENU_FILE", which is the name of the used menu file (preinitalized). The script will look like this:<br />
<br />
<pre><br />
#!/sbin/sh<br />
<br />
#create the menu item<br />
echo "Custom Font:scripted_menu:custfont.menu:/app/custfont/menu.sh" >> "$APP_MENU_FILE"<br />
</pre><br />
<br />
Since the scripts are in /app and not /bin, use absolute path. This will add an item to the applications menu, now we need a menu when it is selected, which is the "/app/custfont/menu.sh":<br />
<br />
<pre><br />
#!/sbin/sh<br />
<br />
if [ -f /system/switch/.nocustomfont ]; then<br />
# menu name - custom font is disabled<br />
echo "Custom Font (Disabled)" > "$MENU_FILE"<br />
# go to upper level menu<br />
echo "Go Back:menu:.." >> "$MENU_FILE"<br />
# enable it<br />
echo "Enable:shell:/app/custfont/enable.sh" >> "$MENU_FILE"<br />
else<br />
# menu name - custom font is enabled<br />
echo "Custom Font (Enabled)" > "$MENU_FILE"<br />
# go to upper level menu<br />
echo "Go Back:menu:.." >> "$MENU_FILE"<br />
# disable it<br />
echo "Disable:shell:/app/custfont/disable.sh" >> "$MENU_FILE"<br />
fi<br />
</pre><br />
Notice the shells are in /sbin, so use /sbin/sh (or /sbin/bash). The script checks if the switch is on or off and generates the menu accordingly. Since the menu is refreshed each time the script is run, it will always submit the correct option. The "enable.sh" simply touches the file and "disable.sh" just deletes it.<br />
<br />
===Download===<br />
Binaries: [[http://rapidshare.com/files/414530880/OpenRecovery_v1_37_SHOLS.rar.html Open Recovery 1.37 for Milestone]], [[http://rapidshare.com/files/414925211/OpenRecovery_v1_37_STCU.rar.html Open Recovery 1.37 for Sholes Tablet]]<br><br />
Source: [[http://rapidshare.com/files/414696074/OpenRecovery_v1_37_src.tar.gz.html Open Recovery 1.37 source]]<br><br />
<br />
===Support forum===<br />
[[http://www.modmymobile.com/forums/showthread.php?t=531599 ModMyMobile]]</div>Skrilax CZ