# Patent

## Title
System and method for adaptive programming of a remote control

## Abstract

A method and system for adaptively configuring a remote control includes analyzing a log of events, maintained by the remote control, which indicate how the remote control and the devices it controls are used by a user. Once the analysis is performed, the system and method can suggest alternative configurations of the remote control to the user. The range and type of alternative configurations is not particularly limited and can include changing which devices are employed for various user activities and/or how those activities are performed, the placement and hierarchy of commands in a menu tree and/or troubleshooting and set up configurations. The analysis can be performed either partially or totally within the remote control, or at, or in conjunction with, a service to which the remote control connects through a network.

## Background
CROSS-REFERENCES TO RELATED APPLICATIONS
This application is related to and claims priority from U.S. Provisional Application No. 60/673,479, filed Apr. 20, 2005, and is fully incorporated herein by reference for all purposes.


FIELD OF THE INVENTION
The present invention relates to remote controls. More specifically, the present invention relates to remote controls wherein the specific behavior and/or operation of the remote control can adapt based upon how the remote is used by a user.
BACKGROUND OF THE INVENTION
Remote controls for consumer electronics devices have increased in complexity, to match the many inputs and options available to control devices, and in ubiquity as many consumer electronics devices come with or support remote controls.
The assignee of the present invention offers a unique remote control, sold under the HarmonyTM brand, which provides for enhanced control of consumer electronics devices and, more importantly, systems of such devices. For example, a home theatre system typically includes a television, a DVD player, and a surround sound system. More advanced home theatre systems can further include room lighting control systems, environmental controls (HVAC) for the room, motorized viewing screen (for projection televisions) and/or motorized window curtain systems.
Typically all of these devices can be controlled via remote controls supplied with the devices and, preferably, all of these devices can be controlled with a single remote which is sold with a database of the necessary commands for each device or which can learn the necessary commands from the OEM remote controls sold with the devices.
While such systems have gained wide popularity, performing an activity such as watching a DVD can require the user to select twenty, or more, commands to activate the necessary devices and configure them properly. For example, the television set must be turned on, commanded to use the input from the DVD player, the DVD player must be turned on and commanded to start playing the DVD, the surround sound system must be turned on and commanded to use the DVD player output as an input, etc. Even when the user has a single remote control which can generate all of the necessary command signals, it can be difficult and/or tedious to operate the remote control to output all of the necessary commands in the correct sequence.
Further, once the devices in the system have been properly configured for an activity, control of the system is often non-intuitive. For example, pressing the button on the remote control to increase the volume of the DVD being watched may result in the volume of the television set being incorrectly increased, rather than the volume of the surround sound system correctly being increased.
Prior art attempts to address this problem have employed programming collections of commands, typically referred to as “macros”, into the remote control. Once programmed, ideally the user can press a single button on the remote to, for example, turn on and configure the system to perform an activity such as watch a DVD movie as the remote will “play” the macro and transmit each of the recorded commands in turn.
While such macro systems can improve the usability of complex systems of consumer electronics devices, serious problems exist with such macro systems. One problem is that it can be difficult for many people to create the necessary macros as the macros can be quite complex and many consumers pay installation contractors to program an appropriate set of macros into their remotes.
A more serious problem is that such macro systems are “state-less” in that the macro is recorded based upon an assumption of the operating state of the devices to be controlled by the macro and deviations in any device from its assumed state can result in the failure of the macro to properly configure the system. For example, if a television set has a “toggle” type command for its power control (i.e., each time a POWER command is sent to the television, the television turns OFF, if it is ON, or turns ON if it is OFF), then a macro to watch a DVD movie must include an assumption that the TV is in a given state, such as ON. If a macro is recorded to watch a DVD movie and the remote control assumes the TV is ON prior to execution of the macro, and if the TV is in fact OFF when the macro is executed, an inoperative result occurs as the remote will not transmit a POWER command to the TV and the TV will not be turned ON. In fact, this inoperative result typically cannot be corrected merely by turning the TV ON, because with the TV OFF when the macro executed, the TV will have ignored the other commands sent to it by the remote to, for example, change the input the TV is currently using to the input connected to the DVD player, etc.
This can result in ludicrous systems wherein the user must execute one macro to watch a DVD if their system is presently OFF and another macro to watch a DVD if their system is ON and presently configured to watch a television program and another macro to watch a DVD if their system is presently ON and configured to play a CD, etc., or other non-intuitive systems wherein the system must be returned to a predefined configuration before a macro is executed to configure the system for another activity.
To address these disadvantages and others, the above-mentioned HarmonyTM remotes employ a state-based strategy to control devices and employ a web-based configuration method and system. The Harmony remotes store a representation of the current state of each device controlled by the remote and determine the commands which must be transmitted to each device to change the overall state of the system from one state (e.g., listen to CD) to another (e.g., watch a DVD).
The Harmony remotes employ an internet-based configuration method and system wherein the remote is connected, via the Internet, to a device database and a configuration compiler which, through an interactive web page dialog/process with the user, programs the remote to control the user's devices.
The Harmony remotes employ technologies described in U.S. Pat. No. 6,784,805; published U.S. Application 2005/0052423; published U.S. Application 2005/0030196; published U.S. Application 2002/0056084; and published U.S. Application 200/0045819, all to Harris et al., all assigned to the assignee of the present invention, and the contents of this patent and these published applications are incorporated herein by reference.
While the HarmonyTM remotes offer many advantages over prior art remotes, it can be difficult to troubleshoot the configuration process and/or it can be difficult for a user to customize the operation and arrangement of their remote.
It is desired to have a system and method that can improve the ability to troubleshoot the configuration of a remote control and/or to adaptively configure the remote control to correspond more closely to how the remote is typically used.
BRIEF SUMMARY OF THE INVENTION
It is an object of the present invention to provide a novel method and system for adaptively configuring a remote control which obviates or mitigates at least one disadvantage of the prior art.
According to a first embodiment of the present invention, a remote control system is provided that includes a remote control operable to log and store user initiated events relating to the control of devices with the remote control, the remote control operating in accordance with a configuration data set stored in the remote control; a device database storing identifications of devices to be controlled by the remote control and the command sets for those devices; an analysis module operable to analyze the log of events stored by the remote control to identify one or more patterns of interest in the logged use of the remote control by the user; and a configuration utility operable with the device database and the analysis module to create a configuration data set to operate the remote control in accordance with at least one identified pattern of interest.
Preferably, in response to the results produced by the analysis module, the configuration utility conducts an interactive dialog with the user as to whether they would like a suggested change in the operation of the remote control to be implemented and the configuration utility will effect the change if the user responds accordingly.
According to another embodiment of the present invention, a method is provided for adaptively configuring a remote control to operate at least one device. The method includes identifying to a configuration utility the at least one device to be controlled by the remote control, and retrieving from a database of command sets for devices, the command set and capabilities of the identified at least one device. A configuration data set is created for operating the remote control to control the device using the retrieved command set and transferring that configuration data set to the remote control. The remote control is used to operate the at least one device and for storing a log of each event relating to the control of the device. At select intervals, the stored log of events is analyzed to identify at least one pattern of interest indicating how the user of the remote control operates the device. The configuration data set is altered in response to the at least one identified pattern of interest. And the altered configuration data set is downloaded to the remote control to alter how the remote control operates the at least one device.
The present invention provides a method and system for adaptively configuring a remote control. The system and method can analyze a log of events, maintained by the remote, which indicates how the remote and the devices it controls are used by a user and can then suggest alternative configurations of the remote to the user. The range and type of alternative configurations is not particularly limited and can include changing which devices are employed for various user activities and/or how those activities are performed, the placement and hierarchy of commands in a menu tree and/or troubleshooting and set up configurations.



