METHOD AND APPARATUS FOR APPLIANCE RECONFIGURATION

Abstract: A novel method and apparatus are disclosed for reconfiguring a device after manufacture. The reconfiguration may be performed through physical manipulation of the device and/or by remote communication with the device using communications networks such as the Internet. In an exemplary use of an apparatus according to one embodiment of the invention, a processor receives a configuration string from an input device, verifies the configuration string, and stores configuration information based at least in part on the configuration string. In a particular implementation, a software (or firmware) application allows a user of a cellular telephone to reconfigure vocoder options be entering a numeric or alphanumeric configuration string into the cellular phone. By applying a method or apparatus according to an embodiment of the invention as disclosed herein, an appliance manufacturer may gain a competitive advantage in a changing marketplace while minimizing associated costs.

Description: METHOD AND APPARATUS FOR APPLIANCE RECONFIGURATION BACKGROUND OF THE INVENTION Field of the Invention This invention relates to appliance reconfiguration. More specifically, this invention relates to a method and apparatus for the reconfiguration of an appliance after manufacture. Description of Related Art and General Background Nearly all appliances operate in relation to an external environment. In order for such an appliance to function correctly, its particular configuration must be adapted to interact appropriately with its operational environment. For example, most appliances use power from an external source (e.g. a replaceable battery or a wall outlet). Therefore, the configuration of a powered appliance must correspond to the characteristics of the power being supplied (such as the voltage of the battery, or the frequency and phase of the outlet current). In some cases, the characteristics of the operational environment (in this example, the power interface) may vary from one geographic region to another, and it may be desirable for an appliance to be usable in either location. For example, an electric razor manufactured in Europe will be of little use in North America if it cannot be adjusted to utilize the supply voltage that is predominant in North America. An ability to reconfigure ■> the appliance to accept 110 volts makes the electric razor more useful to a user in North America, thus making the product more portable by extending its usefulness across multiple regions. Likewise, a communications device such as a television or a cellular telephone is designed to receive and/or send signals having particular characteristics. If the characteristics of the operational environment change (for example, if the broadcaster or cellular service provider begins to use a different signaling format or the device is taken into a region where a different signaling format is in use), the device may be rendered obsolete (e.g. unable to take advantage of available features) or even unusable. An appliance as first released to the market will not be useful unless the manufacturer configures it to comply with the applicable standards or accepted practices currently in effect. Over time, however, the characteristics of the operating environment may vary, leading to a lack of compatibility and a resulting high rate of obsolescence for consumer appliances such as cellular telephones, computer equipment and peripherals, and entertainment and communications products. It is not uncommon for technically advanced products to become obsolete within a few years or even months simply because they are unable to comply with a new version of the interface between the appliance and the environment. One solution to the problems described above is to manufacture the appliance to have features that are compatible with a new context but are temporarily disabled. When the new context has been established, the appliance is reconfigured to enable these features. In this case, however, the manufacturer is faced with the task of updating the appliances somehow to take advantage of the new context. While the manufacturer might choose to recall the appliances for reconfiguration, such an option presents numerous logistical problems, including significant shipping expenses and delays. Alternatively, the device configuration may be modifiable by a retailer or an end user via one or more switches, a menu, or a similar selection mechanism. When control of appliance reconfiguration is decentralized in this fashion, however, various problems may arise, including the problem of controlling the accuracy of the reconfiguration. Errors resulting from entering invalid reconfiguration information can cause frustration to the person performing the reconfiguration or may even damage the device being reconfigured. An attempt to select a feature that is not yet supported in the operational environment may also render the device functionally inoperative and/or introduce system glitches that are difficult to trace. In any event, such uncontrolled access is likely to create additional user support expenses. A method or apparatus for changing the configuration of an appliance may be beneficial when a manufacturer wishes to incorporate features into the device for activation at a later time. For example, the manufacturer may add features not yet supported by the environment without delaying the shipment of the device to the consumer. However, it is also desirable for a manufacturer to be able to control the reconfiguration process in order to avoid inadvertent reconfigurations and reduce the likelihood that building these reconfiguration capabilities into the appliance will bring unwanted results and added costs. Therefore, it is desirable to provide a method and apparatus for verifying a new reconfiguration for an appliance. SUMMARY A method and apparatus to reconfigure a device after manufacture are described. The apparatus has a processing unit that receives and verifies a configuration string and outputs configuration information based, at least in part, on the configuration string. The apparatus also has a nonvolatile storage area for storing the configuration information. BRIEF DESCRIPTION OF THE DRAWINGS FIG. 1 is a flowchart of a method according to an embodiment of the invention. FIG. 2 shows an apparatus according to an embodiment of the invention. FIG. 3 is a flowchart of a method according to an embodiment of the invention. FIG. 4 is a flowchart of a method according to an embodiment of the invention. DETAILED DESCRIPTION In an apparatus according to an embodiment of the invention, configuration information may be altered or updated at some point after manufacture. For example, the apparatus may be reconfigured when external conditions change (e.g. when the environment reaches a level that supports new features or the apparatus is taken or shipped to a different location) or when it is desired to enable or disable existing functions. In a method according to an embodiment of the invention, as shown in FIG. 1, reconfiguration of a device is accomplished using a configuration string received in task PI 00. The method includes verifying that the configuration string is valid in task P200 and storing configuration information (in task P300) that is based at least in part on the configuration string. In one exemplary application, a cellular telephone is reconfigured to use certain vocoder options. As shown in FIGURE 2, an apparatus 110 according to an embodiment of the invention comprises a processor 120 and a nonvolatile storage area 130. Processor 120 receives a configuration string, verifies that the string is valid, and outputs configuration information based at least in part on the configuration string. In the example of FIG. 2, processor 120 receives the configuration string from input device 115, which is any device by which information may be entered by a user (such as a numeric keypad or a typing keyboard) or supplied externally (such as an interface to a network or to the Internet) or from which information may be retrieved (such as a memory, storage unit, or data medium). Nonvolatile storage area 130 stores the configuration information that is outputted by processor 120, retaining this information even after the appliance has been turned off. During an operating mode of the apparatus, the configuration information is referenced (e.g. by processor 120 or by another element of the appliance) such that the operation of the appliance is affected at least in part by this information. In order to reconfigure an appliance equipped with such an apparatus, it is not necessary to return it to the manufacturer, as subsequent possessors (including suppliers, retailers and end users) may also reconfigure the appliance reliably. For example, during manufacture the appliance may be initialized to have a base configuration. At an appropriate time, a configuration string may be provided (e.g. by the manufacturer or by a service provider) to the subsequent possessor, who enters the configuration string to reconfigure the appliance. Correctness of the new configuration information is established by verification of the configuration string. In an exemplary application of such an apparatus, a cellular phone is reconfigured to alter or update its capabilities. A technique called enhanced variable rate codec (EVRC) has been developed to maximize capacity on a wireless cellular telephone network by switching between coding rates based in part on signal activity. This technique is described, for example, in the Interim Standard 127 (IS -127) document entitled "Enhanced Variable Rate Codec, Speech Service Option 3 for Wideband Spread Spectrum Digital Systems," published by the Telecommunications Industry Association Electronics Industry Association, July 19, 1996. As EVRC is an emerging standard, it is not currently available in all markets. Some telephone networks are capable of supporting EVRC, while other networks recognize ENRC as a valid service option (i.e. are 'EVRC-aware') but cannot support it and will ignore a request for ENRC service. In yet other networks, however, a request for EVRC service will be interpreted as an invalid transmission, causing the network to drop the connection which issued the request. The current state of EVRC-readiness among wireless networks (or mobile phones) thus includes at least the following possibilities: (1) ENRC-capable; (2) ENRC-aware; or (2) EVRC-unaware. This disparity in the level of ENRC capability among various wireless markets presents a logistical challenge to manufacturers of cellular phones seeking to implement ENRC. Cellular phones which are shipped to consumers with the ENRC capabilities activated may be unable to function within wireless networks that are not ENRC-capable, such as might happen when the consumer uses the cellular phone in an area outside of his or her home network. If the cellular phones are shipped to consumers with the EVRC capabilities inactive, however, they will not be able to take advantage of those capabilities when in an EVRC-capable wireless network. In applying a method or apparatus according to an embodiment of the invention to such an application, configuration information comprising several configuration options may be used to configure the phone to operate appropriately depending on the state of the present network. Note that although the options below are described in relation to a cellular telephone, reconfiguration of one or more of them may also be applicable to any other device communicating to a base station, such as a wireless local loop (WLL) set, a fixed or mobile data terminal, a point-of-sale (POS) terminal, or the like: • Home Origination: This configuration option indicates the service option to be used when the mobile station initiates a call while within the home system. Because the service provider in the home system knows the capabilities of its system with respect to EVRC support, this configuration option may be set to conform to those capabilities. The value of this configuration option may also be specified on the basis of other factors as well, such as a particular user's rate schedule. In an exemplary application, the home origination option has a value indicating 'low' (e.g. a transmission rate of 8 kilobits/second [kb/s]), 'high' (e.g. a transmission rate of 13 kb/s), or 'EVRC • Roam Origination: When the mobile station initiates a call while roaming in a foreign system, the roam origination configuration option determines the characteristic of the coding indication transmitted to the foreign base station. Like the home origination service option, the roam origination service option in the exemplary application has a value indicating 'low,' 'high,' or 'EVRC Unlike the home system, the characteristics of a foreign system are impossible to predict in advance. If the phone indicates EVRC, and the foreign system is EVRC- unaware, the user may have difficulty placing a call within that system. Therefore, the choice for this option may represent a tradeoff between compatibility and performance. • EVRC-Enabled: This configuration option indicates whether the cellular phone may use EVRC when responding to notification of an incoming call (also called a 'network page') while in a foreign network. In the exemplary application, if it is desired to allow an EVRC-capable cellular phone to indicate its EVRC capability, the configuration option indicates the Boolean value 'TRUE.' Alternatively, if the cellular phone is EVRC-incapable or if EVRC indication is not desired, this configuration option indicates the value 'FALSE.' • Home Page Service Option: This configuration option indicates the service option that the cellular phone will use when responding to notification of an incoming call while in the home system. In the exemplary application, this option has a value indicating 'low,' 'high,' or 'ENRC If the notification indicates a service option that matches the home page service option, the ENRC-capable cellular phone will respond with EVRC. For example, if the notification indicates a service option of 'high,' and the home page service option also indicates 'high,' then the EVRC-capable cellular phone will negotiate to use EVRC. This action notifies the network that the cellular phone is capable of using EVRC and invites it to use ENRC if possible. If the notification indicates a service option that does not match the home page service option, the cellular phone will respond with the indicated service option if the phone supports it. For example, if an EVRC-capable cellular phone receives a network page indicating a service option 'low,' and the value of the home page service option does not indicate 'low,' then the phone will respond in accordance with the service option 'low'. A mapping between the configuration string received and the configuration options it specifies may have several forms. In the ENRC application described above, 54 different combinations of configuration options are possible (3 x 3 x 2 x 3), so that all of these combinations may be distinctly represented with, for example, a configuration string comprising a two-digit decimal number or a six-digit binary number. Note that for a given application, the number of digits actually required may be lower than the number of possible combinations would indicate, as the number of meaningful combinations of configuration options may be less than the number of possible combinations. In the EVRC application above, for example, if the option ΕVRC-enabled' indicates 'FALSE,' then it would not be necessary to allow for an indication of ΕVRC in any of the other three options. It may be desirable to design the configuration string such that one or more separate digits specify each option. In this case, at least four decimal or seven binary digits (i.e. 2 + 2 + 1 + 2) would be used for the example above. Alternatively, it may be desirable to associate one or more other symbols (e.g. alphanumeric characters) with each configuration option. In the EVRC application discussed above, for example, each of the first four symbols of the configuration string may correspond to a different configuration option. In a case where only a limited number of values are available for each configuration option, the range of possible input symbols may be mapped to this valid range (i.e. more than one input symbol may specify the same option). Alternatively, certain possible input symbols may be rejected as invalid. Similarly, it is possible that only a limited number of combinations of the configuration options will be recognized as valid. Numerous mappings are possible between the configuration string (received by processor 120 as described above) and the configuration options (outputted by processor 120 and stored in nonvolatile storage area 130 as described above). Verification of the configuration string (as described below) may be performed within this mapping or as a separable process. A non-exhaustive listing of several such possible mappings is now presented. In a first exemplary mapping, a mapping function/is applied to the configuration string as a unit, thereby producing the configuration options. The number of symbols in the configuration options need not be the same number of symbols in the configuration string. In a second exemplary mapping, a mapping function/is applied separately to each individual symbol of the configuration string. Depending upon the nature of the function/, each such application may produce zero, one, or a plurality of symbols of the configuration options. In a third exemplary mapping, a mapping function /includes a set of functions/, and each function/ is applied to a single corresponding symbol of the configuration string to obtain zero, one, or a plurality of symbols of the configuration options. In a fourth exemplary mapping, a mapping function /is applied separately to groups of symbols of the configuration string to produce from each group zero, one or a plurality of symbols of the configuration options. Note that the symbols in each group need not be consecutive within the configuration string. Also note that a different mapping function/ may be applied to each group. It is possible for the configuration string to include symbols that are ignored during mapping, as determined by e.g. the symbol's value or the symbol's position within the string. Such a feature may be desirable to produce a string that is meaningful to a human, to produce a string of a predetermined length, or to produce strings having similar appearance and/or corresponding to similar configuration information across different platforms. Also, it is possible for the string of configuration options to be larger or shorter or to have the same number of symbols as the configuration string. In an appliance where the input device is also used for other operating functions, it may be desirable to distinguish a programming mode, in which the appliance is ready to receive and process a configuration string, from an operating mode, in which the appliance may perform various other functions (some or all of which may be affected by stored configuration information). In a cellular telephone, for example, the keypad may be used to input the configuration string (in a programming mode) or to input a telephone number (in an operating mode). In one example pertaining to the ENRC application above, for example, the telephone may enter a programming mode when the user presses a predetermined sequence of keys on the telephone's keypad while the telephone is in standby mode: for example, the sequence of keys corresponding to the letters 'E,' 'V,' 'R,' and 'C (i.e. the keys '3,' '8,' '7,' and '2,' respectively), followed by an ENTER key. In another example, a similar action may be performed remotely, or a switch may be provided in order to put the appliance into a programming mode. The appliance may be designed to display the current settings for the configuration options (as a numeric string or in a tabular format, for example) when it enters a programming mode. Verification of the configuration string may occur in several different ways. I-n a first example, the configuration string is compared to each among an internal set of valid strings. While this approach allows for the use of strings that are easy to remember, its use may limit the number of available combinations of configuration options. In a second example, a checksum calculated from the configuration string is compared to an internal set of valid checksums. In some cases this approach may require less local storage than the first, but it may also limit the number of valid configuration strings. In a third example, a checksum calculated from one part of a configuration string (or from the configuration information or a portion thereof) is compared to another part of the configuration string. Of these three approaches, the last one is the most flexible and consumes the least local storage. In one implementation of the ENRC application described above, the configuration string is verified under the third approach by using a checksum function to calculate a checksum sequence from a portion of the configuration string. The checksum function may include factors that are prime numbers in order to minimize the occurrence of zeros in the result. In this example, the configuration string is six characters long, the last two characters being checksum characters. In the checksum calculation, each character in the configuration string is represented by the ASCII value for that character. For example, if the first character of the configuration string is the number '0', the checksum calculation uses a value of 48 (the ASCII representation for the character '0') to represent the first digit in the calculation. By applying the checksum function to the first four characters of the configuration string, the anticipated character values for the fifth and sixth characters are obtained. If the fifth and sixth characters of the configuration string coincide with the checksum-calculated values, the configuration string is successfully verified. On the other hand, if the fifth and sixth characters in the configuration string do not coincide with the checksum-calculated values, the verification procedure fails. The checksum function may have the following form: checksum_value_l = ([(ASC[1] x a) + (ASC[2] x b) + (ASC[3] x c) + (ASC[4] x d)]/i) mod j, checksum_value_2 = [(ASC[1] x e) + (ASC[2] x f) + (ASC[3] x g) + (ASC[4] x h)] mod m, where checksum_value_l and checksum_value_2 correspond to the values of the fifth and sixth characters of the configuration string, respectively; and ASC[1], ASC[2], ASC[3], and ASC[4] are the ASCII values of the first four characters of the configuration string, respectively. As mentioned above, one or more of the factors a through h may be prime numbers. In a particular implementation, a = e, b = f, c = g, and d = h. In a further implementation, i = j = m. If the configuration string is successfully verified, the configuration information is stored into nonvolatile storage. Nonvolatile storage 130 may comprise any storage device that retains information after external power is removed, such as a semiconductor memory unit (such as a flash random-access memory [RAM], a field-programmable gate array [FPGA], or a RAM with battery backup) or a magnetic, optical, and/or phase-change storage medium (such as a hard, floppy, CD-R, CD-RW, or DVD disk). Depending on the nature of nonvolatile storage area 130, the configuration information may remain in effect until it is erased or overwritten with new configuration information, or it may be retained permanently. In the case of a small, portable device having relatively limited nonvolatile storage requirements, it may be desirable to use flash or ferroelectric RAM for at least a portion of nonvolatile storage area 130, as such RAM consumes relatively little space, requires relatively little energy for reading and writing, and may be easier and less expensive to incorporate into the fabrication process than alternatives such as microminiature Winchester drives. If the results of the checksum indicate that the configuration string received is not valid, the configured options may remain unchanged, and an error indication may also be returned. In an alternative implementation, another set of configuration options is stored to nonvolatile storage area 130 in the event of a verification failure. This set of options may cause the device to provide assistance to the user, may cause the device to sound an alarm locally and/or transmit an alarm indication to a remote location, or may cause certain capabilities of the device to become disabled. Note that it is possible (if desired) to store the configuration information even before the configuration string has been verified. If the configuration string then fails the verification procedure, the new configuration information may be erased. Such operation may be used, for example, to disable the device (e.g. for reasons of security) in response to an unsuccessful reconfiguration attempt. FIGURE 3 shows a flowchart of a method according to an embodiment of the invention. In task P010, a configuration string is received, e.g. from an input device such as a telephone keypad. In task P020, configuration options are calculated from at least a portion of the configuration string. In task P030, a checksum is calculated from at least a portion of the configuration string as described above. If the checksum result matches the corresponding portion of the received configuration string (i.e. verification task P040 succeeds), then the configuration option calculated in task P020 are stored in task P050. If the checksum result does not match the corresponding portion of the received configuration string (i.e. verification task P040 fails), then an error is reported in task P060. In task P070, the user is prompted to reenter the configuration string or to abort the reconfiguration attempt. FIGURE 4 shows a flowchart of an alternative implementation in which the configuration options are not calculated until the string has been verified. In a further implementation, task P020 may be performed in parallel with tasks P030 and/or P040. Note that a single appliance may contain multiple sets of configuration options. For example, a cellular phone may have several number assignment modules (NAMs), with a different configuration being associated with each NAM. Thus, in one implementation of the EVRC application described above, a user may configure each NAM to have different EVRC characteristics. In another exemplary use of a method or apparatus according to an embodiment of the invention, an appliance is reconfigured to select a particular software application (such as a web browser) from among multiple such applications available. For example, the user may enter a configuration string to choose a particular web browser. Upon verification of the configuration string, the appliance is reconfigured to use the selected browser. As described above, such a method or apparatus allows additional functionality to be added during manufacture or at some later time (e.g. by downloading a software upgrade or addition), while postponing the activation of such functionality until the appropriate reconfiguration is performed. In a further exemplary application of a method or apparatus according to an embodiment of the invention, a user interface of an appliance is customized. For example, a reseller of a device may wish to substitute a customized user interface (e.g. one that displays the logo of the reseller in each menu) for a default interface provided by the manufacturer. In this application, the reseller may work with the manufacturer during the manufacturing stage to develop and incorporate a user interface that is specific to the reseller, and/or the reseller may download such configurability into the appliance after manufacture. The reseller may then reconfigure the appliance to display the customized interface by entering the appropriate configuration string locally and/or remotely before retail sale. In another application of a method or apparatus according to an embodiment of the invention, an appliance is reconfigured to alter a menu such that certain menu items are revealed or hidden. For example, when a user requests a service provider to activate a new feature, such as faxing capability, the service provider may provide a code (i.e. a configuration string) by which the user may reconfigure the appliance so that a menu item or items corresponding to that feature that were previously hidden are now available. As a result, use of the additional feature is enabled. Alternatively, continued support for a particular feature may require a new configuration string (supplied, for example, by subscription) to be inputted periodically, such that unless the configuration information is updated as required, the appliance will revert to a default configuration, thus hiding or otherwise disabling the feature. The foregoing description of the invention is provided to enable any person skilled in the art to make or use the present invention. Various modifications to these embodiments are possible, and the generic principles presented herein may be applied to other embodiments as well. For example, the invention may be implemented in part or in whole as a hard-wired circuit, as a circuit configuration fabricated into an application- specific integrated circuit, or as a firmware program loaded into non- volatile storage or a software program loaded from or into a data storage medium as machine-readable code, such code being instructions executable by an array of logic elements such as a microprocessor or other digital signal processing unit. Thus, the present invention is not intended to be limited to the embodiments shown above but rather is to be accorded the widest scope consistent with the principles and novel features disclosed in any fashion herein.

