Non-volatile memory is employed in a wide variety of electronic devices such as, for example, mobile handsets, cellular phones, personal digital assistants (PDA's), pagers and handheld personal computers. The non-volatile memory in these devices contain firmware, application software, data, and configuration information that makes the devices operational, and may be provided by the manufacturers of the electronic devices, by system operators of telecommunication carrier networks, or by third parties developers. If defects are found in such firmware/software, or if new features are to be added to such devices, the software and/or firmware in the affected electronic devices may need to be updated. Errors and/or interruptions that may occur during the updating of such operational code may leave the electronic device in a partly or completely non-functional state. To avoid this problem, present methods of updating such software and/or firmware involve returning the electronic device to the manufacturer, to the system operator, or to the third party, so that an update of memory contents may be performed using a direct connection to the electronic device. This is both costly and inconvenient to both the user of the electronic device, and to one performing the update.
Configuration parameters and other information for an electronic device may be stored in the non-volatile memory of such devices, and information about the device capabilities, the hardware, software and manufacturer of the device, and particulars for a given instance of the device in a network may be stored in databases used by, for example, device management and customer service operations. Such databases may be accessible to device management and customer service operations through database access mechanisms using, for example, structured query language (SQL) or similar database management tools.
Updates to firmware and/or software in an electronic device may be developed by a number of parties including, for example, the manufacturer of the electronic device, the provider of services of a communication network accessed by the electronic device, or a third party. Users may subscribe to multiple network-based information services, and may receive numerous messages at the electronic device concerning information available, scheduled events, news, and the like. The volume of such information may impair the user's ability to maximize enjoyment and usefulness such services.
Electronic devices such as, for example, cellular phones and wireless enabled personal digital assistants are highly capable. A particular user of such a device, however, is limited by the common functionality offered to all users of a particular make, model and/or version of device. Customization of device capabilities is complex or not unavailable, and users/subscribers may not be aware of, or may find it difficult to learn how to perform personalization of their mobile device. This is particularly true of mass market devices. Customers wishing to tailor the features and capabilities of a device to their needs and wants may seek help from, for example, a customer care representative of the device manufacturer or the provider of wireless network service, but may find that support is poor or non-existent. Point-of-sale centers for such devices also frequently do not provide personalization services. Customer care representatives may be unable to determine what can be personalized in the particular device of the user/subscriber and/or may be untrained and/or unable to help the user/subscriber with such services.
In many cases, personalization of electronic devices may involve firmware, software application, and/or configuration parameter updates. The vast majority of users/subscribers have no idea what is involved, and are not capable of determining the impact such updates on other software applications, on device firmware and/or features of the electronic device. In some cases, the electronic device of a user/subscriber may not be functioning properly, which can complicate any upgrade/customization effort. Firmware, application software, and/or configuration parameters may be out of date. Customer care representatives may be not know or be equipped to determine the effects of a particular update on each of the vast array of electronic devices in use, and may be of little help in furthering user progress in customizing the functionality and user interface of those electronic devices.
During an actual update to firmware, software applications, and/or configuration parameters in an electronic device, a user/subscriber may find themselves staring at the device, waiting for the update activity to complete. Many users/subscribers are anxious about personally performing an update, and may find this a stressful yet boring task. In some cases, no indication is provided on the electronic device to show the progress of such update activities, and the user/subscriber is left uneasily wondering whether the update is proceeding normally, or whether the update has gone awry and left the device non-functional. In general, the user/subscriber experience during firmware, software application, and device configuration updates is very poor.
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.
Aspects of the present invention relate generally to the personalization of mobile devices and, more specifically, to the installation and update of new applications on the mobile devices. While the following discussion focuses primarily on mobile electronic devices such as, for example, a mobile handset, a cellular phone, a personal digital assistant, a pager, and a handheld personal computer, this is by way of example and not by way of specific limitations of the present invention. The teaching contained herein may also be applicable to a variety of other electronic devices having a processor and memory containing software, firmware, configuration information, data files, and the like, for which updating of memory contents may be desirable.
Representative embodiments of the present invention may be employed during updates using wired or wireless communication links such as, for example, a public switched telephone network, a wired local or wide area network, an intranet, the Internet, and wireless cellular, paging, local area, personal area, and short range networks such as those referred to as WiFi, IEEE 802.11 a/b/g/n compatible networks, the short range wireless technology known as Bluetooth, and similar types of communication links.
In a representative embodiment of the present invention, information for updating memory in an electronic device such as those described above may be communicated using, for example, an update package comprising a set of instructions executable by firmware and/or software in the electronic device to transform or convert an existing version of software, firmware, and/or data in the electronic device into a new or updated version of the software, firmware, and/or data. Such an update package may also contain metadata related to the update.
As shown in the illustration of
As illustrated in
In a representative embodiment of the present invention, an electronic device such as, for example, the electronic device 107 of
In addition to those elements described above, in some representative embodiments of the present invention the electronic device 107 comprises a downloaded diagnostic client (not shown) that facilitates remote diagnosis, and/or a traps client (not shown) that facilitates the setting of traps and retrieving of collected information. In such embodiments, the OM client 163 of the electronic device 107 interacts with the OM server 109, the diagnostic client, and the traps client, to receive OM commands from the OM server 109 and to implement them in the electronic device 107. The download server 151 is employed to download firmware and software updates (e.g., update information in the form of, for example, update packages). In some representative embodiments of the present invention, the download server 151 is used to download new firmware/software such as, for example, the diagnostics client mentioned above, which is then installed and activated in the electronic device 107.
As described briefly above, an electronic device in accordance with some representative embodiments of the present invention (e.g., electronic device 107) receives update information (e.g., an update package) for processing by one or more update agents (e.g., update agent 115) to convert/transform software (e.g., application software 127) and/or firmware (e.g., firmware 117) to produce updated software/firmware in the electronic device. In some representative embodiments of the present invention, the update agent 115 comprises multiple update agents, each of the update agents appropriately arranged to process different types of update information for updating different types/formats of software, firmware, user data, and configuration parameters in the memory of the electronic device 107. In such embodiments, each of the update packages received are processed in the electronic device by an appropriate one of the update agent(s) 115 to update an associated type of information in the memory of the electronic device 107.
Some representative embodiments of the present invention employ an Open Mobile Alliance (OMA) device management (OM)-based applications server composed of two parts, an OMA OM-based application, and an OMA OM server such as, for example, the OM server 109 shown in
The network 205 helps manage the user experience during a firmware/software update of the electronic device 207 by, for example, displaying information, advertisements, and promotions on the display of the electronic device 207, during the update process. In some representative embodiments of the present invention, the display of such advertising and informational content employs a server such as, for example, the OM server 209 or another server (e.g., content management server 251) in the network 205. For example, the OM server 209 may set up the display of advertisements and information by communicating with the electronic device 207 using a device management protocol such as, for example, an Open Mobile Alliance (OMA) device management (OM) protocols. The development of the OMA OM protocol has been under the guidance of the Open Mobile Alliance, Ltd. Arranging for display of advertising and informational content during updates of the electronic device 207 may take place, for example, during a device discovery session between a server such as the OM server 209 and the electronic device 207. In one representative embodiment of the present invention, once the update of the electronic device 207 starts, the update agent 215 in the electronic device 207 pulls display information, advertisements, and promotion material, for example, from downloaded content stored in the electronic device 207. In other representative embodiments, the advertising, promotional, and information content may be pushed to the electronic device 207. The exchange of such information between a remote server and the electronic device 207 may use one or both of the OMA OM and OMA Download protocols. This may include defining a new set of management objects in a device management tree in memory of the electronic device 207, which will be used to point client software in the electronic device 207 to correct download locations (e.g., universal resource locators (URLs)) of the content. In some representative embodiments of the present invention, multiple contents download locations are supported, and multiple content packages of advertising, promotional and information content are supported. In some representative embodiments of the present invention, the content and URLs used are dynamically selected during the session based upon segmentation of users as well as the electronic devices in use. An addressing method using fixed or dynamic locations that communicate the location of advertising, promotional, and information content allows for staging content on the electronic device 207 before commencing an update, and then displaying the content during the update activity.
In some representative embodiments of the present invention, the update agent 215 performs this display of advertising, promotional, and/or information content without the use of the capabilities of the operating system of the electronic device 207. In such an embodiment, the update agent 215, for example, displays content to the user. In some representative embodiments of the present invention, such downloaded content is contained in an update package used to contain update information for the update of the firmware, application software and/or configuration parameters. In other representative embodiments, the advertising, promotional, and/or information content may be separate from the update information used for updating firmware and/or software. This permits the advertising, promotional and/or information content to be tailored for individual users or groups of users of the electronic device 207, separately from update information for the electronic device 207. In one representative embodiment of the present invention, the advertising, promotional and/or information content to be displayed is selected by, for example, the OM server 209 and/or the content management server, based upon the nature of the personalization and/or update(s) being performed upon the electronic device 207. For example, a user that requests personalization of the electronic device 207 to include access to video or audio playback of media content may be presented with advertisements, and promotional, and/or information content related to various video and/or audio content available, the existence of groups of individuals having interest in certain video and/or audio content, advertisements for related services and/or related upgrades for their electronic device, and the like. In representative embodiments of the present invention, such advertising, promotional and/or information content is dynamically displayed, in a sequence and timing defined by the advertiser/content provider (e.g., from content provider server 235) and/or the provider of services/updates for the electronic device 207 (e.g., the service provider server 229 and/or the OM server 209). In this manner, an embodiment of the present invention enhances the user experience during updates of the electronic device 207, with the display/rendering of promotions, advertisements or other information.
As a part of providing updates to firmware, application software, and configuration parameters, the network 205 of some representative embodiments of the present invention handle dependency management while updating the electronic device 207. As used herein, the term “dependency management” is defined as the process of ensuring that all firmware, software, and configuration parameters needed for a given update to function in the electronic device 207 are identified, and that all are present in the electronic device 207, following completion of the installation of the update.
A representative embodiment of the present invention may be employed to handle dependency management in embedded devices an electronic device with an operating system such as, for example, the operating system 219 of the electronic device 207 of
Next, at block 412, the method of
Next, at block 416, a determination is made whether there is sufficient memory on the electronic device 207 for the application update, all of its dependencies, and any dependencies of the dependencies. If it is determined that insufficient memory is available then, at block 422, the update of the electronic device is aborted. If, however, it is determined that sufficient memory is available then, at block 418, the method of
A representative embodiment of the present invention identifies and collects all dependencies needed for an update to the electronic device 207, without requiring the involvement of the user in retrieving and downloading the needed components. In this manner, the user of the electronic device 207 need not search for and retrieve software/firmware components needed for an update, but instead a representative embodiment of the present invention creates a single package of update information on-the-fly that provides the electronic device of the user with all needed software/firmware components, automatically. The generation and use of a single package of update information can be expected to result in a greater efficiency in terms of the size of the update information used compared to the size of the software/firmware being updated/installed. In a representative embodiment of the present invention, the update created for one user may also be saved and later distributed to one or more other users having the same electronic device 207, and desiring the same updates.
It should be noted that a representative embodiment of the present invention conserves memory in the electronic device 207 by maintaining a list of only those packages that are present on the electronic device 207. In addition, in some representative embodiments of the present invention, the list of dependencies of the update provided at block 410 by a remote server (e.g., OM server 209) includes only those packages that are known to be installed on the electronic device 207.
In addition, it should be noted that a representative embodiment of the present invention conserves memory in the electronic device 207 by employing updates that are differentially compressed. That is, the update information sent to the electronic device 207 represents the differences between the prior memory image and the updated memory image of the electronic device 207.
The update agent (e.g., update agent 215) in some representative embodiments of the present invention takes into account that the amount of memory used in the electronic device 207 during an update may be expected to be greater than that used when the update process is completed.
The above example demonstrates a representative embodiment of the present invention that may be employed in an electronic device having an operating system. Other representative embodiments of the present invention may be employed to support dependency management in embedded devices without an operating system. For example, the electronic device 207 may be configured without an operating system, and may instead have embedded firmware that provides a rudimentary file system. In such a situation, an application installed by a user is likely to make calls to functions in the existing firmware of the electronic device. If the firmware in the electronic device is updatable, this may present a problem, since entry points for functions used by an application may change from an existing version of the firmware to an updated version. This issue with dynamic library access may arise on all kinds of computers, and is not limited to just embedded devices such as the electronic device 207 of
In a representative embodiment of the present invention, a jump table used to perform calls into the existing firmware is updated when the firmware is updated. Each jump table entry provides an indirect entry point to a function within existing firmware. As long as the relative offsets of the function entry points within the jump table don't change, then applications accessing firmware through the jump table entry points do not need to change when firmware is updated.
Another representative embodiment of the present invention stores a table of relocation entries with each application. Each relocation entry is a location within an application that is to be patched when the firmware of the electronic device changes, and may include instructions for how to do the patching. Some representative embodiments of the present invention consume less space to represent such patches by, for example, storing just the locations of references that are not correctly disassembled by a reference disassembler application. This approach involves partially re-linking the application to the firmware, on the electronic device. Some representative embodiments of the present invention resolve such relocation entries at run time, if the application is loaded into RAM. The use of a table of relocation entries saves a level of indirection when compared to the use of a jump table, but may involve a larger number of changes (and, therefore, writes to flash non-volatile memory) if there are many applications to be updated as a result of an update to the firmware of the electronic device 207. Updates of the electronic device 207 that may employ such techniques of dependency management include, for example, games and sounds that can be downloaded into the electronic device 207.
In some representative embodiments of the present invention, the network 205 supports updating the electronic device 207 by providing support for an OS-independent file system update process. Such a process employs an OS-agnostic comprehensive procedure to create and update the electronic device 207 using appropriate update packages. The OS agnostic procedure is adapted to each operating system with minimum changes. The procedure identifies and formalizes the common operations performed during software installations like the creation or modification of:
In a representative embodiment of the present invention, the network 205 enables updates to the electronic device 207 by providing support for the update of mixed-mode mobile devices. An electronic device such as the electronic device 207 such as, for example, a mobile phone, may be referred to as a mixed-mode mobile device if it is capable of using a number of different communication technologies (e.g., wireless protocols) for exchanging digital information. For example, a mobile phone may be capable of using standard Global System for Mobile Communications (GSM) service (that may be expensive to use), or Institute of Electrical and Electronics Engineers, Inc. (IEEE)-802.11 (Wi-Fi) protocols (that may be inexpensive to use) for downloading/exchanging update information. Some representative embodiments of the present invention employ software/firmware on both the client and server side that coordinates the use of lower cost and more-expensive modes of communication to save the user money, while providing the same information to the electronic device 207 of the user.
In one representative embodiment of the present invention, an electronic device such as the electronic device 207, for example, downloads a rough/lower bit rate version of an MP3 audio file when a user is sitting in highway traffic and only has GSM connectivity. The user may, for example, be in a car riding on an interstate highway. Such an environment is not a good location in which to critically listen to music, so a rough/lower quality/lower bit rate version may be quite acceptable. However, in a representative embodiment of the present invention, when the user arrives at a location that has a higher bandwidth connectivity available (e.g., IEEE-802.11 (i.e., Wi-Fi) connectivity), the electronic device (e.g., a mobile phone) automatically downloads a better/higher quality/higher bit rate version for playback via the user's stereo in his/her home. In some representative embodiments of the present invention, such a download is a differential download that sends only the information required to complete the content of the higher bit rate version of the rougher/lower quality version previously downloaded at a lower bit rate. By employing such a “progressive download” approach, a representative embodiment of the present invention permits a user to have a usable copy of content appropriate for the user's willingness to pay and network environment, but to later acquire a higher-quality copy suitable for use in a different environment and at a different time, without the need to purchase/download two complete copies of the desired content. A representative embodiment may upgrade such lower-quality content automatically, when an appropriate communication network is detected to be available for use.
Another representative embodiment of the present invention may download information when a higher bandwidth/less expensive connection is available, in anticipation of later use of the information when such a high bandwidth/low cost link may not be available. For example, in one representative embodiment of the present invention, an electronic device such as, for example, the electronic device 207 of
In yet another representative embodiment of the present invention, voicemail or email messages are preemptively downloaded when the user is in Wi-Fi range, even if the user hasn't yet made a request for such messages. The user of the electronic device may set one or more criteria that when met, cause the electronic device to perform exchanges of information of interest to the user. For example, the user may set the criteria to include a cost of transferring a unit of information, a time during which or before which an update should be completed. The user may set a preference for the type of communication path, or the reliability of the path to be used. The user may set how often differential updates should be performed, or the maximum age of information before a new update is attempted. And the user may request email/voicemail from particular sending parties be downloaded/retrieved ahead of all others, or at more frequent intervals. By downloading information to the electronic device 207 when the cost/bandwidth of an available communication service meets a user set criteria, a representative embodiment of the present invention allows a user to maximize the utility and adjust costs to meet the desires of the user.
The network 205 in a representative embodiment of the present invention supports differentially maintaining data in the electronic device 207. For example, a user-selected list of restaurants within a two-mile radius of a user's vehicle may be kept updated using differential updating/compression, depending on how fast the user is driving. Depending upon the type of information being exchanged, such a representative embodiment may employ a data format that is good for generic content such as, for example, media content, or other more efficient data formats for use with other types of digital content (e.g., speech, text, still images, graphics). In one representative embodiment of the present invention, compressed data stored in the electronic device 207 is updatable, and the data format used for the compressed data provides random access to the data.
As described above, a representative embodiment of the present invention supports dependency management for file system component updates and application updates in an electronic device such as the electronic device 207, via the network 205. In addition, during firmware or a component update process, a representative embodiment of the electronic device 207 may be configured to display advertisements, promotions, and information to the user to enhance the user experience.
Although a system and method according to the present invention has been described in connection with the preferred embodiment, it is not intended to be limited to the specific form set forth herein, but on the contrary, it is intended to cover such alternative, modifications, and equivalents, as can be reasonably included within the scope of the invention as defined by this disclosure and appended diagrams.
Accordingly, the present invention may be realized in hardware, software, or a combination of hardware and software. The present invention may be realized in a centralized fashion in at least one computer system, or in a distributed fashion where different elements are spread across several interconnected computer systems. Any kind of computer system or other apparatus adapted for carrying out the methods described herein is suited. A typical combination of hardware and software may be a general-purpose computer system with a computer program that, when being loaded and executed, controls the computer system such that it carries out the methods described herein.
The present invention may also be embedded in a computer program product, which comprises all the features enabling the implementation of the methods described herein, and which when loaded in a computer system is able to carry out these methods. Computer program in the present context means any expression, in any language, code or notation, of a set of instructions intended to cause a system having an information processing capability to perform a particular function either directly or after either or both of the following: a) conversion to another language, code or notation; b) reproduction in a different material form.
While the present 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 present invention. In addition, many modifications may be made to adapt a particular situation or material to the teachings of the present invention without departing from its scope. Therefore, it is intended that the present invention not be limited to the particular embodiment disclosed, but that the present invention will include all embodiments falling within the scope of the appended claims.
The present U.S. patent application is a divisional of U.S. patent application Ser. No. 14/262,619, entitled “User Experience and Dependency Management In a Mobile Device,” filed Apr. 25, 2014; which is a continuation of U.S. patent application Ser. No. 11/829,520, entitled “User Experience and Dependency Management In a Mobile Device,” filed Jul. 27, 2007; which claims priority to U.S. Provisional Patent Application No. 60/834,325, entitled “User Experience and Dependency Management In a Mobile Device,” filed Jul. 27, 2006; the entire disclosures of which are incorporated by reference into this application for all purposes. The present application makes reference to U.S. Provisional Patent Application Ser. No. 60/249,606, entitled “System and Method for Updating and Distributing Information,” filed Nov. 17, 2000; and International Patent Application Publication No. WO 02/41147 A1, entitled “System And Method For Updating And Distributing Information”, filed Nov. 19, 2001, and having publication date Mar. 23, 2002; the entire disclosures of which are incorporated by reference into this application for all purposes.
Number | Date | Country | |
---|---|---|---|
60834325 | Jul 2006 | US |
Number | Date | Country | |
---|---|---|---|
Parent | 14262619 | Apr 2014 | US |
Child | 14728983 | US |
Number | Date | Country | |
---|---|---|---|
Parent | 11829520 | Jul 2007 | US |
Child | 14262619 | US |