BRIEF DESCRIPTION OF THE DRAWINGS
Preferred embodiments of the present invention will now be described, by way of example only, with reference to the attached Figures, wherein:
FIG. 1 is a schematic diagram of a state-based remote control for use with the present invention;
FIG. 2 is a schematic diagram of a device database, configuration utility and analysis module for use with the present invention;
FIG. 3 is a schematic diagram of a remote control in accordance with another embodiment of present invention;
FIG. 4 is a schematic diagram of a remote control system that includes a first remote control and a second remote control in accordance with one embodiment of present invention;
FIG. 5 is a schematic diagram of a remote control system that includes a first remote control and a second remote control in accordance with another embodiment of present invention;
FIG. 6 is a schematic diagram of a remote control system that includes a first remote control and a second remote control in accordance with another embodiment of present invention; and
FIG. 7 is a schematic diagram of a remote control system according to another embodiment of the present invention.



DETAILED DESCRIPTION OF THE INVENTION
A remote control, similar to the above-described HarmonyTM type of remote controls is indicated generally at 20 in FIG. 1. Remote control 20 includes a microprocessor 24, which can be any suitable microprocessor or microcontroller as will be apparent to those of skill in the art. Preferably, microprocessor 24 is a low power microprocessor suitable for use with battery powered devices such as remote control 20.
Microprocessor 24 and the other components, described below, within remote control 20 are connected to a power supply 26, which can be a battery or other suitable power supply. Microprocessor 24 is further connected to keypad 28, which includes a number of keys which can be activated by a user to operate remote control 20, and to a display 32 which can display text and/or graphics to the user of remote control 20. Keypad 28 can be any suitable keypad, as will occur to those of skill in the art, including a membrane keypad or a touchscreen on display 32. In the latter case, display 32 is preferably an LCD display although display 32 can be any other suitable type of display, such as an electro luminescent device, etc.
Preferably, one or more keys on keypad 28 are located adjacent display 32 (or on display 32 in the case of keypad 28 being a touchscreen on display 32). Depending upon the operating mode of remote control 20 and the devices being controlled by it, these keys can have different functions assigned to them by microprocessor 24 and appropriate text messages or graphics can be displayed on display 32 adjacent those keys to obtain “soft” keys.
Remote control 20 further includes a non volatile memory 36 which is used to store the configuration for remote control 20, including the appropriate command sets for each device being controlled by remote control 20, and the representations of the state of each device being controlled by remote control 20. Memory 36 can be any suitable non volatile memory, such as battery backed-up static ROM, Flash ROM or a magnetic-based memory, such as a disc drive, etc.
Microprocessor 24 is also connected to at least one control signal transmitter 40 and to a network interface device 44. Each control signal transmitter 40 is operable to transmit the signals required to control one or more of the devices being controlled with remote control 20. Control signal transmitters 40 can include infrared (IR) transmitters, radio frequency (RF) transmitters, such as Bluetooth or proprietary RF systems, etc. which the devices being controlled with remote control 20 are responsive to. It is contemplated that remote control 20 can be equipped with more than one control transmitter 40 when one or more devices it is to control require control signals transmitted via different transmission modalities (i.e., RF and IR). Remote control 20 can also include one or more control signal receivers 42 to allow remote control 20 to receive control signals from other remote controls to learn new command signals, etc.
Network interface device 44 allows remote control 20 to be connected to a remote device database and configuration utility (e.g., a server, a computer, etc.) via a network connection 48. Network interface device 44 can be any suitable interface device for interfacing remote control 20 to network connection 48, as will occur to those of skill in the art. In a present embodiment, network interface device 44 is a USB transceiver and network connection 48 is a USB connection to a computing device (not shown), such as a personal computer, which is in turn connectable to the remote device database and configuration utility via the Internet. It is also contemplated that network connection 48 can be a wireless link, such as a WiFi (IEEE 802.11x) connection, a Bluetooth link, etc. and, in such cases network interface device 44 is selected to provide the necessary connectivity, as will be apparent to those of skill in the art.
As will be apparent to those of skill in the art, the components of remote control 20 can be separate devices or, as a result of large scale integration, microprocessor 24, non volatile memory 36 and network interface device 44 and other components of remote control 20 can be implemented as a single integrated circuit device for considerations of cost and reduced power consumption.
To setup remote control 20, the user connects remote control 20, via network connection 48, to a remote device database 52 and a configuration utility 56, shown in FIG. 2. It is contemplated that in many circumstances, remote control 20 will connect via network connection 48 to a personal computer (not shown) and the personal computer will connect, via the Internet or other network 60, to device database 52 and configuration utility 56, but it is also contemplated that remote control 20 can connect directly to network 60 and device database 52 and configuration utility 56.
As used herein the term device database is intended to comprise any suitable means for storing relevant information, such as command sets and features, for devices to be controlled. Device databases can be implemented with relational database systems, simple lookup tables, or any other appropriate means of storing device information as will be apparent to those of skill in the art.
As configuration utility 56 requires an interactive connection with the user of remote control 20, a suitable web page or other interface can be displayed to the user on the personal computer, if remote control 20 was connected to network 60 via such a personal computer, or a suitable interface can be displayed on display 32, if remote control 20 was directly connected to network 60.
Once the user has connected to the configuration utility 56, the user is prompted to establish a user account, if this is the first time the user has connected, or to log in to their existing account. Assuming this is the first time the user has connected, after the account has been set up, the user is asked to input identifications, for example the manufacturer and model number, of each device they wish to control. When the devices to be controlled have been identified by the user, the capabilities and command sets of the devices are determined by configuration utility 56 and are available to configuration utility 56 from device database 52. If one or more devices are not known to device database 52, the user can be prompted to perform a learning operation and suitable learning processes are well known to those of skill in the art and will not be described further herein.
Configuration utility 56 can then prompt the user to specify how the user would prefer that various aspects of the system of devices controlled by remote control 20 operate. For example, the user can be asked whether they would prefer to use their surround sound system when listening to regular television programming, or whether they would prefer to just use the television's audio system.
Once configuration utility 56 has obtained any necessary user input, configuration utility 56 refers to device database 52 and creates a configuration data set comprising the IR (or other modality) command set for each device to be controlled with remote control 20, an operating program for remote control 20 and a state map for the system of devices. This configuration data set is then loaded into non volatile memory 36 via network connection 48.
The above-described HarmonyTM remotes operate substantially as described in the paragraphs above. However, the consumer electronics devices and other devices to be controlled with remote control 20 can have broad feature sets and systems of such devices can have many different possible operating states and it is difficult to have the configuration utility automatically create configuration data sets which match the user's desires and/or needs. Further, the user themselves may not be aware of how they would prefer the system of their devices to operate and their usage patterns can change over time.
Accordingly, in the present invention, after remote control 20 has been configured to control the system of the user's devices, remote control 20 further operates to store a log of the events initiated by the user of remote control 20. Most events will represent keys pressed by the user of remote control 20 and the time and date at which they were pressed and related state information, such as the television channel they switched to, etc. As the context of the keys on keypad 28 can change, depending upon the operating state of remote control 20 and the system of the user's devices, remote control 20 logs the function of the key pressed, rather than (or in addition to) the actual keypad button pressed. As an example, a user can press a “PLAY” key while watching a DVD, a VHS movie or while listening to CD's and these events are very different. Accordingly, remote control 20 will log the context of the key pressed, i.e., “play DVD”, “play VHS”, or “play CD”.
It is contemplated that the stored log of events need not only contain key press events and any other event of interest can also be logged and stored. For example, remote control 20 can include a touch pad (not shown) input device in addition to, or instead of, keypad 28 and “gestures” input with such a touch pad can be logged and stored, as can their meaning and/or context.
As remote control 20 stores a representation of the state of the devices it is controlling, most relevant information about the system of devices controlled by remote control 20 will be available (or discernable) from the log. For example, the channel on a television being watched by a user can be directly stored in the log, or can be determined from other entries in the log (television was on station 4 but the user pressed the “Channel UP” button three times, so the television is now on channel 7), as can the volume level, the display settings (color balance, brightness, contrast, etc.) and this can allow configuration utility 56 to perform a significant amount of analysis of the user's use of remote control 20.
The log of events is stored in non volatile memory 36 and is uploaded to configuration utility 56 at an appropriate time. Preferably, the storage of logged events in remote control 20 is achieved by a circular buffer such that, if the memory available for storing the logged events is exceeded before the information is uploaded, the newest stored logged events merely overwrite the oldest stored logged events rather than cause an error or overwrite other contents of non-volatile memory 36. Alternatively, but less desirable, once the memory available for storing the log has been filled, further logging of events can be terminated until the existing log has been uploaded. If network connection 48 is a wireless link, then remote control 20 can automatically transfer the log of stored events at appropriate intervals, such as when each event occurs, after a defined period of time has passed since the last transfer or when the size of the log of events reaches a preset size, etc.
Remote control 20 can also operate to prompt the user, on display 32 for example, to connect remote control 20 to network connection 48 to allow uploading of the logged information either after a specified time of use of remote control 20 has elapsed (for example once a week) or when the amount of memory in non-volatile memory 36 storing the logging info has reached a pre-selected level (for example 80% of the memory available for logging data), etc.
Alternatively, configuration utility 56 can prompt the user of remote control 20, at appropriate intervals, to connect remote control 20 to allow uploading of the logged data. It is contemplated that, as part of the set up of a user account with configuration utility 56, a user will provide contact information such as a valid email address. In this case, configuration utility 56 can email a prompt to the user to connect their remote control 20 to network connection 48 to allow uploading of the stored events.
It is further contemplated that if remote control 20 is connected to configuration utility 56 via network connection 48 for any reason, such as configuring remote control 20 to work with a new device added by the user to the devices to be controlled with remote control 20, the logged events will be uploaded to the remote configuration utility.
Each time the logged events are uploaded to configuration utility 56, configuration utility 56 can analyze the events for one or more patterns of interest in the logged events and can initiate a dialog with the user, via the web page or other user interface associated with configuration utility 56, with respect to the identified patterns of interest. To this end, configuration utility 56 includes an analysis module 64 (which may be a hardware module, a software module, a firmware module or the like configured to execute one or more analysis functions) to examine the stored log of events. The implementation of analysis module 64 is not particularly limited and can be achieved in a variety of manners, as will be apparent to those of skill in the art.
For example, in a simple implementation, analysis module 64 can be constructed as a simple parsing and/or pattern matching program. In a presently preferred, but more complex, implementation analysis module 64 can employ advanced analysis techniques including, without limitation, neural networks, fuzzy logic and expert systems.
For example, during a prior session with configuration utility 56, the user can have responded to a prompt from configuration utility 56 such that remote control 20 operates the user's system of devices to employ the television set's audio capabilities for sound when watching television programs, rather than the surround sound system. Analysis module 64 of configuration utility 56 can note a pattern of interest where, in actual use, when the user watches a television program, they frequently manually employ remote control 20 to activate the surround sound system.
In such a case, configuration utility 56 can prompt the user as to whether they would like to have the surround sound system used as the default audio system when watching television programs. If the user responds that they do not want to change the configuration to have the surround sound system as the default audio system for watching television, then configuration utility 56 will not change the configuration of remote control 20. If desired by the user, this decision can be stored in a user preferences file stored by configuration utility 56 so that the user will not be asked this question again, or will not be asked it within a pre-defined time period (e.g., three months) and a prompt to this effect can be displayed to the user.
Conversely, if the user responds to the prompt that they now would like the surround sound system to be the default audio system when viewing television programs, configuration utility 56 can construct an amended configuration data set for remote control 20 and can download that configuration data set to remote control 20 to effect the desired change in how the system of the user's devices is operated by remote control 20 so that the surround sound system will be the default audio system for watching television programs.
While it is presently preferred that the user be prompted to accept a suggested change to the configuration of remote control 20, the present invention is not so limited and if desired, configuration utility 56 can automatically effect all changes, or a subset of changes, without prompting the user.
It is contemplated that more advanced behaviors can be employed by configuration utility 56. For example, in the television audio configuration example given above, if the user responds to the prompt regarding changing the default audio system for television viewing to indicate that they wish the default system to remain the television set's audio system, configuration utility 56 can next prompt the user as to whether they would like a function to change the audio system from the television set's audio system to the surround sound system to be assigned to one of the “soft” keys on remote control 20 during television viewing.
If the user responds affirmatively to this prompt, configuration utility 56 can modify the configuration data set fro remote control 20 such that, when remote control 20 is being used to watch a television program, one of the soft keys of remote control 20 will operate as a toggle to change the audio system employed with the television program between the television set's audio system and the surround sound system. In such as case, an appropriate prompt for the soft key will be displayed on display 32 and that prompt can change with the state of the function. For example, the prompt can be “Change to Surround Sound” when the television set audio system is in use and can be changed to “Change to Television Audio System” when the surround sound system is in use.
Examples of other patterns of interest that can be recognized by analysis module 64 of configuration utility 56 can include, without limitation:
(a) time-based patterns such as recognizing that the user regularly activates the backlight function for keypad 28 and display 32 of remote control 20 when watching movies. In such a case, configuration utility 56 can prompt the user as to whether they would like the time for which the backlight remains illuminated to be increased when they are watching movies and can update the configuration data set for remote control 20 accordingly;
(b) use-based patterns such as recognizing that the user regularly uses a typically obscure command which is, by default, on a sub-menu of remote control 20, and thus requires multiple keys to be depressed to access that command. In such a case, configuration utility 56 can prompt the user as to whether they would like that command to be placed on a soft key on a main menu, for easier access. If all the soft keys for that main menu are already in use, configuration utility 56 can prompt the user as to which other function assigned to a soft key the user would be willing to replace. In this latter case, analysis module 64 of configuration utility 56 can suggest to the user replacing the function assigned to a soft key which is least often used by the user; and
(c) source-based patterns such as recognizing that the user typically employs the surround sound system for audio when viewing television programs on a particular channel, or range of channels (e.g., pay TV movie channels, etc.). In such a case, configuration utility 56 can prompt the user as to whether they would like the surround sound system to be the default audio system when viewing one of these channels and, if the user agrees, configuration utility 56 can modify the configuration data set accordingly so that the default audio system is the surround sound system when viewing one of the identified channels and is the television set's audio system when viewing other channels.
It is also contemplated that more sophisticated patterns can be recognized. For example, similar to the above-mentioned example regarding the use of the surround sound system or the television set's audio system when watching television programs, the analysis module 64 of configuration utility 56 can recognize that the user always uses the surround sound system to watch a television program on channel 5 between 9:00PM and 10:00PM on Tuesdays, but uses the television set's audio system at all other times.
In such a case, configuration utility 56 can prompt the user as to whether they would like remote control 20 to automatically switch to the surround sound system for viewing television programs on this channel at this time, but use the television set's audio system at all other times. If the user responds affirmatively, configuration utility 56 can appropriately amend the configuration data set and download the amended configuration data set to remote control 20 to obtain the desired functionality.
Similarly, it is contemplated that analysis module 64 can detect the absence of a previously noted pattern. For example, analysis module 64 can determine that the user has not watched the above-mentioned program on channel 5 on Tuesdays for several weeks and configuration utility 56 can prompt the user as to whether they would like to remove the previously added specific surround sound configuration for this channel. If the user responds affirmatively, then configuration utility 56 can create an appropriately amended configuration data set and download it to remote control 20 to remove this specific functionality.
While in each of the examples above, the user is prompted as to whether they desired a change to be made to the configuration of remote control 20, the present invention is not so limited and it is contemplated that changes which are deemed necessary or desired by configuration utility 56 can be effected without reference to the user.
It is further contemplated that the present invention can be employed to assist in the initial configuration and/or set up of remote control 20 and the consumer electronics devices and other devices to be controlled by remote control 20 and/or to troubleshoot problems which may occur during such set up and configuration. Specifically, as part of the initial configuration of remote control 20 to operate one or more of the devices of a user, an initial configuration data set is created and downloaded by configuration utility 56. Using remote control 20 with this initial configuration data set, the user can attempt to operate those devices.
If a problem occurs, or if an unexpected result is obtained, the user can press a “help” key (either a soft key or a dedicated key) on the remote. Once the help button has been pressed, remote control 20 can execute a troubleshooting routine included with the configuration data set wherein a series of prompts are displayed to the user and the user's responses, and any other the keys pressed by the user, are logged.
For example, the user may have a device, such as a television set, for which different command sets were employed by the manufacturer at different times. In such a case, the configuration utility can load a portion, in this example the “Power ON” command, of each of the multiple command sets from device database 54 into remote control 20, with one of the sets being selected for first use. The user can then be prompted by remote control 20 to use remote control 20 to turn the television set on with an appropriately identified soft key and remote control 20 will use the “Power ON” command from the first one of the possible command sets when that soft key is pressed.
Once the user has pressed the soft key on remote control 20 to turn the television set on, remote control 20 will display a prompt on display 32 asking the user if the set came on. If the user presses the key corresponding to “yes” in response to this prompt, remote control 20 will prompt the user to reconnect remote control 20 to network connection 48 and analysis module 64 will examine the log to determine the first command set is the required one and configuration utility 56 will create an appropriate configuration data set for remote control 20.
If the user presses a key corresponding “no” to indicate that the television set did not turn on, then remote control 20 can display a prompt on display 32 to have the user press another soft key to use the “Power ON” command from another possible command set to try to turn on the television set. The user is again prompted as to whether the desired result was obtained and the process can continue until the correct set is identified and remote control 20 is connected to configuration utility 56 to have the appropriate configuration data set constructed for it and downloaded into it.
As will be apparent, a wide range of other troubleshooting activities can be performed with remote control 20 through the combination of logging of events at remote control 20, providing appropriate prompts to the user via display 32 and recording responses from the user entered via keypad 28. For example, a user of remote control 20 may volunteer to verify that the information in device database 52 regarding one of the devices the user has is correct and complete. In a normal troubleshooting and/or installation process, configuration utility 56 will only use/exercise the actual functions and inputs that are relevant to the system the user has. For example, the user's television set may have a dedicated input for a satellite receiver, but the user does not have such a satellite receiver and thus the commands to operate that input are not included in the configuration data set executed by remote control 20.
In contrast, if the user volunteers to verify the data stored at data base 56 for his television set, configuration utility 56 can download a “full exercise” configuration data set which remote control 20 will use to test all of the features and functions of the television set. This “full exercise” configuration data set can be interactive, prompting the user as to whether particular functions and/or features have been properly set by remote control 20. Each response entered by the user is logged and stored for forwarding to the configuration utility 56, as described above and can be used by configuration utility 56 to alter the contents of device database 52 by either updating the data stored therein, or flagging the data as being suspect.
If the user indicates that a function or feature did not operate as expected, the “full exercise” configuration data set can have remote control 20 prompt the user to operate the OEM remote control that came with the television set to perform the function or feature that remote control 20 could not achieve. Remote control 20 can then capture, with command signal receiver 42, the command signals issued by the OEM remote to achieve the desired function or feature. The captured signals are then logged and stored and are forwarded to configuration utility 56 which can analyze the captured signals and add or replace them in device database 52. Similarly, device database 52 can have be missing one or more commands for a device and a configuration data set can be loaded into a remote control 20 of a user who has that device in order to have the user allow control signal receiver 42 to receive the missing commands from the OEM remote.
While the description above implies that analysis module 64 is located with configuration utility 56 and device database 52, it is contemplated that, if remote control 20 is connected to network 60 via a personal computer or other computing device, analysis module 64 can be located within such computing device for privacy concerns or any other reason. In such a case, the results of the analysis by analysis module 64 will be forwarded to configuration utility 56 via network 60, but the specific log data need not be.
Another embodiment of a remote control in accordance the present invention is indicated generally at 100 in FIG. 3. In this Figure, like components to those shown in FIGS. 1 and 2 are indicated with like reference numbers. With remote control 20, described above, device database 52, configuration utility 56 and analysis module 64 are located at a remote location, where they can be used by a variety of remotes, principally to reduce the cost of manufacturing remote control 20, although other advantages can also be obtained. It is contemplated that, if manufacturing costs are not of over-riding concern, these functions can be included within remote 100, as illustrated in FIG. 3.
In remote 100, device database 64 can be a non-volatile memory, such as Flash ROM, or can be a disc drive similar to those available for use in embedded devices, such as the Apple iPodTM. Configuration utility 56 and analysis module 64 can be suitable programs executed by microprocessor 24. Remote 100 can still be equipped with a network interface controller 44 to connect to a network connection 48 and it is contemplated that network connection 48 can be used, from time to time, to update the contents of device database 52 and/or configuration utility 56 and analysis module 64 from a remote update source.
FIG. 4 is a schematic diagram of a remote control system 110 in accordance with another embodiment of present invention. Remote control system 110 includes a first remote control 115 and a second remote control 120. Remote control 115 may be configured similarly to remote control 20 and/or remote control 100 described above in detail. Remote control 120 may be configured to receive remote control commands from remote control 115, and transmit the remote control commands to one or more devices to be controlled (e.g., TV, video recorder, video player, sound equipment, set top box, etc.).
To elaborate, remote control 120 may include a first receiver 125, a second receiver 130, a first transmitter 135, a second transmitter 140, a processor 142, and a memory 145. Remote control 120 may further include an internal power supply 147, or may be coupled to an external power supply (not shown). According to one embodiment, remote control 120 includes a keypad 150 and a display 155.
As discussed briefly above, the second remote control 120 is configured to receive a set of commands transmitted by the first remote control 115, and in turn transmit the set of commands to one or more devices to be controlled. A set as referred to herein includes one or more elements. The second remote control, via its first receiver 125, may be configured to receive the set of commands transmitted by the first remote control 115, and, via the second transmitter 140, transmit the set of commands to one or more devices to be controlled. The first receiver 125 may be an RF receiver, an IR receiver, an ultrasonic receiver or the like. The second transmitter 140 may be an RF transmitter, an IR transmitter, an ultrasonic transmitter or the like configured to operate according to a variety of transmission protocols, such as Home RF, Bluetooth, a proprietary transmission protocol or the like.
The second remote control's processor 142 may be configured to process the set of received commands in “real time” for transmission to the devices to be controlled, or the process may store the set of commands in memory 145 for processing and subsequent transfer. For example, the processor might be configured to process the set of received commands to change the format of these commands, e.g., from an IR format to an RF format or the like.
According to one embodiment, the second remote control is configured to receive, store, calculate, and/or update the operating states of the devices to be controlled. The second remote control may be configured to perform such operations in lieu of the first remote control performing such operations, or in addition to the first remote control performing such operations. The second remote control 120 may be receive, store, calculate, and/or update the states of the controlled devices similarly to remote control 20 and/or remote control 100 (described above in detail). For example, the second remote control 120 may be configured to receive state information for the devices to be controlled from a user who keys the states into second remote control via keypad 150. Alternatively, the second remote control may be configured to receive the operating state information from the devices to be controlled, for example, via the second receiver 130. The second receiver 130 may be configured to receive the state information in response to a polling request issued by the first and/or second remote control to the devices to be controlled. The polling request may be issued to the devices to be controlled at the request of a user via the first remote control or the second remote control (e.g., via keypad 150). Alternatively, the polling request may be issued at the initiation of one of the remote controls. For example, the polling request may be issued periodically (e.g., at 30 minute intervals thereafter, at 1 hour intervals thereafter or the like) by one of the remote controls. According to one embodiment, the second remote control might also be configured to receive the state information from the first remote control and/or provide state information to the first remote control. The second receiver 130 might be an IR receiver, an RF receiver, an ultrasonic receiver or the like. According to one embodiment, the first receiver and the second receiver may be a single receiver.
The second remote control may be configured to issue commands to the devices to be controlled based on the set of commands received from the first remote control and the states (e.g., stored in memory 145) of one or more devices to be controlled. The second remote control may be configured to operate similarly to remote control 20 and/or remote control 100 to control the devices to be controlled based on the states of these devices. Moreover, the second remote control may be configured to update and store the states of one or more devices to be controlled based on the state information previously stored in memory 145, and based on the commands transmitted from the second remote control to the devices to be controlled.
According to one embodiment, the second remote control may be configured to store one or more commands issued by the first remote control prior to transmitting the commands to the devices to be controlled. For example, if the first remote control transmits a number of controls signal associated with a macro, the second remote control may be configured to accumulate the commands in memory 145, and then determine a set of commands to transmit to the devices to be controlled based on the state information for these devices stored in memory. This is sometimes referred to in the art as “blasting” commands or sending a “burst” of commands (or simply a “burst”). As such, the second remote control is sometimes referred to as a “blaster” or a “blaster box.” According to one embodiment, the first remote control is a handheld device and the second remote control is a blaster box, which might include a computing device, such as a personal computer, a set top box or the like.
FIG. 5 is a schematic diagram of a remote control system 110′ in accordance with another embodiment of present invention. Remote control system 110′ differs from remote control system 110 in that the second remote control 120′ is configured to communicate with the devices to be controlled via a hardwire interface 185. Otherwise, remote control system 110′ is configured to operate substantially similar to remote control system 110.
FIG. 6 is a schematic diagram of a remote control system 110′′ in accordance with another embodiment of present invention. Remote control system 110′′ differs from remote control system 110 and 110′ in that the second remote control 120′′ includes the second transmitter 140, the second receiver 140, and the hardwire interface 185. The second remote control may be configured to transmit commands and receive state information via one or both the second transmitter, the second receiver, and/or the hardwire interface. Otherwise, remote control system 110′′ is configured to operate substantially similar to remote control system 110.
FIG. 7 is a schematic diagram of a remote control system 200 according to another embodiment of the present invention. Remote control system 200 includes a plurality of remote controls 205. The remote controls may be configured to transfer commands to and receive commands from each other and/or the one or more devices to be controlled. Alternatively, the remote controls may provide a control hierarchy wherein the first remote control 205a, transfers a command to a second remote control 205b, that transfers the command to another remote control (e.g., 205n) in the hierarchy that in turn transfers the command to one or more devices to be controlled. One or more of the remote controls may transmit a different command from the command received. For example, one or more of the remote control may be state based remote control that might transfer a different command from the command received based on the state information (described above). For example, the first remote control 205a might be a hand held remote control, computer (e.g., a web enabled PC) that is configured to transfer command to the second remote control 205b that might be a handheld remote control, an IR repeater, an RF repeater, an ultrasonic repeater, a light repeater, a computer (e.g., a web enabled PC), the blaster box or the like. The second remote control 205b might be configured to transfer the received command or another command (e.g., that is determined based on local state information) to a third remote control (e.g., remote control 205n) that in turn is configured to command one or more devices to be controlled. Alternatively, any of the devices in the hierarchy may be configured to transfer commands to another remote and to the devices to be controlled.
For example, the first remote control 205a might be a hand held remote control that is configured to transfer command to the second remote control 205b that might be an IR repeater, an RF repeater, an ultrasonic repeater, a light repeater, a computer, the blaster box or the like. According to an embodiment in which the second remote control is a computer, the second remote control may be configured to collect commands from one or more remotes and organize the commands in view of resident information (e.g., state information for the devices to be controlled) and issue one or more commands to the third remote control. The third remote control might be the blaster box (described above) or might include a plurality of blaster boxes configured to control the devices.
Embodiments of the present invention provides a method and system for adaptively configuring a remote control. The system and method can analyze a log of events, maintained by the remote, which indicates how the remote and the devices it controls are used by a user and can then suggest alternative configurations of the remote to the user. The range and type of alternative configurations is not particularly limited and can include changing which devices are employed for various user activities and/or how those activities are performed, the placement and hierarchy of commands in a menu tree and/or troubleshooting and set up configurations.
The above-described embodiments of the invention are intended to be examples of the present invention and alterations and modifications may be effected thereto, by those of skill in the art, without departing from the scope of the invention which is defined solely by the claims appended hereto.

