Method for updating firmware of internet of things enabled device
Patent Information
- Authority / Receiving Office
- EP · EP
- Patent Type
- Applications
- Current Assignee / Owner
- TELIT COMM
- Filing Date
- 2024-07-02
- Publication Date
- 2026-06-24
AI Technical Summary
Existing methods for updating firmware in Internet of Things (IoT) enabled devices require significant user intervention, especially when managing multiple devices with different firmware versions, leading to inefficiencies and increased manual effort.
A method that involves receiving a firmware update with a delta component, performing a rollback operation from the current firmware to a base firmware in a non-execution environment, computing the new firmware version based on the base firmware and delta component, and applying the computed firmware to the device.
This method enables efficient firmware updates with minimal user intervention, allowing multiple IoT devices to be updated using the same firmware update, regardless of their current firmware versions, thereby reducing manual effort and increasing operational efficiency.
Smart Images

Figure EP2024068604_20022025_PF_FP_ABST
Abstract
Description
METHOD FOR UPDATING FIRMWARE OF INTERNET OF THINGS ENABLED DEVICETECHNICAL FIELD
[0001] The present disclosure generally relates to updating a firmware of an internet of things (loT) enabled device. In particular, the present disclosure relates to a providing a means to update a firmware of an loT enabled device with minimal user intervention.BACKGROUND
[0002] Firmware over the air (FOTA) refers to a method for performing firmware upgrades to Internet of Things (loT) enabled devices wirelessly and remotely.
[0003] Conventionally, an loT enabled device (“device”) may receive one or more firmware updates during its operational lifetime. At a given time instance, the version of the firmware in any one of the devices may be different from the version of the firmware in another device. Thus, a user of the devices may need to be aware of a current version of firmware in each device in order to determine a suitable firmware patch or component to update the device with. The update may include a patch which includes a difference between a latest version of the firmware available for the device and a current version of firmware applied in the device. In instances where the user operates a large number of such devices, the manual effort required to determine a current version of firmware in each device in order to apply a specific firmware update may be substantial and undesirable.
[0004] Therefore, there may be a requirement for an improved method to modify and / or update firmware in an loT enabled device in an efficient manner.SUMMARY
[0005] In a first aspect, the present disclosure provides a method for updating a firmware of an internet-of-things (loT) enabled device configured with a first firmware. The method includes receiving, by a processor associated with the device, a firmware update corresponding to a second firmware for the device. The firmware update includes a delta component. The delta component includes a difference between a base firmware associated with the device and the second firmware. The method further includes performing, by the processor, responsive to receipt of the firmware update, a rollback operation of the firmware of the device from the first firmware to the base firmware. The rollback operation is performed in a non-execution environment. The method further includes computing, by the processor, the second firmwareSUBSTITUTE SHEET (RULE 26)based on the base firmware and the delta component. The method further includes applying, by the processor, the computed second firmware to configure the device with the second firmware.
[0006] In some embodiments, performing the rollback operation includes determining, by the processor, a difference between the base firmware associated with the device and the first firmware configured on the device. Performing the rollback operation further includes computing, by the processor, the base firmware based on the determined difference and the first firmware, wherein the rollback operation is performed based on the computed base firmware.
[0007] In some embodiments, the method further includes storing, by the processor, the computed base firmware. The method further includes performing, by the processor, responsive to receipt of a subsequent firmware update, the rollback operation of the firmware of the device by using the stored computed base firmware.
[0008] In some embodiments, the method further includes computing, by the processor, a modified base firmware based on the base firmware and a base firmware update.
[0009] In some embodiments, the method further includes performing, by the processor, responsive to receipt of a subsequent firmware update, the rollback operation of the firmware of the device to the modified base firmware.
[0010] In a second aspect, the present disclosure provides an internet-of-things (loT) enabled device configured with a first firmware. The device includes a processor communicably coupled with a memory. The memory stores instructions executable by the processor. The processor is configured to receive a firmware update corresponding to a second firmware for the device. The firmware update includes a delta component. The delta component includes a difference between a base firmware associated with the device and the second firmware. The processor is further configured to perform, responsive to receipt of the firmware update, a rollback operation of the firmware of the device from the first firmware to the base firmware. The rollback operation is performed in a non-execution environment. The processor is further configured to compute the second firmware associated with the device based on the base firmware and the delta component. The processor is further configured to apply the computed second firmware to configure the device with the second firmware.
[0011] In some embodiments, to perform the rollback operation, the processor is configured to determine a difference between the base firmware associated with the device and the first firmware configured on the device. To perform the rollback operation, the processoris further configured to compute the base firmware based on the determined difference and the first firmware. The rollback operation is performed based on the computed base firmware.
[0012] In some embodiments, the processor is further configured to store the computed base firmware. The processor is further configured to perform, responsive to receipt of a subsequent firmware update, the rollback operation of the firmware of the device by using the stored computed base firmware.
[0013] In some embodiments, the processor is further configured to compute a modified base firmware based on the base firmware and a base firmware update.
[0014] In some embodiments, the processor is further configured to perform, responsive to receipt of a subsequent firmware update, the rollback operation of the firmware of the device to the modified base firmware.
[0015] In a third aspect, the present disclosure provides a non-transitory, machine-readable medium storing instructions for updating a firmware of an internet of things (loT) enabled device configured with a first firmware. Execution of the instructions by a processor communicably coupled to it causes the processor to receive a firmware update corresponding to a second firmware for the device. The firmware update includes a delta component. The delta component includes a difference between a base firmware associated with the device and the second firmware. The processor further performs, responsive to receipt of the firmware update, a rollback operation of the firmware of the device from the first firmware to the base firmware. The rollback operation is performed in a non-execution environment. The processor further computes the second firmware associated with the device based on the base firmware and the delta component. The processor further applies the computed second firmware to configure the device with the second firmware.
[0016] In some embodiments, to perform the rollback operation, the processor determines a difference between the base firmware associated with the device and the first firmware configured on the device. To perform the rollback operation, the processor further computes the base firmware based on the determined difference and the first firmware. The rollback operation is performed based on the computed base firmware.
[0017] In some embodiments, the processor further stores the computed base firmware. The processor further performs, responsive to receipt of a subsequent firmware update, the rollback operation of the firmware of the device by using the stored computed base firmware.
[0018] In some embodiments, the processor further computes a modified base firmware based on the base firmware and a base firmware update.
[0019] In some embodiments, the processor further performs, responsive to receipt of a subsequent firmware update, the rollback operation of the firmware of the device to the modified base firmware.
[0020] The foregoing summary is illustrative only and is not intended to be in any way limiting. In addition to the illustrative aspects, embodiments, and features described above, further aspects, embodiments, features, and techniques of the invention will become more apparent from the following description taken in conjunction with the drawings.BRIEF DESCRIPTION OF DRAWINGS
[0021] The accompanying drawings are included to provide a further understanding of the subject disclosure of this invention and are incorporated in and constitute a part of this specification. The drawings illustrate exemplary embodiments of the subject disclosure and, together with the description, serve to explain the principles of the subject disclosure.
[0022] In the drawings, similar components and / or features may have the same reference label. Further, various components of the same type may be distinguished by following the reference label with a second label that distinguishes among the similar components. If only the first reference label is used in the specification, the description is applicable to any one of the similar components having the same first reference label irrespective of the second reference label.
[0023] FIG. 1 is an exemplary environment where one or more aspects of the present disclosure may be implemented;
[0024] FIG. 2 is a schematic block diagram of an internet of things (loT) enabled device, according to one or more embodiments of the present disclosure;
[0025] FIG. 3 is a schematic flow diagram of a method for updating a firmware of an loT enabled device, according to one or more embodiments of the present disclosure;
[0026] FIG. 4A is an exemplary schematic representation of an implementation of the method for updating a firmware of an loT enabled device;
[0027] FIG. 4B is another exemplary schematic representation of an implementation of the method for updating a firmware of an loT enabled device;
[0028] FIG. 4C is an exemplary schematic representation of an implementation of the method for updating a firmware of two loT enabled devices; and
[0029] FIG. 5 is an exemplary schematic block diagram of a computer system used for implementing the method of FIG. 3 on the loT enabled device of FIG. 2.DETAILED DESCRIPTION
[0030] The following is a detailed description of embodiments of the disclosure depicted in the accompanying drawings. The embodiments are in such detail as to clearly communicate the disclosure. However, the amount of detail offered is not intended to limit the anticipated variations of embodiments; on the contrary, the intention is to cover all modifications, equivalents, and alternatives falling within the spirit and scope of the subject disclosure as defined by the appended claims.
[0031] Various terms are used herein. To the extent a term used in a claim is not defined below, it should be given the broadest definition persons in the pertinent art have given that term as reflected in printed publications and issued patents at the time of filing.
[0032] In the specification, reference may be made to the spatial relationships between various components and to the spatial orientation of various aspects of components as the devices are depicted in the attached drawings. However, as will be recognized by those skilled in the art after a complete reading of the subject disclosure, the components of this invention. Described herein may be positioned in any desired orientation. Thus, the use of terms such as “above,” “below,” “upper,” “lower,” “first”, “second” or other like terms to describe a spatial relationship between various components or to describe the spatial orientation of aspects of such components should be understood to describe a relative relationship between the components or a spatial orientation of aspects of such components.
[0033] Referring to FIG. 1, an exemplary environment 100 is shown where one or more aspects of the present disclosure may implemented. The environment 100 includes one or more internet of things (loT) enabled devices 102. The illustrated embodiment of FIG. 1 shows devices 102-1, 102-2... 102-N. The devices 102-1, 102-2... 102-N may be individually and / or collectively referred to as “the devices 102”.
[0034] loT may refer to a network of devices with unique identifiers that may be typically embedded within other systems to enable the systems to perform specific functions. The devices may be designed to operate as wireless stations consistent with corresponding standards, such as, without limitations, the IEEE 802.11 family of standards, and the 3rd Generation Partnership Project (3GPP) family of standards. Typically, the loT enabled devices capture data with respect to a specific function, and wirelessly transmit the data to other devices or to a central processing location for further processing. Additionally, the devices 102 may also be set up to receive and process external inputs, and thus are capable of being externally monitored and controlled.
[0035] In some embodiments, the one or more devices 102 may all be directed to perform a single function. However, in some other embodiments, the one or more devices 102 may be directed to perform one or more functions. For example, some of the one or more devices 102 may be embedded in light bulbs installed in a dwelling unit, collecting information about individual bulbs’ electricity usage, as well as enabling the control of the light bulbs externally. In another example, some of the one or more devices 102 may be embedded in thermostats installed in a dwelling unit, collecting information about energy usage and temperature information implemented within the dwelling unit, as well as enabling control externally.
[0036] The devices 102 may communicate with each other and / or other similar devices through a communication network 104. The communication network 104 may be a wireless communication network. The wireless communication network may be any wireless communication network capable of transferring data between entities of that network such as, without limitations, a carrier network including circuit switched network, a public switched network, a Content Delivery Network (CDN) network, a 5G New Radio (NR) network, a Long- Term Evolution (LTE) network, a Global System for Mobile Communications (GSM) network and a Universal Mobile Telecommunications System (UMTS) network, an Internet, intranets, local area networks, wide area networks, mobile communication networks, Bluetooth low energy (BLE) networks, and combinations thereof.
[0037] In some embodiments, the communication network 104 may be an internet. The communication network 104 may be implemented using protocols such as IP (Internet Protocol). In general, in IP environments, an IP packet is used as a basic unit of transport, with the source address being set to the IP address assigned to the source system from which the packet originates and the destination address set to the IP address of the destination system to which the packet is to be eventually delivered. An IP packet is said to be directed to a destination system when the destination IP address of the packet is set to the IP address of the destination system, such that the packet is eventually delivered to the destination system. When the packet contains content such as port numbers, which specifies the destination application, the packet may be said to be directed to such application as well. The destination system may be required to keep the corresponding port numbers available / open, and process the packets with the corresponding destination ports.
[0038] In one instance of implementation, the devices 102 may communicate with each other using layer-2 protocols specified as a part of the IEEE 802.11 standards, or the 3rd Generation Partnership Project (3GPP) standards. However, in another instance, the devices 102 may use IP addressing at least for communications with external devices (e.g., servers 106)accessible via the communication network 104. In such implementations, the devices 102 may be assigned a unique IP address.
[0039] The environment 100 further includes one or more servers 106. The illustrated embodiment of FIG. 1 shows servers 106-1, 106-2... 106-N. The servers 106-1, 106-2... 106- N may be individually and / or collectively referred to as “the servers 106”. The servers 106 may represent computing devices at which the corresponding vendor and / or device manufacturers the devices 102 host specific firmware and / or firmware updates available for download over- the-air (OTA). In an instance of implementation, the servers 106 may be configured to process a request for an updated firmware received from the devices 102, and, in response, provide the updated firmware to the devices 102. In an implementation, the servers 106 may be implemented as cloud servers.
[0040] A firmware may be defined as a software program (i.e., set of instructions) designed to control the functions performed by respective hardware portions of the devices 102. The firmware may generally be stored in an internal non-volatile memory (e.g., ROM, EPROM) of the respective devices 102, in an external memory (e.g., flash memory), or in a combination thereof. In an aspect of the disclosure, during production of the devices 102, the devices 102 may be configured with a base firmware. The base firmware may be associated with a base set of functionalities designed for a base set of hardware portions of the devices 102. However, updating a firmware of the devices 102 may be necessary to achieve any number of functions. For example, firmware updates to the software program help execute a new hardware function, fix a known problem, enable the hardware to work with a new operating system, bring the software in compliance with new software standards etc.
[0041] In some embodiments, the devices 102 may be pre-configured with a base firmware. Once deployed, based on the required functionalities for the device 102, the devices 102 may transmit a query or a request to the servers 106 for a firmware update either periodically or based on a trigger. Responsive to receipt of such a request, the servers 106 may send a firmware update to the devices 102. In an embodiment of the present disclosure, the devices 102 may be currently configured with a first firmware. The first firmware may correspond to a first set of functionalities of the devices 102. In accordance with embodiments, the devices 102 may be configured with the capability to rollback to a base version of firmware (i.e., base firmware) in a non-execution environment. The rollback operation enables the devices 102 to compute the base firmware image and use it for applying an upgrade to a desired version available from the servers 106.
[0042] Referring to FIG. 2, a schematic block diagram of a device 102 is shown, which includes a processor 202 in which a method to update a firmware of the device 102 may be implemented, according to embodiments of the present disclosure. The device 102 further includes a memory 204 communicably coupled to the processor 202. The memory 204 may store instructions executable by the processor 202 to to modify the firmware of the device 102. The memory 204 may further include one or more storage units 206-1, 206-2...206-N. The one or more storage units 206-1, 206-2...206-N may be individually and / or collectively referred to as “the storage units 206”.
[0043] The processor 202 may be a hardware device including a processor executing machine-readable program instructions. The “hardware” may include a combination of discrete components, an integrated circuit, an application-specific integrated circuit, a field programmable gate array, a digital signal processor, or other suitable hardware. The “software” may comprise one or more objects, agents, threads, lines of code, subroutines, separate software applications, two or more lines of code or other suitable software structures operating in one or more software applications or on one or more processors. The processor 202 may include, for example, without limitations, microprocessors, microcomputers, microcontrollers, digital signal processors, central processing units, state machines, logic circuits, any devices that manipulate data or signals based on operational instructions, and the like. Among other capabilities, the processor 202 may fetch and execute computer-readable instructions in the memory communicably coupled with it for performing tasks such as data processing, input / output processing, feature extraction, and / or any other functions. Any reference to a task in the present disclosure may refer to an operation being or that may be performed on data.
[0044] The device 102 may further include an interface 208. The interface 208 may include a variety of interfaces, for example, interfaces for data input and output devices, referred to as I / O devices, storage devices, and the like. The interface 208 may also provide a communication pathway for one or more components of the device 102.
[0045] The device 102 may further include a processing engine 210. The processing engine 210 may be implemented as a combination of hardware and programming (for example, programmable instructions) to implement one or more functionalities of the processing engine 210. In some examples, the processing engine 210 may be implemented by electronic circuitry.
[0046] The processing engine 210 includes a firmware update receiving engine 212, a rollback operation engine 214, a firmware update computation engine 216, a firmware update application engine 218, a base firmware modification engine 220, and other engine(s) 222. Theother engine(s) 222 may include engines configured to perform one or more ancillary functions associated with the processing engine 210.
[0047] Referring now to FIGs. 1 and 2, the firmware update receiving engine 212 is configured to receive, a firmware update corresponding to a desired firmware version (e.g., second firmware) for the device 102. The device 102 may be currently configured with a first firmware. In an embodiment, the firmware update may include a delta component or a delta patch. The delta component may include and / or represent a difference between the base firmware associated with the device 102 and the second firmware available for the device 102. In an embodiment, the firmware update receiving engine 212 may be configured to extract the delta component from the received firmware update.
[0048] The rollback operation engine 214 is configured to execute a set of instructions to perform, responsive to receipt of the firmware update, a rollback operation of the firmware of the device 102 from the first firmware to the base firmware.
[0049] In some embodiments, the device 102 may have instructions hardcoded in it to perform the rollback operation responsive to receipt of the firmware update. Such instructions may be provided in the current firmware of the device 102.
[0050] In order to perform the rollback operation, the rollback operation engine 214 may be further configured to determine a difference between the base firmware and the first firmware (currently configured on the device 102). The rollback operation engine 214 may be further configured to compute the base firmware based on the determined difference and the first firmware. The computed base firmware may be used for the rollback operation. In an embodiment, the base firmware is computed in a non-execution environment and may not be executed. Such a computed base firmware image is used as a reference image to compute any desired firmware version based on the received delta component or patch.
[0051] In some embodiments, based on an availability of storage resources in the device 102, the computed base firmware may be stored in a storage unit (e.g., storage unit 206-1). Consequently, for every subsequent firmware update, there may not be a requirement for the base firmware to be computed every time thereby saving processing resources. The stored base firmware may directly be accessed and used for the rollback operation upon receipt of a firmware update from the server 106.
[0052] In some embodiments, the device 102 may be pre-configured such that the storage unit may include the base firmware. Similarly, in such cases, there may not be a requirement for the base firmware to be computed even for the first time. The stored base firmware maydirectly be accessed and used for the rollback operation upon receipt of a firmware update from the server 106.
[0053] In some embodiments, the rollback operation engine 214 may be configured to apply or execute the base firmware to configure the device 102 with the base firmware. However, the rollback operation engine 214 may apply or execute the base firmware only responsive to determining that base firmware may be compatible with the device 102. However, in preferred embodiments, the rollback operation engine 214 may be configured to perform the rollback operation in a non-execution environment, such that the base firmware is not executed or applied on the device 102.
[0054] The firmware update computation engine 216 may be configured to compute, based on the base firmware and the delta component, the second firmware associated with the device 102.
[0055] In some cases, aspects of the device 102 may be modified during its operating lifetime. Accordingly, the base firmware associated with the device 102 may not be compatible for the modified device 102. For example, the device 102 may be configured with new hardware components that may not be compatible with the base firmware. In such use cases, applying or executing the base firmware on the modified device (during the firmware update process) may cause the device 102 to malfunction or not operate at all. In accordance with the proposed embodiments, the base firmware may not be applied or executed on the device 102 during the firmware update process. The base firmware may only be used as a reference firmware image, which, in conjunction with the delta component, may be used to compute the updated firmware (e.g., second firmware) to be applied on the device 102.
[0056] The firmware update application engine 218 may be configured to apply the computed updated firmware (e.g., second firmware).
[0057] The base firmware modification engine 220 may be configured to modify the base firmware to a modified firmware based on a base firmware update. The base firmware update may correspond to a more recent version of the base firmware that the device manufacturers may use to pre-configure the more recent device versions. The modified base firmware may be used as a reference image to compute subsequent firmware updates.
[0058] For example, the device 102 may have received multiple firmware updates and may currently be configured with a tenth version of the firmware. In the event of receipt of another firmware update corresponding to an eleventh version of the firmware, the device 102 may need to perform a rollback operation to the base firmware version and then compute the eleventh version of the firmware based on the delta component. Such a process may increasethe time of rollback operation for the firmware to be updated and may have an impact on the byte size of the received firmware update, and hence may require more memory. To implement a further improved rollback operation, the base firmware modification engine 220 may reset the base firmware to the modified base firmware. For example, the modified base firmware may correspond to the seventh version of the firmware across all devices (manufactured during a time period). Hence, when the firmware update corresponding to the eleventh version of the firmware is received, the device 102 may need to roll back to the seventh version of the firmware (i.e., the modified base firmware), after which, the firmware update may be applied.
[0059] Referring to FIG. 3, a schematic flow diagram of a method 300 for updating the firmware of the loT enabled device 102 is shown, according to one or more embodiments of the present disclosure. Referring to FIGs. 1 to 3, at step 302, the method includes receiving, by the processor 202 associated with the device 102, the firmware update corresponding to the second firmware for the device 102. At step 304, the method 300 method further includes performing, by the processor 202, responsive to receipt of the firmware update, a rollback operation of the firmware of the device 102 from the first firmware to the base firmware. The rollback operation is performed in a non-execution environment. At step 306, the method 300 further includes computing, by the processor 202, the second firmware based on the base firmware and the delta component. At step 308, the method 300 further includes applying, by the processor 202, the computed second firmware to configure the device 102 with the second firmware.
[0060] In some embodiments, the method 300 of performing the rollback operation includes determining, by the processor 202, a difference between the base firmware and the first firmware configured on the device 102. The method 300 of performing the rollback operation further includes computing, by the processor 202, the base firmware based on the determined difference and the first firmware. The rollback operation is performed based on the computed base firmware.
[0061] In some embodiments, the method 300 further includes storing, by the processor 202, the computed base firmware. The method 300 further includes performing, by the processor 202, responsive to receipt of a subsequent firmware update, the rollback operation of the firmware of the device 102 by using the stored computed base firmware.
[0062] In some embodiments, the method 300 further includes computing, by the processor 202, a modified base firmware based on the base firmware and a base firmware update.
[0063] In some embodiments, the method 300 further includes performing, by the processor 202, responsive to receipt of a subsequent firmware update, the rollback operation of the firmware of the device 102 to the modified base firmware.
[0064] Referring to FIG. 4A, an exemplary schematic representation of an implementation of the method 300 is shown. At step 402, the device 102-1 is configured with a firmware FW- 1. Further, in this instance, the device 102-1 further includes, in a storage unit, an image of the base firmware B-FW. The device 102-1 receives a firmware update FW-U corresponding with an updated firmware FW-3. At step 404, a rollback operation is performed, such that the device 102-1 retrieves the image of the base firmware B-FW in a non-execution environment. The base firmware B-FW may or may not be applied or executed after retrieval. At step 406, the device 102-1 computes the firmware FW-3 based on the retrieved base firmware B-FW and the delta component (from the firmware update). The device 102-1 may then apply or execute the computed firmware FW-3. The device 102-1 then is configured with the firmware FW-3.
[0065] Referring to FIG. 4B, an exemplary schematic representation of another implementation of the method 300 is shown. At step 412, the device 102-1 is configured with a firmware FW-1. Further, in this instance, the device 102-1 does not include a pre- stored image of the base firmware B-FW. The device 102-1 receives a firmware update FW-U corresponding to an updated firmware FW-3. The firmware update FW-U may further include instructions to perform a rollback operation to the base firmware B-FW. At step 414, a rollback operation is performed, such that the device 102-1 computes an image of the base firmware B-FW in a nonexecution environment. The base firmware B-FW may or may not be applied or executed. At step 416, the device 102-1 computes the firmware FW-3 based on the computed base firmware B-FW and the delta component of the firmware update. The device 102-1 may then apply the computed firmware FW-3. The device 102-1 then is configured with the firmware FW-3.
[0066] Referring to FIG. 4C, an exemplary schematic representation of another implementation of the method 300 is shown. At step 422, the device 102-1 is configured with a firmware FW-1 and the device 102-2 is configured with a firmware FW-2. The devices 102- 1, 102-2 receive respective firmware updates FW-U1, FW-U2 corresponding to an updated firmware FW-3 respectively. The firmware updates FW-U1, FW-U2 may further include instructions to the respective devices 102-1, 102-2 to perform a rollback operation to the base firmware B-FW. At step 424, a rollback operation is performed, such that the devices 102-1, 102-2 either compute or retrieve (from storage) an image of the base firmware B-FW in a nonexecution environment respectively. The base firmware B-FW may or may not be applied or executed. At step 426, the devices 102-1, 102-2 compute the firmware FW-3 based on the basefirmware B-FW and the delta component of the firmware updates FW-U1, FW-U2 respectively. The devices 102-1, 102-2 may then apply the computed firmware EW-3. The devices 102-1, 102-2 are then configured with the latest version of firmware FW-3.
[0067] Hence, it may be seen that, irrespective of a current version of the firmware in one or more devices 102, the firmware of the devices may be updated or modified using the same firmware update or patch.
[0068] Thus, the present disclosure provides a method for updating the firmware of the loT enabled device in an effective manner. The method provides a way for the firmware of a device to be updated to a desired version irrespective of a current version of firmware configured on the device. Responsive to receipt of a hardware update, the device is configured to perform a rollback operation to generate a base firmware image associated with the device. The rollback operation may be performed in a non-execution environment, i.e., the base firmware generated may not be applied to the device. Consequently, based on the base firmware and a delta component of the firmware update, the desired firmware may be computed and applied. The capability of the device to perform the rollback operation, while not applying the base firmware allows the device to perform the firmware update even if a hardware configuration of the device has been changed, such that it may no more be compatible with the base firmware.
[0069] Furthermore, in a use case where a plurality of loT enabled devices are provided, the proposed method allows for respective firmware of the plurality of devices to be updated using a same type of firmware update, irrespective of a version of firmware configured on each of the plurality of devices.
[0070] Referring to FIG. 5 an exemplary schematic block diagram of a computer system 500 used for implementing the method 300 is shown. The computer system 500 may include an external storage device 510, a bus 520, a main memory 530, a read only memory 540, a mass storage device 550, communication port 560, and a processor 570. A person skilled in the art will appreciate that the computer system may include more than one processor and communication ports. Processor 570 may include various modules. Communication port 560 may be any of an RS-232 port for use with a modem-based dialup connection, a 10 / 100 Ethernet port, a Gigabit or 10 Gigabit port using copper or fibre, a serial port, a parallel port, or other existing or future ports. Communication port 560 may be chosen depending on a network, such a Local Area Network (LAN), Wide Area Network (WAN), or any network to which computer system connects. Memory 530 may be Random Access Memory (RAM), or any other dynamic storage device commonly known in the art. Read-only memory 540 may beany static storage device(s) e.g., but not limited to, a Programmable Read Only Memory (PROM) chips for storing static information e.g., start-up or BIOS instructions for processor 570. Mass storage 550 may be any current or future mass storage solution, which may be used to store information and / or instructions. Exemplary mass storage solutions include, but are not limited to, Parallel Advanced Technology Attachment (PATA) or Serial Advanced Technology Attachment (SATA) hard disk drives or solid-state drives (internal or external, e.g., having Universal Serial Bus (USB) and / or Firewire interfaces), one or more optical discs, Redundant Array of Independent Disks (RAID) storage, e.g., an array of disks (e.g., SATA arrays).
[0071] Bus 520 communicatively couples processor(s) 570 with the other memory, storage, and communication blocks. Bus 520 may be, e.g., a Peripheral Component Interconnect (PCI) / PCI Extended (PCI-X) bus, Small Computer System Interface (SCSI), USB or the like, for connecting expansion cards, drives and other subsystems as well as other buses, such a front side bus (FSB), which connects processor 570 to software system.
[0072] Optionally, operator and administrative interfaces, e.g., a display, keyboard, and a cursor control device, may also be coupled to bus 520 to support direct operator interaction with a computer system. Other operator and administrative interfaces may be provided through network connections connected through communication port 560. The external storage device 510 may be any kind of external hard-drives, floppy drives, Compact Disc - Read Only Memory (CD-ROM), Compact Disc-Re -Writable (CD-RW), Digital Video Disk-Read Only Memory (DVD-ROM). Components described above are meant only to exemplify various possibilities. In no way should the aforementioned exemplary computer system limit the scope of the present disclosure.
Claims
CLAIMS1. A method for updating a firmware of an intemet-of-things (loT) enabled device configured with a first firmware, comprising: receiving, by a processor associated with the device, a firmware update corresponding to a second firmware for the device, the firmware update comprising a delta component, the delta component comprising a difference between a base firmware associated with the device and the second firmware; performing, by the processor, responsive to receipt of the firmware update, a rollback operation of the firmware of the device from the first firmware to the base firmware, wherein the rollback operation is performed in a non-execution environment; computing, by the processor, the second firmware based on the base firmware and the delta component; and applying, by the processor, the computed second firmware to configure the device with the second firmware.
2. The method of claim 1, wherein performing the rollback operation comprises: determining, by the processor, a difference between the base firmware associated with the device and the first firmware configured on the device; and computing, by the processor, the base firmware based on the determined difference and the first firmware, wherein the rollback operation is performed based on the computed base firmware.
3. The method of claim 2, further comprising: storing, by the processor, the computed base firmware; and performing, by the processor, responsive to receipt of a subsequent firmware update, the rollback operation of the firmware of the device by using the stored computed base firmware.
4. The method of claim 1, further comprising computing, by the processor, a modified base firmware based on the base firmware and a base firmware update.
5. The method of claim 4, further comprising performing, by the processor, responsive to receipt of a subsequent firmware update, the rollback operation of the firmware of the device to the modified base firmware.
6. An internet-of-things (loT) enabled device configured with a first firmware, comprising: a processor communicably coupled with a memory, the memory storing instructions executable by the processor, the processor configured to: receive a firmware update corresponding to a second firmware for the device, the firmware update comprising a delta component, the delta component comprising a difference between a base firmware associated with the device and the second firmware; perform, responsive to receipt of the firmware update, a rollback operation of the firmware of the device from the first firmware to the base firmware, wherein the rollback operation is performed in a non-execution environment; compute the second firmware based on the base firmware and the delta component; and apply the computed second firmware to configure the device with the second firmware.
7. The device of claim 6, wherein, to perform the rollback operation, the processor is configured to: determine a difference between the base firmware associated with the device and the first firmware configured on the device; and compute the base firmware based on the determined difference and the first firmware, wherein the rollback operation is performed based on the computed base firmware.
8. The device of claim 7, wherein the processor is further configured to: store the computed base firmware; and perform, responsive to receipt of a subsequent firmware update, the rollback operation of the firmware of the device by using the stored computed base firmware.
9. The device of claim 6, wherein the processor is further configured to compute a modified base firmware based on the base firmware and a base firmware update.
10. The device of claim 9, wherein the processor is further configured to perform, responsive to receipt of a subsequent firmware update, the rollback operation of the firmware of the device to the modified base firmware.
11. A non-transitory, machine-readable medium storing instructions for updating a firmware of an internet of things (loT) enabled device configured with a first firmware, wherein execution of the instructions by a processor communicably coupled to it causes the processor to: receive a firmware update corresponding to a second firmware for the device, the firmware update comprising a delta component, the delta component comprising a difference between a base firmware associated with the device and the second firmware; perform, responsive to receipt of the firmware update, a rollback operation of the firmware of the device from the first firmware to the base firmware, wherein the rollback operation is performed in a non-execution environment; compute the second firmware based on the base firmware and the delta component; and apply the computed second firmware to configure the device with the second firmware.
12. The non-transitory, machine-readable medium of claim 11, wherein, to perform the rollback operation, the processor further: determines a difference between the base firmware associated with the device and the first firmware configured on the device; and computes the base firmware based on the determined difference and the first firmware, wherein the rollback operation is performed based on the computed base firmware.
13. The non-transitory, machine-readable medium of claim 12, wherein the processor further: stores the computed base firmware; andperforms, responsive to receipt of a subsequent firmware update, the rollback operation of the firmware of the device by using the stored computed base firmware.
14. The non-transitory, machine-readable medium of claim 11, wherein the processor further computes a modified base firmware based on the base firmware and a base firmware update.
15. The non-transitory, machine-readable medium of claim 14, wherein the processor further performs, responsive to receipt of a subsequent firmware update, the rollback operation of the firmware of the device to the modified base firmware.