Claims: CLAIMS We claim: 1. An apparatus comprising: a processor; and a storage area, wherein said apparatus has an operating mode and a programming mode, and wherein, when said apparatus is in said prograrnming mode, said processor is configured and arranged to receive a configuration string, and wherein, at a time subsequent to receiving said configuration string, said processor is configured and arranged to verify said configuration string, and wherein said storage unit is configured and arranged to receive configuration information, and wherein said configuration information is based at least in part on said configuration string, and wherein, when said apparatus is in said operating mode, an operation of said apparatus is based at least in part on said configuration information. 2. The apparatus according to claim 1, wherein said apparatus is a wireless communications device, and wherein said configuration information comprises vocoding parameters. 3. The apparatus according to claim 2, wherein said vocoding parameters relate to at least one vocoding data rate. 4. The apparatus according to claim 1, wherein the storage area comprises a nonvolatile semiconductor random-access memory. 5. The apparatus according to claim 1, said apparatus further comprising a keypad, wherein the configuration string is entered via said keypad coupled to said processing unit. 6. The apparatus according to claim 1, wherein said apparatus is a wireless communications device, and wherein at least a portion of said configuration information comprises an indication of one among a plurality of vocoding options. 7. A method comprising: receiving a configuration string; verifying the configuration string; and storing into a nonvolatile storage area configuration information based at least in part on the configuration string; wherein an operation of an apparatus is based at least in part on the configuration information. 8. The method according to claim 7, wherein the configuration string comprises a string of alphanumeric characters. 9. The method according to claim 7, wherein verifying the configuration string comprises (1) performing a predetermined operation upon at least one value, said at least one value relating to a first portion of the configuration string, and (2) comparing a result of said predetermined operation to a predetermined checksum value. 10. The method according to claim 9, wherein the predetermined checksum value is based at least in part on a second portion of the configuration string. 11. A method comprising: changing from an operating mode to a programming mode in response to a programming action; while in the programming mode, receiving a configuration string; verifying the configuration string; and storing configuration information, wherein said configuration information is based at least in part on said configuration string, and wherein the operating mode depends at least in part on said configuration information. 12. The method according to claim 11, wherein verifying the configuration string comprises (1) performing a predetermined operation upon at least one value, said at least one value relating to a first portion of the configuration string, and (2) comparing a result of said predetermined operation to a predetermined checksum value. 13. The method according to claim 12, wherein the predetermined checksum value is based at least in part on a second portion of the configuration string. 14. The method according to claim 11, wherein at least a portion of said configuration information comprises an indication of one among a plurality of vocoding options.

Inventors: CHINNASWAMI KARTHICK, KENAGY JASON, KIRBAS BILHAN, KRISHNAN CHIDAMBARAM, LEKVEN ERIC, CHINNASWAMI, KARTHICK, KENAGY, JASON, KIRBAS, BILHAN, KRISHNAN, CHIDAMBARAM, LEKVEN, ERIC
Applicants: QUALCOMM INC, QUALCOMM INCORPORATED
Application year: 2001
Main classification: H04Q7
IPC codes: H04W8