## Claims

1. A remote control system comprising:
a remote control operable to log and store user initiated events relating to the control of devices with the remote control, the remote control operating in accordance with a configuration data set stored in the remote control;
a device database storing identifications of devices to be controlled by the remote control and the command sets for those devices;
an analysis module operable to analyze the log of events stored by the remote control to identify one or more patterns of interest in the logged use of the remote control by the user; and
a configuration utility operable with the device database and the analysis module to create a configuration data set to operate the remote control in accordance with at least one identified pattern of interest.

2. The remote control system of claim 1 where, in response to the results produced by the analysis module, the configuration utility conducts an interactive dialog with the user as to whether they would like a suggested change in the operation of the remote control to be implemented and the configuration utility will only effect the change if the user responds accordingly.

3. The remote control of claim 2 wherein the remote control is operable to connect to a network and wherein the device database is located at a location to which the remote control connects through the network.

4. The remote control of claim 3 wherein the configuration utility and the analysis module are located at a location to which the remote control connects through the network.

5. The remote control system of claim 4 wherein the interactive dialog with the user is effected via a web page displayed to the user.

6. The remote control system of claim 2 wherein the interactive dialog with the user is effected via the display and keypad of the remote control.

7. The remote control system of claim 1 wherein the patterns of interest result from logged and stored events from a troubleshooting program previously loaded into the remote control and the configuration utility is responsive to one or more identified patterns of interest to change the configuration data set of the remote control to correct an identified error in a previous version of the configuration data set.

