Patent ID: 8713137

Claim:
A portable communication device comprising an embedded system: the portable communication device comprising at least one storage medium and including one or more applications running on at least one hardware processor and configured to, automatically detect a remote change of one or more software components of the embedded system; receive upgrade files via a wireless link and automatically initiate an upgrade of the one or more software components of the embedded system in a memory of the device using contents of the upgrade files, wherein the at least one storage medium includes the memory; create a backup version of a new embedded software component associated with at least one of the upgrade files and store the backup version in the memory, wherein the new embedded software component is generated during the upgrading of the one or more software components, wherein the generating the new embedded software component comprises applying the contents of the at least one of the upgrade files to a copy of an original embedded software component associated with the at least one of the upgrade files to generate the new embedded software component, wherein the contents of the at least one of the upgrade files include difference files; install the new embedded software component using the backup version of the new embedded software component by writing the backup version into a memory area previously occupied by another embedded software component, wherein the at least one storage medium includes the memory area; determine a failure of the upgrade to complete, wherein the failure is associated with an incomplete upgrade of the one or more software components; select a recovery process from a plurality of recovery processes, the selecting using a plurality of recovery factors, wherein the plurality of recovery factors include a component type of the software component being upgraded and a file type of the upgrade file being used for the upgrade; and independently and automatically recover device operation to a pre-upgrade state using the selected recovery process in response to the failure, and automatically continue the upgrade.