|Publication number||US6357021 B1|
|Application number||US 09/291,800|
|Publication date||Mar 12, 2002|
|Filing date||Apr 14, 1999|
|Priority date||Apr 14, 1999|
|Publication number||09291800, 291800, US 6357021 B1, US 6357021B1, US-B1-6357021, US6357021 B1, US6357021B1|
|Inventors||Masayuki Kitagawa, Koji Tsuboi, Masanori Matsunaga|
|Original Assignee||Mitsumi Electric Co., Ltd.|
|Export Citation||BiBTeX, EndNote, RefMan|
|Patent Citations (4), Referenced by (124), Classifications (12), Legal Events (6)|
|External Links: USPTO, USPTO Assignment, Espacenet|
1. Field of the Invention
The present invention relates to an apparatus and methods for reliably updating firmware or other coded information stored within a nonvolatile memory of a peripheral device.
2. Description of the Related Art
Various types of microcontroller-controlled devices exist which are adapted to communicate with a PC or other type of computer. These devices include, for example, optical drives, magnetic disc drives, hard drives, modems (both internal and external), Personal Digital Assistants (PDAs), solid state memory cards, network interfaces, video cameras, digital cameras, printers, scanners, and fax machines. These and other such devices will be referred to herein as “peripheral devices,” and the computer with which the device communicates will be referred to as the “host computer.”
Some peripheral devices are capable of receiving firmware modifications or updates from the host computer, such as to eliminate bugs or to add new functions to the device (as used herein, “firmware ” refers to the executable code and any associated data used to control the operation of the device). Some peripheral device bus standards, such as Universal Serial Bus (USB), allow a user to unplug and plug (disconnect and connect) a peripheral device, such as a CD-R/W drive, while the host computer is running. In some instances, a user may unintentionally (or intentionally) unplug or disconnect a peripheral device from the peripheral device bus, or turn off the host computer, while the peripheral device is receiving or processing a firmware update from the host computer. This may result in corrupted firmware being stored in the nonvolatile memory of the peripheral device, and can potentially render the device inoperable. In addition, there are other situations, such as a momentary power failure during firmware updates, which may result in incomplete or corrupted firmware.
A CD-R/W drive is a type of peripheral device that is capable of recording and reading data to and from an optical disk. A CD-R/W drive may communicate with a host computer, such as a personal computer (PC), over a peripheral device bus, such as a Universal Serial Bus (USB). As described below, a CD-R/W drive is one type of peripheral device to which the present invention may be applied.
The present invention relates to a system and method for reliably updating and checking firmware stored within a nonvolatile memory of a peripheral device. In accordance with the invention, the nonvolatile memory includes a fixed portion and an updateable portion. The updateable portion stores an updateable version of the basic firmware for the device, and stores a corresponding error detection code (preferably a CRC code) to permit the validity of such firmware to be verified. The fixed portion contains an initialization routine, and includes a default version of the device's basic firmware
To update the device's firmware, the host transmits to the device the new version of the updateable firmware together with a corresponding error detection code, and both are stored in the updateable portion in place of the existing firmware and error detection code. When the device is reset, the device's microcontroller executes the initialization routine to perform an initialization sequence. As part of this sequence, the microcontroller calculates the error detection code for the firmware currently stored in the updateable portion and then compares this value to the error detection code stored in the updateable portion. If a match occurs, the updateable version is deemed valid and is used to control the device; otherwise, the default version stored in the fixed portion is used. In the event of a mismatch, the user may also be notified by sending a message to the host computer and/or by displaying a message on a display of the peripheral device.
FIG. 1 illustrates one configuration of an apparatus in accordance with one embodiment of the present invention.
FIG. 2 illustrates one configuration of a nonvolatile memory associated with the apparatus of FIG. 1, and illustrates a firmware update process.
A preferred embodiment of the present invention is described herein, which is intended to illustrate, and not limit, the scope of the invention.
FIG. 1 illustrates one embodiment of a peripheral device 100 suitable for use with one embodiment of the present invention. The device 100 may be provided with its own housing and configured to be external to a host computer housing (not shown). Alternatively, in another embodiment, the device 100 is configured to be mounted within a host computer housing. In FIG. 1, the device 100 is coupled to a host computer 90, such as a personal computer. The host computer 90 includes a host microprocessor (not shown), such as a Pentium III or a Sun Sparc processor. The host computer 90 typically runs an appropriate operating system, such as Microsof® Windows 98, Microsoft® Windows® NT, the Apple® MacOS®, Unix, Linux, or IBM®OS/2® operating systems. The device 100 is coupled to the host computer 90 via a peripheral device bus, such as a USB bus 110. In other embodiments, other bus architectures or interfaces may be used in place of the USB bus 110, such as an IEEE 1394 interface, an Integrated Drive Electronics (IDE)/ATAPI interface or a Small Computer Standard Interface (SCSI). In addition, the invention can be used where the firmware updates are made over an infrared or other wireless interface.
The device 100 comprises an optical disc drive 112, a USB bridge board 102 and a power supply 114. The device 100 is preferably compliant with the USB specification, Revision 1.1 and with the USB mass storage class definition. The disk drive 112 may be, for example, a compact disc read/write drive (CD-RIW drive). Alternatively, the present invention may be implemented with other devices as well. For example, the peripheral device could be a hard drive, a DVD drive, a magnetic disc drive, a modem (either internal and external), a Personal Digital Assistant (PDA), a solid state memory, a scanner, a printer, a network interface, a fax machine, a video camera, a digital camera, or the like.
The CD-R/W drive is configured to accept rewritable CD (CD-RW) discs, write-once CD (CD-R) discs, CD-ROM discs, and musical CDs. Similarly, if the drive 112 is a DVD drive, the drive 112 may be capable of accepting the various CD disc-types, as well as rewritable DVD discs, write-once DVD discs, and read-only DVD discs.
In FIG. 1, the CD-R/W drive 112 is a standard Advanced Technology Attachment Packet Interface (ATAPI) CD-R/W drive. The USB bridge board 102 comprises a USB controller 104, a microprocessor or microcontroller 106, an ATAPI interface 108 and a buffer memory 116. The buffer 116 may be a FIFO. The drive 112 is coupled to the USB bridge board 102 via the ATAPI interface 108, and the USB bridge board 102 is coupled to the host 90 via the USB bus 110.
In general, the USB bridge board 102 receives ATAPI packet commands from the host 90 via the USB bus 110 and transfers the packets to the drive 112 via the ATAPI interface 108. The bridge board 102 transfers data between the USB bus 110 and the ATAPI interface 108 and uses the buffer 116 to buffer the data being transferred. The bridge board 102 handles USB and/or ATAPI protocol, such as composing and decomposing packets for the USB bus 110, and appropriately accesses ATAPI registers (not shown) for the ATAPI interface 108. Thus, the USB bridge board 102 advantageously permits a standard ATAPI drive 112 to be connected to a USB bus 110. Alternatively, in another embodiment, the optical drive 112 is directly USB compatible.
In FIG. 1, the microcontroller 106 manages the operation of the bridge board 102. The USB controller 104 handles the interface to the USB bus 110. The buffer 116 is sized to allow data to be read or written in a stream from or to the optical disc. In one configuration, the buffer 116 is 2 Mbytes in size, but other buffer sizes may alternatively be used. Power for the device 100 may be provided by a local power supply 114. In another embodiment, the device 100 may be powered by the USB bus 110 itself.
In FIG. 1, the microcontroller 106 comprises an internal flash memory 105, which contains firmware used to control the operation of the device 100. Alternatively, in another configuration, the memory 105 is external to the microcontroller 106. In addition, other types of nonvolatile memories, such as EEPROMS, could be used instead of or in addition to the flash memory.
FIG. 2 illustrates one configuration of the flash memory 105 associated with the microcontroller 106 of FIG. 1, and illustrates a firmware update process. The flash memory 105 comprises two portions, an updateable part 220 and a fixed part 222. The updateable part 220 stores one or more tables, such as a check code table 246, and one or more tasks, such as an updateable operating task 240, an updateable host interface task 242 and an updateable drive task 244. Each task comprises one or more modules (not shown), and each module comprises one or more firmware functions (not shown). The check code table 246 comprises data values, such as a total byte count 252 and a checksum 254. The total byte count 252 maintains a count of the total number of bytes of firmware stored in the updateable part 220. The checksum 254 is used by firmware stored in the fixed part 222 to verify the validity of the firmware stored in the updateable part 220, as described in more detail below.
The fixed part 222 stores one or more tasks, such as a default operating task 224, a default host interface task 226, a default drive task 228 and a USB downloading task 230. The default operating task comprises a start-up module 258 and a main module 256.
The updateable part 220 stores firmware which may be downloaded and updated in-whole or in-part by the host 90 (FIG. 1) via the USB bus 110. In some cases, the firmware updates may simply be in the form of revised data tables used by the executable code. The host computer (not shown) runs a utility that in used to allow the user to initiate downloads of firmware to the peripheral device. As described below, this utility may be configured to notify the user when the firmware stored in the updateable portion is determined to be corrupt.
The fixed part 222 preferably remains unchanged when the host 90 downloads firmware updates. Thus, the firmware stored in the fixed part 222 will not be lost or corrupted by incomplete downloading by the host 90 to the flash memory 105. The firmware stored in the fixed part 222 preferably implements all of the basic functions needed for the device 100 to operate properly. Thus, the disk drive 112 may operate normally, using the firmware stored in the fixed part 222, if the updateable part becomes corrupted.
In the preferred embodiment, the product is shipped with valid firmware stored in both the fixed and updateable parts 220, 222, with valid total byte count and checksum valves 252, 254 (reflecting the firmware stored in the updateable part 220) stored in the check code table 246. Alternatively, the device 100 could be shipped with no valid firmware in the updateable part 220, in which case the absence of valid firmware can be reflected by a total byte count 252 of zero or an invalid checksum.
The operation of the device 100 and the flash memory 105 is described with reference to FIGS. 1 and 2. In a power-on/reset block 250 in FIG. 2, the microcontroller 106 receives a power-on or a reset signal from the host 90. The microcontroller 106 begins executing the start-up module 258 of the default operating task 224 in the fixed part 222. The start-up module 258 initializes hardware and initializes variables (not shown). In a decision block 260 of FIG. 2, the default operating task 224 determines whether the firmware stored in the updateable part 220 is valid. In the preferred embodiment, the validity is checked by calculating a checksum for the firmware stored in the updateable part 220, and then comparing this checksum to the checksum value stored in the check code table 246. If a match occurs, the firmware in the updateable part 220 is deemed valid.
The checksum valve 254 is preferably calculated by software on the host side which prepares the firmware updates before the updates are sent across the USB bus 110. Alternatively, the checksum could be provided by the developer or distributor with the update. Various error detection codes or data checking methods, such as cyclic redundancy codes (CRC), may be used to check the validity of the firmware stored in the updateable part 220.
If the firmware stored in the updateable part 220 is valid, then the default operating task 224 proceeds to the operating task 240 stored in the updateable part 220, as shown in FIG. 2. The operating task 240, the host interface task 242 and the drive task 244 stored in the updateable part 220 control the normal operations of the bridge board 102, as described above with reference to FIG. 1.
If the firmware stored in the updateable part 220 is not valid (e.g., the program is corrupted), then the default operating task 224 proceeds to the default host interface task 226, as shown in FIG. 2. The default host interface task 226 and the default drive task 228 perform functions which are substantially similar to the normal bridge board functions performed by the host interface task 242 and the drive task 244 of the updateable part 220.
The default operating task 224 or the default host interface task 226 may notify the host 90 that the microcontroller 106 is executing firmware stored in the fixed part 222, in which case the host 90 may prompt the user to reattempt the firmware download. Alternatively, in another configuration, the host 90 checks whether the microcontroller 106 is executing firmware in the fixed part 222 or the updateable part 220. Alternatively, the default operating task 224 or the default host interface task 226 may cause the device 100 notify the user directly by generating a message, such as “invalid firmware update,” on a display, such as a LED display.
When the host 90 initiates downloading of a firmware update, the default host interface task 226 or the host interface task 242 (depending upon whether the updateable firmware is corrupt) causes the USB downloading task 230 to overwrite some or all of the firmware stored in the updateable part 220, including the byte count and checksum values 252, 254, with the firmware provided by the host 90. As part of this process, the firmware provided by the host 90 may initially be written to the buffer 116 (FIG. 1), and then copied from the buffer 116 to flash memory 105 by the microcontroller 106.
After the USB downloading task 230 downloads a firmware update to the updateable part 220, the USB downloading task 230 jumps to the start-up module 258 of the default operating task 224, as shown in FIG. 2. The default operating task 224 again determines whether the firmware stored in the updateable part 220 is valid. If the firmware stored in the updateable part 220 is valid, then the default operating task 224 passes the operation of the microcontroller 106 to the operating task 240 stored in the updateable part 220, as shown in FIG. 2.
FIG. 2 illustrates one configuration of a sequence of tasks, modules and tables used by the microcontroller 106, but the tasks, modules and tables may be used by the microcontroller 106 to perform other functions. In addition, other tasks, modules and/or tables may be used in addition to or instead of the tasks and modules shown in FIG. 2.
While embodiments and applications of this invention have been shown and described, it will be apparent to those skilled in the art that various modifications are possible without departing from the scope of the invention. It is, therefore, to be understood that within the scope of the appended claims, this invention may be practiced otherwise than as specifically described.
|Cited Patent||Filing date||Publication date||Applicant||Title|
|US5022028 *||Mar 30, 1989||Jun 4, 1991||Elverex Limited||Software verification apparatus|
|US5617533 *||Oct 13, 1994||Apr 1, 1997||Sun Microsystems, Inc.||System and method for determining whether a software package conforms to packaging rules and requirements|
|US5764989 *||Feb 29, 1996||Jun 9, 1998||Supercede, Inc.||Interactive software development system|
|US6052750 *||Jan 6, 1998||Apr 18, 2000||Sony Corporation Of Japan||Home audio/video network for generating default control parameters for devices coupled to the network, and replacing updated control parameters therewith|
|Citing Patent||Filing date||Publication date||Applicant||Title|
|US6415342 *||Jul 27, 1999||Jul 2, 2002||Hewlett-Packard Company||Universal serial bus controlled connect and disconnect|
|US6467087 *||Dec 16, 1999||Oct 15, 2002||Destiny Technology Corporation||Method for updating a printer firmware|
|US6591352 *||May 31, 2001||Jul 8, 2003||Intel Corporation||Method and apparatus for executing firmware from a valid startup block|
|US6622246 *||Nov 12, 1999||Sep 16, 2003||Xerox Corporation||Method and apparatus for booting and upgrading firmware|
|US6658645 *||Jan 4, 2000||Dec 2, 2003||Fujitsu Limited||Method for automatically generating corrected program inherited program, automatic program generation apparatus, and storage medium storing program for automatically generating corrected program inherited program|
|US6708231 *||Aug 12, 1999||Mar 16, 2004||Mitsumi Electric Co., Ltd.||Method and system for performing a peripheral firmware update|
|US6795872 *||May 9, 2002||Sep 21, 2004||Renesas Technology America, Inc.||Maintaining at least partial functionality of a device as defined by a hardware configuration at a USB bus enumeration while the device memory is programmed|
|US6880149 *||Apr 1, 2002||Apr 12, 2005||Pace Anti-Piracy||Method for runtime code integrity validation using code block checksums|
|US6907602 *||Sep 9, 2003||Jun 14, 2005||Mustek Systems Inc.||Method for updating firmware of computer device|
|US6944854 *||Nov 30, 2000||Sep 13, 2005||International Business Machines Corporation||Method and apparatus for updating new versions of firmware in the background|
|US6948072 *||Mar 1, 2001||Sep 20, 2005||Sony Computer Entertainment Inc.||Information processing device and record medium|
|US6986008||Jan 14, 2003||Jan 10, 2006||International Business Machines Corporation||Backup firmware in a distributed system|
|US7039727 *||Sep 7, 2001||May 2, 2006||Microsoft Corporation||System and method for controlling mass storage class digital imaging devices|
|US7043664 *||Oct 31, 2002||May 9, 2006||Microsoft Corporation||Firmware recovery|
|US7047283 *||Jun 9, 2000||May 16, 2006||Samsung Electronics Co., Ltd.||Apparatus and method of upgrading program of firmware board|
|US7089547||Sep 13, 2002||Aug 8, 2006||International Business Machines Corporation||Firmware updating|
|US7099967||Dec 22, 2003||Aug 29, 2006||Hewlett-Packard Development Company, L.P.||System and method for storing an image file in a computer system|
|US7103687||Dec 22, 2003||Sep 5, 2006||Hewlett-Packard Development Company, L.P.||System and method for providing an image file in a computer system|
|US7107364 *||Nov 24, 2003||Sep 12, 2006||Mediatek Inc.||Control chip for optical disk drive and method for updating firmware in the control chip|
|US7145672 *||Aug 12, 2002||Dec 5, 2006||Minolta Co., Ltd.||Image processing apparatus having a function for executing firmware rewriting, image processing method, and management apparatus for managing the image processing apparatus|
|US7194526 *||Sep 5, 2001||Mar 20, 2007||Kyocera Corporation||Network device management method, and network devices|
|US7246266 *||Nov 21, 2002||Jul 17, 2007||Chris Sneed||Method and apparatus for firmware restoration in modems|
|US7249353 *||Apr 17, 2003||Jul 24, 2007||Hewlett-Packard Development Company, L.P.||Image-formation device firmware having modular upgrade capability|
|US7262875 *||Mar 27, 2002||Aug 28, 2007||Minolta Co., Ltd.||Data communication program product transmitting firmware in divisional manner|
|US7266731 *||Nov 13, 2001||Sep 4, 2007||Sun Microsystems, Inc.||Method and apparatus for managing remote software code update|
|US7274477||Jan 24, 2003||Sep 25, 2007||Hewlett-Packard Development Company, L.P.||Printer with access to remote file system|
|US7320087 *||Mar 25, 2004||Jan 15, 2008||Sony Corporation||Information processing apparatus and method, program, and recording medium|
|US7380054||Feb 3, 2004||May 27, 2008||Hitachi, Ltd.||Storage of fault and position data in nonvolatile memory on system components|
|US7392420 *||Sep 29, 2003||Jun 24, 2008||International Business Machines Corporation||Automated error recovery of a licensed internal code update on a storage controller|
|US7418589 *||Sep 19, 2005||Aug 26, 2008||Hon Hai Precision Industry Co., Ltd.||System and method for updating a basic input/output system|
|US7426633||May 12, 2005||Sep 16, 2008||Hewlett-Packard Development Company, L.P.||System and method for reflashing disk drive firmware|
|US7562360 *||Dec 1, 2003||Jul 14, 2009||Texas Instruments Incorporated||Method and system for firmware downloads|
|US7647614||Jun 7, 2005||Jan 12, 2010||Sling Media, Inc.||Fast-start streaming and buffering of streaming content for personal media player|
|US7661025 *||Jan 19, 2006||Feb 9, 2010||Cisco Technoloy, Inc.||Method of ensuring consistent configuration between processors running different versions of software|
|US7702952 *||Jun 30, 2006||Apr 20, 2010||Sling Media, Inc.||Firmware update for consumer electronic device|
|US7707614||Jun 7, 2005||Apr 27, 2010||Sling Media, Inc.||Personal media broadcasting system with output buffer|
|US7719699 *||Jul 15, 2003||May 18, 2010||Canon Kabushiki Kaisha||Image storage apparatus, external image processing apparatus, control method for image storage apparatus and control method for external image processing apparatus|
|US7725912||Mar 15, 2001||May 25, 2010||Sling Media, Inc.||Method for implementing a remote display system with transcoding|
|US7769756||Mar 8, 2007||Aug 3, 2010||Sling Media, Inc.||Selection and presentation of context-relevant supplemental content and advertising|
|US7770165||Aug 25, 2006||Aug 3, 2010||Microsoft Corporation||Providing firmware updates to portable media devices|
|US7788725||Jan 5, 2006||Aug 31, 2010||International Business Machines Corporation||Method and system for probing FCode in problem state memory|
|US7805719 *||Jan 19, 2006||Sep 28, 2010||Hewlett-Packard Development Company, L.P.||System and method for updating and distributing information|
|US7831967||Jul 11, 2005||Nov 9, 2010||Samsung Electronics Co., Ltd.||Method of and apparatus for updating software of network device|
|US7877776||Jun 7, 2005||Jan 25, 2011||Sling Media, Inc.||Personal media broadcasting system|
|US7917932||Nov 1, 2007||Mar 29, 2011||Sling Media, Inc.||Personal video recorder functionality for placeshifting systems|
|US7921446||Dec 21, 2009||Apr 5, 2011||Sling Media, Inc.||Fast-start streaming and buffering of streaming content for personal media player|
|US7975062||Jan 7, 2007||Jul 5, 2011||Sling Media, Inc.||Capturing and sharing media content|
|US7992176||Apr 12, 2010||Aug 2, 2011||Sling Media, Inc.||Apparatus and method for effectively implementing a wireless television system|
|US8041863 *||Nov 16, 2006||Oct 18, 2011||International Business Machines Corporation||Automated solution to provide personalized user environment on any public computer using portable storage devices with personalized user settings uploaded to local registry of public computer|
|US8041988||Apr 9, 2010||Oct 18, 2011||Sling Media Inc.||Firmware update for consumer electronic device|
|US8051454||Apr 9, 2010||Nov 1, 2011||Sling Media, Inc.||Personal media broadcasting system with output buffer|
|US8060609||Dec 15, 2008||Nov 15, 2011||Sling Media Inc.||Systems and methods for determining attributes of media items accessed via a personal media broadcaster|
|US8060909||Dec 27, 2010||Nov 15, 2011||Sling Media, Inc.||Personal media broadcasting system|
|US8099755||Dec 19, 2008||Jan 17, 2012||Sling Media Pvt. Ltd.||Systems and methods for controlling the encoding of a media stream|
|US8171148||Apr 17, 2009||May 1, 2012||Sling Media, Inc.||Systems and methods for establishing connections between devices communicating over a network|
|US8266657||Apr 21, 2005||Sep 11, 2012||Sling Media Inc.||Method for effectively implementing a multi-room television system|
|US8271968 *||Dec 12, 2006||Sep 18, 2012||Dell Products L.P.||System and method for transparent hard disk drive update|
|US8314893||Aug 28, 2009||Nov 20, 2012||Sling Media Pvt. Ltd.||Remote control and method for automatically adjusting the volume output of an audio device|
|US8316362 *||Jun 8, 2010||Nov 20, 2012||Wistron Neweb Corp.||Method for updating a program section|
|US8346605||Jan 7, 2007||Jan 1, 2013||Sling Media, Inc.||Management of shared media content|
|US8350971||Oct 22, 2008||Jan 8, 2013||Sling Media, Inc.||Systems and methods for controlling media devices|
|US8381310||Nov 23, 2009||Feb 19, 2013||Sling Media Pvt. Ltd.||Systems, methods, and program applications for selectively restricting the placeshifting of copy protected digital media content|
|US8406431||Jul 23, 2009||Mar 26, 2013||Sling Media Pvt. Ltd.||Adaptive gain control for digital audio samples in a media stream|
|US8438602||Jan 26, 2009||May 7, 2013||Sling Media Inc.||Systems and methods for linking media content|
|US8458384||Feb 3, 2010||Jun 4, 2013||National Instruments Corporation||Automatically launching a measurement application in response to measurement device connection|
|US8477793||Sep 24, 2008||Jul 2, 2013||Sling Media, Inc.||Media streaming device with gateway functionality|
|US8532472||Aug 10, 2009||Sep 10, 2013||Sling Media Pvt Ltd||Methods and apparatus for fast seeking within a media stream buffer|
|US8621533||Apr 4, 2011||Dec 31, 2013||Sling Media, Inc.||Fast-start streaming and buffering of streaming content for personal media player|
|US8626879||Dec 22, 2009||Jan 7, 2014||Sling Media, Inc.||Systems and methods for establishing network connections using local mediation services|
|US8645937||Jan 18, 2010||Feb 4, 2014||Fronius International Gmbh||Photovoltaic plant having a plurality of inverters, inverter, USB mass storage device and method for carrying out software updates on inverters|
|US8667163||Mar 20, 2009||Mar 4, 2014||Sling Media Inc.||Systems and methods for projecting images from a computer system|
|US8667279||Jul 1, 2008||Mar 4, 2014||Sling Media, Inc.||Systems and methods for securely place shifting media content|
|US8752044||Jul 27, 2007||Jun 10, 2014||Qualcomm Incorporated||User experience and dependency management in a mobile device|
|US8799408||Aug 10, 2009||Aug 5, 2014||Sling Media Pvt Ltd||Localization systems and methods|
|US8799485||Dec 18, 2009||Aug 5, 2014||Sling Media, Inc.||Methods and apparatus for establishing network connections using an inter-mediating device|
|US8799969||May 13, 2011||Aug 5, 2014||Sling Media, Inc.||Capturing and sharing media content|
|US8819750||Sep 13, 2012||Aug 26, 2014||Sling Media, Inc.||Personal media broadcasting system with output buffer|
|US8856349||Apr 2, 2010||Oct 7, 2014||Sling Media Inc.||Connection priority services for data communication between two devices|
|US8904455||Mar 28, 2011||Dec 2, 2014||Sling Media Inc.||Personal video recorder functionality for placeshifting systems|
|US8958019||Dec 28, 2012||Feb 17, 2015||Sling Media, Inc.||Systems and methods for controlling media devices|
|US8966101||Aug 10, 2009||Feb 24, 2015||Sling Media Pvt Ltd||Systems and methods for updating firmware over a network|
|US8966658||Feb 15, 2013||Feb 24, 2015||Sling Media Pvt Ltd||Systems, methods, and program applications for selectively restricting the placeshifting of copy protected digital media content|
|US9015225||Nov 16, 2009||Apr 21, 2015||Echostar Technologies L.L.C.||Systems and methods for delivering messages over a network|
|US9081638||Apr 25, 2014||Jul 14, 2015||Qualcomm Incorporated||User experience and dependency management in a mobile device|
|US9106723||Dec 30, 2013||Aug 11, 2015||Sling Media, Inc.||Fast-start streaming and buffering of streaming content for personal media player|
|US20010020256 *||Mar 1, 2001||Sep 6, 2001||Akiyuki Hatakeyama||Information processing device and record medium|
|US20010021998 *||Mar 15, 2001||Sep 13, 2001||Neal Margulis||Apparatus and method for effectively implementing a wireless television system|
|US20020052938 *||Sep 5, 2001||May 2, 2002||Kyocera Corporation||Network device management method, and network devices|
|US20020137540 *||Mar 22, 2001||Sep 26, 2002||Roger Yu||Management system kit used for the host of serial PDA or handheld PC|
|US20020143884 *||Mar 27, 2002||Oct 3, 2002||Hideki Hino||Data communication program product transmitting firmware in divisional manner|
|US20040068334 *||Sep 9, 2003||Apr 8, 2004||Mustek Systems Inc.||Method for updating firmware of computer device|
|US20040083469 *||Oct 23, 2002||Apr 29, 2004||Ping-Sheng Chen||Method for updating firmware of optical disk system|
|US20040103347 *||Nov 21, 2002||May 27, 2004||Sneed G. Christopher||Method and apparatus for firmware restoration in modems|
|US20040133711 *||Nov 24, 2003||Jul 8, 2004||Ping-Sheng Chen||Control chip for optical disk drive and method for updating firmware in the control chip|
|US20040139294 *||Jan 14, 2003||Jul 15, 2004||International Business Machines Corporatin||Backup firmware in a distributed system|
|US20040139357 *||Oct 21, 2003||Jul 15, 2004||Samsung Electronics Co., Ltd.||Electronic device having microcomputer and firmwave updating method thereof|
|US20040148368 *||Jan 24, 2003||Jul 29, 2004||Curtis Reese||Printer with access to remote file system|
|US20040199911 *||Mar 31, 2004||Oct 7, 2004||Incomm Technologies Co., Ltd.||Apparatus and method for upgrading execution code of the portable memory device|
|US20040210894 *||Apr 17, 2003||Oct 21, 2004||Zarco Maria F.||Image-formation device firmware having modular upgrade capability|
|US20040246516 *||Jun 3, 2003||Dec 9, 2004||Curtis Reese||Hard imaging systems, hard imaging management devices, hard imaging devices, articles of manufacture, hard imaging device operational methods, and hard imaging device configuration methods|
|US20040250167 *||Mar 25, 2004||Dec 9, 2004||Masahiko Sato||Information processing apparatus and method, program, and recording medium|
|US20050010914 *||Jul 7, 2004||Jan 13, 2005||Wan-Pei Liang||Method for upgrading firmware|
|US20050015647 *||Feb 3, 2004||Jan 20, 2005||Naoki Okada||Storage system, and method for maintaining the storage system|
|US20050063242 *||Nov 9, 2004||Mar 24, 2005||Yuqing Ren||Embedded software update methods and systems for digital devices|
|US20050071721 *||Sep 29, 2003||Mar 31, 2005||International Business Machines Corporation||Automated error recovery of a licensed internal code update on a storage controller|
|US20050120343 *||Dec 1, 2003||Jun 2, 2005||Horng-Ming Tai||Method and system for firmware downloads|
|US20050138250 *||Dec 22, 2003||Jun 23, 2005||Ivan Farkas||System and method for providing an image file in a computer system|
|US20050138615 *||Dec 22, 2003||Jun 23, 2005||Ivan Farkas||System and method for storing an image file in a computer system|
|US20050204199 *||Feb 28, 2004||Sep 15, 2005||Ibm Corporation||Automatic crash recovery in computer operating systems|
|US20060031828 *||Jul 11, 2005||Feb 9, 2006||Samsung Electronics Co., Ltd.||Methodof apparatus for updating software of network device|
|US20080141235 *||Dec 12, 2006||Jun 12, 2008||Russell Woodbury||System and Method for Transparent Hard Disk Drive Update|
|US20090063611 *||Aug 27, 2008||Mar 5, 2009||Canon Kabushiki Kaisha||Transmission apparatus, transmission method and computer program|
|US20100162224 *||Aug 19, 2009||Jun 24, 2010||Electronics And Telecommunications Research Institute||Node update system using virtual partition technique and control method thereof|
|US20110010510 *||Jan 13, 2011||Wistron Neweb Corp.||Method for updating a program section|
|US20120173766 *||Aug 7, 2009||Jul 5, 2012||Mitsubishi Electric Corporation||Inverter system and inverter|
|US20130304939 *||Jan 14, 2013||Nov 14, 2013||Spyrus, Inc.||Method and System for Integrated Circuit Card Device With Reprogrammability|
|CN1317641C *||Feb 18, 2003||May 23, 2007||联发科技股份有限公司||Firmware updating method and apparatus for inspecting program contents and guaranteeing updating compatibility|
|CN1318979C *||Oct 23, 2003||May 30, 2007||联发科技股份有限公司||Method for updating firmware of optical disk system|
|EP1899814A2 *||Jun 30, 2006||Mar 19, 2008||Sling Media, Inc.||Firmware update for consumer electronic device|
|EP1899814A4 *||Jun 30, 2006||Oct 28, 2009||Sling Media Inc||Firmware update for consumer electronic device|
|WO2006086809A1 *||Feb 3, 2006||Aug 24, 2006||Fronius Int Gmbh||Device and method for carrying out software updates, and a controller configured for software updates|
|WO2007005790A2 *||Jun 30, 2006||Jan 11, 2007||Sling Media Inc||Firmware update for consumer electronic device|
|WO2007005790A3 *||Jun 30, 2006||Apr 30, 2009||Harsha Saagi||Firmware update for consumer electronic device|
|WO2010091444A2||Jan 18, 2010||Aug 19, 2010||Fronius International Gmbh||Photovoltaic plant having a plurality of inverters, inverter, usb mass storage device and method for carrying out software updates on inverters|
|U.S. Classification||714/41, 717/126, 714/E11.135, 714/38.1|
|International Classification||G06F11/14, G06F11/10, G06F9/445|
|Cooperative Classification||G06F11/1433, G06F8/65, G06F11/1004|
|European Classification||G06F8/65, G06F11/14A8E|
|Jun 21, 1999||AS||Assignment|
Owner name: MITSUMI ELECTRIC CO., LTD., JAPAN
Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:KITAGAWA, MASAYUKI;TSUBOI, KOJI;MATSUNAGA, MASANORI;REEL/FRAME:010031/0875
Effective date: 19990608
|Sep 9, 2005||FPAY||Fee payment|
Year of fee payment: 4
|Aug 12, 2009||FPAY||Fee payment|
Year of fee payment: 8
|Oct 18, 2013||REMI||Maintenance fee reminder mailed|
|Mar 12, 2014||LAPS||Lapse for failure to pay maintenance fees|
|Apr 29, 2014||FP||Expired due to failure to pay maintenance fee|
Effective date: 20140312