8. The remote control of claim 1 wherein the configuration utility and the analysis module are located in the remote control.

9. The remote control system of claim 1, wherein the device database is located in the remote control.

10. The remote control system of claim 9, wherein the configuration utility and the analysis module are located in the remote control.

11. The remote control system of claim 1, wherein the configuration data set created by the configuration utility is configured to be stored in the device database, and is configured to be available via the device database to a plurality of remote controls operated by a plurality of users.

12. The remote control system of claim 1, wherein the log is configured to be stored in the device database, and is configured to be available via the device database to a plurality of remote controls operated by a plurality of users.

13. A method of adaptively configuring a remote control to operate at least one device, comprising the steps of:
(i) identifying to a configuration utility the at least one device to be controlled by the remote control;
(ii) retrieving from a database of command sets for devices, the command set and capabilities of the identified at least one device;
(iii) creating a configuration data set for operating the remote control to control the device using the retrieved command set and transferring that configuration data set to the remote control;
(iv) using the remote control to operate the at least one device and storing a log of each event relating to the control of the device;
(v) at intervals, analyzing the stored log of events to identify at least one pattern of interest indicating how the user of the remote control operates the device;
(vi) altering the configuration data set in response to the at least one identified pattern of interest; and
(vii) downloading the altered configuration data set to the remote control to alter how the remote control operates the at least one device.

