Software self-repair toolkit for electronic devices
Claim Score by NHIP
Abstract
A device and method supporting the identification and correction of firmware and/or software errors is described. Upon the occurrence of a firmware/software error or exception, an embodiment in accordance with the present invention may gather parameters for identifying the error or exception, and the execution environment in which the error occurred, and may communicate the parameters or an identifier to a server, to retrieve update information for correcting the firmware/software error or exception. The execution environment may be single or multi-threaded, and may be a java virtual machine. The device may restart/reboot during the update process, and may log an error if update information is not available to correct the error or exception. The device may communicate the error log information to the server via the communication network. The communication network may be a wireless network.

Term
Term ended
Projected expiry passed 23 May 2024, 2.3 years ago.
- Priority
- Filed
- Published
- Projected expiry
- Today
35 claims: 4 independent, 31 dependent
- 1An updatable electronic device comprising:a memory having at least one of firmware and software;a first firmware component for determining the occurrence of at least one of an error and an exception during the execution of the at least one of firmware and software;a second firmware component for gathering at least one parameter related to the occurrence of the at least one of an error and an exception;interface circuitry for receiving update information via a communication network, the update information based upon the at least one parameter;and a third firmware component for applying the update information to at least a portion of the at least one of firmware and software.
- 14A method of operating an updatable electronic device comprising a memory containing at least one of firmware and software, the method comprising:determining whether at least one of an error and an exception has occurred;continuing regular processing if the at least one of an error and an exception has not occurred;generating an identifier based upon at least one parameter, if the at least one of an error and an exception has occurred;receiving, via a communication network, update information based upon the identifier;and updating at least a portion of the at least one of firmware and software using the update information.
- 27Broadest claimClaim Score 79, broad(NHIP)A method of operating an updatable electronic device, the method comprising:determining that at least one of a firmware and a software error has occurred;gathering at least one parameter related to the at least one of a firmware and a software error;identifying update information for correcting the at least one of a firmware and a software error;receiving the update information via a communication network;and updating at least one of firmware and software using the update information.
- 30A network for updating at least one of firmware and software in at least one updatable electronic device, the network comprising:at least one server receiving at least one of device characteristics and an error report from the at least one updatable electronic device, the at least one server retrieving appropriate update information based on the at least one of device characteristics and an error report;the server communicating the update information to the at least one updatable electronic device using a wireless interface;and the at least one updatable electronic device using the update information to update the at least one of firmware and software.
Independent claims4
47 paragraphs in 7 sections, as filed
RELATED APPLICATIONS
P-0001[0001] This application makes reference to, claims priority to, and claims the benefit of U.S. Provisional Patent Application No. 60/428,071, entitled “Software Self-Repair Toolkit For Electronic Devices” (Attorney Docket No. 14324US01-101USMD20), filed Nov. 21, 2002, the complete subject matter of which is hereby incorporated herein by reference, in its entirety.
P-0002[0002] In addition, this application makes reference to U.S. Provisional Patent Application Serial No. 60/249,606 (Attorney Docket No. 13776US01), filed Nov. 17, 2000, PCT Application Serial No. PCT/US01/44034 (Attorney Docket No. 13776WO01), entitled “System And Method For Updating And Distributing Information”, filed Nov. 17, 2001, U.S. patent application Ser. No. 10/311,462 (Attorney Docket No. 13776US02), entitled “System And Method For Updating And Distributing Information”, filed May 13, 2003, and U.S. Provisional Patent Application Serial No. 60/410,071, entitled “Processing System With Component Architecture Platform Support” (Attorney Docket No. 14119US01-101USMD08), filed Sep. 12, 2002, the complete subject matter of each of which is hereby incorporated herein by reference in its entirety.
FEDERALLY SPONSORED RESEARCH OR DEVELOPMENT
[0003] [Not Applicable]
MICROFICHE/COPYRIGHT REFERENCE
[0004] [Not Applicable]
BACKGROUND OF THE INVENTION
[0005] Electronic devices, such as mobile phones and personal digital assistants (PDA's), often contain firmware and application software that are either provided by the manufacturers of the electronic devices, by telecommunication carriers, or by third parties.
[0006] An update of firmware or firmware components typically involves procedures to be performed in a careful and error free manner. If errors occur, the device may be left in a partially or fully non-functional state. It is desirable to perform such updates using a fault tolerant mechanism. Fault tolerant code, however, is generally complex, and normally difficult to successfully implement.
[0007] Attempts to upgrade firmware and/or software in electronic devices, such as mobile phones, are often hampered by limited user interaction capabilities and slow communication speeds on these devices. In addition, when a user determines that there is an error with an electronic device, such as a mobile phones, the user often has limited recourse to having it corrected, and is often left with taking it back to a service center of the manufacturer to have the firmware/software modified or replaced.
[0008] Further limitations and disadvantages of conventional and traditional approaches will become apparent to one of skill in the art, through comparison of such systems with the present invention as set forth in the remainder of the present application with reference to the drawings.
BRIEF SUMMARY OF THE INVENTION
[0009] Aspects of the present invention may be seen in an updatable electronic device comprising a memory having at least one of firmware and software, a first firmware component for determining the occurrence of at least one of an error and an exception during the execution of the at least one of firmware and software, and a second firmware component for gathering at least one parameter related to the occurrence of the at least one of an error and an exception. Such an embodiment may also comprise interface circuitry for receiving update information via a communication network, the update information based upon the at least one parameter, and a third firmware component for applying the update information to at least a portion of the at least one of firmware and software. In an embodiment of the present invention, the at least one parameter may comprise at least one of a type of error, an error code, an error message, a type of exception, an identifier of a component, an identifier of a module, stack trace information, a computed hash value, and a device characteristic. The device characteristic may comprise at least one of a manufacture identifier, a model identifier, a firmware version number, a hardware version number, a battery level, a communication statistic, and a serial number. The device may be a mobile handset, and the communication network may comprise a wireless network. An embodiment of the present invention may comprise a fourth firmware component for generating an identifier for identifying the update information used to correct the at least one of an error and an exception.
[0010] In an embodiment of the present invention, the device may transmit the at least one parameter to at least one server via the communication network, the at least one server identifying the update information used to correct the at least one of an error and an exception. In various embodiments of the present invention, the update information may comprise information for retrieving at least one update package via the communication network, and a set of instructions for converting the at least a portion of the at least one of firmware and software from a first version to a second version. At least one of the first firmware component, the second firmware component, and the third firmware component may initiate at least one of a restart and a reboot of the device, and the device may store information related to the at least one of an error and an exception for use after at least one of a power-up, a restart and a reboot of the device. The device may update the at least a portion of the at least one of firmware and software following at least one of a power-up, a restart and a reboot of the device. The at least one of firmware and software may comprise a java virtual machine.
[0011] Additional aspects of the present invention may be observed in a method of operating an updatable electronic device comprising a memory containing at least one of firmware and software. Such an embodiment may comprise determining whether at least one of an error and an exception has occurred, continuing regular processing if the at least one of an error and an exception has not occurred, and generating an identifier based upon at least one parameter if the at least one of an error and an exception has occurred. An embodiment of the present invention may also comprise receiving, via a communication network, update information based upon the identifier, and updating at least a portion of the at least one of firmware and software using the update information. The at least one parameter may comprise at least one of a type of error, an error code, an error message, a type of exception, an identifier of a component, an identifier of a module, stack trace information, a computed hash value, and a device characteristic. The device characteristic may comprise at least one of a manufacture identifier, a model identifier, a firmware version number, a hardware version number, a battery level, a communication statistic, and a serial number. The device may be a mobile handset, and the communication network may comprise a wireless network.
[0012] In an embodiment in accordance with the present invention, the device may transmit the at least one parameter to at least one server via the communication network, the at least one server identifying the update information used to correct the at least one of an error and an exception. The update information may comprise information for retrieving at least one update package via the communication network, and the update information may comprise a set of instructions for converting the at least a portion of the at least one of firmware and software from a first version to a second version. An embodiment of the present invention may also comprise initiating at least one of a restart and a reboot of the device. In addition, an embodiment of the present invention may comprise storing information related to the at least one of an error and an exception for use after at least one of a power-up, a restart and a reboot of the device. The device may update the at least a portion of the at least one of firmware and software following the at least one of a power-up, a restart and a reboot of the device. Another embodiment of the present invention may comprise logging the occurrence of the at least one of an error and an exception, and communicating, via the communication network, the logged occurrence of the at least one of an error and an exception.
[0013] Yet another aspect of the present invention may be found in a method of operating an updatable electronic device. A embodiment in accordance with the present invention may comprise determining that at least one of a firmware and a software error has occurred, gathering at least one parameter related to the at least one of a firmware and a software error, and identifying update information for correcting the at least one of a firmware and a software error. Such an embodiment may also comprise receiving the update information via a communication network, and updating at least one of firmware and software using the update information. The communication network may comprise a wireless network, and the update information may comprise a set of instructions for converting the at least one of firmware and software from a first version to a second version.
[0014] Further aspects of the present invention may be observed in a network for updating at least one of firmware and software in at least one updatable electronic device. Such a network may comprise at least one server receiving at least one of device characteristics and an error report from the at least one updatable electronic device, the at least one server retrieving appropriate update information based on the at least one of device characteristics and an error report. The at least one server may communicate the update information to the at least one updatable electronic device using a wireless interface, and the at least one updatable electronic device may use the update information to update the at least one of firmware and software. The update information may comprise an update package having a set of instructions for converting the at least one of firmware and software from a first version to a second version, and the updatable electronic device may comprise a mobile handset. The device characteristics may comprise at least one of a manufacture identifier, a model identifier, a firmware version number, a hardware version number, a battery level, a communication statistic, and a serial number. The updatable electronic device may also comprise a display for displaying information regarding at least one of an error, an exception, and an event to a user. The displayed information may comprise a user prompt to solicit user approval for at least one of the communication of the update information and the update of the at least one of firmware and software.
[0015] These and other advantages, aspects and novel features of the present invention, as well as details of an illustrated embodiment thereof, will be more fully understood from the following description and drawings.
BRIEF DESCRIPTION OF SEVERAL VIEWS OF THE DRAWINGS
P-0016[0016]FIG. 1 is block diagram of an electronic device, comprising a software self-repair toolkit, a device characteristics module, a loaders module, a component architecture platform module, an optional security module, an optional application and an optional java virtual machine (JVM), in accordance with an embodiment of the present invention.
P-0017[0017]FIG. 2 is a flow chart depicting an exemplary method of operating a software self-repair toolkit, such as the software self-repair toolkit, in an electronic device, such as the electronic device of FIG. 1, in accordance with an embodiment of the present invention.
P-0018[0018]FIG. 3 is a flow chart depicting an exemplary method of operating a software self-repair toolkit of an electronic device, such as the software self-repair toolkit of the electronic device of FIG. 1, when a new feature is invoked for the first time, in accordance with an embodiment of the present invention.
DETAILED DESCRIPTION OF THE INVENTION
P-0019[0019] The present invention relates generally to the process of updating software/firmware in electronic devices and, more specifically, to the use of a software self-repair toolkit that facilitates the download of update packages and the subsequent update of firmware/software employing an update package.
P-0020[0020]FIG. 1 is block diagram of an electronic device <b>109</b>, comprising a software self-repair toolkit <b>123</b>, a device characteristics module <b>129</b>, a loaders module <b>137</b>, a component architecture platform module <b>143</b>, an optional security module <b>145</b>, an optional application <b>131</b> and an optional java virtual machine (JVM) <b>141</b>, in accordance with an embodiment of the present invention. An electronic device such as electronic device <b>109</b> of FIG. 1 may employ the software self-repair toolkit <b>123</b> to trap errors and/or exceptions encountered during the execution of its firmware/software, and to identify, download, and apply update packages to fix the firmware/software bugs that cause such errors or exceptions.
P-0021[0021] The software self-repair toolkit <b>123</b> of FIG. 1 comprises an error/exception handler module <b>135</b>, an error identity computation module <b>127</b>, an authentication unit <b>133</b>, an update agent <b>125</b>, and a manager <b>147</b>. The software self-repair toolkit <b>123</b> may employ any of the loaders supported by the loaders module <b>137</b> to retrieve update packages from an external system such as, for example, the server <b>119</b> of the carrier network <b>107</b>. The software self-repair toolkit <b>123</b> may also store information about downloaded update packages, such that the update agent <b>125</b> can retrieve them for subsequent use.
P-0022[0022] In an embodiment of the present invention, when the electronic device <b>109</b> encounters an error and/or exception during execution of elements of its firmware/software (e.g., the java virtual machine (JVM) environment <b>141</b>, component architecture platform <b>143</b>, application <b>131</b>, etc.), the details of the error and/or exception may be saved, and subsequently used to help identify an appropriate firmware/software update, to correct the occurrence of the error and/or exception. An appropriate update package to correct the problem may then be retrieved from a server <b>119</b> to which the electronic device <b>109</b> is communicatively coupled. The manager <b>147</b> of the software self-repair toolkit <b>123</b> may coordinate retrieval of the update package based upon one or more parameters such as, for example, parameters used to identify the type of error, parameters used to identify a component or module involved, device characteristics used to identify the device and the device configuration, etc. The manager <b>147</b> may retrieve, using the above parameters, one or more update package(s) identified as likely to correct the firmware/software bug causing the error and/or exception. The manager <b>147</b> of the software self-repair toolkit <b>123</b> may then store status information, set flags, save addresses for the locations where the update package(s) are stored, etc., and may restart/reboot the electronic device <b>109</b>. The update agent <b>125</b> of the software self-repair toolkit <b>123</b> may then be employed to apply the update package(s) to the firmware/software of the electronic device <b>109</b> (i.e., application <b>131</b>, JVM environment <b>141</b>, etc.) The update package(s) may comprise, for example, a set of instructions for converting the firmware/software of the electronic device <b>109</b> from a first version to a second version. A description of such an approach may be found in U.S. Provisional Patent Application Serial No. 60/249,606 (Attorney Docket No. 13776US01), filed Nov. 17, 2000, PCT Application Serial No. PCT/US01/44034 (Attorney Docket No. 13776WO01), entitled “System And Method For Updating And Distributing Information”, filed Nov. 17, 2001, and U.S. patent application Ser. No. 10/311,462 (Attorney Docket No. 13776US02), entitled “System And Method For Updating And Distributing Information”, filed May 13, 2003, the complete subject matter of each of which is hereby incorporated herein by reference, in its entirety.
P-0023[0023] The following description addresses three possible scenarios, characterized primarily by the capabilities of the execution environment, i.e. the functionality of electronic device <b>109</b>. In each of these scenarios, an embodiment of the present invention facilitates the detection and identification of the error, identification and retrieval of appropriate update package(s), and the application of the retrieved update package(s). In addition, an embodiment of the present invention may verify and/or authenticate the update package(s), before the update is performed by the update agent <b>125</b>.
P-0024[0024] In one embodiment of the present invention, the electronic device <b>109</b> may employ a single threaded environment that becomes partially inoperative when an error and/or exception is encountered. In such a situation, the electronic device <b>109</b> may be incapable of retrieving an update package without restarting/rebooting. In an embodiment of the present invention, an exception handler such as the exception handler <b>135</b> of FIG. 1 may save an appropriate set of parameters, identifiers, and error details about the error and/or exception that was encountered. The exception handler <b>135</b> may select a different combination of parameters, identifiers, and error details based upon the error and/or exception that occurred.
P-0025[0025] An embodiment of the present invention may employ the error identity computation module <b>127</b> to map information about the error to a unique identifier such as, for example, a computed hash value, that may be used to retrieve an update package. The update package is selected for retrieval based upon the likelihood that it will fix the firmware/software bug that caused the error and/or exception to occur. Such an embodiment may also record the occurrence of the error and/or exception for subsequent discovery. After a restart/reboot, an embodiment of the present invention may detect the earlier occurrence of an error and/or exception, access the parameters, identifiers, and error details that were recorded, and retrieve appropriate update package(s). Such an embodiment may use an update agent, such as update agent <b>125</b> of FIG. 1, to update the errant firmware/software using the retrieved update package(s). The update agent <b>125</b> may then initiate a restart/reboot of the electronic device <b>109</b>, in order to complete the correction of the firmware/software of the electronic device <b>109</b>.
P-0026[0026] In another embodiment of the present invention, the electronic device <b>109</b> may employ a multi-threaded operating system. The electronic device <b>109</b> may be, for example, a cell phone equipped with the Symbian operating system, as offered by Symbian, Ltd. In such an environment, the software self-repair toolkit <b>123</b> of the electronic device <b>109</b> may employ the error/exception handler <b>135</b> to gather information and/or symptoms of the error and/or exception. An embodiment of the present invention may employ the error identity computation module <b>127</b> to either generate an identifier based upon the gathered information and/or symptoms of the error and/or exception, to identify an appropriate update package. In a related embodiment, the software self-repair toolkit <b>123</b> may communicate the symptoms and device characteristics <b>129</b> to a remote server, such as server <b>119</b> in carrier network <b>107</b>. Communication of the symptoms and device characteristics to the server <b>119</b> may allow the server <b>119</b> to determine an appropriate update package for the electronic device <b>109</b>. In either of these embodiments, the software self-repair toolkit <b>123</b> may communicate the gathered information/symptoms or the identifier and associated info to the server <b>119</b> using a second, independent thread or process for such communication. The software self-repair toolkit <b>123</b> may subsequently retrieve appropriate update package(s) employing one of the loaders available in the loaders module <b>137</b>. One such loader in loaders module <b>137</b> may be, for example, a universal resource locator (URL) loader. Following receipt of the appropriate update package(s), the electronic device <b>109</b> may employ the authentication unit <b>133</b> to verify and/or authenticate the retrieved update package(s), and employ the update agent <b>125</b> to apply the received update package(s) to the associated firmware/software of electronic device <b>109</b>. The software self-repair toolkit <b>123</b> may then initiate a restart/reboot of the electronic device <b>109</b> to complete the correction of the errant firmware/software.
P-0027[0027] In yet another embodiment of the present invention, the electronic device <b>109</b> may comprise a JVM environment <b>141</b> and the software self-repair toolkit <b>123</b> may detect error(s) and/or exception(s) encountered by the JVM environment <b>141</b> during the execution of programs. When an error occurs or an exception is encountered by the JVM environment <b>141</b>, the software self-repair toolkit <b>123</b> may employ the error/exception handler <b>135</b> to gather information and/or symptoms of the error/exception. The software self-repair toolkit <b>123</b> may employ the error identity computation module <b>127</b> to generate an identifier based on such gathered information (to be used to retrieve appropriate update package(s)), or to communicate the symptoms and device characteristics to a server, such as the server <b>119</b> of carrier network <b>107</b>. The server <b>119</b> may then identify one or more appropriate update package(s), retrieve the identified update package(s), and provide the appropriate update package(s) to the electronic device <b>109</b>. The update agent <b>125</b> of the software self-repair toolkit <b>123</b> of electronic device <b>109</b> may then be employed to apply any update package(s) received.
P-0028[0028] In a related embodiment of the present invention, stack information retrieved by the printStackTrace( ) method of the JVM environment <b>141</b> may be saved by the error/exception handler <b>135</b>, along with other information related to the error and/or exception. The error identity computation module <b>127</b> may then identify and retrieve a java archive (jar) file as an update package. The retrieved update package may be verified and/or authenticated by the authentication unit <b>133</b>. The update agent <b>125</b> may then update the classpath of the JVM environment <b>141</b> to incorporate the retrieved jar file.
P-0029[0029] In a further embodiment of the present invention, a component architecture platform (CAP) module, such as CAP module <b>143</b> of FIG. 1, may maintain a catalog of components in the electronic device <b>109</b>, with details of each component. Component details may include, for example, the starting address, ending address (if appropriate), the size (such as number of blocks), version numbers (major, minor etc.), CRC values, and other related information, for each of the cataloged components in the CAP module <b>143</b>. A description of one such component architecture platform is provided in U.S. Provisional Patent Application Serial No. 60/410,071, entitled “Processing System With Component Architecture Platform Support” (Attorney Docket No. 14119US01-101USMD08), filed Sep. 12, 2002, the complete subject matter of which is hereby incorporated herein by reference in its entirety. When the update agent <b>125</b> of the software self-repair toolkit <b>123</b> is to apply a retrieved update package to one of the components of the CAP module <b>143</b>, the update agent <b>125</b> may retrieve component details such as the starting address, CRC values, etc. from the catalog of components maintained by the CAP module <b>143</b>.
P-0030[0030] In one embodiment of the present invention, the manager <b>147</b> of the software self-repair toolkit <b>123</b> may maintain a catalog of known errors or exceptions, and a list of update packages that may be used to fix the known error or exceptions. When the error/exception handler <b>135</b> encounters an error or exception, the error identity computation module <b>127</b> may compute a unique identifier (e.g., a computed hash value) for the error or exception based upon details of the error or exception (such as stack trace, error messages, error codes, etc.), and may employ the unique identifier to determine whether an update package containing a bug fix exists. The software self-repair toolkit <b>123</b> may retrieve the identified update package(s) employing one of the loaders provided by the loaders module <b>137</b>. The update agent <b>125</b> may then be employed to apply the retrieved update package(s) to the firmware/software of electronic device <b>109</b>. In one embodiment of the present invention, the update agent <b>125</b> may be invoked after a reboot of the electronic device <b>109</b>. The determination of the existence of an update package based on the unique identifier computed by the error identity computation module <b>127</b> may be conducted by the manager <b>147</b> in a related embodiment of the present invention, and by the server <b>119</b> in yet another embodiment.
P-0031[0031] In an embodiment of the present invention, when a feature of the electronic device <b>109</b> is used for the first time, the manager <b>147</b> may determine whether a potential firmware/software bug exists. If potential firmware/software error(s) are identified, the manager <b>147</b> may then determine whether an update package containing a fix for the identified firmware/software error(s) exists. If the manager <b>147</b> determines that an update package is available to correct the firmware/software bug, the manager <b>147</b> may automatically retrieve the identified update package from the server <b>119</b>. The manager may verify and/or authenticate the update package, and apply the update package to the firmware/software of electronic device <b>109</b>, using the update agent <b>125</b>. Following correction of the firmware/software error, the electronic device <b>109</b> may invoke the feature for the user. Feedback to the user such as, for example, a progress bar, may be displayed during the retrieval of an update package, and during the application of the update package by the update agent <b>125</b>.
P-0032[0032] In one embodiment of the present invention, the electronic device <b>109</b> may be a mobile handset that may save a small piece of information (such as, for example, a feature identifier) whenever any feature of an application (e.g., a firmware/software component, a device driver, or any application firmware/software) is invoked. For example, a unique feature or application identifier (e.g., a computed hash value) may be saved, along with additional information available at the time of invocation. The unique feature identifier and the additional information may be stored in memory such as, for example, FLASH memory, or other types of non-volatile storage, just prior to invocation of the feature. This saved information may be referred to as a “feature trace”. If the mobile handset then becomes inoperable due, for example, to an error or an exception encountered while executing any component of the firmware/software of the feature, the mobile handset may identify the feature that caused the error and/or exception, and take corrective actions. This may be particularly effective if the error and/or exception is flagged, and the saved information is processed during a subsequent restart/reboot. Thus, the fact that an error was encountered in a previous invocation may be displayed when a feature is invoked, along with a prompt to the user to either retrieve an update package that fixes the bug, or to ignore the message and invoke the application or feature despite the warning. In a related embodiment, the update of the application, component, etc. may be accompanied by the simultaneous deletion of the saved feature or application identifier and additional information, in order to avoid warnings to the user after the error-causing bug has been fixed by an update activity.
P-0033[0033] A feature identifier may be tracked to determine the feature that caused an error or exception while running an application and subsequent invocation of the feature may be preceded by the display of an appropriate warning and an opportunity to retrieve and apply an update package that fixes the bug. In a related embodiment, a combination of an application identifier and a feature identifier may be saved to track where in an application an error or exception occurred. Saving other types of identifiers and related data are also contemplated.
P-0034[0034] In an embodiment of the present invention, a device characteristics module, such as the device characteristics module <b>129</b> of FIG. 1, may support the retrieval of device characteristics that are static, as well as those that are dynamic in nature. Static device characteristics that may be stored in device characteristics module <b>129</b> may comprise attributes of a mobile handset such as, for example, a unique identifier (e.g., a computed hash value), manufacturer information, model information, firmware version number(s), hardware version numbers(s), and the like. Dynamic device characteristics that may be stored in a device characteristics module may comprise information such as battery level(s), and communications statistics (e.g., the number of characters transmitted or received, the number of communication errors detected, the ratio of dropped packets in a communication link, etc.)
P-0035[0035]FIG. 2 is a flow chart depicting an exemplary method of operating a software self-repair toolkit, such as the software self-repair toolkit <b>123</b>, in an electronic device, such as the electronic device <b>109</b> of FIG. 1, in accordance with an embodiment of the present invention. In the method illustrated in FIG. 2, when an error or exception is encountered, the software self-repair toolkit in the electronic device retrieves an update package and applies the update package to fix the error or exception encountered. The operation of the electronic device begins when it is powered-up or restarted/rebooted (block <b>207</b>). Next, the execution of an feature/application is started (block <b>209</b>). This typically occurs based upon user input. Then, the occurrence of an error or exception is determined (block <b>211</b>). If it is determined that an error or exception has not been encountered, the regular processing of the feature/application is executed (block <b>225</b>), and then feature/application processing terminates (block <b>221</b>).
P-0036[0036] If it is determined that an error or exception has been encountered (block <b>211</b>), then an error identity computation module, such as error identity computation module <b>127</b> of FIG. 1, may generate or compute a unique identifier (block <b>213</b>). The error identity computation module <b>127</b> may employ an error code, error message and/or stack trace information to generate or compute the unique identifier (e.g., a computed hash value) that is subsequently employed to determine if an update package exists at a server, such as server <b>119</b>. The unique identifier may be used to retrieve an update package containing a bug fix for the encountered error or exception. In another embodiment of the present invention, the error identity computation module <b>127</b> may gather an error code, error message and/or stack trace information and communicate that to a server. The server may use the received error code, error message and/or stack trace information for the identification and retrieval of an appropriate update package(s).
P-0037[0037] Next, an attempt may be made to determine if an update package exists at a server (block <b>215</b>). For example, in one embodiment, a computed or generated unique identifier (e.g., a computed hash value) may be employed to determine if an update package exists at the server. The unique identifier may be generated by and communicated to the server by the electronic device. Other information, such as device characteristics, may also be communicated. In another embodiment, an error code, error message and/or stack trace information may be gathered and sent to the server, to be used for the identification and retrieval of an appropriate update package(s). If it is determined that an update package does not exist for the error or exception encountered (block <b>215</b>), then an the error is logged (block <b>223</b>), and regular processing may resume (block <b>207</b>). In one embodiment of the present invention, the electronic device may communicate to the server a message containing the logged error, using an appropriate communication link. Examples of appropriate links include wireless application protocol (WAP) links, or http links, employing an appropriate format such as, for example, a SyncML message format. Such protocols may be used over wireless networks such as, for example, cellular or personal communications service (PCS) networks.
P-0038[0038] If it is determined that an update package does exist (block <b>215</b>), then the update package(s) is/are retrieved and saved in the electronic device (e.g., in FLASH storage, in a file system such as the one provided by the Symbian operating system, etc.) after the authenticity of the package(s) have/has been verified. Later, the retrieved update package(s) may be used by an update agent, such as update agent <b>125</b> of FIG. 1, to update the feature/application software (block <b>219</b>).
P-0039[0039] The update agent may also use information about the feature/application maintained by a CAP module, such as CAP module <b>143</b>. In one embodiment of the present invention, the server may communicate the need to reboot the electronic device once the update process is complete. In such an embodiment, the update agent may be capable of accessing such information and acting on it. At the end of the update process, regular processing of the feature/application resumes (block <b>207</b>).
P-0040[0040]FIG. 3 is a flow chart depicting an exemplary method of operating a software self-repair toolkit of an electronic device, such as the software self-repair toolkit <b>123</b> of the electronic device <b>109</b> of FIG. 1, when a new feature is invoked for the first time, in accordance with an embodiment of the present invention. In the illustration of FIG. 3, the electronic device attempts to determine whether an error or exception is likely to be encountered and/or a bug fix or update is to be applied. The operation of the electronic device begins when it is powered-up or restarted/rebooted (block <b>307</b>). Next, the execution of a feature/application is started (block <b>309</b>). This is normally initiated by user input. Then, the electronic device determines whether a previously unused (possibly new) feature/application is being invoked (block <b>311</b>). If it is determined that the feature/application being invoked has been used before, the processing for that feature/application is executed (block <b>325</b>), and then the feature/application processing terminates (block <b>321</b>).
P-0041[0041] If it is determined that a feature/application is being invoked for the first time (block <b>311</b>), then an error catalog may be accessed to identify firmware/software bugs that have been identified for that feature/application, and for which associated update packages may be available (block <b>313</b>). In one embodiment of the present invention, the error catalog may be maintained by a server, such as the server <b>119</b> of FIG. 1. In such an embodiment, a manager, such as the manager <b>147</b> of FIG. 1, may communicate with the server to determine if a known error or exception is likely to be encountered when the newly accessed feature is exercised. In another embodiment, the error catalog may be maintained by the manager, and may be accessed to determine whether an error or exception is likely to be encountered.
P-0042[0042] Next, an attempt is made to determine whether an update package exists (block <b>315</b>). In one embodiment of the present invention, a unique identifier (e.g., one that is retrieved from the known error catalog maintained in the manager or by the server) may be employed to determine whether an update package exists at the server. In such an embodiment, the unique identifier may be communicated to the server by the electronic device, along with other information (e.g., device characteristics, such as the device characteristics <b>129</b> of FIG. 1).
P-0043[0043] If it is determined that an update package does not exist for an error or exception likely to be encountered in the newly invoked feature/application (block <b>315</b>), then an error is logged, recording the fact that an update package is not available (block <b>323</b>). Regular processing of the new feature/application then resumes (block <b>325</b>). In one embodiment of the present invention, the electronic device may communicate to the server a message containing the logged error, using an appropriate communication link. Examples of appropriate links include wireless application protocol (WAP) links, or http links, employing an appropriate format such as, for example, a SyncML message format. Such protocols may be used over wireless networks such as, for example, cellular or personal communications service (PCS) networks.
P-0044[0044] If it is determined that an update package does exist (block <b>315</b>), then the update package(s) is/are retrieved and saved in the electronic device (e.g., in FLASH storage, in a file system such as the one provided by the Symbian operating system, etc.) after the authenticity of the package(s) has/have been verified. Later, the retrieved update package(s) may be used by an update agent, such as update agent <b>125</b> of FIG. 1, to update the application software (block <b>319</b>).
P-0045[0045] The update agent may also use information about the feature/application maintained by a CAP module, such as CAP module <b>143</b>. In one embodiment of the present invention, the server may communicate the need to reboot the electronic device once the update process is complete. In such an embodiment, the update agent may be capable of accessing such information and acting on it. At the end of the update process, regular processing of the feature/application resumes (block <b>307</b>).
P-0046[0046] In one embodiment of the present invention, the software self-repair toolkit <b>123</b> of FIG. 1 may be adaptive in nature, and may keep track of all errors and exceptions encountered, the update packages that have been retrieved and/or applied, the status of the features/applications that have been updated, the information related to components that have been updated, etc.
P-0047[0047] While the invention has been described with reference to certain embodiments, it will be understood by those skilled in the art that various changes may be made and equivalents may be substituted without departing from the scope of the invention. In addition, many modifications may be made to adapt a particular situation or material to the teachings of the invention without departing from its scope. Therefore, it is intended that the invention not be limited to the particular embodiment disclosed, but that the invention will include all embodiments falling within the scope of the appended claims.
Contents7
4 sheets
Sheet 1 Sheet 2 Sheet 3 Sheet 4
Every citation, both ways
| Document | Relation | Office | Cited during |
|---|---|---|---|
| US7751794B2 | Cited by | United States of America | Applicant |
| US9152484B2 | Cited by | United States of America | Search report |
| US2007294686A1 | Cited by | United States of America | Pre-grant |
| US8001231B2 | Cited by | United States of America | Applicant |
| US2018034936A1 | Cited by | United States of America | Search report |
| US10970758B2 | Cited by | United States of America | Applicant |
| US10572245B1 | Cited by | United States of America | Search report |
| US7634258B2 | Cited by | United States of America | Applicant |
| US9092314B2 | Cited by | United States of America | Search report |
| US7971200B2 | Cited by | United States of America | Search report |
| US8392902B2 | Cited by | United States of America | Search report |
| US10324734B2 | Cited by | United States of America | Applicant |
| US2010241752A1 | Cited by | United States of America | Pre-grant |
| US7418589B2 | Cited by | United States of America | Search report |
| US9787800B2 | Cited by | United States of America | Search report |
| US11595288B2 | Cited by | United States of America | Applicant |
| US2024095015A1 | Cited by | United States of America | Search report |
| US2013179871A1 | Cited by | United States of America | Pre-grant |
| US7987450B2 | Cited by | United States of America | Search report |
| CN104871136A | Cited by | China | Search report |
| US10824521B2 | Cited by | United States of America | Applicant |
| US2006117171A1 | Cited by | United States of America | Pre-grant |
| US2014082613A1 | Cited by | United States of America | Pre-grant |
| US9063815B2 | Cited by | United States of America | Search report |
| US9760367B2 | Cited by | United States of America | Search report |
| US10534624B2 | Cited by | United States of America | Applicant |
| US8543979B2 | Cited by | United States of America | Applicant |
| US2014082615A1 | Cited by | United States of America | Pre-grant |
| US9906559B2 | Cited by | United States of America | Search report |
| US2004103347A1 | Cited by | United States of America | Pre-grant |
| US2016026547A1 | Cited by | United States of America | Search report |
| US2008189694A1 | Cited by | United States of America | Pre-grant |
| US8434094B2 | Cited by | United States of America | Applicant |
| US2017104788A1 | Cited by | United States of America | Pre-grant |
| US2012317563A1 | Cited by | United States of America | Pre-grant |
| US2019227954A1 | Cited by | United States of America | Search report |
| US2018302274A1 | Cited by | United States of America | Search report |
| CN105468418A | Cited by | China | Search report |
| US10241778B2 | Cited by | United States of America | Search report |
| US11989756B2 | Cited by | United States of America | Search report |
| US2021045454A1 | Cited by | United States of America | Search report |
| US8670757B2 | Cited by | United States of America | Applicant |
| US2023144217A1 | Cited by | United States of America | Search report |
| US7836432B2 | Cited by | United States of America | Applicant |
| US10817929B1 | Cited by | United States of America | Applicant |
| US10409657B2 | Cited by | United States of America | Applicant |
| US10621112B2 | Cited by | United States of America | Search report |
| US2010081485A1 | Cited by | United States of America | Pre-grant |
| US8094568B1 | Cited by | United States of America | Search report |
| GB2547536A | Cited by | United Kingdom | Search report |
| US2013191819A1 | Cited by | United States of America | Pre-grant |
| US2018034936A1 | Cited by | United States of America | Search report |
| US12430191B2 | Cited by | United States of America | Applicant |
| US8914784B2 | Cited by | United States of America | Search report |
| US10467025B2 | Cited by | United States of America | Applicant |
| US2006217103A1 | Cited by | United States of America | Pre-grant |
| US9948512B2 | Cited by | United States of America | Search report |
| US11706237B2 | Cited by | United States of America | Search report |
| US2008215931A1 | Cited by | United States of America | Pre-grant |
| CN114020352A | Cited by | China | Search report |
| US2017207956A1 | Cited by | United States of America | Pre-grant |
| US9489190B1 | Cited by | United States of America | Search report |
| US9935982B2 | Cited by | United States of America | Search report |
| US11526388B2 | Cited by | United States of America | Applicant |
| US10831605B2 | Cited by | United States of America | Search report |
| US10402189B2 | Cited by | United States of America | Search report |
| US11831534B2 | Cited by | United States of America | Applicant |
| US2021365321A1 | Cited by | United States of America | Search report |
| US12314751B2 | Cited by | United States of America | Search report |
| US2019227954A1 | Cited by | United States of America | Search report |
| US2022046043A1 | Cited by | United States of America | Search report |
| US11063821B2 | Cited by | United States of America | Search report |
| US7478283B2 | Cited by | United States of America | Applicant |
| US8250223B2 | Cited by | United States of America | Search report |
| US2011214112A1 | Cited by | United States of America | Pre-grant |
| CN103365732A | Cited by | China | Search report |
| US10521242B2 | Cited by | United States of America | Applicant |
| US2006111084A1 | Cited by | United States of America | Pre-grant |
| US8893107B2 | Cited by | United States of America | Search report |
| US11914458B2 | Cited by | United States of America | Search report |
| US2006168165A1 | Cited by | United States of America | Pre-grant |
| US9772837B2 | Cited by | United States of America | Search report |
| US11200047B2 | Cited by | United States of America | Applicant |
| US2014173350A1 | Cited by | United States of America | Pre-grant |
| US7246266B2 | Cited by | United States of America | Search report |
| US9395968B1 | Cited by | United States of America | Search report |
| US2016026547A1 | Cited by | United States of America | Search report |
| EP1890454A1 | Cited by | European Patent Office (EPO) | Search report |
| US2007169085A1 | Cited by | United States of America | Pre-grant |
| US2019227783A1 | Cited by | United States of America | Search report |
| US8687502B2 | Cited by | United States of America | Applicant |
| US2009113413A1 | Cited by | United States of America | Pre-grant |
| US2011087917A1 | Cited by | United States of America | Pre-grant |
| US10445083B2 | Cited by | United States of America | Applicant |
| US2017104789A1 | Cited by | United States of America | Pre-grant |
| US11113147B2 | Cited by | United States of America | Search report |
| US10861081B2 | Cited by | United States of America | Applicant |
| US2010122244A1 | Cited by | United States of America | Pre-grant |
| CN109933465A | Cited by | China | Search report |
| US11032395B2 | Cited by | United States of America | Search report |
8 members in 3 offices; this record represents the family
Priority claims6
| Document | Office | Kind | Date |
|---|---|---|---|
| 42807102 | United States of America | P | |
| 42807102 | United States of America | P | |
| 69552403 | United States of America | A | |
| 60428071 | – | – | – |
| US20020428071P | – | – | – |
| US20030695524 | – | – | – |
Members8
| Document | Office | Kind | |
|---|---|---|---|
| US2004103412A1 | United States of America | A1 | |
| WO2004049104A2 | World Intellectual Property Organization (WIPO) | A2 | |
| AU2003287631A1 | Australia | A1 | |
| AU2003287631A8 | Australia | A8 | |
| WO2004049104A3 | World Intellectual Property Organization (WIPO) | A3 | |
| US7047448B2 | United States of America | B2 | |
| US2006190773A1 | United States of America | A1 | |
| US7640458B2 | United States of America | B2 |
48 transactions on the USPTO file
Allowed after 1 non-final rejection.
- Non-final rejections
- 1
- Final rejections
- 0
- RCEs
- 0
- Appeals
- 0
Over time
Point at a mark for the transactionTransactions
| Event | Code | |
|---|---|---|
| Payment of Maintenance Fee, 12th Year, Large EntityM1553 | M1553 | |
| Email NotificationEML_NTR | EML_NTR | |
| Change in Power of Attorney (May Include Associate POA)PA.. | PA.. | |
| Correspondence Address ChangeC.AD | C.AD | |
| Entity status set to undiscounted (initial default setting or status change)BIG. | BIG. | |
| Email NotificationEML_NTR | EML_NTR | |
| Change in Power of Attorney (May Include Associate POA)PA.. | PA.. | |
| Correspondence Address ChangeC.AD | C.AD | |
| Substitute Specification FiledC604 | C604 | |
| Post Issue Communication - Certificate of CorrectionN423 | N423 | |
| Recordation of Patent Grant MailedPGM/ | PGM/ | |
| Patent Issue Date Used in PTA CalculationAllowedPTAC | PTAC | |
| Issue Notification MailedAllowedWPIR | WPIR | |
| Dispatch to FDCD1935 | D1935 | |
| Application Is Considered Ready for IssuePILS | PILS | |
| Issue Fee Payment VerifiedN084 | N084 | |
| Issue Fee Payment ReceivedIFEE | IFEE | |
| Mail Notice of AllowanceAllowedMN/=. | MN/=. | |
| Notice of Allowance Data Verification CompletedAllowedN/=. | N/=. | |
| Case Docketed to Examiner in GAUDOCK | DOCK | |
| Date Forwarded to ExaminerFWDX | FWDX | |
| Response after Non-Final ActionA... | A... | |
| Request for Extension of Time - GrantedXT/G | XT/G | |
| Information Disclosure Statement consideredIDSC | IDSC | |
| Reference capture on IDSRCAP | RCAP | |
| Information Disclosure Statement (IDS) FiledM844 | M844 | |
| Information Disclosure Statement (IDS) FiledWIDS | WIDS | |
| Mail Non-Final RejectionNon-final rejectionMCTNF | MCTNF | |
| Non-Final RejectionNon-final rejectionCTNF | CTNF | |
| Case Docketed to Examiner in GAUDOCK | DOCK | |
| Case Docketed to Examiner in GAUDOCK | DOCK | |
| Information Disclosure Statement consideredIDSC | IDSC | |
| Information Disclosure Statement (IDS) FiledM844 | M844 | |
| Information Disclosure Statement (IDS) FiledWIDS | WIDS | |
| IFW TSS Processing by Tech Center CompleteTSSCOMP | TSSCOMP | |
| Case Docketed to Examiner in GAUDOCK | DOCK | |
| Application Is Now CompleteCOMP | COMP | |
| Application Return from OIPEWROIPE | WROIPE | |
| Application Return TO OIPEROIPE | ROIPE | |
| Application Is Now CompleteCOMP | COMP | |
| Application Dispatched from OIPEOIPE | OIPE | |
| Information Disclosure Statement consideredIDSC | IDSC | |
| Reference capture on IDSRCAP | RCAP | |
| Information Disclosure Statement (IDS) FiledM844 | M844 | |
| Information Disclosure Statement (IDS) FiledWIDS | WIDS | |
| Cleared by OIPE CSRL194 | L194 | |
| IFW Scan & PACR Auto Security ReviewSCAN | SCAN | |
| Initial Exam Team nnIEXX | IEXX |
15 legal events, as the office reported them to INPADOC
Over the term
Point at a mark for the eventEvents
| Event | Code | |
|---|---|---|
| Maintenance fee paymentMAFP | MAFP | |
| AssignmentAS | AS | |
| AssignmentAS | AS | |
| AssignmentAS | AS | |
| AssignmentAS | AS | |
| Fee payment procedurePAYOR NUMBER ASSIGNED (ORIGINAL EVENT CODE: ASPN); ENTITY STATUS OF PATENT OWNER: LARGE ENTITYFEPP | FEPP | |
| Fee paymentFPAY | FPAY | |
| AssignmentAS | AS | |
| Fee payment procedurePAT HOLDER NO LONGER CLAIMS SMALL ENTITY STATUS, ENTITY STATUS SET TO UNDISCOUNTED (ORIGINAL EVENT CODE: STOL); ENTITY STATUS OF PATENT OWNER: LARGE ENTITYFEPP | FEPP | |
| Fee paymentFPAY | FPAY | |
| AssignmentAS | AS | |
| AssignmentAS | AS | |
| Certificate of correctionCC | CC | |
| Information on status: patent grantGrantedPATENTED CASESTCF | STCF | |
| AssignmentAS | AS |
Numbers
- Publication, DOCDB
- 2004103412
- Publication, EPODOC
- US2004103412
- Application
- 10695524
- Application, DOCDB
- 69552403
- Application, EPODOC
- US20030695524
Titles
- English
- Software self-repair toolkit for electronic devices
Patent term adjustment
- A delay
- +224 daysthe office missed an examination deadline
- Applicant delay
- −16 days
- Net adjustment
- 208 days
Classification
- CPC, 2
- G06F11/1433
- G06F8/65
- IPC, 4
- G06F
- G06F9 44
- G06F9 445
- G06F11 00
- USPC, 4
- 717171000
- 714E11135
- 717170000
- 717176000