`(12) Patent Application Publication (10) Pub. No.: US 2006/0026304 A1
`
`Price Feb. 2, 2006 (43) Pub. Date:
`
`
`US 20060026304A1
`
`(54) SYSTEM AND METHOD FOR UPDATING
`SOFTWARE IN ELECTRONIC DEVICES
`
`Related US. Application Data
`
`(76)
`
`Inventor: Robert M. Price, Seattle, WA (US)
`
`(60) Provisional application No. 60/567,903, filed on May
`4, 2004.
`
`Correspondence Address:
`BLACK LOWE & GRAHAM, PLLC
`701 FIFTH AVENUE
`SUITE 4800
`SEATTLE, WA 93104 (Us)
`
`(21) Appl. No.:
`
`11/124,366
`
`(22)
`
`Filed:
`
`May 4, 2005
`
`Publication Classification
`
`(51)
`
`Int. Cl.
`(2006.01)
`G06F 13/10
`(52) US. Cl.
`.................................................................. 710/8
`
`ABSTRACT
`(57)
`A system and method for communicating with one or more
`software-controlled devices.
`
`r---------—--———-—----—---------
`hD 0
`
`Receive Software
`
`Update
`404
`
`
`
`
`Connect and Activate
`Build Software Device
`
`
`Database
`408
`
`Devnce
`410
`
`
`
`Software Update
`Required?
`412
`
`Retreive and load software update to device
`
`
`
`416
`
`Use Device
`
`
`
`1
`
`APPLE 1010
`
`1
`
`APPLE 1010
`
`
`
`Patent Application Publication Feb. 2, 2006 Sheet 1 0f 11
`
`US 2006/0026304 A1
`
`It,
`
`80
`
`84
`
`88
`
`Radio
`
`tower
`
`
`n\
`
`10A
`
`
`
`
`
`
`
`2
`
`
`
`Patent Application Publication Feb. 2, 2006 Sheet 2 0f 11
`
`US 2006/0026304 A1
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`3
`
`
`
`Patent Application Publication Feb. 2, 2006 Sheet 3 0f 11
`
`US 2006/0026304 A1
`
`r-------------------------------
`Connect Device to
`200 I
`
`
`Coordinating
` 204
`Computer
`
`
` Register Device
`
`208
`
`
`
`Compare Device Software
`Versions to Available Software
`
`210 Database
`
`
`
`
`
`Software Update
`Required?
`
`21
`
`Acquire software and load into coordinating computer
`216
`
`\
`
`
`
`
`
`
`Deliver software update from coordination
`computer to software-controlled device
`
`220
`
`Use Device
`
`4
`
`
`
`Patent Application Publication Feb. 2, 2006 Sheet 4 0f 11
`
`US 2006/0026304 A1
`
`204
`
`204-2
`
`Identify device to receive software updates
`
`
`
`Password protect identified devices
`
`L------....--..--_---------------------
`
`Fig. 4
`
`5
`
`
`
`Patent Application Publication Feb. 2, 2006 Sheet 5 0f 11
`
`US 2006/0026304 A1
`
`
`
`210
`
`Activate Device
`
`Register device software
`
`Operate current version software
`
`
`
`Fig. 5
`
`6
`
`
`
`Patent Application Publication Feb. 2, 2006 Sheet 6 0f 11
`
`US 2006/0026304 A1
`
`210
`
`Ascertain Device Type
`
`
`
`Sort Device into Device Groups
`
`
`
`210-10
`
`
`
`
`
`Associate Software Versions with Device Groups
`
`
`
`Associate Software Versions with Device Models
`
`210-14
`
`L-----_------------------_----------
`
`Fig. 6
`
`7
`
`
`
`Patent Application Publication Feb. 2, 2006 Sheet 7 0f 11
`
`US 2006/0026304 A1
`
`r-------------------------—-----I
`400 '
`
`402 404
`
`Receive Software
`Update
`
`Begin
`
`Connect and Activate
`
`Build Software Device
`
`403
`
`Device
`
`410
`
`Database
`
`
`
`
`
`Software Update
`Required?
`
`412
`
`Retreive and load software update to device
`
`
`
`416
`
`Use Devrce
`
`424
`
`End
`
`428
`
`Fig. 7
`
`8
`
`
`
`Patent Application Publication Feb. 2, 2006 Sheet 8 of 11
`
`US 2006/0026304 A1
`
`Coordinating computer communicates with software entity
`
`404-6
`
`404
`
`404-2
`
`Coordinating computer receives software upgrade for device --—---------‘
`
`I I I I I I I I I I I I I I I I _II I I I I I I I I I I I I I I I I I
`
`r
`
`Fig. 8
`
`---—--------
`
`9
`
`
`
`Patent Application Publication Feb. 2, 2006 Sheet 9 0f 11
`
`US 2006/0026304 A1
`
`408-2
`Associate Software Versions with Device Groups
`
`I
`I
`408 :
`I
`I
`I
`:
`:
`I
`I
`I
`I
`I
`I
`I
`I
`I
`I
`I
`I
`:
`I
`I
`I
`- l
`I
`I
`I
`I
`I
`I
`I
`I
`I
`I
`h-----------------------------------'
`
`
`
`408-6
`Associate Software Versions with Device models
`
`I
`410 I
`I
`I
`:
`I
`I
`I
`I
`I
`I
`I
`I
`
`II
`
`Fig. 9
`
`Identify device to receive software updates
`
`410-2
`
`r I
`
`I
`:
`I
`
`I I
`
`
`
`I
`I
`I
`I
`I
`I
`I
`I
`I
`:
`I
`I
`I
`I
`I
`I
`“---.---------------------------.---I
`
`Password protect identified devices
`
`
`Fig. 10
`
`10
`
`10
`
`
`
`Patent Application Publication Feb. 2, 2006 Sheet 10 0f 11
`
`US 2006/0026304 A1
`
`Deliver software updates
`
`416
`
`
`416-6
`
`Replace embedded software with current version
`
`
`
`' I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I
`
`Fig. 11
`
`11
`
`11
`
`
`
`Patent Application Publication Feb. 2, 2006 Sheet 11 0f 11
`
`US 2006/0026304 A1
`
`IL,
`
`
`
`Radiotower
`
`84
`
`80
`
`88
`
` 5.0,
`%/
`Fig.12
`
`12\‘
`
`10A
`
`554
`
`i.}60
`
`-78
`
`12
`
`12
`
`
`
`US 2006/0026304 A1
`
`Feb. 2, 2006
`
`SYSTEM AND METHOD FOR UPDATING
`SOFTWARE IN ELECTRONIC DEVICES
`
`PRIORITY CLAIM
`
`[0001] This application claims priority to US. Provisional
`Application Ser. No. 60/567,903 filed May 4, 2004, incor-
`porated by reference in its entirety herein.
`
`COPYRIGHT NOTICE
`
`[0002] 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 copy-
`right 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 Trade-
`mark Office patent file or records, but otherwise reserves all
`copyright rights whatsoever.
`
`FIELD OF THE INVENTION
`
`[0003] This invention relates generally to collecting data
`from, sending data to, and/or updating software or digital
`data in electronic devices.
`
`BACKGROUND OF THE INVENTION
`
`[0004] Digital-based devices require software in order to
`interact with other devices, store, and manipulate informa-
`tion 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 introduc-
`tion 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, addi-
`tion 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.
`
`[0005] Digital devices vary in their complexity. Compara-
`tively simple devices require only a few hundred lines of
`machine code in an EEPROM (electrically erasable pro-
`grammable 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.
`
`[0006] 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 prod-
`ucts, or telephone-based support calls to troubleshoot prob-
`lems 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.
`
`SUMMARY OF THE INVENTION
`
`[0007] Particular embodiments include a system and
`method to enable a user-controlled proxy system or coordi-
`nating 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 inter-
`vention. The software may include communication, operat-
`ing system or application-specific program codes that
`improve a given device’s designed function.
`
`[0008] 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-connec-
`tion to the proxy system.
`
`[0009] 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-coordi-
`nating 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.
`
`[0010] Alternate embodiments of the system maintain the
`elements of one or more devices and a coordinating com-
`puter 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.
`
`13
`
`13
`
`
`
`US 2006/0026304 A1
`
`Feb. 2, 2006
`
`[0011] 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 admin-
`istration, 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 improve-
`ment of reliability or functionality or compatibility or ease
`of use of current and future devices, and competitive analy-
`sis.
`
`BRIEF DESCRIPTION OF THE DRAWINGS
`
`[0012] The preferred and alternative embodiments of the
`present invention are described in detail below with refer-
`ence to the following drawings.
`
`[0013] FIG. 1 is a schematic of a particular embodiment
`of the software updating system;
`
`[0014] FIG. 2 is a schematic of an alternate embodiment
`of the software updating system;
`
`[0015] FIG. 3 is a schematic of a particular embodiment
`of a method for updating software in devices;
`
`[0016] FIG. 4 is an expansion of the Connect process
`block of FIG. 3;
`
`[0017] FIG. 5 is an expansion of the Register process
`block of FIG. 3;
`
`[0018] FIG. 6 is an expansion of the Compare Software
`Version block of FIG. 3;
`
`[0019] FIG. 7 is an alternate embodiment of a method for
`updating software in devices;
`
`[0020] FIG. 8 is an expansion of the Receive Software
`Update block of FIG. 7;
`
`[0021] FIG. 9 is an expansion of the Build software
`Device Database block of FIG. 7 ; and
`
`[0022] FIG. 10 is an expansion of the Connect and Acti-
`vate Device block of FIG. 7; and
`
`[0023] FIG. 11 is an expansion of the Retrieve and Load
`Software block of FIG. 7.
`
`[0024] FIG. 12 is an alternate embodiment of a software
`updating system.
`
`DETAILED DESCRIPTION OF THE
`PREFERRED EMBODIMENT
`
`[0025] 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.
`
`[0026] One preferable step in the process comprises iden-
`tifying 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 coordi-
`nating 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.
`
`[0027] Another step, preferably performed at this point or
`later (although in alternate embodiments it could be per-
`formed 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 broad-
`band 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 sys-
`tem 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
`[0028]
`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 PCs (for example) no informa-
`tion is lost.
`
`[0029] While the system is capable of updating any elec-
`tronic devices, in a preferred mode of operation the devices
`to be updated include preferably those having field-replace-
`able 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
`
`14
`
`14
`
`
`
`US 2006/0026304 A1
`
`Feb. 2, 2006
`
`information.
`capable of saving and/or retrieving digital
`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.
`
`[0030] Another, and preferably the next, step in the pro-
`cess 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.
`
`[0031] 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.
`
`[0032] 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.
`
`[0033] 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 automati-
`
`cally, 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 soft-
`ware upload.
`
`[0034] 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 charac-
`
`teristics (instability, incompatibility, changes in user opera-
`tion, security flaws, etc.) The user might receive a notifica-
`tion 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.
`
`[0035] 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 notifi-
`cation 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 peri-
`odically without user request or intervention.
`
`[0036] 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 trouble-
`shooting. 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 gen-
`erally 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 measure-
`ments from current customers).
`
`[0037] A preferred embodiment 10A of the software
`updating system is shown in FIG. 1. In the system 10A, a
`coordinating computer 12 is in communication 14 with a
`network 18 in communication 20 with a network data store
`
`the computer 12 is in direct wireless
`22. Alternatively,
`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 communica-
`tion 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 elec-
`tronic 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. Alterna-
`tively, bar code reader 78 is an optical scanner that transmits
`the bar code image to the coordinating computer for pro-
`15
`
`15
`
`
`
`US 2006/0026304 A1
`
`Feb. 2, 2006
`
`cessing 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.
`
`[0038] Preferably, 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 commu-
`
`nication 34 from the network 18, or alternately bypassing the
`network, by delivery from the data store 22 to the computer
`12 Alternatively, 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.
`
`[0039] 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 pro-
`cessed 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 communica-
`
`tion with the computer 12. The system preferably accom-
`modates 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.
`Similarly,
`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 com-
`puter 12 via the line channel 74 or the wireless channel 70
`or using intermediate storage. Once the updated and pro-
`cessed 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.
`
`[0040] Alternatively, coordinating computer 12 can coor-
`dinate 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 com-
`patible, 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.
`
`[0041] A preferred embodiment 10B of the software
`updating system is shown in FIG. 2. In the system 10B, a
`coordinating computer 12 is in communication 14 with a
`network 18 in communication 20 with a data store 22.
`
`Alternatively, the computer 12 is in direct wireless commu-
`nication 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 commu-
`nication 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 elec-
`tronic 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. Alternatively, software codes may
`be delivered to the computer by indirect wireless commu-
`nication. The indirect wireless communication includes a
`
`wireless uplink channel 80 to a satellite 94, then a downlink
`channel 88 to the computer 12.
`
`[0042] 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 prefer-
`ably can be processed by the computer 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 pro-
`cessing described elsewhere in this application. The pro-
`cessed and/or updated software code is amenable to, or is
`executable by, the software-controlled devices in commu-
`nication with the computer 12. The first device 50 receives
`the processed and/or updated software code from the com-
`puter 12 via the wireless channel 70. Similarly, 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 com-
`puter 12 via the line channel 74 or the wireless channel 70.
`Once the updated and/or processed software code is deliv-
`ered to the first 50, second 54 and, third 58 devices, the
`software in these devices is updated with the new code.
`
`[0043] 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
`16
`
`16
`
`
`
`US 2006/0026304 A1
`
`Feb. 2, 2006
`
`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 coordinating com-
`puter 12 is capable of accepting requests for specific infor-
`mation items or streams and providing those items or
`streams on demand, for example, an Internet server respond-
`ing 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 coordinating computer 12.
`
`[0044] 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 soft-
`ware 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