14. The method of claim 13 further comprising the step of, prior to altering the configuration of the configuration data set, prompting the user as to whether they desire the identified change to be made and only effecting the alteration of the configuration data set if the user indicates their acceptance of the change.

15. The method of claim 13 wherein steps (iv) through (vii) are re-performed at intervals.

16. The method of claim 13, further comprising, storing the created configuration data set in the device database, wherein the created configuration data set is configured to be available via the device database to a plurality of remote controls operated by a plurality of users.

17. The method of claim 13, further comprising, storing the log in the device database, wherein the log is configured to be available via the device database to a plurality of remote controls operated by a plurality of users.

18. The method of claim 13, wherein the step of altering the configuration data set comprises:
sending the at least one pattern of interest to the device database; and
providing an altered configuration database from the device database to the remote control.

19. A remote control system comprising:
first and second remote controls, wherein the first remote control and/or the second remote control is configured to log and store information for user initiated events relating to commands transmitted from the first remote control to the second remote control, and the first remote control and second remote control are configured to operate in accordance with configuration data stored in these remote controls;
a device database configured to store identifications of devices to be controlled by the remote controls and the command sets for those devices;
an analysis module configured to analyze the log of user initiated events to identify one or more patterns of use in the log of use initiated events; and
a configuration utility operable with the device database and the analysis module to create a configuration data set to operate the first remote control and the second remote control in accordance with at least one identified pattern of interest.

