Satellite radio is an emerging technology that is in the early stages of gaining consumer acceptance. Major electronics manufacturers such as Pioneer, Alpine, Clarion, Delphi, Sony, and Kenwood and automobile companies, such as General Motors and Ford, are partnering with satellite radio providers to bring satellite radio to the consumer. Satellite radio enables users to subscribe to a service by which high quality audio channels, free of the interference often accompanying traditional radio frequency (RF) broadcast systems, is available via satellite transmission. In addition, in vehicular use, satellite radio enables a vehicle equipped with the appropriate receiving equipment to hear the same channel regardless of the vehicle location, i.e., a vehicle can travel from New York to Los Angeles without losing the signal of a particular channel to which the receiving equipment is tuned.
Typically a satellite radio service provider utilizes at least two satellites, although a single satellite or more than two satellites may be used, depending upon the amount of coverage area desired. Additionally, the satellite radio provider may utilize terrestrial repeaters to improve broadcast coverage in areas of satellite signal blockage. The service provider selects content for each of the channels it broadcasts and combines them into one or more signals for transmission to the satellites and terrestrial repeaters, which retransmit the signals where they can be received by radio receivers possessed by subscribers. The signal can contain hundreds of channels, the actual number depending on the particular system bandwidth and channel compression and encoding parameters. The radio receivers are programmed to receive the signals and unscramble them so that the listener who has tuned to a particular channel can enjoy the content. Other information can be included in the broadcast signal. For example, information regarding the artist and title of a particular song being played can also be provided within the digital stream on the channel the user has tuned to, or through a shared service channel.
Satellite radio receivers utilize various combinations of software and firmware to facilitate receiving, tuning, playback and other functions. As is well known, firmware is the combination of a hardware device (e.g., a memory) and computer instructions or computer data (or software) that reside on the hardware device. The computer instructions/data are referred to as a “software image” or “firmware image”. The software image is loaded into non-volatile memory so that the receiver can properly boot up when power is applied. When booted, the device is configured for use and ready to process external stimuli and perform the function it is intended for.
It should be noted that this disclosure is not limited to the efficient download of firmware images alone, but may be applied to any configuration image which is typically stored in non-volatile memory, such as the hardware configuration bit files for a Complex Programmable Logic Device (CPLD) or Field Programmable Gate Array (FPGA). CPLD and FPGA devices utilize a form of non-volatile memory, on or off-chip, to store the hardware configuration data.
This disclosure will use the term “firmware image” to refer to software, firmware, or hardware configuration data alike.
The end user or service provider may benefit from occasional software or firmware image updates. The non-volatile memory used to store the firmware image is often a flash device, which typically requires large blocks of memory to be erased before updating to a new firmware image. Therefore fail-safe mechanisms are required to insure that a faulty upgrade does not leave the product inoperable.
In wired devices and/or devices that can communicate in two directions (e.g., a client server environment, or a wireless network computer system), an uplink is available between the devices so that various acknowledgments can be sent back and forth between the devices to assure that downloads are successful and to let the sending side know when a problem occurred on the receiving side. In the event of a failure when flashing the memory on the client device, the client device can be queried by the server and responses (or lack thereof) can be analyzed by the server to determine the cause (or existence) of the problem. However, in receiver systems, and in particular, in a unidirectional receiver system such as a satellite radio system, the content provider has no way of knowing what is happening at the radio devices, which may be hundreds or thousands of miles away from the content provider. If a problem occurs in the radio itself, the radio may be completely useless and inaccessible to the content provider for repair, and the content provider will be unaware of this situation. This leaves the listener without a functional receiver and without recourse to resolve the problem.
Satellite radio systems include multiple content channels and at least one “service channel”. The service channel provides various functionality to the satellite receiver. For example, it can be used to deliver information that is common to all channels, provide a channel “index” to assist the tuning process, carry content decryption keys and subscriber access control information, and provide additional low bit-rate data bandwidth. Information can be transferred to the satellite radio via the service channel without disrupting the content channels. However, the service channel is limited in that it transfers data much less efficiently than the content channels due to additional error detection and correction coding. Accordingly, use of the service channel to provide firmware image updates is very inefficient.
Accordingly, what is needed is an efficient manner to provide large software/firmware updates to unidirectional devices, such as satellite receivers in the field, in a fail-safe manner.