US20120192173A1 - System and method for updating software in electronic devices - Google Patents
System and method for updating software in electronic devices Download PDFInfo
- Publication number
- US20120192173A1 US20120192173A1 US13/214,847 US201113214847A US2012192173A1 US 20120192173 A1 US20120192173 A1 US 20120192173A1 US 201113214847 A US201113214847 A US 201113214847A US 2012192173 A1 US2012192173 A1 US 2012192173A1
- Authority
- US
- United States
- Prior art keywords
- software
- devices
- update
- computer
- user
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Abandoned
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/65—Updates
Definitions
- This invention relates generally to collecting data from, sending data to, and/or updating software or digital data in electronic devices.
- Digital-based devices require software in order to interact with other devices, store, and manipulate information and to perform its designed task. If the software is deficient or otherwise corrupted, generally so is the ability of the device to reliably operate. Digital-based devices often require updated software versions in order to fix poorly performing software that originally was supplied with the device, commonly referred to as software patches. Other software patches are obtained in order to prevent introduction of, repair, counter intervene, or otherwise eliminate malevolent code hacked in by vandal software authors. Other software updating includes version replacement to optimize performance and/or broaden utility over what a customer had been satisfactorily using, or introduction of additional software modules to a device. Furthermore, addition of new data other than executable software onto a device may be useful, for example to add new map data to a personal digital assistant or new music to a portable music-playing device.
- EEPROM electrically erasable programmable read-only memory
- Moderately complex devices contain a substantial amount of software, but have no provision for making software updates simple or notifying the customer when they might be necessary.
- Complex digital devices require microprocessors that sport only the simplest software, yet require firmware, an operating system, or other device-specific software.
- Examples of such devices include DSL modems, cable modems, network routers, wireless access points, digital cameras, MP3 or other music and video players, memory card readers, combination printer/scanner/copier devices, personal digital assistants, certain cellular phones, portable game-playing systems, GPS receivers, other computers including special-purpose computers such as dedicated word processing or calculation or entertainment computers, and combination devices which incorporate a plurality of one or more of these functions. Additional examples of such devices which are not currently widely available include common home and kitchen appliances with added software capability and even running shoes with a microprocessor recently introduced to consumers. These moderately complex digital devices require interactions of the device user or purchaser to determine if software updates are available, obtain (request and download) software updates for the device, and/or to perform authentication or authorization to updated the device.
- Particular embodiments include a system and method to enable a user- controlled proxy system or coordinating computer to automatically or semi-automatically communicate with multiple devices, determine the currently operating software contents and versions for each device, and automatically or semi-automatically upgrade each device with updated software without requiring user intervention.
- the software may include communication, operating system or application-specific program codes that improve a given device's designed function.
- the coordinating computer is able to search for updating software upon connection with a given device, or alternatively, receive and store updated software presented by an originating software entity, and automatically deliver the software to a given device upon the device's re-connection to the proxy system.
- the devices may be homogenously similar, or substantially diverse and heterogeneous.
- the homogenous or heterogeneous digital devices may be in continuous or intermittent signal communication with the proxy-coordinating computer by wired or wireless connections.
- the proxy computer is similarly accessible by wired and wireless connection, and acts as an intermediate node for the software updating of devices that may not necessarily have the capability to update themselves.
- Alternate embodiments of the system maintain the elements of one or more devices and a coordinating computer and employ these elements for other purposes related to management of devices.
- the system as described above is preferably optimized for updating software.
- the pursuit of such other purposes may include collection of other types of device data.
- FIG. 1 is a schematic of a particular embodiment of the software updating system
- FIG. 2 is a schematic of an alternate embodiment of the software updating system
- FIG. 3 is a schematic of a particular embodiment of a method for updating software in devices
- FIG. 4 is an expansion of the Connect process block of FIG. 3 ;
- FIG. 5 is an expansion of the Register process block of FIG. 3 ;
- FIG. 6 is an expansion of the Compare Software Version block of FIG. 3 ;
- FIG. 7 is an alternate embodiment of a method for updating software in devices
- FIG. 8 is an expansion of the Receive Software Update block of FIG. 7 ;
- FIG. 9 is an expansion of the Build software Device Database block of FIG. 7 ;
- FIG. 10 is an expansion of the Connect and Activate Device block of FIG. 7 ;
- FIG. 11 is an expansion of the Retrieve and Load Software block of FIG. 7 .
- FIG. 12 is an alternate embodiment of a software updating system.
- the user will designate one device with user interface and communications capabilities (typically a PC, but a TiVo-like device, Palm, or Pocket PC could work as well, for example).
- This device serves as a central point of communications as a “coordinating PC,” and hereafter referred to as the proxy system.
- This device acts as a proxy in the common lay sense of acting on behalf of one or more other devices, and may include but does not require operation as a proxy server in the particular sense commonly used in discussions of Internet browsing and connectivity.
- the “device” can be a virtual device, such as a specified domain on the Internet, enabling the user to access the system from any device that can access the Internet.
- One preferable step in the process comprises identifying to the coordinating PC the set of one or more devices to be kept up-to-date. This can be done by manually entering device identification including current software revision levels, or (better) by connecting the device to the coordinating PC via USB/1394/serial/other communications port, Wi-Fi, infra-red, Bluetooth, or other wireless means (FM, etc.), or even optically (for example, by scanning a bar code on the device or its packaging).
- the system has the ability to offer the user the option (when a device is connected) to omit this device from the collection of devices to be kept up-to-date. For example a device that is already subject to update service is provided by another coordinating PC.
- a further optional embodiment is for the coordinating PC to store an identifying code on the device so that if the device having the identifying code is connected to other coordinating PC's, these computers may default to not updating the device already having the identifying code.
- Another step, preferably performed at this point or later (although in alternate embodiments it could be performed earlier) would be to establish a communications channel between the device and the coordinating PC which would be used for updates.
- security could be established, for example by storing on the PC an administrative password for the device (as nearly every wireless access point, network router, or broadband modem has), and/or setting the password on the device to a known or determinable value. In some environments, security may be particularly important in the case where the communication was wireless.
- the system multiple forms of connection, for example establishes a physical connection the first time to initiate security, and then uses wireless media for subsequent connections.
- the security can be active or dynamic, updating periodically or at random intervals, depending on user preferences or other variables.
- the list of devices and their software revision levels are compared with a list installed on or accessible to the coordinating PC or on a central service (e.g., an Internet site maintained for the purpose). Based on the comparison it the system has the capability of determining that there are optional updates, critical updates, or additional software components available for one or more of the devices.
- the system optionally stores a copy of the user's data, so that if they change coordinating PC's (for example) no information is lost.
- the devices to be updated include preferably those having field-replaceable software content and a means of connection to the proxy update system.
- the software content may be of the embedded type such as a BIOS (basic input-output system) or firmware typically stored in an EEPROM, application software such as games or small applications with user interface, or indeed all or part of any stream of digital information such as ring-tones for cell phones or street maps or digital images.
- the means of storage for this software content may be EEPROM or flash memory, memory cards such as SD, XD, CF, or Sony memory stick, volatile memory, hard disk, CD or magnetic disk, or other media capable of saving and/or retrieving digital information.
- the system has the capability of providing a connection from the device to the proxy update system in one or more of multiple different optional ways.
- the connection may be intermittent or continuous, and/or may be wired or wireless, and/or may include serial or parallel port, USB or PC1394 (“firewire”) connection, connection via AC power wiring such as that found in X-10 devices, Ethernet, Bluetooth or 802.11 wireless, infrared, or any other means, or any combination or sub-combination of the foregoing.
- the means by which the software content can be updated may vary widely and are discussed below.
- Examples of such devices include, potentially, cell phones, digital cameras, MP3 and video media players, all-in-one or combo printer devices, network routers and wireless access points, media readers such as those for compact flash or chip memory, PDAs, and indeed even home appliances such as microwaves with “smart” features, i.e. a processing chip and on-board software.
- Another, and preferably the next, step in the process is an optional notification about the updates.
- the user can optionally select to be notified that updates are available via email, instant message or on-screen pop-up, or other means.
- the user can view a list of devices and their status at their own initiation, at any time. Determination that updates are available can be via “pull” where the coordinating PC checks the service periodically, and/or via “push” where the service learns that a new update is available, and optionally notifies all candidate users with the appropriate device and (older) software versions.
- An optional capability of the system is to bill or charge the user for the notification service or for updated or additional software for their devices.
- device manufacturers either could provide free support services to their customers or could actually sell extended service and support or software upgrades, or both. Examples include support for new media formats, interface improvements, technical improvements (digital sound processing for audio enhancement, for example), additional data (maps, phone numbers, songs), new software modules, more games on one's iPod, or improved security (e.g., upgrading a Wi-Fi access point from WEP to WPA security).
- improvements for devices are offered by one or more third parties other than or in addition to the devices' original manufacturer.
- Another, and preferably next step is to transfer the new software to the coordinating computer.
- the network service in some embodiments actually stores the updated software, or (more likely) merely maintains an address for obtaining it, for example a link to a file on the website of the device manufacturer or other third party.
- the coordinating PC automatically or manually downloads the updated device software onto the PC's storage.
- the coordinating PC could also optionally download a PC application used to update the device.
- the coordinating PC performs the update. It can optionally request that the user establish communications with the device to be updated (“please connect your Nikon CoolPix 950 camera to your serial port now”) or wait and perform the update automatically, the next time the device is connected. It can use a specific application that had been installed or downloaded to perform the update, and/or it can use a standard protocol. These protocols can be specified simply, for example by choosing a specific TCP/IP port number and packet sequence for establishing authentication and initiating software upload.
- the coordinating PC Upon success or failure of the update, or at any other interval, the coordinating PC updates its record of the device status. In addition to maintaining the current list of software installed on each device, it can also maintain an update history and allow the user to easily “roll back” to an earlier version if the new version has undesirable characteristics (instability, incompatibility, changes in user operation, security flaws, etc.) The user might receive a notification that an update was performed, especially in the case where they did not manually initiate it, and such notification might include details about what was changed or new capabilities added to their device.
- the entire update process can be performed with little, or even no user intervention at all, or optionally only with a notification after-the-fact that an update was performed.
- devices can be sold with a default “stay current” setting (that can be overridden by the users at their option) that instructs the device to automatically update itself periodically without user request or intervention.
- an additional capability is available, namely the capability to use the communication system (from the device through the coordinating PC and preferably to the central service, and thence back to the manufacturer or its agent) to perform additional troubleshooting.
- manufacturers can still interact with devices, obtain diagnostic information (“dumps” following crashes, up-time statistics, configuration data, and so on), and generally use the communication channel to measure reliability, gather information used for making further software improvements, measure the popularity of device features or monitor usage profiles (for example, to determine how much storage future models of audio players or cameras should include or what inventory to produce based on measurements from current customers).
- FIG. 1 A preferred embodiment 10 A of the software updating system is shown in FIG. 1 .
- a coordinating computer 12 is in communication 14 with a network 18 in communication 20 with a network data store 22 .
- the computer 12 is in direct wireless communication 34 with the network 18 and data store 22 .
- the coordinating computer 12 is shown in communication with three electronic devices having software for updating. At least one electronic device is preferred for communication with the computer 12 , and communication is not limited to three devices as shown. Any number of devices can communicate with coordinating computer 12 .
- a first electronic device 50 is in wireless communication 70 with the computer 12 .
- a second electronic device is in line or wired communication 74 with the computer 12 .
- a third electronic device 58 includes a barcode 60 that is readable by a barcode reader 78 in communication with the computer 12 .
- bar code reader 78 is an optical scanner that transmits the bar code image to the coordinating computer for processing and interpretation later or elsewhere.
- bar code 60 is replaced with an optical or wireless radio tag as the device identifier.
- the computer writes data on an intermediate form of storage such as a compact disc, portable hard drive, or memory card (such as USB memory drive, compact flash, SD, XD, Sony memory stick, or other type) for later insertion to or connection with the device.
- the computer communicates with the device by audible means such as touch tones or voice commands.
- software code for updating the software in the electronic devices is delivered from the data store 22 , to the network 18 , and then to the coordinating computer 12 via wired communication 14 or via direct wireless communication 34 from the network 18 , or alternately bypassing the network, by delivery from the data store 22 to the computer 12
- software code may be delivered to the computer by indirect wireless communication.
- the indirect wireless communication includes a wireless uplink channel 80 to a radio or cell tower 84 , then a downlink channel 88 to the computer 12 .
- Updated software code received by the computer 12 from either the line communication 14 , the direct wireless communication 34 , or by the downlink channel 88 is processed by the computer 12 for delivery to the electronic devices. Such processing can optionally include any one or more, or any combination of the following: un-compression of data, verification of digital signatures, de-encryption of the data, security authorization, confirmation of payment, if any, etc.
- the processed and/or updated software code is amenable to the software-controlled devices in communication with the computer 12 .
- the system preferably accommodates any number of devices, and no particular number is necessary or required. For explanatory purposes only, an example of three devices is described in this Figure.
- the first device 50 receives the processed and/or updated software code from the computer 12 via the wireless channel 70 .
- the second device 54 receives the processed and/or updated software code from the computer 12 via the communication line or channel 74 .
- the third device 58 is identified by the scanning the barcode 60 affixed to or associated with the third device 58 by the barcode reader 78 .
- the third device is 58 , preferably once identified, receives the processed and/or updated software code from the computer 12 via the line channel 74 or the wireless channel 70 or using intermediate storage. Once the updated and processed software code is delivered to the first 50 , second 54 and/or, third 58 devices, the software in these devices is updated with the new code.
- coordinating computer 12 can coordinate the updating of software of one device based on relationships with other related devices or with software on the communicating computer itself or other computers attached via a network interface. For example, if the user purchases a new digital camera, and the system of the present invention updates the software on the camera three (3) months later, the system will realize (by scanning its inventory of software on related devices and/or accessing related databases) that the digital images generated by the camera (now that it has been updated) are no longer compatible, or not ideal, or possibly even optional, with the version of Photoshop® (for example), resident on the local PC. The coordinating PC 12 also then updates Photoshop® to resolve the incompatibility or sub-optimum compatibility. In another example involving devices and no conventional computer software, a user might add the capability to a sound-recording device to support a new sound-encoding format and wish to add capability to decode and play back this format to a sound-replay device.
- FIG. 2 A preferred embodiment 10 B of the software updating system is shown in FIG. 2 .
- a coordinating computer 12 is in communication 14 with a network 18 in communication 20 with a data store 22 .
- the computer 12 is in direct wireless communication 34 with the network 18 and data store 22 .
- the computer 12 is shown in communication with (by way of example only) three electronic devices having software for updating, and computer 12 serves to act as a coordinating PC. At least one electronic device is preferred for communication with the computer 12 , and is not limited to three devices.
- a first electronic device 50 is in wireless channel communication 70 with the computer 12 .
- a second electronic device is in line channel communication 74 with the computer 12 .
- a third electronic device 58 includes a barcode 60 that is readable by a barcode reader 78 in communication with the computer 12 .
- Software codes for updating the software in the electronic devices is delivered from the server 22 , to the network 18 , and then to the computer 12 by line communication 14 or via direct wireless communication 34 from the network 18 .
- software codes may be delivered to the computer by indirect wireless communication.
- the indirect wireless communication includes a wireless uplink channel 80 to a satellite 94 , then a downlink channel 88 to the computer 12 .
- Updated software code received by the computer 12 from either the line communication 14 , the direct wireless communication 34 , or by the downlink channel 88 preferably can be processed by the computer 12 for delivery to the electronic devices.
- processing can include any kind of data processing, including by way of example any one or more of the following kinds of processing, alone or in any kind of combination: uncompression of data, verification of digital signatures, de-encryption of the data, or any other kinds of processing, including, without limitation, any processing described elsewhere in this application.
- the processed and/or updated software code is amenable to, or is executable by, the software-controlled devices in communication with the computer 12 .
- the first device 50 receives the processed and/or updated software code from the computer 12 via the wireless channel 70 .
- the second device 54 receives the processed and/or updated software code from the computer 12 via the line channel 74 .
- the third device 58 is identified by scanning the barcode 60 affixed to or associated with the third device 58 by the barcode reader 78 .
- the third device 58 preferably once identified, receives the processed and/or updated software code from the computer 12 via the line channel 74 or the wireless channel 70 .
- the coordinating computer 12 which serves as the nucleus of a proxy update system preferably has a direct or indirect means of connection to or communication with the device to be updated, optionally as described above, and typically has a means of connection to or communications with one or more sources of software updates.
- this system preferably includes a processor, storage mediums, and has a user interface capability. Connection to or communication with sources of update software from primary and secondary entities is preferably via the Internet or intranet and use of hypertext transfer protocol (HTTP) and/or file transfer protocol (FTP).
- HTTP hypertext transfer protocol
- FTP file transfer protocol
- the coordinating computer 12 is capable of accepting requests for specific information items or streams and providing those items or streams on demand, for example, an Internet server responding to FTP and/or HTTP requests.
- This system may often be, but need not always be, provided by the manufacturer (primary software entity) of the device to be updated.
- secondary software entities such as website addresses having device software databases, can similarly be accessed by the coordinating computer 12 .
- FIG. 3 is a schematic of a preferred embodiment of a method 200 for updating software in devices attached to or in communication with a coordinating PC or computer 12 .
- a method 200 establishes a coordinating computer 12 to function as an agent that runs or provides continuous or non-continuous surveillance of primary and secondary software entities or services for software code upgrades for devices, including, without limitation those devices that can be or are attached to or associated with the coordinating computer 12 .
- the method 200 begins at entry point 202 where the coordinating computer 12 is active, the software-controlled device ( 50 , 54 , and/or 58 , or others) are or can be connected to or in communication with the coordination computer 12 at block 204 .
- the device is activated, operated with initially loaded software, and automatically registered at block 208 .
- terminus 228 ends the updating method 200 .
- the method of FIG. 3 imparts to a single device and/or multiple devices, preferably which remain running at all times, the optional ability to check on a periodic or other interval for the availability of updates, and/or to receive notifications that updates have been made available, and then perform these updates or to prompt the user to engage the device to perform an update, or any combination of the foregoing.
- Method 200 can be performed in alternate sequences, or with any one or more of the foregoing steps omitted.
- the software employed in the method 200 on the proxy update system or coordinating computer 12 of the systems 10 A and 10 B preferably includes several sub-programs and performs several tasks, as described below. In a preferred embodiment, the software is configured to start when the overall system starts and remain running at all times, except for replacement and routine maintenance.
- Residing in a preferred method 200 is a software agent whose tasks are to populate a list of one or more devices for which the coordinating computer 12 acts as a proxy in searching for updates and/or performing update processes.
- the software agent gathers, stores and/or has access to at least sufficiently unique identification about the type of the device to determine what software it is capable of utilizing.
- the identification data consists of a short unique identifier such as a GUID, or globally unique identifier, a standard format for generating an ID-tag that is not reused, or a combination of manufacturer, device model, and revision number information, or both.
- the software agent can, and preferably does, store data about one or more of, or any combination of the following: the current software contents of the device including loaded software application(s) and versions thereof, type of connection between the device and the proxy system, date and time of last connection, and user preferences such as whether the device is to be updated automatically with a minimum of confirmations.
- the list of devices generated by the method 200 is populated in one embodiment by manual entry of an end-user, and in another by more automatic discovery or a combination of automatic and manual discovery.
- Such discovery is done at any combination of times including initial, i.e. when the agent is first installed and configured, periodic (e.g. nightly), or in response to certain events like installation of a new device.
- it is be performed by scanning the software of the proxy system, for example in the case of a Windows PC, by examining the Windows Registry for recorded information about devices that have connected to the PC or are currently connected.
- the agent is additionally performed by enumerating devices on certain connection interfaces to the coordinating computer, such as a universal serial bus (USB) or many other types of ports or busses, or use of the Universal Plug and Play (UPnP) protocol.
- the discovery portion of the agent also scans the system for telltale installed software applications that indicate use of certain devices, and also registers with the system to receive notification of certain events such as installation of a new device or connection of a device.
- Other means are also provided for, such as optical scanning of the UPC bar code on device packaging, and detecting the events wherein users purchase devices via the Internet or register their purchases with manufacturers.
- the agent looks up and interprets instructions specific to the type of device in order to determine how to query it for current firmware version or other software contents. Such means of querying include enumerating file contents of specific directories or areas of the device storage, opening a specific address or port and sending a query instruction, retrieving a response from a URL the device supports, or other means.
- the agent residing in the method 200 may alternatively launch an associated sub-program which contains device-specific capability for determining software contents, or display instructions to an end-user via the proxy update system user interface and ask the user to interact with the device or examine its labeling, and provide software or version information to the agent. Additional information about the device may also be gathered automatically or via a user interface, such as serial number, user's nickname for the device, utilization statistics maintained by the device or user preferences set for the device, details of contents of the device storage, date of purchase or of first connection, point of purchase of the device, user name, address, and personal information, or reports of errors or diagnostic information maintained by the device.
- the coordinating computer 12 also is configured to communicate the above information back to the manufacturer or other central source for collation and/or other analysis. In a preferred embodiment the coordinating computer is capable of learning of, obtaining, and using newer means of querying the device to determine its type and software contents at any time at or after initial use of the system.
- FIG. 4 is an expansion of the Connect process block of FIG. 3 .
- the Connect process block 204 includes an Identify device to receive software updates block 204 - 2 .
- multiple devices similarly related or diversely heterogeneous or dissimilar are identified by the coordinating computer 12 .
- these devices are categorized into device families or groups. For example, a printer group, a camera group, a scanner group, and PDA group.
- the devices are further sub-categorized by device manufacturer and model.
- software modules detected on the device are determined, and categorized according to associated device and/or software vendor and/or type of software application.
- the devices are password protected.
- FIG. 1 Once identified, at block 204 - 4 , the devices are password protected.
- FIG. 5 is an expansion of the Register process block of FIG. 3 .
- the device is first activated at block 208 - 2 wherein this activation is detected by the coordinating computer 12 .
- the current version of the device's enabling software and other software is operated and recognized by the coordinating computer 12 and registered at block 208 - 6 .
- FIG. 6 is an expansion of the Compare Software Version block of FIG. 3 and illustrates the software agent functioning in the method 200 .
- the Compare Version block 210 includes the Ascertain Device Type block 210 - 2 which includes Identify device block 410 - 2 where the attached device is identified to receive software updates. Once the device is identified, a Password Protect block 410 - 4 is engaged to apply a password protection regimen to the identified devices.
- the software agent function may look up and interpret instructions specific to the type of device in order to determine how to query it for current firmware version or other software contents, for example, by enumerating file contents of specific directories or areas of the device storage, opening a specific address or port and sending a query instruction, retrieving a response from a URL the device supports, or other means.
- the agent may alternatively launch an associated sub-program which contains device-specific capability for determining software contents, or display instructions to an end-user via the proxy update system user interface and ask the user to interact with the device or examine its labeling, and provide software or version information to the agent.
- the block 216 in synchronization with the block 210 maintains an array, database, table or list of available device software.
- this is a database which further includes version numbers of available firmware, software, or other digital data for a variety of devices and a source for obtaining each piece of device software, such as an Internet URL (FTP or HTTP address) to the manufacturer's website.
- FTP Internet Protocol
- additional information is stored about each piece of device software, such as its criticality, cost, dependency on other software updates, and textual description.
- This database is itself preferably updateable, for example via Internet download, and it is periodically updated by the software agent itself.
- a relational database is used to allow interrelated storage of lists of known device types, available software components associated with each device type, known versions of these components, specific instances of devices which are or have been attached to or in communication with the proxy update system 12 , and to indicate from among the known software versions which actual software components and versions have been found on these attached or associated devices.
- two separate databases are maintained, one containing specific instances of devices attached to the proxy update system and containing information concerning a broad set of available device software.
- Other embodiments distribute this data into a plurality of databases located on one or a plurality of systems, store said data in the Windows Registry or text files or in volatile or non-volatile memory, and combine the above data storage means.
- a desirable addition to the Compare Software block 210 is to store for each device and/or each piece of device software the means by which software is updated on the device. This may be by means of a series of “escape” codes, transmission of a file to a known location or port or address on the device using HTTP, FTP, or other protocols, as part of an initialization sequence normally performed by software on the proxy update system, by means of end-user instructions such as depressing certain controls on the device, or by running a specific application on the proxy update system designed to perform the software update.
- the database may store a description of the means of updating to be displayed as instructions to the end user, or the location (local or Internet address) of a software application to run to perform the updates, or a series of instructions that the agent can interpret and execute itself.
- the database may also store authentication information, i.e. an update username and/or password that the device will require when updates are performed.
- the update systems 10 A and 10 B could include, for example, a single application which can send a file via FTP and use a small script to determine what port to send to, what escape sequence to send first, what file name to “put” to the device, and so on. This application could thereby perform updates on several dissimilar devices.
- a third capability of the software agent associated with the Compare Software block 210 is to determine, for any given device, what updates are currently available. This is preferably done by comparing the software currently in the device with the software known to be available for the device as detailed in the Compare block 210 . This comparison function preferably anticipates various cases and possibilities, for example the existence of an unknown device or a known type of device with newer software than that known to the database.
- the Compare Software block 210 queries for any element in the data table of software found on devices to determine if there exists a corresponding entry in the data table of available software which indicates existence of a newer version of the same software element. Other embodiments further query to look for existence of an associated new software element or an update to an interdependent software element.
- the method of encoding the database block 210 allows distinguishing between the case of two or more separate software components on the device to be updated, and two or more newer updates/versions of the same software component.
- information in the database may indicate that it is necessary only to perform the most recent update as it incorporates all desirable changes found in the intermediate versions.
- the database can indicate software dependencies, i.e. the requirement to perform one or more software updates before another specific update can be performed.
- a fourth optional capability of the software agent is to initiate the actual update process by means that may or may not require user interface. In some cases, it may involve display and acceptance of an end-user license agreement “EULA” for the software being updated.
- EULA end-user license agreement
- the agent may respond to connection of a device by initiating the update process, or may determine an update should be performed based on elapsed time or information about the criticality of software updates. In these cases, the agent can prompt a user to connect the device to allow updates to occur.
- the agent may log the date, time, and update action performed in a database which tracks update history. If an update occurs successfully, the software agent then updates the database block 210 to indicate that the device now contains the updated software, and may delete the locally cached copy of the software update described above if no other known devices require the same update.
- Another optional capability of the software agent is its ability to process notifications of availability of new software and publicize them.
- the agent periodically scans known addresses or locations to check for the existence of new software or a new database of software availability. Additionally it optionally includes the capability to receive notification messages via datagram, email, instant messaging, or other means. These preferably contain sufficient information or pointers to specific information to allow the agent to update the entire database of block 210 , or add or modify single entries in the database.
- the software agent providing an ancillary user interface presented to an end-user with additional capabilities and information concerning devices and the device update process.
- the user may be permitted to view and modify the list of devices subject to update service and details about them, view a history of updates performed or updates available, and/or undo or “roll back” updates. Updates may also be forced to occur or not occur to override normal schedule parameters, and set preferences about which actions will be prompted or automatic, and/or how and when to perform authentication and/or payment, etc.
- the method 200 employed in the systems 10 A and 10 B provide for a fallback option for determining current software versions that is more “manual” for situations in which such is required in order to be backward compatible with some older devices. For example, a display of text instructions can be provided to the user, and the user is prompted or otherwise queried to examine the device, and then enter the version number or other information via the user interface of the proxy update system.
- a fallback for updating device software is to launch an existing application from the manufacturer, possibly again providing text instructions to the user to help them through the application's prompts.
- FIG. 7 is an alternate embodiment of a method for updating software in devices through active surveillance for software upgrade for devices intermittently connected to the coordinating computer 12 .
- the alternate embodiment 400 includes the procedural routines engaged by the coordinating computer 12 to obtain software updates from originating or proxy software entities during the periods in which the devices are not connected to the coordinating computer 12 . That is, alternate embodiment 400 is particularly suited for devices that are intermittingly connected, such as PDAs or cellular phones with PDA functions.
- the coordinating computer 12 is in an active state and engages a Receive Software Update block 404 .
- the Receive Update 404 communicates with primary (originating) or sub-tiered secondary software entities.
- the computer 12 then expands its device database in process block Build Software Device Database 408 .
- the device is connected and activated, the action of which is detected by the coordinating computer 12 .
- the coordinating computer 12 determines the answer to the query “Software Update Required”. If the answer is No, the user operates the device with the currently embedded software version at block 424 . If the answer is Yes, the process block Retrieve and Load Software 416 is engaged wherein the current software version is delivered to the device and becomes the embedded software to operate the device. The user then operates the device with the newly currently embedded software version at block 424 .
- the alternate embodiment 400 is completed at terminus 428 .
- the method of FIG. 7 imparts to a single device or multiple devices that intermittently communicate with the coordinating computer 12 to perform an update automatically shortly after the device is connected.
- the software employed in the method 400 on the proxy update system or coordinating computer 12 of the systems 10 A and 10 B preferably includes several sub-programs and performs several tasks, as described below.
- the software is configured to start when the overall system starts and remain running at all times, except for replacement and routine maintenance, for devices intermittingly connected to the coordinating computer 12 .
- the method 400 is a software agent.
- one of the agent's tasks is to populate a list of one or more devices for which the coordinating computer 12 acts as a proxy in searching for updates and performing update processes similar to the method 200 .
- the list of devices generated by the method 400 is populated by any combination of manual entry by an end-user and by more automatic discovery, as described below.
- the method 400 provides additional information about the device gathered automatically or via a user interface, such as serial number, user's device nickname for the device, utilization statistics, and device statistics, and is likewise conveyed by the coordinating computer 12 to the manufacturer or other central source for software version and device collation.
- Another particular embodiment of the software agent includes a function to determine when to check for device updates. This is done by a variety of triggers, for example when devices connect, when a predetermined period has elapsed since the last check or last device connection, and/or when a new list of available software is provided from primary and secondary software entities.
- Another function of the software agent residing in the method 400 is to download available software updates to store locally on the proxy update system 12 . Given the list of devices that have connected to the proxy system and the current version of software on those specific devices in the Software Database block 408 , it is possible to determine that newer software is available for some devices, download it from the indicated source, and store it locally in anticipation of future updates of the device. In this case the agent would annotate the database of block 408 to indicate that updated software is already downloaded and include a location on the local system of the cached copy. In one embodiment the download function delays the download, for example to perform it during periods of low bandwidth utilization, or to notify an end user and await confirmation.
- the download function includes one-way or two-way authentication or employs the use of digital signatures to ensure that the source of the software update is authentic and/or that the user of the device and/or the proxy system is allowed access to the software updates. It further includes billing capabilities wherein the user is charged for the updated software, by subscription or by specific software element, which can be performed with the assistance of stored data about user preferences and payment means or alternatively with the intervention of user interface.
- FIG. 8 is an expansion of the Receive Software Update block of FIG. 7 and describes more alternate or optional capabilities of the software agent functioning.
- the Receive Software update block 404 begins with a Coordinating Computer Communicates block 404 - 2 .
- the coordinating computer 12 communicates with primary (originating) software entities or secondary (sub-tiered) software entities to obtain software update versions. The communication may be initiated by the coordinating computer 12 with the software entities, or initiated by the software entities with the coordinating computer 12 or by other means.
- the coordinating computer 12 at block 404 - 6 , receives software upgrade for the device.
- the software agent function may look up and interpret instructions specific to the type of device in order to query it for current firmware version or other software contents.
- the agent may alternatively launch an associated sub-program which contains device-specific capability for determining software contents, or display instructions to an end-user via the proxy update system user interface and ask the user to interact with the device or examine its labeling, and provide software or version information to the agent.
- FIG. 9 is an expansion of the Build Software Device Database block of FIG. 7 .
- the Build Software Device Database block 408 begins with Associate Software Versions block 408 - 2 where incoming software versions are associated or categorized with device groups. For example, software is sorted by PDA devices, printers, cell phones, and other digital devices. Thereafter, at Associate with Device Models block 408 - 6 , the incoming software in the database is further associated by manufacturer and model number of a particular device.
- Block 408 maintains the database of available device software as a list of the most current version numbers of available firmware or software for a variety of devices and a source for obtaining each piece of device software, such as an Internet URL (FTP or HTTP address) to the manufacturer's website.
- FTP Internet Protocol or HTTP address
- additional information can be stored about some or all, or preferably each piece of software, such as its criticality, cost, dependency on other software updates, and textual description.
- This database is itself typically updateable, for example via Internet download, and it is desirable that it be periodically updated by the software agent itself.
- a relational database is used to allow interrelated storage of lists of known device types, available software components associated with each device type, known versions of these components, specific instances of devices which are or have been attached to the proxy update system 12 , and actual software components and versions found on these attached devices.
- a desirable addition to the Build Database block 408 is to store for each device and/or each piece of device software the means by which software is updated on the device.
- Examples of these means include a series of “escape” codes, transmission of a file to a known location or port or address on the device using HTTP, FTP, or other protocols, as part of an initialization sequence normally performed by software on the proxy update system, end-user instructions such as depressing certain controls on the device, or running a specific application on the proxy update system designed to perform the software update.
- the database may store a description of the means of updating to be displayed as instructions to the end user, or the location (local or Internet address) of a software application to run to perform the updates, or a series of instructions that the agent can interpret and execute itself.
- the database may also store authentication information, i.e. an update username and/or password that the device will require when updates are performed or a digital signature key used to verify identity when communicating with the device.
- FIG. 10 is an expansion of the Connect and Activate Device block of FIG. 7 .
- the Connect and Activate Device block 410 block begins with the identify devices to receive software updates block 410 - 2 in which the coordinating computer 12 decides what device is currently connected and activated and what software updates are available for the device. Thereafter, at block 410 - 4 , a password protection process is engaged as part of the security measure for preparing the software upgrade.
- FIG. 11 is an expansion of the Retrieve and Load Software block of FIG. 7 .
- the computer 12 determines that a software update is required at decision diamond 412
- process block 416 current version software is retrieved from the Database 408 and loaded into the recently connected device, replacing the prior embedded version.
- the Retrieve and Load Software block 416 block begins with the Deliver software updates block 416 - 2 in which the coordinating computer 12 downloads or delivers to the currently connected device the currently available software upgrade.
- the embedded software version of the just connected device is replaced with the currently available software upgrade.
- FIG. 2 includes a database server 23 that is separate from the coordinating computer 12 .
- This is in partial contrast to another embodiment in FIG. 12 which demonstrates a system that does not require a database server, and is sufficiently enabled through inclusion of a proxy update system and one or more devices to be updated.
- a database server 23 communicates with the coordinating computer 12 via a connection interface, such as the Internet 18 .
- a connection interface such as the Internet 18 .
- separation of the database 24 from the coordinating computer eliminates the problem of distributing a frequently changing database to each proxy update system that employs the present invention.
- one or more proxy update systems can communicate with a database server that is typically more powerful or more continuously connected or connected at higher bandwidth than the coordinating computer and that maintains more frequent data about software updates.
- the functions transferred to the database server 23 maintain a database 24 of device software versions available, and in one embodiment further contain locations or addresses for obtaining said software (similar to the database described in methods 200 and 400 ).
- the database server 23 preferably includes a means of communication with the proxy update system, in one embodiment accepting and responding to database queries from the proxy update system.
- the proxy update system will query specifying a given device type and obtain a list of all available software or all most-recent versions of available software supported on that device. Alternatively it queries about a specific device software application and receive a response describing the most current version of that application.
- Another variation provides a specific device software application and version and receives a binary response indicating whether that is the most current version, or if it is not, then information about the location of any newer versions.
- the coordinating PC simply identifies itself uniquely to the database server, which is sufficient, when used in combination with information such as device data from the PC that is replicated on the database server, to allow the database server to respond with a list of all software updates of interest to the proxy update server for all devices that it proxies.
- Any of these query types can be individually sufficient, and all can be implemented using any database query technique, such as common gateway interface (“CGI”) scripts or equivalents, or standard query language (“SQL”) or extensible markup language query languages such as “XML-QL” and XQuery.
- CGI common gateway interface
- SQL standard query language
- XML-QL extensible markup language
- a particular embodiment of the database server 23 includes the ability to “crawl” known locations, such as the Internet web sites of device manufacturers.
- the crawler sometimes with the additional input of information about the structure of these websites, preferably automatically determines a list of device types or models, notes what device software versions are available and records the locations where they can be obtained, using this information to update the device software version database.
- Further preferable capability of the database server 23 includes the ability to create a record such as a database of one or more proxy update servers, and associated user names and account details. This capability enhances the ability of a single database server to participate as a component of an update system with more than one proxy update server.
- a copy of the information about devices encountered locally by that proxy system is maintained by the database server 23 .
- This function provides multiple benefits. It facilitates the database server response to a proxy update system identifying device software updates of interest to that proxy system, merely by receiving an identifier for the proxy system, thus minimizing the network bandwidth required for this frequent exchange. It also permits that if a proxy update server is replaced, a replacement can quickly be configured retrieving information from the database server, without the need to re-create local device databases or other information. It further allows the database server to record and aggregate potentially valuable information about devices found connected to or in communication with a large population of proxy update systems. The data from the database server is available for sale or for license to manufacture and software vendors or other entities for service and support or marketing or research or other purposes.
- this capability is enabled by equipping the proxy update server to perform notifications to the database server, and the database server to process such notifications, to keep the two copies of the proxy update system device database synchronized.
- the database technologies mentioned in methods 200 and 400 are among possible means to perform such synchronization.
- Use of widely available database replication technology is another means of enabling the synchronization of data between the database server and the proxy update system.
- a further preferable capability of the database server 23 embodiment is to provide outgoing notifications to proxy update systems of some new software versions based on criteria such as criticality, type of update (e.g. service release versus new features), or user preferences.
- the database determines a set of proxy update servers that attach to or communicate with devices capable of running new software versions.
- notification via datagram messages, email, instant message, short message service SMS (the means by which cellular phones exchange short text messages), and other messaging mechanisms, or combinations thereof, are preferably enabled. This ensures that updates pass through all components of the system and reach the devices extremely rapidly even if the polling interval between checks initiated by the proxy system for updates is long, which is especially useful for updates deemed critical.
- An embodiment capability of the database 23 for systems 10 A or 10 B is the introduction of one or more additional layers of proxy systems between the database server (which describes a known universe of all devices and all software) and the proxy update server (which describes a smaller universe of one system and its associated devices).
- the database server which describes a known universe of all devices and all software
- the proxy update server which describes a smaller universe of one system and its associated devices.
- a corporate-level proxy interacts with and combines information from the proxy update systems to record a specified universe of all devices used within the enterprise and software used on those devices, and all software available for those devices. This enables so-called asset management by inventorying the population of devices and enables software license compliance including calculation of appropriate payment.
- one embodiment of the intermediate server includes some of the capabilities of the proxy update server and some of the capabilities of the database server.
- database server 23 provides ancillary user interface and capabilities, such as the ability to manage user subscriptions, update the database of devices and known software, and perform billing and accounting functions. It further allows users to examine the inventory of their devices and status or history of updates even at times when the user does not have the ability to interface with a proxy update system. It additionally allows the viewing of aggregated or individual information useful to software vendors or device manufacturers or other third parties.
- the systems outlined above include many varying components and capabilities. This helps to ensure that one or more of the embodiments are applicable to many devices that already exist or do not yet exist, and/or devices that do not implement any or all new enabling technologies, but also allows additional benefits such as automation, ease-of-use, or security for devices which do incorporate such innovations.
- the method 400 can be similarly employed, as the case for the method 200 in the systems 10 A and 10 B, to provide for a fallback option for determining current software contents and versions in order to be backward compatible with other systems.
- a display of text instructions is provided to the user, and the user is prompted or otherwise queried to examine the device, and then enter the version number or other information via the user interface of the proxy update system.
- One fallback method for updating device software is to launch an existing application from the manufacturer, again providing text instructions to the user to help them through the application's prompts.
- the software-updating agent is provided as a subscription based service. For example, some users do not want to take the time to even inventory all their devices. Instead, they subscribe to a service that keeps all their devices up to date. The users simply register for the service, and use all their devices as usual, and the service will do the rest. The system will detect the devices, and keep an inventory. Additionally, it will constantly monitor software updates, either by crawling, and/or by previous arrangement with manufacturers. Because the service can be open to any and all manufacturers and any and all users, the service gives rise to a new business and business model that has not before existed.
- a third party employing the present method and system could sell or license a service to manufacturers or third-party vendors which reduces cost of supporting their products or collects additional revenue from customers.
- the system as described above is preferably optimized for updating software.
- Such other purposes include collection of device data, such as one or more or any combination of the following: serial numbers, demographic and usage data, statistics from the device, troubleshooting data, error reports, up-time data, inventory of devices and contents, details of purchase such as date, cost, and source, and dates of installation or use of devices.
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Information Transfer Between Computers (AREA)
- Stored Programmes (AREA)
- Selective Calling Equipment (AREA)
Abstract
A system and method for communicating with one or more software-controlled devices.
Description
- This application is a continuation of U.S. application Ser. No. 11/124,366 filed May 4, 2005 which claims priority to U.S. Provisional Application Ser. No. 60/567,903 filed May 4, 2004, both of which are hereby incorporated by reference in their entirety.
- COPYRIGHT NOTICE
- This disclosure is protected under United States and International Copyright Laws. © 2005 Robert M. Price. All Rights Reserved. A portion of the disclosure of this patent document contains material which is subject to copyright protection. The copyright owner has no objection to the facsimile reproduction by anyone of the patent document or the patent disclosure, as it appears in the Patent and Trademark Office patent file or records, but otherwise reserves all copyright rights whatsoever.
- This invention relates generally to collecting data from, sending data to, and/or updating software or digital data in electronic devices.
- Digital-based devices require software in order to interact with other devices, store, and manipulate information and to perform its designed task. If the software is deficient or otherwise corrupted, generally so is the ability of the device to reliably operate. Digital-based devices often require updated software versions in order to fix poorly performing software that originally was supplied with the device, commonly referred to as software patches. Other software patches are obtained in order to prevent introduction of, repair, counter intervene, or otherwise eliminate malevolent code hacked in by vandal software authors. Other software updating includes version replacement to optimize performance and/or broaden utility over what a customer had been satisfactorily using, or introduction of additional software modules to a device. Furthermore, addition of new data other than executable software onto a device may be useful, for example to add new map data to a personal digital assistant or new music to a portable music-playing device.
- Digital devices vary in their complexity. Comparatively simple devices require only a few hundred lines of machine code in an EEPROM (electrically erasable programmable read-only memory) as commonly found in a microwave oven or coffee maker with a simple keypad or a timer, and as such can support little modification to their software. Moderately complex devices contain a substantial amount of software, but have no provision for making software updates simple or notifying the customer when they might be necessary. Complex digital devices require microprocessors that sport only the simplest software, yet require firmware, an operating system, or other device-specific software. Examples of such devices include DSL modems, cable modems, network routers, wireless access points, digital cameras, MP3 or other music and video players, memory card readers, combination printer/scanner/copier devices, personal digital assistants, certain cellular phones, portable game-playing systems, GPS receivers, other computers including special-purpose computers such as dedicated word processing or calculation or entertainment computers, and combination devices which incorporate a plurality of one or more of these functions. Additional examples of such devices which are not currently widely available include common home and kitchen appliances with added software capability and even running shoes with a microprocessor recently introduced to consumers. These moderately complex digital devices require interactions of the device user or purchaser to determine if software updates are available, obtain (request and download) software updates for the device, and/or to perform authentication or authorization to updated the device.
- These devices often require multiple sessions by a user to search, retrieve, and transfer the current software updates for a device on a device-by-device basis. Such manual search and retrieve process presents a laborious and inconvenient burden to the device end-user or owner. In the current state of the art such software updates are therefore infrequently performed, frequently resulting in replacement of faulty products, customer return of non-functional products, or telephone-based support calls to troubleshoot problems which are time-consuming and expensive to both user-purchasers and manufacturers. Furthermore, because the process of obtaining device software and installing it is limited, the market for third-party software add-ons or improvements for such devices is very limited in scope.
- Particular embodiments include a system and method to enable a user- controlled proxy system or coordinating computer to automatically or semi-automatically communicate with multiple devices, determine the currently operating software contents and versions for each device, and automatically or semi-automatically upgrade each device with updated software without requiring user intervention. The software may include communication, operating system or application-specific program codes that improve a given device's designed function.
- The coordinating computer is able to search for updating software upon connection with a given device, or alternatively, receive and store updated software presented by an originating software entity, and automatically deliver the software to a given device upon the device's re-connection to the proxy system.
- The devices may be homogenously similar, or substantially diverse and heterogeneous. The homogenous or heterogeneous digital devices may be in continuous or intermittent signal communication with the proxy-coordinating computer by wired or wireless connections. The proxy computer is similarly accessible by wired and wireless connection, and acts as an intermediate node for the software updating of devices that may not necessarily have the capability to update themselves.
- Alternate embodiments of the system maintain the elements of one or more devices and a coordinating computer and employ these elements for other purposes related to management of devices. The system as described above is preferably optimized for updating software. The pursuit of such other purposes may include collection of other types of device data.
- These and similar data assist in enabling one or more or any combination of the following and other actions: software updates, timely product support, warranty administration, inventory or insurance or depreciation of devices, market research, sales and promotion of device upgrades or replacements or of additional devices or device software or services or device accessories, design research for improvement of reliability or functionality or compatibility or ease of use of current and future devices, and competitive analysis.
- The preferred and alternative embodiments of the present invention are described in detail below with reference to the following drawings.
-
FIG. 1 is a schematic of a particular embodiment of the software updating system; -
FIG. 2 is a schematic of an alternate embodiment of the software updating system; -
FIG. 3 is a schematic of a particular embodiment of a method for updating software in devices; -
FIG. 4 is an expansion of the Connect process block ofFIG. 3 ; -
FIG. 5 is an expansion of the Register process block ofFIG. 3 ; -
FIG. 6 is an expansion of the Compare Software Version block ofFIG. 3 ; -
FIG. 7 is an alternate embodiment of a method for updating software in devices; -
FIG. 8 is an expansion of the Receive Software Update block ofFIG. 7 ; -
FIG. 9 is an expansion of the Build software Device Database block ofFIG. 7 ; and -
FIG. 10 is an expansion of the Connect and Activate Device block ofFIG. 7 ; and -
FIG. 11 is an expansion of the Retrieve and Load Software block ofFIG. 7 . -
FIG. 12 is an alternate embodiment of a software updating system. - To facilitate the system, the user will designate one device with user interface and communications capabilities (typically a PC, but a TiVo-like device, Palm, or Pocket PC could work as well, for example). This device serves as a central point of communications as a “coordinating PC,” and hereafter referred to as the proxy system. This device acts as a proxy in the common lay sense of acting on behalf of one or more other devices, and may include but does not require operation as a proxy server in the particular sense commonly used in discussions of Internet browsing and connectivity. In alternate embodiments, the “device” can be a virtual device, such as a specified domain on the Internet, enabling the user to access the system from any device that can access the Internet.
- One preferable step in the process comprises identifying to the coordinating PC the set of one or more devices to be kept up-to-date. This can be done by manually entering device identification including current software revision levels, or (better) by connecting the device to the coordinating PC via USB/1394/serial/other communications port, Wi-Fi, infra-red, Bluetooth, or other wireless means (FM, etc.), or even optically (for example, by scanning a bar code on the device or its packaging). In one embodiment, the system has the ability to offer the user the option (when a device is connected) to omit this device from the collection of devices to be kept up-to-date. For example a device that is already subject to update service is provided by another coordinating PC. A further optional embodiment is for the coordinating PC to store an identifying code on the device so that if the device having the identifying code is connected to other coordinating PC's, these computers may default to not updating the device already having the identifying code.
- Another step, preferably performed at this point or later (although in alternate embodiments it could be performed earlier) would be to establish a communications channel between the device and the coordinating PC which would be used for updates. In addition to a communications means, security could be established, for example by storing on the PC an administrative password for the device (as nearly every wireless access point, network router, or broadband modem has), and/or setting the password on the device to a known or determinable value. In some environments, security may be particularly important in the case where the communication was wireless. In one embodiment, the system multiple forms of connection, for example establishes a physical connection the first time to initiate security, and then uses wireless media for subsequent connections. In other embodiments, the security can be active or dynamic, updating periodically or at random intervals, depending on user preferences or other variables.
- In a preferred mode of operation, the list of devices and their software revision levels are compared with a list installed on or accessible to the coordinating PC or on a central service (e.g., an Internet site maintained for the purpose). Based on the comparison it the system has the capability of determining that there are optional updates, critical updates, or additional software components available for one or more of the devices. Optionally, in addition to performing a comparison (which places no private data outside the home or office other private space of the user), the system optionally stores a copy of the user's data, so that if they change coordinating PC's (for example) no information is lost.
- While the system is capable of updating any electronic devices, in a preferred mode of operation the devices to be updated include preferably those having field-replaceable software content and a means of connection to the proxy update system. The software content may be of the embedded type such as a BIOS (basic input-output system) or firmware typically stored in an EEPROM, application software such as games or small applications with user interface, or indeed all or part of any stream of digital information such as ring-tones for cell phones or street maps or digital images. The means of storage for this software content may be EEPROM or flash memory, memory cards such as SD, XD, CF, or Sony memory stick, volatile memory, hard disk, CD or magnetic disk, or other media capable of saving and/or retrieving digital information. Preferably, the system has the capability of providing a connection from the device to the proxy update system in one or more of multiple different optional ways. For example, the connection may be intermittent or continuous, and/or may be wired or wireless, and/or may include serial or parallel port, USB or PC1394 (“firewire”) connection, connection via AC power wiring such as that found in X-10 devices, Ethernet, Bluetooth or 802.11 wireless, infrared, or any other means, or any combination or sub-combination of the foregoing. The means by which the software content can be updated may vary widely and are discussed below. Examples of such devices include, potentially, cell phones, digital cameras, MP3 and video media players, all-in-one or combo printer devices, network routers and wireless access points, media readers such as those for compact flash or chip memory, PDAs, and indeed even home appliances such as microwaves with “smart” features, i.e. a processing chip and on-board software.
- Another, and preferably the next, step in the process is an optional notification about the updates. The user can optionally select to be notified that updates are available via email, instant message or on-screen pop-up, or other means. In some embodiments, the user can view a list of devices and their status at their own initiation, at any time. Determination that updates are available can be via “pull” where the coordinating PC checks the service periodically, and/or via “push” where the service learns that a new update is available, and optionally notifies all candidate users with the appropriate device and (older) software versions.
- An optional capability of the system is to bill or charge the user for the notification service or for updated or additional software for their devices. In this way, device manufacturers either could provide free support services to their customers or could actually sell extended service and support or software upgrades, or both. Examples include support for new media formats, interface improvements, technical improvements (digital sound processing for audio enhancement, for example), additional data (maps, phone numbers, songs), new software modules, more games on one's iPod, or improved security (e.g., upgrading a Wi-Fi access point from WEP to WPA security). In alternate embodiments, such improvements for devices are offered by one or more third parties other than or in addition to the devices' original manufacturer.
- Assuming the user wishes to perform any available updates, another, and preferably next step is to transfer the new software to the coordinating computer. The network service in some embodiments actually stores the updated software, or (more likely) merely maintains an address for obtaining it, for example a link to a file on the website of the device manufacturer or other third party. The coordinating PC automatically or manually downloads the updated device software onto the PC's storage. The coordinating PC could also optionally download a PC application used to update the device.
- Preferably next, (although alternative sequences are provided in other embodiments) the coordinating PC performs the update. It can optionally request that the user establish communications with the device to be updated (“please connect your Nikon CoolPix 950 camera to your serial port now”) or wait and perform the update automatically, the next time the device is connected. It can use a specific application that had been installed or downloaded to perform the update, and/or it can use a standard protocol. These protocols can be specified simply, for example by choosing a specific TCP/IP port number and packet sequence for establishing authentication and initiating software upload.
- Upon success or failure of the update, or at any other interval, the coordinating PC updates its record of the device status. In addition to maintaining the current list of software installed on each device, it can also maintain an update history and allow the user to easily “roll back” to an earlier version if the new version has undesirable characteristics (instability, incompatibility, changes in user operation, security flaws, etc.) The user might receive a notification that an update was performed, especially in the case where they did not manually initiate it, and such notification might include details about what was changed or new capabilities added to their device.
- Note that in one embodiment of the system, the entire update process can be performed with little, or even no user intervention at all, or optionally only with a notification after-the-fact that an update was performed. For example, devices can be sold with a default “stay current” setting (that can be overridden by the users at their option) that instructs the device to automatically update itself periodically without user request or intervention.
- With this system in place, an additional capability is available, namely the capability to use the communication system (from the device through the coordinating PC and preferably to the central service, and thence back to the manufacturer or its agent) to perform additional troubleshooting. Even after devices have been sold and are in use by customers, manufacturers can still interact with devices, obtain diagnostic information (“dumps” following crashes, up-time statistics, configuration data, and so on), and generally use the communication channel to measure reliability, gather information used for making further software improvements, measure the popularity of device features or monitor usage profiles (for example, to determine how much storage future models of audio players or cameras should include or what inventory to produce based on measurements from current customers).
- A
preferred embodiment 10A of the software updating system is shown inFIG. 1 . In thesystem 10A, a coordinatingcomputer 12 is incommunication 14 with anetwork 18 incommunication 20 with anetwork data store 22. Alternatively, thecomputer 12 is indirect wireless communication 34 with thenetwork 18 anddata store 22. The coordinatingcomputer 12 is shown in communication with three electronic devices having software for updating. At least one electronic device is preferred for communication with thecomputer 12, and communication is not limited to three devices as shown. Any number of devices can communicate with coordinatingcomputer 12. A firstelectronic device 50 is inwireless communication 70 with thecomputer 12. A second electronic device is in line orwired communication 74 with thecomputer 12. A thirdelectronic device 58 includes abarcode 60 that is readable by abarcode reader 78 in communication with thecomputer 12. Alternatively,bar code reader 78 is an optical scanner that transmits the bar code image to the coordinating computer for processing and interpretation later or elsewhere. Alternatively,bar code 60 is replaced with an optical or wireless radio tag as the device identifier. Alternatively, the computer writes data on an intermediate form of storage such as a compact disc, portable hard drive, or memory card (such as USB memory drive, compact flash, SD, XD, Sony memory stick, or other type) for later insertion to or connection with the device. Alternatively, the computer communicates with the device by audible means such as touch tones or voice commands. - Preferably, software code for updating the software in the electronic devices is delivered from the
data store 22, to thenetwork 18, and then to the coordinatingcomputer 12 via wiredcommunication 14 or viadirect wireless communication 34 from thenetwork 18, or alternately bypassing the network, by delivery from thedata store 22 to thecomputer 12 Alternatively, software code may be delivered to the computer by indirect wireless communication. The indirect wireless communication includes awireless uplink channel 80 to a radio orcell tower 84, then adownlink channel 88 to thecomputer 12. - Updated software code received by the
computer 12 from either theline communication 14, thedirect wireless communication 34, or by thedownlink channel 88 is processed by thecomputer 12 for delivery to the electronic devices. Such processing can optionally include any one or more, or any combination of the following: un-compression of data, verification of digital signatures, de-encryption of the data, security authorization, confirmation of payment, if any, etc. The processed and/or updated software code is amenable to the software-controlled devices in communication with thecomputer 12. The system preferably accommodates any number of devices, and no particular number is necessary or required. For explanatory purposes only, an example of three devices is described in this Figure. Thefirst device 50 receives the processed and/or updated software code from thecomputer 12 via thewireless channel 70. Similarly, thesecond device 54 receives the processed and/or updated software code from thecomputer 12 via the communication line orchannel 74. Thethird device 58 is identified by the scanning thebarcode 60 affixed to or associated with thethird device 58 by thebarcode reader 78. The third device is 58, preferably once identified, receives the processed and/or updated software code from thecomputer 12 via theline channel 74 or thewireless channel 70 or using intermediate storage. Once the updated and processed software code is delivered to the first 50, second 54 and/or, third 58 devices, the software in these devices is updated with the new code. - Alternatively, coordinating
computer 12 can coordinate the updating of software of one device based on relationships with other related devices or with software on the communicating computer itself or other computers attached via a network interface. For example, if the user purchases a new digital camera, and the system of the present invention updates the software on the camera three (3) months later, the system will realize (by scanning its inventory of software on related devices and/or accessing related databases) that the digital images generated by the camera (now that it has been updated) are no longer compatible, or not ideal, or possibly even optional, with the version of Photoshop® (for example), resident on the local PC. The coordinatingPC 12 also then updates Photoshop® to resolve the incompatibility or sub-optimum compatibility. In another example involving devices and no conventional computer software, a user might add the capability to a sound-recording device to support a new sound-encoding format and wish to add capability to decode and play back this format to a sound-replay device. - A
preferred embodiment 10B of the software updating system is shown inFIG. 2 . In thesystem 10B, a coordinatingcomputer 12 is incommunication 14 with anetwork 18 incommunication 20 with adata store 22. Alternatively, thecomputer 12 is indirect wireless communication 34 with thenetwork 18 anddata store 22. Thecomputer 12 is shown in communication with (by way of example only) three electronic devices having software for updating, andcomputer 12 serves to act as a coordinating PC. At least one electronic device is preferred for communication with thecomputer 12, and is not limited to three devices. A firstelectronic device 50 is inwireless channel communication 70 with thecomputer 12. A second electronic device is inline channel communication 74 with thecomputer 12. A thirdelectronic device 58 includes abarcode 60 that is readable by abarcode reader 78 in communication with thecomputer 12. Software codes for updating the software in the electronic devices is delivered from theserver 22, to thenetwork 18, and then to thecomputer 12 byline communication 14 or viadirect wireless communication 34 from thenetwork 18. Alternatively, software codes may be delivered to the computer by indirect wireless communication. The indirect wireless communication includes awireless uplink channel 80 to asatellite 94, then adownlink channel 88 to thecomputer 12. - Updated software code received by the
computer 12 from either theline communication 14, thedirect wireless communication 34, or by thedownlink channel 88 preferably can be processed by thecomputer 12 for delivery to the electronic devices. Such processing can include any kind of data processing, including by way of example any one or more of the following kinds of processing, alone or in any kind of combination: uncompression of data, verification of digital signatures, de-encryption of the data, or any other kinds of processing, including, without limitation, any processing described elsewhere in this application. The processed and/or updated software code is amenable to, or is executable by, the software-controlled devices in communication with thecomputer 12. Thefirst device 50 receives the processed and/or updated software code from thecomputer 12 via thewireless channel 70. Similarly, thesecond device 54 receives the processed and/or updated software code from thecomputer 12 via theline channel 74. Thethird device 58 is identified by scanning thebarcode 60 affixed to or associated with thethird device 58 by thebarcode reader 78. Thethird device 58, preferably once identified, receives the processed and/or updated software code from thecomputer 12 via theline channel 74 or thewireless channel 70. Once the updated and/or processed software code is delivered to the first 50, second 54 and, third 58 devices, the software in these devices is updated with the new code. - The coordinating
computer 12 which serves as the nucleus of a proxy update system preferably has a direct or indirect means of connection to or communication with the device to be updated, optionally as described above, and typically has a means of connection to or communications with one or more sources of software updates. In a typical case, this system preferably includes a processor, storage mediums, and has a user interface capability. Connection to or communication with sources of update software from primary and secondary entities is preferably via the Internet or intranet and use of hypertext transfer protocol (HTTP) and/or file transfer protocol (FTP). The coordinatingcomputer 12 is capable of accepting requests for specific information items or streams and providing those items or streams on demand, for example, an Internet server responding to FTP and/or HTTP requests. This system may often be, but need not always be, provided by the manufacturer (primary software entity) of the device to be updated. Alternatively, secondary software entities, such as website addresses having device software databases, can similarly be accessed by the coordinatingcomputer 12. -
FIG. 3 is a schematic of a preferred embodiment of amethod 200 for updating software in devices attached to or in communication with a coordinating PC orcomputer 12. Amethod 200 establishes a coordinatingcomputer 12 to function as an agent that runs or provides continuous or non-continuous surveillance of primary and secondary software entities or services for software code upgrades for devices, including, without limitation those devices that can be or are attached to or associated with the coordinatingcomputer 12. Themethod 200 begins atentry point 202 where the coordinatingcomputer 12 is active, the software-controlled device (50, 54, and/or 58, or others) are or can be connected to or in communication with thecoordination computer 12 atblock 204. The device is activated, operated with initially loaded software, and automatically registered atblock 208. Thereafter, atblock 212, a decision is made, optionally independent of the user, to determine whether any device software requires or could benefit from updating. If negative for requiring or benefiting from updating, the device with the initially loaded software may be used as-is by the user atblock 224. If affirmative for requiring or benefiting from updating, the software update can be, or preferably automatically is, acquired and loaded into thecoordination computer 12 atblock 216. In one embodiment the software updates are acquired from the network server independent from user direction. Software updates acquired atblock 216 are stored in theSoftware Version Database 210 to expand or build the database. Thereafter, atblock 220, the software update is delivered from thecomputer 12 to the software-controlled devices (50, 54, and/or 58 etc.) for updating. Thereafter, atblock 224, the user may use the device with the updated software. In this embodiment,terminus 228 ends theupdating method 200. The method ofFIG. 3 imparts to a single device and/or multiple devices, preferably which remain running at all times, the optional ability to check on a periodic or other interval for the availability of updates, and/or to receive notifications that updates have been made available, and then perform these updates or to prompt the user to engage the device to perform an update, or any combination of the foregoing.Method 200 can be performed in alternate sequences, or with any one or more of the foregoing steps omitted. The software employed in themethod 200 on the proxy update system or coordinatingcomputer 12 of thesystems - Residing in a
preferred method 200 is a software agent whose tasks are to populate a list of one or more devices for which the coordinatingcomputer 12 acts as a proxy in searching for updates and/or performing update processes. For one or more of, or preferably each device, the software agent gathers, stores and/or has access to at least sufficiently unique identification about the type of the device to determine what software it is capable of utilizing. In one embodiment, the identification data consists of a short unique identifier such as a GUID, or globally unique identifier, a standard format for generating an ID-tag that is not reused, or a combination of manufacturer, device model, and revision number information, or both. Additionally, the software agent can, and preferably does, store data about one or more of, or any combination of the following: the current software contents of the device including loaded software application(s) and versions thereof, type of connection between the device and the proxy system, date and time of last connection, and user preferences such as whether the device is to be updated automatically with a minimum of confirmations. - Referring again to
FIG. 3 , the list of devices generated by themethod 200 is populated in one embodiment by manual entry of an end-user, and in another by more automatic discovery or a combination of automatic and manual discovery. Such discovery is done at any combination of times including initial, i.e. when the agent is first installed and configured, periodic (e.g. nightly), or in response to certain events like installation of a new device. In a preferred embodiment it is be performed by scanning the software of the proxy system, for example in the case of a Windows PC, by examining the Windows Registry for recorded information about devices that have connected to the PC or are currently connected. In this preferred embodiment it is additionally performed by enumerating devices on certain connection interfaces to the coordinating computer, such as a universal serial bus (USB) or many other types of ports or busses, or use of the Universal Plug and Play (UPnP) protocol. The discovery portion of the agent also scans the system for telltale installed software applications that indicate use of certain devices, and also registers with the system to receive notification of certain events such as installation of a new device or connection of a device. Other means are also provided for, such as optical scanning of the UPC bar code on device packaging, and detecting the events wherein users purchase devices via the Internet or register their purchases with manufacturers. In one embodiment the agent looks up and interprets instructions specific to the type of device in order to determine how to query it for current firmware version or other software contents. Such means of querying include enumerating file contents of specific directories or areas of the device storage, opening a specific address or port and sending a query instruction, retrieving a response from a URL the device supports, or other means. - The agent residing in the
method 200 may alternatively launch an associated sub-program which contains device-specific capability for determining software contents, or display instructions to an end-user via the proxy update system user interface and ask the user to interact with the device or examine its labeling, and provide software or version information to the agent. Additional information about the device may also be gathered automatically or via a user interface, such as serial number, user's nickname for the device, utilization statistics maintained by the device or user preferences set for the device, details of contents of the device storage, date of purchase or of first connection, point of purchase of the device, user name, address, and personal information, or reports of errors or diagnostic information maintained by the device. The coordinatingcomputer 12 also is configured to communicate the above information back to the manufacturer or other central source for collation and/or other analysis. In a preferred embodiment the coordinating computer is capable of learning of, obtaining, and using newer means of querying the device to determine its type and software contents at any time at or after initial use of the system. -
FIG. 4 is an expansion of the Connect process block ofFIG. 3 . TheConnect process block 204 includes an Identify device to receive software updates block 204-2. In block 204-2, multiple devices similarly related or diversely heterogeneous or dissimilar are identified by the coordinatingcomputer 12. In one embodiment these devices are categorized into device families or groups. For example, a printer group, a camera group, a scanner group, and PDA group. Within a device group, the devices are further sub-categorized by device manufacturer and model. Additionally, software modules detected on the device are determined, and categorized according to associated device and/or software vendor and/or type of software application. In one embodiment, once identified, at block 204-4, the devices are password protected.FIG. 5 is an expansion of the Register process block ofFIG. 3 . In the Register Device block 208, the device is first activated at block 208-2 wherein this activation is detected by the coordinatingcomputer 12. At block 208-4, the current version of the device's enabling software and other software is operated and recognized by the coordinatingcomputer 12 and registered at block 208-6. -
FIG. 6 is an expansion of the Compare Software Version block ofFIG. 3 and illustrates the software agent functioning in themethod 200. The CompareVersion block 210 includes the Ascertain Device Type block 210-2 which includes Identify device block 410-2 where the attached device is identified to receive software updates. Once the device is identified, a Password Protect block 410-4 is engaged to apply a password protection regimen to the identified devices. The software agent function may look up and interpret instructions specific to the type of device in order to determine how to query it for current firmware version or other software contents, for example, by enumerating file contents of specific directories or areas of the device storage, opening a specific address or port and sending a query instruction, retrieving a response from a URL the device supports, or other means. The agent may alternatively launch an associated sub-program which contains device-specific capability for determining software contents, or display instructions to an end-user via the proxy update system user interface and ask the user to interact with the device or examine its labeling, and provide software or version information to the agent. - Referring again to
FIG. 6 , acquired software versions are fed back to the Compare Software block 210 to further build or expand the device software database. Theblock 216 in synchronization with theblock 210 maintains an array, database, table or list of available device software. In one embodiment this is a database which further includes version numbers of available firmware, software, or other digital data for a variety of devices and a source for obtaining each piece of device software, such as an Internet URL (FTP or HTTP address) to the manufacturer's website. In a preferred embodiment, additional information is stored about each piece of device software, such as its criticality, cost, dependency on other software updates, and textual description. This database is itself preferably updateable, for example via Internet download, and it is periodically updated by the software agent itself. - In another particular embodiment, a relational database is used to allow interrelated storage of lists of known device types, available software components associated with each device type, known versions of these components, specific instances of devices which are or have been attached to or in communication with the
proxy update system 12, and to indicate from among the known software versions which actual software components and versions have been found on these attached or associated devices. In another embodiment two separate databases are maintained, one containing specific instances of devices attached to the proxy update system and containing information concerning a broad set of available device software. Other embodiments distribute this data into a plurality of databases located on one or a plurality of systems, store said data in the Windows Registry or text files or in volatile or non-volatile memory, and combine the above data storage means. - A desirable addition to the Compare
Software block 210 is to store for each device and/or each piece of device software the means by which software is updated on the device. This may be by means of a series of “escape” codes, transmission of a file to a known location or port or address on the device using HTTP, FTP, or other protocols, as part of an initialization sequence normally performed by software on the proxy update system, by means of end-user instructions such as depressing certain controls on the device, or by running a specific application on the proxy update system designed to perform the software update. The database may store a description of the means of updating to be displayed as instructions to the end user, or the location (local or Internet address) of a software application to run to perform the updates, or a series of instructions that the agent can interpret and execute itself. The database may also store authentication information, i.e. an update username and/or password that the device will require when updates are performed. Theupdate systems - A third capability of the software agent associated with the Compare
Software block 210 is to determine, for any given device, what updates are currently available. This is preferably done by comparing the software currently in the device with the software known to be available for the device as detailed in the Compareblock 210. This comparison function preferably anticipates various cases and possibilities, for example the existence of an unknown device or a known type of device with newer software than that known to the database. In some embodiments employing a relational database, the Compare Software block 210 queries for any element in the data table of software found on devices to determine if there exists a corresponding entry in the data table of available software which indicates existence of a newer version of the same software element. Other embodiments further query to look for existence of an associated new software element or an update to an interdependent software element. - It is possible that there will be multiple updated software applications available for a given device. It is desirable that the method of encoding the
database block 210 allows distinguishing between the case of two or more separate software components on the device to be updated, and two or more newer updates/versions of the same software component. In the latter case, information in the database may indicate that it is necessary only to perform the most recent update as it incorporates all desirable changes found in the intermediate versions. (Additionally, the database can indicate software dependencies, i.e. the requirement to perform one or more software updates before another specific update can be performed.) - A fourth optional capability of the software agent is to initiate the actual update process by means that may or may not require user interface. In some cases, it may involve display and acceptance of an end-user license agreement “EULA” for the software being updated. The agent may respond to connection of a device by initiating the update process, or may determine an update should be performed based on elapsed time or information about the criticality of software updates. In these cases, the agent can prompt a user to connect the device to allow updates to occur. The agent may log the date, time, and update action performed in a database which tracks update history. If an update occurs successfully, the software agent then updates the
database block 210 to indicate that the device now contains the updated software, and may delete the locally cached copy of the software update described above if no other known devices require the same update. - Another optional capability of the software agent is its ability to process notifications of availability of new software and publicize them. The agent periodically scans known addresses or locations to check for the existence of new software or a new database of software availability. Additionally it optionally includes the capability to receive notification messages via datagram, email, instant messaging, or other means. These preferably contain sufficient information or pointers to specific information to allow the agent to update the entire database of
block 210, or add or modify single entries in the database. - Other particular embodiments have the software agent providing an ancillary user interface presented to an end-user with additional capabilities and information concerning devices and the device update process. For example, the user may be permitted to view and modify the list of devices subject to update service and details about them, view a history of updates performed or updates available, and/or undo or “roll back” updates. Updates may also be forced to occur or not occur to override normal schedule parameters, and set preferences about which actions will be prompted or automatic, and/or how and when to perform authentication and/or payment, etc.
- The
method 200 employed in thesystems -
FIG. 7 is an alternate embodiment of a method for updating software in devices through active surveillance for software upgrade for devices intermittently connected to the coordinatingcomputer 12. Thealternate embodiment 400 includes the procedural routines engaged by the coordinatingcomputer 12 to obtain software updates from originating or proxy software entities during the periods in which the devices are not connected to the coordinatingcomputer 12. That is,alternate embodiment 400 is particularly suited for devices that are intermittingly connected, such as PDAs or cellular phones with PDA functions. Atentry point 402 the coordinatingcomputer 12 is in an active state and engages a ReceiveSoftware Update block 404. The ReceiveUpdate 404 communicates with primary (originating) or sub-tiered secondary software entities. Thecomputer 12 then expands its device database in process block BuildSoftware Device Database 408. Thereafter, atblock 410, the device is connected and activated, the action of which is detected by the coordinatingcomputer 12. Atdecision diamond 412 the coordinatingcomputer 12 determines the answer to the query “Software Update Required”. If the answer is No, the user operates the device with the currently embedded software version atblock 424. If the answer is Yes, the process block Retrieve andLoad Software 416 is engaged wherein the current software version is delivered to the device and becomes the embedded software to operate the device. The user then operates the device with the newly currently embedded software version atblock 424. Thealternate embodiment 400 is completed atterminus 428. The method ofFIG. 7 imparts to a single device or multiple devices that intermittently communicate with the coordinatingcomputer 12 to perform an update automatically shortly after the device is connected. The software employed in themethod 400 on the proxy update system or coordinatingcomputer 12 of thesystems computer 12. - Also residing in the
method 400, like themethod 200, is a software agent. Preferably, one of the agent's tasks is to populate a list of one or more devices for which the coordinatingcomputer 12 acts as a proxy in searching for updates and performing update processes similar to themethod 200. Referring again toFIG. 7 , the list of devices generated by themethod 400 is populated by any combination of manual entry by an end-user and by more automatic discovery, as described below. Similar to themethod 200, themethod 400 provides additional information about the device gathered automatically or via a user interface, such as serial number, user's device nickname for the device, utilization statistics, and device statistics, and is likewise conveyed by the coordinatingcomputer 12 to the manufacturer or other central source for software version and device collation. Another particular embodiment of the software agent includes a function to determine when to check for device updates. This is done by a variety of triggers, for example when devices connect, when a predetermined period has elapsed since the last check or last device connection, and/or when a new list of available software is provided from primary and secondary software entities. - Another function of the software agent residing in the
method 400 is to download available software updates to store locally on theproxy update system 12. Given the list of devices that have connected to the proxy system and the current version of software on those specific devices in theSoftware Database block 408, it is possible to determine that newer software is available for some devices, download it from the indicated source, and store it locally in anticipation of future updates of the device. In this case the agent would annotate the database ofblock 408 to indicate that updated software is already downloaded and include a location on the local system of the cached copy. In one embodiment the download function delays the download, for example to perform it during periods of low bandwidth utilization, or to notify an end user and await confirmation. The download function includes one-way or two-way authentication or employs the use of digital signatures to ensure that the source of the software update is authentic and/or that the user of the device and/or the proxy system is allowed access to the software updates. It further includes billing capabilities wherein the user is charged for the updated software, by subscription or by specific software element, which can be performed with the assistance of stored data about user preferences and payment means or alternatively with the intervention of user interface. -
FIG. 8 is an expansion of the Receive Software Update block ofFIG. 7 and describes more alternate or optional capabilities of the software agent functioning. The ReceiveSoftware update block 404 begins with a Coordinating Computer Communicates block 404-2. In block 404-2 the coordinatingcomputer 12 communicates with primary (originating) software entities or secondary (sub-tiered) software entities to obtain software update versions. The communication may be initiated by the coordinatingcomputer 12 with the software entities, or initiated by the software entities with the coordinatingcomputer 12 or by other means. Upon communication, the coordinatingcomputer 12, at block 404-6, receives software upgrade for the device. The software agent function may look up and interpret instructions specific to the type of device in order to query it for current firmware version or other software contents. For example, by enumerating file contents of specific directories or areas of the device storage, opening a specific address or port and sending a query instruction, retrieving a response from a URL the device supports, or other means. The agent may alternatively launch an associated sub-program which contains device-specific capability for determining software contents, or display instructions to an end-user via the proxy update system user interface and ask the user to interact with the device or examine its labeling, and provide software or version information to the agent. -
FIG. 9 is an expansion of the Build Software Device Database block ofFIG. 7 . The Build SoftwareDevice Database block 408 begins with Associate Software Versions block 408-2 where incoming software versions are associated or categorized with device groups. For example, software is sorted by PDA devices, printers, cell phones, and other digital devices. Thereafter, at Associate with Device Models block 408-6, the incoming software in the database is further associated by manufacturer and model number of a particular device.Block 408 maintains the database of available device software as a list of the most current version numbers of available firmware or software for a variety of devices and a source for obtaining each piece of device software, such as an Internet URL (FTP or HTTP address) to the manufacturer's website. (In some embodiments, additional information can be stored about some or all, or preferably each piece of software, such as its criticality, cost, dependency on other software updates, and textual description.) This database is itself typically updateable, for example via Internet download, and it is desirable that it be periodically updated by the software agent itself. In another particular embodiment, a relational database is used to allow interrelated storage of lists of known device types, available software components associated with each device type, known versions of these components, specific instances of devices which are or have been attached to theproxy update system 12, and actual software components and versions found on these attached devices. A desirable addition to the Build Database block 408 is to store for each device and/or each piece of device software the means by which software is updated on the device. Examples of these means include a series of “escape” codes, transmission of a file to a known location or port or address on the device using HTTP, FTP, or other protocols, as part of an initialization sequence normally performed by software on the proxy update system, end-user instructions such as depressing certain controls on the device, or running a specific application on the proxy update system designed to perform the software update. The database may store a description of the means of updating to be displayed as instructions to the end user, or the location (local or Internet address) of a software application to run to perform the updates, or a series of instructions that the agent can interpret and execute itself. The database may also store authentication information, i.e. an update username and/or password that the device will require when updates are performed or a digital signature key used to verify identity when communicating with the device. -
FIG. 10 is an expansion of the Connect and Activate Device block ofFIG. 7 . The Connect and ActivateDevice block 410 block begins with the identify devices to receive software updates block 410-2 in which the coordinatingcomputer 12 decides what device is currently connected and activated and what software updates are available for the device. Thereafter, at block 410-4, a password protection process is engaged as part of the security measure for preparing the software upgrade. -
FIG. 11 is an expansion of the Retrieve and Load Software block ofFIG. 7 . After thecomputer 12 determines that a software update is required atdecision diamond 412, atprocess block 416, current version software is retrieved from theDatabase 408 and loaded into the recently connected device, replacing the prior embedded version. The Retrieve and Load Software block 416 block begins with the Deliver software updates block 416-2 in which the coordinatingcomputer 12 downloads or delivers to the currently connected device the currently available software upgrade. Thereafter, at block 410-6, the embedded software version of the just connected device is replaced with the currently available software upgrade. - A particular embodiment illustrated in
FIG. 2 includes adatabase server 23 that is separate from the coordinatingcomputer 12. This is in partial contrast to another embodiment inFIG. 12 which demonstrates a system that does not require a database server, and is sufficiently enabled through inclusion of a proxy update system and one or more devices to be updated. - In this embodiment many of the method functions described in
methods database server 23. Theserver 23 communicates with the coordinatingcomputer 12 via a connection interface, such as theInternet 18. Because the set of devices that can be updated may be large and availability of newer device software may be a frequent event, separation of thedatabase 24 from the coordinating computer eliminates the problem of distributing a frequently changing database to each proxy update system that employs the present invention. Instead, one or more proxy update systems can communicate with a database server that is typically more powerful or more continuously connected or connected at higher bandwidth than the coordinating computer and that maintains more frequent data about software updates. The functions transferred to thedatabase server 23 maintain adatabase 24 of device software versions available, and in one embodiment further contain locations or addresses for obtaining said software (similar to the database described inmethods 200 and 400). Thedatabase server 23 preferably includes a means of communication with the proxy update system, in one embodiment accepting and responding to database queries from the proxy update system. The proxy update system will query specifying a given device type and obtain a list of all available software or all most-recent versions of available software supported on that device. Alternatively it queries about a specific device software application and receive a response describing the most current version of that application. Another variation provides a specific device software application and version and receives a binary response indicating whether that is the most current version, or if it is not, then information about the location of any newer versions. Alternatively the coordinating PC simply identifies itself uniquely to the database server, which is sufficient, when used in combination with information such as device data from the PC that is replicated on the database server, to allow the database server to respond with a list of all software updates of interest to the proxy update server for all devices that it proxies. Any of these query types can be individually sufficient, and all can be implemented using any database query technique, such as common gateway interface (“CGI”) scripts or equivalents, or standard query language (“SQL”) or extensible markup language query languages such as “XML-QL” and XQuery. - A particular embodiment of the
database server 23 includes the ability to “crawl” known locations, such as the Internet web sites of device manufacturers. The crawler, sometimes with the additional input of information about the structure of these websites, preferably automatically determines a list of device types or models, notes what device software versions are available and records the locations where they can be obtained, using this information to update the device software version database. Further preferable capability of thedatabase server 23 includes the ability to create a record such as a database of one or more proxy update servers, and associated user names and account details. This capability enhances the ability of a single database server to participate as a component of an update system with more than one proxy update server. - In yet another particular embodiment, a copy of the information about devices encountered locally by that proxy system is maintained by the
database server 23. This function provides multiple benefits. It facilitates the database server response to a proxy update system identifying device software updates of interest to that proxy system, merely by receiving an identifier for the proxy system, thus minimizing the network bandwidth required for this frequent exchange. It also permits that if a proxy update server is replaced, a replacement can quickly be configured retrieving information from the database server, without the need to re-create local device databases or other information. It further allows the database server to record and aggregate potentially valuable information about devices found connected to or in communication with a large population of proxy update systems. The data from the database server is available for sale or for license to manufacture and software vendors or other entities for service and support or marketing or research or other purposes. - In one embodiment this capability is enabled by equipping the proxy update server to perform notifications to the database server, and the database server to process such notifications, to keep the two copies of the proxy update system device database synchronized. The database technologies mentioned in
methods - A further preferable capability of the
database server 23 embodiment is to provide outgoing notifications to proxy update systems of some new software versions based on criteria such as criticality, type of update (e.g. service release versus new features), or user preferences. When the database is changed to include new versions in response to administrator manual input, new results from the crawler, or other means, it determines a set of proxy update servers that attach to or communicate with devices capable of running new software versions. Moreover, notification via datagram messages, email, instant message, short message service SMS (the means by which cellular phones exchange short text messages), and other messaging mechanisms, or combinations thereof, are preferably enabled. This ensures that updates pass through all components of the system and reach the devices extremely rapidly even if the polling interval between checks initiated by the proxy system for updates is long, which is especially useful for updates deemed critical. - An embodiment capability of the
database 23 forsystems - Other advantages conferred by the
database server 23 include ancillary user interface and capabilities, such as the ability to manage user subscriptions, update the database of devices and known software, and perform billing and accounting functions. It further allows users to examine the inventory of their devices and status or history of updates even at times when the user does not have the ability to interface with a proxy update system. It additionally allows the viewing of aggregated or individual information useful to software vendors or device manufacturers or other third parties. - The systems outlined above include many varying components and capabilities. This helps to ensure that one or more of the embodiments are applicable to many devices that already exist or do not yet exist, and/or devices that do not implement any or all new enabling technologies, but also allows additional benefits such as automation, ease-of-use, or security for devices which do incorporate such innovations.
- While the preferred embodiments of the invention have been illustrated and described, as noted above, many changes can be made without departing from the spirit and scope of the invention. The
method 400 can be similarly employed, as the case for themethod 200 in thesystems - Another embodiment provides for the case when users do not want to inventory their devices but instead prefer to relegate these efforts to a subscription service that provides the inventory and software updating functions. In one embodiment, the software-updating agent is provided as a subscription based service. For example, some users do not want to take the time to even inventory all their devices. Instead, they subscribe to a service that keeps all their devices up to date. The users simply register for the service, and use all their devices as usual, and the service will do the rest. The system will detect the devices, and keep an inventory. Additionally, it will constantly monitor software updates, either by crawling, and/or by previous arrangement with manufacturers. Because the service can be open to any and all manufacturers and any and all users, the service gives rise to a new business and business model that has not before existed. With this embodiment, users need not complete a warranty card or think about their devices anymore; they just use them. Similarly, subscribing manufacturers can provide superior product support and customer service knowing that all devices can be easily kept current automatically, without hassle to their customers. A third party employing the present method and system could sell or license a service to manufacturers or third-party vendors which reduces cost of supporting their products or collects additional revenue from customers.
- The system as described above is preferably optimized for updating software. Alternate embodiments of the present methods and systems for communication between a device and a coordinating computer (or device or devices) or proxy system and one or more network servers for other purposes, and do not necessarily require enabling of software updating. Such other purposes include collection of device data, such as one or more or any combination of the following: serial numbers, demographic and usage data, statistics from the device, troubleshooting data, error reports, up-time data, inventory of devices and contents, details of purchase such as date, cost, and source, and dates of installation or use of devices.
- These and similar data are collected with minimal delay by the system and can be used to enable one or more or any combination of the following and other actions: software updates, timely product support, warranty administration, inventory or insurance or depreciation of devices, market research, sales and promotion of device upgrades or replacements or of additional devices or device software or services or device accessories, design research for improvement of reliability or functionality or compatibility or ease of use of current and future devices, and competitive analysis.
- Accordingly, the scope of the invention is not limited by the disclosure of the particular embodiments.
Claims (2)
1. A system comprising:
a network;
a computer in communication with
at least one software-controlled device,
wherein the computer receives data from the device.
2. A method comprising:
connecting at least one software-controlled device with a computer;
activating the computer and the software-controlled device;
transferring data to or from the software-controlled device.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US13/214,847 US20120192173A1 (en) | 2004-05-04 | 2011-08-22 | System and method for updating software in electronic devices |
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US56790304P | 2004-05-04 | 2004-05-04 | |
US11/124,366 US7904608B2 (en) | 2004-05-04 | 2005-05-04 | System and method for updating software in electronic devices |
US13/015,471 US20110125926A1 (en) | 2004-05-04 | 2011-01-27 | System and method for communicating with electronic devices |
US13/214,847 US20120192173A1 (en) | 2004-05-04 | 2011-08-22 | System and method for updating software in electronic devices |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US13/015,471 Continuation US20110125926A1 (en) | 2004-05-04 | 2011-01-27 | System and method for communicating with electronic devices |
Publications (1)
Publication Number | Publication Date |
---|---|
US20120192173A1 true US20120192173A1 (en) | 2012-07-26 |
Family
ID=35320659
Family Applications (3)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US11/124,366 Expired - Fee Related US7904608B2 (en) | 2004-05-04 | 2005-05-04 | System and method for updating software in electronic devices |
US13/015,471 Abandoned US20110125926A1 (en) | 2004-05-04 | 2011-01-27 | System and method for communicating with electronic devices |
US13/214,847 Abandoned US20120192173A1 (en) | 2004-05-04 | 2011-08-22 | System and method for updating software in electronic devices |
Family Applications Before (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US11/124,366 Expired - Fee Related US7904608B2 (en) | 2004-05-04 | 2005-05-04 | System and method for updating software in electronic devices |
US13/015,471 Abandoned US20110125926A1 (en) | 2004-05-04 | 2011-01-27 | System and method for communicating with electronic devices |
Country Status (3)
Country | Link |
---|---|
US (3) | US7904608B2 (en) |
EP (1) | EP1763766A4 (en) |
WO (1) | WO2005107417A2 (en) |
Cited By (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20080134166A1 (en) * | 2004-12-24 | 2008-06-05 | Telecom Italia S.P.A | Method and System For Upgrading the Software of a Telecommunication Terminal, In Particular of a Video Telephone, and Related Computer Program Product |
US20100057306A1 (en) * | 2007-07-24 | 2010-03-04 | Toyota Jidosha Kabushiki Kaisha | Vehicle-mounted device control system |
US20100235826A1 (en) * | 2009-03-12 | 2010-09-16 | International Business Machines Corporation | Apparatus, system, and method for efficient code update |
US20110302574A1 (en) * | 2010-06-08 | 2011-12-08 | Sony Corporation | Update management server, electronic apparatus, update management system, and method therefor |
US20120023490A1 (en) * | 2010-07-26 | 2012-01-26 | Sony Dadc Austria Ag | Method for replacing an illegitimate copy of a software program with a legitimate copy and corresponding system |
US20120254859A1 (en) * | 2011-03-31 | 2012-10-04 | Sony Corporation | Method and apparatus for downloading software updates to place user terminal into a desired configuration state |
US20140068592A1 (en) * | 2012-08-31 | 2014-03-06 | Cellco Partnership D/B/A Verizon Wireless | Enabling a wireless device to act as a relay for upgrading an accessory coupled to the wireless device |
US20140096125A1 (en) * | 2012-09-28 | 2014-04-03 | Wal-Mart Stores, Inc. | Systems and methods for installing, managing, and provisioning applications |
US20140298310A1 (en) * | 2013-03-28 | 2014-10-02 | Oki Data Corporation | Information processing apparatus, firmware renewing method, and computer program |
US20150074658A1 (en) * | 2012-09-30 | 2015-03-12 | Google Inc. | Updating control software on a network-connected hvac controller |
US9235491B2 (en) | 2012-09-28 | 2016-01-12 | Wal-Mart Stores, Inc. | Systems and methods for installing, managing, and provisioning applications |
US20160342409A1 (en) * | 2015-05-20 | 2016-11-24 | International Business Machines Corporation | Rolling upgrade of a distributed application |
US9547488B2 (en) * | 2015-01-15 | 2017-01-17 | Idis Co., Ltd. | Firmware update system for video security equipment |
WO2018118816A1 (en) * | 2016-12-19 | 2018-06-28 | Vmware, Inc. | Operating system update management for enrolled devices |
US20210072970A1 (en) * | 2019-08-16 | 2021-03-11 | The Gap, Inc. | Systems and methods for deploying enterprise software updates |
US20240184568A1 (en) * | 2022-12-05 | 2024-06-06 | Cisco Technology, Inc. | Systems and methods for determining out of date status based on corpus of devices |
Families Citing this family (224)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8990678B2 (en) * | 2001-03-27 | 2015-03-24 | At&T Intellectual Property I, L.P. | Systems and methods for automatically providing alerts of web site content updates |
US20020143812A1 (en) * | 2001-03-27 | 2002-10-03 | Bedingfield James C. | System and method of automatically updating content on a web site |
US8018383B1 (en) * | 2010-06-08 | 2011-09-13 | Q-Track Corporation | Method and apparatus for determining location using signals-of-opportunity |
US20080052704A1 (en) * | 2006-06-02 | 2008-02-28 | Apple Computer, Inc. | Media management system for management of games acquired from a media server |
US8845433B2 (en) * | 2003-12-16 | 2014-09-30 | Igt | Methods and devices for gaming machine configuration |
US20050137833A1 (en) * | 2003-12-18 | 2005-06-23 | Rajasekhar Sistla | Automatic sensor integration |
US9098826B2 (en) * | 2004-09-30 | 2015-08-04 | The Invention Science Fund I, Llc | Enhanced user assistance |
US8762839B2 (en) | 2004-09-30 | 2014-06-24 | The Invention Science Fund I, Llc | Supply-chain side assistance |
US7922086B2 (en) | 2004-09-30 | 2011-04-12 | The Invention Science Fund I, Llc | Obtaining user assistance |
US9038899B2 (en) | 2004-09-30 | 2015-05-26 | The Invention Science Fund I, Llc | Obtaining user assistance |
US7694881B2 (en) * | 2004-09-30 | 2010-04-13 | Searete Llc | Supply-chain side assistance |
US9307577B2 (en) | 2005-01-21 | 2016-04-05 | The Invention Science Fund I, Llc | User assistance |
US8282003B2 (en) | 2004-09-30 | 2012-10-09 | The Invention Science Fund I, Llc | Supply-chain side assistance |
US7798401B2 (en) * | 2005-01-18 | 2010-09-21 | Invention Science Fund 1, Llc | Obtaining user assistance |
US20100223162A1 (en) * | 2004-09-30 | 2010-09-02 | Searete Llc, A Limited Liability Corporation Of The State Of Delaware | Supply-chain side assistance |
US10687166B2 (en) | 2004-09-30 | 2020-06-16 | Uber Technologies, Inc. | Obtaining user assistance |
US10445799B2 (en) | 2004-09-30 | 2019-10-15 | Uber Technologies, Inc. | Supply-chain side assistance |
US20060117001A1 (en) * | 2004-12-01 | 2006-06-01 | Jung Edward K | Enhanced user assistance |
US8341522B2 (en) * | 2004-10-27 | 2012-12-25 | The Invention Science Fund I, Llc | Enhanced contextual user assistance |
US20080229198A1 (en) * | 2004-09-30 | 2008-09-18 | Searete Llc, A Limited Liability Corporaiton Of The State Of Delaware | Electronically providing user assistance |
US7664736B2 (en) | 2005-01-18 | 2010-02-16 | Searete Llc | Obtaining user assistance |
US9747579B2 (en) * | 2004-09-30 | 2017-08-29 | The Invention Science Fund I, Llc | Enhanced user assistance |
US8704675B2 (en) | 2004-09-30 | 2014-04-22 | The Invention Science Fund I, Llc | Obtaining user assistance |
US10514816B2 (en) * | 2004-12-01 | 2019-12-24 | Uber Technologies, Inc. | Enhanced user assistance |
US20060095520A1 (en) * | 2004-10-27 | 2006-05-04 | Berg Douglass J | Method and apparatus for managing computer systmes in multiple remote devices |
JP4624235B2 (en) * | 2004-10-28 | 2011-02-02 | 三洋電機株式会社 | Content usage information providing apparatus and content usage information transmission method |
US20060106806A1 (en) * | 2004-11-12 | 2006-05-18 | Smith Micro Software, Inc. | Software update for a plurality of mobile devices |
US7809949B2 (en) * | 2005-07-26 | 2010-10-05 | Apple Inc. | Configuration of a computing device in a secure manner |
US9489496B2 (en) * | 2004-11-12 | 2016-11-08 | Apple Inc. | Secure software updates |
US7747573B2 (en) * | 2004-11-18 | 2010-06-29 | International Business Machines Corporation | Updating elements in a data storage facility using a predefined state machine, with serial activation |
US7827544B2 (en) * | 2004-11-18 | 2010-11-02 | International Business Machines Corporation | Updating elements in a data storage facility using a predefined state machine, with parallel activation |
US7477913B2 (en) * | 2005-04-04 | 2009-01-13 | Research In Motion Limited | Determining a target transmit power of a wireless transmission according to security requirements |
US8051298B1 (en) * | 2005-11-29 | 2011-11-01 | Sprint Communications Company L.P. | Integrated fingerprinting in configuration audit and management |
US20070163427A1 (en) * | 2005-12-19 | 2007-07-19 | Alex Rigopulos | Systems and methods for generating video game content |
US20070155425A1 (en) * | 2005-12-31 | 2007-07-05 | Govind Balakrishnan | Enabling rapid and de-coupled ui development for a cellular telephone |
US7660558B2 (en) | 2005-12-31 | 2010-02-09 | Adobe Systems Incorporated | Interrupting and resuming a media player |
US8358976B2 (en) | 2006-03-24 | 2013-01-22 | The Invention Science Fund I, Llc | Wireless device with an aggregate user interface for controlling other devices |
US7459624B2 (en) | 2006-03-29 | 2008-12-02 | Harmonix Music Systems, Inc. | Game controller simulating a musical instrument |
US20070238526A1 (en) * | 2006-03-31 | 2007-10-11 | Chandranmenon Girish P | Methods and devices for exchanging messages in an always-on network |
US8882561B2 (en) * | 2006-04-07 | 2014-11-11 | Mattel, Inc. | Multifunction removable memory device with ornamental housing |
JP4908902B2 (en) * | 2006-04-11 | 2012-04-04 | キヤノン株式会社 | COMMUNICATION DEVICE, SYSTEM, PROGRAM INSTALLATION METHOD, AND PROGRAM |
JP4984669B2 (en) * | 2006-06-15 | 2012-07-25 | ソニー株式会社 | Data writing apparatus and data delivery system |
US20080010246A1 (en) * | 2006-07-06 | 2008-01-10 | Curtis Bryce A | System and method for providing operating system component version verification |
JP4222388B2 (en) * | 2006-07-10 | 2009-02-12 | ソニー株式会社 | Image management apparatus, image recording apparatus, imaging apparatus, image management system, image analysis information management method, and program |
US20080027996A1 (en) * | 2006-07-31 | 2008-01-31 | Morris Robert P | Method and system for synchronizing data using a presence service |
US9418367B2 (en) | 2006-08-21 | 2016-08-16 | International Business Machines Corporation | Context-aware code provisioning for mobile devices |
US8584115B2 (en) * | 2006-10-05 | 2013-11-12 | International Business Machines Corporation | Automated operating system device driver updating system |
US8616976B2 (en) | 2006-11-07 | 2013-12-31 | Core Wireless Licensing S.A.R.L. | Gaming via peer-to-peer networks |
US20130167024A1 (en) | 2006-12-05 | 2013-06-27 | Adobe Systems Incorporated | Embedded document within an application |
US7734717B2 (en) * | 2006-12-05 | 2010-06-08 | Nokia Corporation | Software distribution via peer-to-peer networks |
US7743339B1 (en) | 2007-02-01 | 2010-06-22 | Adobe Systems Incorporated | Rendering text in a brew device |
US20080208982A1 (en) * | 2007-02-28 | 2008-08-28 | Morris Robert P | Method and system for providing status information relating to a relation between a plurality of participants |
US8589779B2 (en) * | 2007-03-08 | 2013-11-19 | Adobe Systems Incorporated | Event-sensitive content for mobile devices |
US7913911B2 (en) * | 2007-03-20 | 2011-03-29 | Van Etten David | Method for updating indicia readers |
US8914786B2 (en) * | 2007-03-23 | 2014-12-16 | Zumobi, Inc. | Systems and methods for controlling application updates across a wireless interface |
US8756694B2 (en) * | 2007-03-30 | 2014-06-17 | Microsoft Corporation | Prevention of exploitation of update rollback |
WO2008131708A1 (en) * | 2007-04-27 | 2008-11-06 | Siemens Aktiengesellschaft | Method for providing control programs and parameter data sets |
ES2693097T3 (en) * | 2007-05-30 | 2018-12-07 | Ascensia Diabetes Care Holdings Ag | System and method for managing health data |
US20080301239A1 (en) * | 2007-05-31 | 2008-12-04 | Microsoft Corporation | Remote administration of devices and resources using an instant messenger service |
JP2008305035A (en) * | 2007-06-06 | 2008-12-18 | Hitachi Ltd | Device, update method, and control software |
JP5097820B2 (en) * | 2007-06-13 | 2012-12-12 | フィッシャー−ローズマウント システムズ,インコーポレイテッド | Function improvement method of portable field maintenance equipment |
US20090088249A1 (en) | 2007-06-14 | 2009-04-02 | Robert Kay | Systems and methods for altering a video game experience based on a controller type |
US8678896B2 (en) * | 2007-06-14 | 2014-03-25 | Harmonix Music Systems, Inc. | Systems and methods for asynchronous band interaction in a rhythm action game |
US20080313310A1 (en) * | 2007-06-15 | 2008-12-18 | Sony Ericsson Mobile Communications Ab | Method for Distributing Programs over a Communication Network |
US8635309B2 (en) | 2007-08-09 | 2014-01-21 | Hand Held Products, Inc. | Methods and apparatus to change a feature set on data collection devices |
CN101119387B (en) * | 2007-09-10 | 2012-11-14 | 北京网秦天下科技有限公司 | Method and system with convenience to customize, configure and transfer handset software service |
US8209678B2 (en) * | 2007-09-17 | 2012-06-26 | Sony Corporation | System, apparatus, and method for an upgrader module |
JP2009086791A (en) * | 2007-09-28 | 2009-04-23 | Hitachi Ltd | Software product line analyzer |
US20090182786A1 (en) * | 2007-11-01 | 2009-07-16 | Cybernet Systems Corporation | Application coherency manager |
US8213923B1 (en) * | 2007-11-02 | 2012-07-03 | Trend Micro Incorporated | Product update via voice call in mobile security |
US20090119422A1 (en) * | 2007-11-07 | 2009-05-07 | International Business Machines Corporation | Method and apparatus for performing maintenance operations on peripheral devices |
US8726260B2 (en) * | 2007-11-26 | 2014-05-13 | Lenovo (Singapore) Pte Ltd | Techniques for providing software patches to a computer system |
US8490074B2 (en) | 2007-11-27 | 2013-07-16 | The Boeing Company | Aircraft software part library |
SG10201702351UA (en) * | 2007-11-27 | 2017-05-30 | Boeing Co | Method and apparatus for loadable software airplane parts (lsap) distribution |
US9208308B2 (en) | 2007-11-27 | 2015-12-08 | The Boeing Company | Alternate parts signature list file |
US8165930B2 (en) * | 2007-11-27 | 2012-04-24 | The Boeing Company | Crate tool |
US8185609B2 (en) * | 2007-11-27 | 2012-05-22 | The Boeing Company | Method and apparatus for processing commands in an aircraft network |
US8930310B2 (en) * | 2007-11-27 | 2015-01-06 | The Boeing Company | Proxy server for distributing aircraft software parts |
US8442751B2 (en) * | 2007-11-27 | 2013-05-14 | The Boeing Company | Onboard electronic distribution system |
US20090138873A1 (en) * | 2007-11-27 | 2009-05-28 | The Boeing Company | Method and Apparatus for Loadable Aircraft Software Parts Distribution |
US9002344B2 (en) * | 2007-12-05 | 2015-04-07 | Microsoft Technology Licensing, Llc | Phone content service |
US20090161579A1 (en) * | 2007-12-20 | 2009-06-25 | Mika Saaranen | Method, system, and apparatus for implementing network capable input devices |
WO2009088687A2 (en) * | 2007-12-31 | 2009-07-16 | Datalogic Mobile, Inc. | Systems and methods for configuring, updating, and booting an alternate operating system on a portable data reader |
US8321083B2 (en) * | 2008-01-30 | 2012-11-27 | The Boeing Company | Aircraft maintenance laptop |
US20090249322A1 (en) * | 2008-03-27 | 2009-10-01 | Sony Corporation Of Japan | Techniques for updating software |
EP2498509B1 (en) | 2008-04-07 | 2018-08-15 | Koss Corporation | Wireless earphone that transitions between wireless networks |
US9953143B2 (en) * | 2008-05-05 | 2018-04-24 | Oracle International Corporation | Software identifier based correlation |
US20090287802A1 (en) * | 2008-05-19 | 2009-11-19 | Nokia Corporation | UPnP/DLNA device support apparatus, system, and method |
US8041346B2 (en) | 2008-05-29 | 2011-10-18 | Research In Motion Limited | Method and system for establishing a service relationship between a mobile communication device and a mobile data server for connecting to a wireless network |
US7865573B2 (en) * | 2008-05-29 | 2011-01-04 | Research In Motion Limited | Method, system and devices for communicating between an internet browser and an electronic device |
US8418168B2 (en) * | 2008-05-29 | 2013-04-09 | Research In Motion Limited | Method and system for performing a software upgrade on an electronic device connected to a computer |
US9208118B2 (en) * | 2008-06-10 | 2015-12-08 | Lg Electronics Inc. | Communication device, a method of processing signal in the communication device and a system having the communication device |
US10033869B2 (en) | 2008-08-29 | 2018-07-24 | 8X8, Inc. | Methods and systems for information streaming to user interface |
US8243913B2 (en) | 2008-08-29 | 2012-08-14 | 8×8, Inc. | Limiting contact in a networked contact center environment |
US8204206B2 (en) * | 2008-08-29 | 2012-06-19 | 8X8, Inc. | Systems and methods for selection of a communication path |
US8972885B2 (en) | 2008-08-29 | 2015-03-03 | 8X8, Inc. | Networked contact center user interface |
US8515833B2 (en) * | 2008-08-29 | 2013-08-20 | 8X8, Inc. | Methods and systems for multilayer provisioning of networked contact centers |
US8275116B2 (en) | 2008-08-29 | 2012-09-25 | 8X8, Inc. | Networked contact center |
FR2935861B1 (en) * | 2008-09-10 | 2010-10-22 | Airbus France | ASSEMBLY FOR AN AIRCRAFT FOR THE MANAGEMENT AND STORAGE OF DATA RELATING TO ON-BOARD EQUIPMENT |
TWI449454B (en) * | 2008-09-12 | 2014-08-11 | Chi Mei Comm Systems Inc | System and method for updating software |
US8677344B2 (en) * | 2008-10-10 | 2014-03-18 | Sony Corporation | Software upgrade using single source channel |
US20110093493A1 (en) | 2008-10-28 | 2011-04-21 | Honeywell International Inc. | Building management system site categories |
US20120033101A9 (en) * | 2008-11-12 | 2012-02-09 | Xiaoguang Yu | Apparatus and methods for controlling image sensors |
US8466974B2 (en) * | 2008-11-12 | 2013-06-18 | O2Micro, Inc. | Apparatus and methods for controlling image sensors |
US11868498B1 (en) * | 2009-04-20 | 2024-01-09 | Pure Storage, Inc. | Storage integrity processing in a storage network |
US8449360B2 (en) * | 2009-05-29 | 2013-05-28 | Harmonix Music Systems, Inc. | Displaying song lyrics and vocal cues |
US8465366B2 (en) * | 2009-05-29 | 2013-06-18 | Harmonix Music Systems, Inc. | Biasing a musical performance input to a part |
US8849717B2 (en) * | 2009-07-09 | 2014-09-30 | Simon Cooper | Methods and systems for upgrade and synchronization of securely installed applications on a computing device |
US8560604B2 (en) | 2009-10-08 | 2013-10-15 | Hola Networks Ltd. | System and method for providing faster and more efficient data communication |
WO2011056657A2 (en) | 2009-10-27 | 2011-05-12 | Harmonix Music Systems, Inc. | Gesture-based user interface |
US9981193B2 (en) | 2009-10-27 | 2018-05-29 | Harmonix Music Systems, Inc. | Movement based recognition and evaluation |
US20110154135A1 (en) * | 2009-12-22 | 2011-06-23 | Research In Motion Limited | Method, system and apparatus for installing software on a mobile electronic device via a proxy server |
US10263827B2 (en) * | 2009-12-31 | 2019-04-16 | Schneider Electric USA, Inc. | Information bridge between manufacturer server and monitoring device on a customer network |
US9544143B2 (en) | 2010-03-03 | 2017-01-10 | Duo Security, Inc. | System and method of notifying mobile devices to complete transactions |
US9532222B2 (en) | 2010-03-03 | 2016-12-27 | Duo Security, Inc. | System and method of notifying mobile devices to complete transactions after additional agent verification |
US8568234B2 (en) | 2010-03-16 | 2013-10-29 | Harmonix Music Systems, Inc. | Simulating musical instruments |
US8831993B2 (en) | 2010-03-19 | 2014-09-09 | Novell, Inc. | Techniques for sharing virtual machine (VM) resources |
US8626921B2 (en) * | 2010-04-22 | 2014-01-07 | Cisco Technology, Inc. | Device and service management based on layer 2 through layer 7 device attributes |
US9110690B2 (en) * | 2010-04-28 | 2015-08-18 | General Electric Company | Systems, methods, and apparatus for deploying application code change configurations for multiple target controllers |
WO2011155958A1 (en) | 2010-06-11 | 2011-12-15 | Harmonix Music Systems, Inc. | Dance game and tutorial |
US8562403B2 (en) | 2010-06-11 | 2013-10-22 | Harmonix Music Systems, Inc. | Prompting a player of a dance game |
CN102347939B (en) | 2010-08-05 | 2015-09-09 | 华为终端有限公司 | The method of software administration, Apparatus and system |
US10102687B1 (en) | 2010-08-17 | 2018-10-16 | The Boeing Company | Information management system for ground vehicles |
US8468545B2 (en) | 2010-08-18 | 2013-06-18 | 8X8, Inc. | Interaction management |
US9024166B2 (en) | 2010-09-09 | 2015-05-05 | Harmonix Music Systems, Inc. | Preventing subtractive track separation |
EP2636216A4 (en) * | 2010-11-01 | 2014-05-07 | Nokia Corp | Tuning of digital image quality |
CN102137144B (en) * | 2010-11-11 | 2015-04-08 | 华为终端有限公司 | Method and system for configuration management of third-party software as well as management server |
US8914791B1 (en) | 2010-11-30 | 2014-12-16 | Cellco Partnership | Method for updating of wireless terminal software |
KR20120066529A (en) * | 2010-12-14 | 2012-06-22 | 한국전자통신연구원 | System for providing virtual consumer electronics |
US9634896B2 (en) * | 2011-02-17 | 2017-04-25 | Circle Media Inc. | Plug-and-play network filter |
US20120227036A1 (en) * | 2011-03-01 | 2012-09-06 | International Business Machines Corporation | Local Server Management of Software Updates to End Hosts Over Low Bandwidth, Low Throughput Channels |
US8793350B2 (en) | 2011-03-09 | 2014-07-29 | Asset Science Llc | Systems and methods for modifying content of mobile communication devices |
US8977727B2 (en) | 2011-08-02 | 2015-03-10 | Roche Diagnostics Operations, Inc. | Remote configuration and selective distribution of product content to medical devices |
US8893109B2 (en) | 2011-08-02 | 2014-11-18 | Roche Diagnostics Operations, Inc. | Software distribution amongst medical devices taking into account dependencies between devices |
US9467463B2 (en) | 2011-09-02 | 2016-10-11 | Duo Security, Inc. | System and method for assessing vulnerability of a mobile device |
DE102011082962A1 (en) * | 2011-09-19 | 2013-01-24 | Siemens Aktiengesellschaft | System and method for providing a control program code |
US8842840B2 (en) | 2011-11-03 | 2014-09-23 | Arvind Gidwani | Demand based encryption and key generation and distribution systems and methods |
US20130116804A1 (en) * | 2011-11-09 | 2013-05-09 | Johannes Extra | Method for automatically transferring a configuration of an automation device during replacement of an automation device |
WO2013068023A1 (en) * | 2011-11-10 | 2013-05-16 | Abb Technology Ag | Arrangement and method for distributing a control system engineering tool and/or a control application software |
US9851103B2 (en) | 2011-12-15 | 2017-12-26 | Honeywell International Inc. | Gas valve with overpressure diagnostics |
US9557059B2 (en) | 2011-12-15 | 2017-01-31 | Honeywell International Inc | Gas valve with communication link |
US9223564B2 (en) | 2012-01-26 | 2015-12-29 | Avago Technologies General Ip (Singapore) Pte. Ltd. | Update systems responsive to ongoing processing at a storage system |
US20130253600A1 (en) * | 2012-03-26 | 2013-09-26 | Physio-Control, Inc. | Internet supported software updates for medical devices |
US11216854B2 (en) * | 2012-04-27 | 2022-01-04 | Blackberry Limited | Software distribution accounting |
WO2013169887A1 (en) | 2012-05-08 | 2013-11-14 | Schlage Lock Company Llc | Remote management of electronic products |
US10302207B2 (en) | 2012-06-14 | 2019-05-28 | Honeywell International Inc. | Spring loaded HVAC damper |
US10119721B2 (en) | 2012-06-14 | 2018-11-06 | Honeywell International Inc. | Standoff for use with an insulated HVAC duct |
US20140033188A1 (en) * | 2012-07-26 | 2014-01-30 | Microsoft Corporation | System updates from cloud blob storage using vhd differentials |
US9529349B2 (en) | 2012-10-22 | 2016-12-27 | Honeywell International Inc. | Supervisor user management system |
US9239718B2 (en) | 2012-12-18 | 2016-01-19 | Honeywell International Inc. | System for field upgrading of firmware in multiple units |
US11080035B2 (en) * | 2013-02-13 | 2021-08-03 | Vmware, Inc. | Accessing a patch file in a system center configuration manager (SCCM) environment |
US11023487B2 (en) * | 2013-03-04 | 2021-06-01 | Sap Se | Data replication for cloud based in-memory databases |
US9647779B2 (en) | 2013-04-22 | 2017-05-09 | The Nielsen Company (Us), Llc | Systems, methods, and apparatus to identify media devices |
US9806705B2 (en) | 2013-04-23 | 2017-10-31 | Honeywell International Inc. | Active triac triggering circuit |
US9160543B2 (en) | 2013-05-07 | 2015-10-13 | The Boeing Company | Verification of aircraft information in response to compromised digital certificate |
US9237022B2 (en) | 2013-05-07 | 2016-01-12 | The Boeing Company | Use of multiple digital signatures and quorum rules to verify aircraft information |
US9930142B2 (en) * | 2013-05-24 | 2018-03-27 | Hand Held Products, Inc. | System for providing a continuous communication link with a symbol reading device |
US11054448B2 (en) | 2013-06-28 | 2021-07-06 | Ademco Inc. | Power transformation self characterization mode |
EP3014428A4 (en) * | 2013-06-28 | 2017-03-22 | Samsung Electronics Co., Ltd. | Method and apparatus for updating application |
US10900680B2 (en) | 2013-07-19 | 2021-01-26 | Ademco Inc. | Humidifier system |
US9822990B2 (en) | 2013-07-19 | 2017-11-21 | Honeywell International Inc. | Methods, systems, and devices for humidifying |
US9241044B2 (en) | 2013-08-28 | 2016-01-19 | Hola Networks, Ltd. | System and method for improving internet communication by using intermediate nodes |
US9092302B2 (en) | 2013-09-10 | 2015-07-28 | Duo Security, Inc. | System and method for determining component version compatibility across a device ecosystem |
US20150088957A1 (en) * | 2013-09-25 | 2015-03-26 | Sony Corporation | System and methods for managing applications in multiple devices |
US20150149563A1 (en) * | 2013-11-26 | 2015-05-28 | At&T Intellectual Property I, L.P. | Intelligent machine-to-machine (im2m) reserve |
US10941960B2 (en) | 2013-12-18 | 2021-03-09 | Ademco Inc. | HVAC actuator with position indicator |
US9732980B2 (en) | 2013-12-18 | 2017-08-15 | Honeywell International Inc. | HVAC actuator with range adjustment |
US11100434B2 (en) | 2014-05-06 | 2021-08-24 | Uber Technologies, Inc. | Real-time carpooling coordinating system and methods |
US9552559B2 (en) | 2014-05-06 | 2017-01-24 | Elwha Llc | System and methods for verifying that one or more directives that direct transport of a second end user does not conflict with one or more obligations to transport a first end user |
US10458801B2 (en) | 2014-05-06 | 2019-10-29 | Uber Technologies, Inc. | Systems and methods for travel planning that calls for at least one transportation vehicle unit |
US9483744B2 (en) | 2014-05-06 | 2016-11-01 | Elwha Llc | Real-time carpooling coordinating systems and methods |
US9628074B2 (en) | 2014-06-19 | 2017-04-18 | Honeywell International Inc. | Bypass switch for in-line power steal |
US9933762B2 (en) * | 2014-07-09 | 2018-04-03 | Honeywell International Inc. | Multisite version and upgrade management system |
US9792100B1 (en) * | 2014-09-05 | 2017-10-17 | VCE IP Holding Company LLC | Application deployment system and method for a computing infrastructure |
US9645584B2 (en) | 2014-09-17 | 2017-05-09 | Honeywell International Inc. | Gas valve with electronic health monitoring |
US9311811B1 (en) | 2014-10-08 | 2016-04-12 | Google Inc. | Alarm profile for a fabric network |
US9748708B2 (en) | 2014-10-14 | 2017-08-29 | Honeywell International Inc. | Poke-in electrical connector |
US10802459B2 (en) | 2015-04-27 | 2020-10-13 | Ademco Inc. | Geo-fencing with advanced intelligent recovery |
US11057446B2 (en) | 2015-05-14 | 2021-07-06 | Bright Data Ltd. | System and method for streaming content from multiple servers |
EP3304336B1 (en) | 2015-06-01 | 2019-10-09 | Duo Security, Inc. | Method for enforcing endpoint health standards |
US10042626B2 (en) * | 2015-06-29 | 2018-08-07 | Verizon Patent And Licensing Inc. | Software updates using client self-reporting and a hierarchical data structure |
CN104966391A (en) * | 2015-07-01 | 2015-10-07 | 苏州本控电子科技有限公司 | Intelligent home remote control system |
US10362104B2 (en) | 2015-09-23 | 2019-07-23 | Honeywell International Inc. | Data manager |
US10209689B2 (en) | 2015-09-23 | 2019-02-19 | Honeywell International Inc. | Supervisor history service import manager |
JP2017068318A (en) * | 2015-09-28 | 2017-04-06 | 富士通株式会社 | Update control method, update control program, and transmission device |
US10516965B2 (en) | 2015-11-11 | 2019-12-24 | Ademco Inc. | HVAC control using geofencing |
US9628951B1 (en) | 2015-11-11 | 2017-04-18 | Honeywell International Inc. | Methods and systems for performing geofencing with reduced power consumption |
US9560482B1 (en) | 2015-12-09 | 2017-01-31 | Honeywell International Inc. | User or automated selection of enhanced geo-fencing |
US10257280B2 (en) * | 2015-12-28 | 2019-04-09 | Carbonite, Inc. | Systems and methods for remote management of appliances |
US10359790B2 (en) | 2016-02-12 | 2019-07-23 | Ademco Inc. | Multi piece HVAC controller housing with latches and guiding features |
US10605472B2 (en) | 2016-02-19 | 2020-03-31 | Ademco Inc. | Multiple adaptive geo-fences for a building |
CA2946190C (en) | 2016-06-16 | 2020-02-11 | Taser International, Inc. | Systems and methods for automatically activating wireless networks |
US10895883B2 (en) | 2016-08-26 | 2021-01-19 | Ademco Inc. | HVAC controller with a temperature sensor mounted on a flex circuit |
US11085656B2 (en) | 2017-02-24 | 2021-08-10 | Ademco Inc. | Configurable electrode humidifier allowing for various injects |
US10317102B2 (en) | 2017-04-18 | 2019-06-11 | Ademco Inc. | Geofencing for thermostatic control |
US10567356B2 (en) | 2017-06-20 | 2020-02-18 | Microsoft Technology Licensing, Llc | Monitoring cloud computing environments with data control policies |
US10708136B2 (en) | 2017-06-20 | 2020-07-07 | Microsoft Technology Licensing, Llc | Standardization of network management across cloud computing environments and data control policies |
US10762218B2 (en) | 2017-06-20 | 2020-09-01 | Microsoft Technology Licensing, Llc | Network buildout for cloud computing environments with data control policies |
US10409582B1 (en) * | 2017-07-21 | 2019-09-10 | Jpmorgan Chase Bank, N.A. | Method and system for implementing a retail event management tool |
LT3767493T (en) | 2017-08-28 | 2023-03-10 | Bright Data Ltd. | Method for improving content fetching by selecting tunnel devices |
US10024568B1 (en) | 2017-09-14 | 2018-07-17 | Honeywell International Inc. | Lock box for a building controller |
US20190112148A1 (en) * | 2017-10-13 | 2019-04-18 | Otis Elevator Company | Commissioning and upgrading remote software/firmware using augmented reality |
CN111226497B (en) * | 2017-10-17 | 2024-02-09 | 瑞典爱立信有限公司 | Service registration in a communication network |
US10412113B2 (en) | 2017-12-08 | 2019-09-10 | Duo Security, Inc. | Systems and methods for intelligently configuring computer security |
US11073281B2 (en) | 2017-12-29 | 2021-07-27 | Honeywell International Inc. | Closed-loop programming and control of a combustion appliance |
EP3759588B1 (en) * | 2018-03-19 | 2022-09-28 | Huawei International Pte. Ltd. | Method and apparatus for updating devices in a remote network |
US10838739B2 (en) | 2018-04-19 | 2020-11-17 | Circle Media Labs Inc. | Network-connected computing devices and methods for executing operating programs in RAM memory |
CN112005531B (en) * | 2018-06-07 | 2023-10-27 | 惠普发展公司,有限责任合伙企业 | Local server for managing intermittent network |
US10697815B2 (en) | 2018-06-09 | 2020-06-30 | Honeywell International Inc. | System and methods for mitigating condensation in a sensor module |
US10515248B1 (en) * | 2018-08-23 | 2019-12-24 | Zebra Technologies Corporation | Apparatus and method for updating barcode readers |
US11658962B2 (en) | 2018-12-07 | 2023-05-23 | Cisco Technology, Inc. | Systems and methods of push-based verification of a transaction |
LT4075304T (en) | 2019-02-25 | 2023-07-25 | Bright Data Ltd. | System and method for url fetching retry mechanism |
EP4027618B1 (en) | 2019-04-02 | 2024-07-31 | Bright Data Ltd. | Managing a non-direct url fetching service |
US11429362B2 (en) * | 2019-07-26 | 2022-08-30 | Dell Products L.P. | Device experience application launcher |
JP7092843B2 (en) * | 2019-10-31 | 2022-06-28 | アシュラント,インコーポレーテッド | Systems, methods, equipment, and computer program products for managing and synchronizing independent computing resources. |
WO2021121674A1 (en) * | 2019-12-17 | 2021-06-24 | Abb Schweiz Ag | Updating an edge node of a process control system |
US20210306296A1 (en) * | 2020-03-27 | 2021-09-30 | The Nielsen Company (Us), Llc | Methods and apparatus to facilitate device identification |
CN114253558A (en) * | 2020-09-22 | 2022-03-29 | 华为技术有限公司 | Method and device for installing patch package |
US11902652B1 (en) * | 2020-10-21 | 2024-02-13 | Gopro, Inc. | User-linked features for image capture device |
US11892954B2 (en) | 2020-10-29 | 2024-02-06 | Xerox Corporation | Self-adding smartcard reader system |
US11392365B2 (en) * | 2020-12-14 | 2022-07-19 | International Business Machines Corporation | Optimizing device update scheduling |
US20240289117A1 (en) * | 2021-06-22 | 2024-08-29 | Verifone, Inc. | Smart terminal management system for updating terminal software |
US20230081085A1 (en) * | 2021-09-16 | 2023-03-16 | International Business Machines Corporation | Model change management of online software as a medical device |
US20230266960A1 (en) * | 2022-02-24 | 2023-08-24 | Whirlpool Corporation | Systems and methods of offline over the air (ota) programming of appliances |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20030195949A1 (en) * | 1996-04-18 | 2003-10-16 | Microsoft Corporation | Methods and systems for obtaining computer software via a network |
Family Cites Families (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US659770A (en) * | 1900-01-10 | 1900-10-16 | William Henry Slappey | Fireplace. |
US5940074A (en) * | 1996-06-03 | 1999-08-17 | Webtv Networks, Inc. | Remote upgrade of software over a network |
US6074434A (en) | 1996-06-07 | 2000-06-13 | International Business Machines Corporation | Selection of code updates, data updates or new data for client |
US6151643A (en) | 1996-06-07 | 2000-11-21 | Networks Associates, Inc. | Automatic updating of diverse software products on multiple client computer systems by downloading scanning application to client computer and generating software list on client computer |
US6308061B1 (en) | 1996-08-07 | 2001-10-23 | Telxon Corporation | Wireless software upgrades with version control |
ATE254778T1 (en) * | 1997-09-05 | 2003-12-15 | Sun Microsystems Inc | LOOKUP TABLE AND METHOD FOR DATA STORAGE THEREIN |
US6035423A (en) * | 1997-12-31 | 2000-03-07 | Network Associates, Inc. | Method and system for providing automated updating and upgrading of antivirus applications using a computer network |
US6202207B1 (en) * | 1998-01-28 | 2001-03-13 | International Business Machines Corporation | Method and a mechanism for synchronized updating of interoperating software |
US6678741B1 (en) | 1999-04-09 | 2004-01-13 | Sun Microsystems, Inc. | Method and apparatus for synchronizing firmware |
US20010033243A1 (en) * | 2000-03-15 | 2001-10-25 | Harris Glen Mclean | Online remote control configuration system |
US6549770B1 (en) | 2000-05-26 | 2003-04-15 | Cellco Partnership | Over the air programming and/or service activation |
GB2366693B (en) | 2000-08-31 | 2002-08-14 | F Secure Oyj | Software virus protection |
US20040003266A1 (en) * | 2000-09-22 | 2004-01-01 | Patchlink Corporation | Non-invasive automatic offsite patch fingerprinting and updating system and method |
US9134989B2 (en) * | 2002-01-31 | 2015-09-15 | Qualcomm Incorporated | System and method for updating dataset versions resident on a wireless device |
US20030217357A1 (en) | 2002-05-14 | 2003-11-20 | Parry Travis J. | Monitoring firmware |
JP2006512695A (en) | 2002-12-23 | 2006-04-13 | デクステラ・インコーポレイテッド | Mobile data and software update system and method |
-
2005
- 2005-05-04 US US11/124,366 patent/US7904608B2/en not_active Expired - Fee Related
- 2005-05-04 WO PCT/US2005/015632 patent/WO2005107417A2/en not_active Application Discontinuation
- 2005-05-04 EP EP05744573A patent/EP1763766A4/en not_active Withdrawn
-
2011
- 2011-01-27 US US13/015,471 patent/US20110125926A1/en not_active Abandoned
- 2011-08-22 US US13/214,847 patent/US20120192173A1/en not_active Abandoned
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20030195949A1 (en) * | 1996-04-18 | 2003-10-16 | Microsoft Corporation | Methods and systems for obtaining computer software via a network |
Cited By (31)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20080134166A1 (en) * | 2004-12-24 | 2008-06-05 | Telecom Italia S.P.A | Method and System For Upgrading the Software of a Telecommunication Terminal, In Particular of a Video Telephone, and Related Computer Program Product |
US9201641B2 (en) * | 2004-12-24 | 2015-12-01 | Telecom Italia S.P.A. | Method and system for upgrading the software of a telecommunication terminal, in particular of a video telephone, and related computer program product |
US20100057306A1 (en) * | 2007-07-24 | 2010-03-04 | Toyota Jidosha Kabushiki Kaisha | Vehicle-mounted device control system |
US10059284B2 (en) * | 2007-07-24 | 2018-08-28 | Aisin Aw Co., Ltd. | Vehicle-mounted device control system |
US20100235826A1 (en) * | 2009-03-12 | 2010-09-16 | International Business Machines Corporation | Apparatus, system, and method for efficient code update |
US8392904B2 (en) * | 2009-03-12 | 2013-03-05 | International Business Machines Corporation | Apparatus, system, and method for efficient code update |
US20110302574A1 (en) * | 2010-06-08 | 2011-12-08 | Sony Corporation | Update management server, electronic apparatus, update management system, and method therefor |
US9038057B2 (en) * | 2010-07-26 | 2015-05-19 | Sony Dadc Austria Ag | Method for replacing an illegitimate copy of a software program with a legitimate copy and corresponding system |
US20120023490A1 (en) * | 2010-07-26 | 2012-01-26 | Sony Dadc Austria Ag | Method for replacing an illegitimate copy of a software program with a legitimate copy and corresponding system |
US20120254859A1 (en) * | 2011-03-31 | 2012-10-04 | Sony Corporation | Method and apparatus for downloading software updates to place user terminal into a desired configuration state |
US20140068592A1 (en) * | 2012-08-31 | 2014-03-06 | Cellco Partnership D/B/A Verizon Wireless | Enabling a wireless device to act as a relay for upgrading an accessory coupled to the wireless device |
US9128796B2 (en) * | 2012-08-31 | 2015-09-08 | Cellco Partnership | Enabling a wireless device to act as a relay for upgrading an accessory coupled to the wireless device |
US20140096125A1 (en) * | 2012-09-28 | 2014-04-03 | Wal-Mart Stores, Inc. | Systems and methods for installing, managing, and provisioning applications |
US9235491B2 (en) | 2012-09-28 | 2016-01-12 | Wal-Mart Stores, Inc. | Systems and methods for installing, managing, and provisioning applications |
US9317269B2 (en) * | 2012-09-28 | 2016-04-19 | Wal-Mart Stores, Inc. | Systems and methods for installing, managing, and provisioning applications |
US10761833B2 (en) | 2012-09-30 | 2020-09-01 | Google Llc | Updating control software on a network-connected HVAC controller |
US20150074658A1 (en) * | 2012-09-30 | 2015-03-12 | Google Inc. | Updating control software on a network-connected hvac controller |
US10387136B2 (en) * | 2012-09-30 | 2019-08-20 | Google Llc | Updating control software on a network-connected HVAC controller |
US9395976B2 (en) * | 2013-03-28 | 2016-07-19 | Oki Data Corporation | Information processing apparatus, firmware renewing method, and computer program |
US20140298310A1 (en) * | 2013-03-28 | 2014-10-02 | Oki Data Corporation | Information processing apparatus, firmware renewing method, and computer program |
US9547488B2 (en) * | 2015-01-15 | 2017-01-17 | Idis Co., Ltd. | Firmware update system for video security equipment |
US20160342408A1 (en) * | 2015-05-20 | 2016-11-24 | International Business Machines Corporation | Rolling upgrade of a distributed application |
US20160342409A1 (en) * | 2015-05-20 | 2016-11-24 | International Business Machines Corporation | Rolling upgrade of a distributed application |
US10884727B2 (en) * | 2015-05-20 | 2021-01-05 | International Business Machines Corporation | Rolling upgrade of a distributed application |
US10891122B2 (en) * | 2015-05-20 | 2021-01-12 | International Business Machines Corporation | Rolling upgrade of a distributed application |
WO2018118816A1 (en) * | 2016-12-19 | 2018-06-28 | Vmware, Inc. | Operating system update management for enrolled devices |
US10572240B2 (en) * | 2016-12-19 | 2020-02-25 | Vmware Inc. | Operating system update management for enrolled devices |
US11237817B2 (en) * | 2016-12-19 | 2022-02-01 | Vmware, Inc. | Operating system update management for enrolled devices |
US20210072970A1 (en) * | 2019-08-16 | 2021-03-11 | The Gap, Inc. | Systems and methods for deploying enterprise software updates |
US11675579B2 (en) * | 2019-08-16 | 2023-06-13 | The Gap, Inc. | Systems and methods for deploying enterprise software updates |
US20240184568A1 (en) * | 2022-12-05 | 2024-06-06 | Cisco Technology, Inc. | Systems and methods for determining out of date status based on corpus of devices |
Also Published As
Publication number | Publication date |
---|---|
US7904608B2 (en) | 2011-03-08 |
US20060026304A1 (en) | 2006-02-02 |
WO2005107417A3 (en) | 2007-01-11 |
WO2005107417A2 (en) | 2005-11-17 |
EP1763766A2 (en) | 2007-03-21 |
US20110125926A1 (en) | 2011-05-26 |
EP1763766A4 (en) | 2009-04-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7904608B2 (en) | System and method for updating software in electronic devices | |
US8620286B2 (en) | Method and system for promoting and transferring licensed content and applications | |
US8112549B2 (en) | Alert mechanism for notifying multiple user devices sharing a connected-data-set | |
US5845077A (en) | Method and system for identifying and obtaining computer software from a remote computer | |
US9928041B2 (en) | Managing a software appliance | |
KR101384387B1 (en) | System and method for provisioning a user device | |
JP5932002B2 (en) | Search for multiple content sources on user devices | |
US8935687B2 (en) | Incrementally updating a software appliance | |
US20070016676A1 (en) | System and method for servicing a user device | |
US20070016632A1 (en) | System and method for synchronizing between a user device and a server in a communication network | |
US8300819B2 (en) | Service providing apparatus and server providing method | |
US20150262242A1 (en) | User experience and dependency management in a mobile device | |
US20050223374A1 (en) | Server side configuration management | |
US20070169073A1 (en) | Update package generation and distribution network | |
US20120233299A1 (en) | Managing configurations of system management agents in a distributed environment | |
US20030131226A1 (en) | Dynamic distributed configuration management system | |
JP2010517173A (en) | Content supply method, content access method, content provision method, device configuration method, mobile device, content management system, and content storage method | |
WO2004013782A1 (en) | Contextual computing system | |
CN102480501A (en) | Application resource downloading method and associated equipment | |
CN111857862A (en) | Plug-in management method and device, electronic equipment and computer readable storage medium | |
KR100429903B1 (en) | Method for updating images in home gateway system | |
EP2193434B1 (en) | Method and system for promoting and transferring licensed content and applications | |
JP2003216523A (en) | Automatic updating system and method, latest software module providing center, and program |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
STCB | Information on status: application discontinuation |
Free format text: ABANDONED -- FAILURE TO RESPOND TO AN OFFICE ACTION |