20. A method for configuring a first remote control and a second remote control to operate a set of electronic devices, comprising the steps of:
identifying to a configuration utility the set of electronic devices configured to be controlled by the first and second remote control;
retrieving from a database of command sets a command set for the set of electronic devices;
transmitting from the first remote control to the second remote control a set of commands included the retrieved command set;
storing in the first remote control and/or the second remote control a log of commands issued by the first remote control and/or the second remote control;
at select intervals, analyzing the log of commands to identify at least one pattern of use of the first remote control and/or the second remote control;
altering the command set in response to the at least one identified pattern of use; and
transmitting the altered command set to the first remote control and/or the second remote control to alter how these remote controls operate the set of devices.

21. The method of claim 20 further comprising:
requesting the user to indicate whether the user wants the first remote control and/or the second remote control to receive and use the altered command set; and
effecting use of the altered command set in the first remote control and/or the second remote control if the user indicates acceptance of the request.

22. The method of claim 20, further comprising, storing the altered command set in the device database, wherein the altered command set is configured to be available via the device database to a plurality of remote controls operated by a plurality of users.

23. The method of claim 20, further comprising, storing the log in the device database, wherein the log is configured to be available via the device database to a plurality of remote controls operated by a plurality of users.

24. A remote control comprising:
a processor configured to operate in accordance with a configuration data set to control a set of devices, and to generate a log of user-initiated events, which are for the control of a set of devices;
a memory coupled to the processor and configured to store the log of user-initiated events; and
an analysis module coupled to the processor and the memory, and configured to analyze the log of user-initiated events stored in the memory for one or more patterns of interest, wherein the processor is configured to execute a configuration utility operable to create an amended configuration data set, which include commands for the remote control to execute the pattern of interest to control the set of devices.

25. The remote control of claim 24, further comprising a device database configured to store command sets for the set of devices, wherein the configuration utility is configured to retrieve the commands sets from the device database to generate the amended configuration data set.

26. The remote control of claim 24, further comprising communicating with a device database configured to store command sets for the set of devices, wherein the configuration utility is configured to retrieve the commands sets from the database to generate the amended configuration data set, and wherein the device database is configured to be at location at which the processor connects to the device database through a network.

27. The remote control of claim 24, wherein the pattern of interest includes a time-based pattern, a use-based pattern, or a source-based pattern.

28. The remote control of claim 24, wherein the amended configuration data set is configured for use by the processor to display a soft button on a display of the remote control, and wherein activation of the soft button causes the processor to execute the pattern of interest to control the set of devices.

29. The remote control of claim 28, wherein the soft button is for a button in a sub-menu, and the soft button is in a main menu.

30. The remote control of claim 24, wherein the device database is configured to store the amended configuration data set, which is configured to be available via the device database to a plurality of remote controls operated by a plurality of users.

31. The remote control of claim 24, wherein the device database is configured to store the log, which is configured to be available via the device database to a plurality of remote controls operated by a plurality of users.

32. A remote control system comprising:
a remote control configured to operate in accordance with a configuration data set to control a set of devices, and to generate a log of user-initiated events, which are for the control of a set of devices;
a memory module configured to store the log of user-initiated events;
an analysis module configured to receive the log of user-initiated events and analyze the log of user-initiated events for a pattern of interest;
a configuration utility operable to create an amended configuration data set based on the pattern of interest, wherein the amended configuration data set includes commands for the remote control to execute the pattern of interest to control the set of devices.

33. The remote control system of claim 32, further comprising a database configured to store identifications for the set of devices and the command sets for the set of devices, wherein the configuration utility is configured to retrieve the commands sets from the device database to generate the amended configuration data set.

34. The remote control system of claim 33, wherein the device database is configured to be at location at which the remote control connects to the device database through a network.

35. The remote control system of claim 32, wherein the analysis module and the configuration utility are included in the remote control.

36. The remote control system of claim 32, wherein the pattern of interest includes a time-based pattern, a use-based pattern, or a source-based pattern.

37. The remote control system of claim 32, wherein the amended configuration data set is configured for use by the remote control to display a soft button on a display of the remote control, and wherein activation of the soft button causes the remote control to execute the pattern of interest to control the set of devices.

38. The remote control system of claim 37, wherein the soft button is for a button in a sub-menu, and the soft button is in a main menu displayed on the display.

39. The remote control system of claim 32, wherein the device database is configured to store the amended configuration data set, which is configured to be available via the device database to a plurality of remote controls operated by a plurality of users.

40. The remote control system of claim 32, wherein the device database is configured to store the log, which is configured to be available via the device database to a plurality of remote controls operated by a plurality of users.