Efficiency improvements in firmware updates for large deployments

By dividing gateway device groups in the central control system and using unique transmission identifiers, the problem of inefficient firmware updates caused by network topology changes is solved, and efficient endpoint device updates are achieved.

CN121970030APending Publication Date: 2026-05-01LANDIS GYR TECH INC
View PDF 0 Cites 0 Cited by

Patent Information

Authority / Receiving Office
CN · China
Patent Type
Applications(China)
Current Assignee / Owner
Filing Date
2024-09-05
Publication Date
2026-05-01

AI Technical Summary

Technical Problem

In large networks, when delivering firmware updates to a large number of endpoint devices, network topology changes can cause packet loss, resulting in inefficient updates.

Method used

The central control system divides multiple server and gateway device groups into different gateway device groups and assigns a unique gateway set and transport identifier to each firmware update request, ensuring that endpoint devices can still receive data packets with the same identifier when the gateway is migrated.

Benefits of technology

This improves the efficiency of firmware updates, avoids packet loss, and ensures that endpoint devices can successfully receive and apply updates.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure CN121970030A_ABST
    Figure CN121970030A_ABST
Patent Text Reader

Abstract

The central control system initiates a single operation to cause firmware updates to be applied on the network by providing multiple requests to different servers, where the network is partitioned by each request specifying a unique set of gateways. Each server supplies data packets including firmware updates to a set of gateways identified by a request received from a control system, where the data packets include the same transmission identifier (i.e., the same identifier of a firmware update process). Each endpoint receives a data packet from a gateway. Since the data packets include the same transmission identifier, if the endpoint migrates between gateways, the endpoint will still receive data packets with the same transmission identifier, and thus the data packets will not be discarded.
Need to check novelty before this filing date? Find Prior Art

Description

Efficiency improvements for firmware updates in large deployments Technical Field

[0001] This disclosure relates to a system and method for updating firmware on a device, and more particularly to a system and method for updating firmware on a group of such devices using multiple servers. Background Technology

[0002] Several endpoint devices accessible via a network can be equipped with firmware to perform their required operations. For example, in monitoring electricity or gas consumption, the endpoint devices can take the form of smart meters that collect readings of electricity and gas consumption and distribute those readings to a headend system via data packets sent over the network. To perform these operations, the smart meter includes firmware stored in its memory that provides low-level control over the smart meter, enabling it to perform its operations of collecting measurement data and reporting that data to the headend system.

[0003] At certain times, it may be necessary to provide firmware updates to devices running on endpoints. This can be achieved by a server dispatching a data packet containing the firmware update to several endpoint devices, each configured to apply the update to the firmware stored in its memory. However, challenges can arise when there are a large number of endpoint devices for which updates must be applied. Summary of the Invention

[0004] When providing firmware updates to a large number of endpoint devices, a large number of gateways can be used to deliver the necessary updates. In this scenario, different firmware operations can be performed for different groups of endpoints associated with different gateways. However, problems can arise due to changes in network topology, where endpoints may become associated with different parts of the network (e.g., different gateways) and thus receive packets associated with different firmware update operations, each containing a different transport identifier associated with the firmware update. This network topology change can lead to inefficiencies in update operations due to the amount of packet loss on the network, as endpoint devices may discard received packets associated with different firmware update operations.

[0005] According to a first aspect, a data processing system is provided, comprising: a control system for initiating a firmware update process to provide firmware updates to multiple endpoint devices; multiple servers, each server hosting a firmware update service and including a memory storing firmware updates to be supplied to the multiple endpoint devices; multiple gateways, each gateway configured to interface one of the servers with several endpoint devices to supply firmware updates to the several endpoint devices; and multiple endpoint devices, wherein the control system is configured to provide each server with different firmware update requests among multiple firmware update requests, wherein each firmware update request in the firmware update request is a different firmware update request among multiple firmware update requests. The new request includes identifiers of different gateway groups of one or more gateways, wherein each of the servers is configured to, in response to receiving a corresponding firmware update request in a firmware update request, distribute a data packet including a firmware update to one or more gateways among the gateways identified by the identifier in a corresponding firmware update request in a plurality of firmware update requests, each data packet including the same identifier of a firmware update process, wherein each of the endpoint devices is configured to: receive a plurality of further data packets from at least one gateway device among the gateway devices, the plurality of further data packets including the same identifier of firmware update and firmware update process; and accept the corresponding plurality of further data packets in response to determining that the same identifier of firmware update process exists in a received further data packet.

[0006] The central control system initiates a single operation to apply firmware updates across the network by providing multiple requests to different servers, where the network is segmented by specifying a unique set of gateways for each request. Each server supplies packets containing the firmware update to the set of gateways identified by the requests received from the control system, where these packets include the same transport identifier (i.e., the same identifier for the firmware update process). Each endpoint receives packets from a gateway. Because these packets include the same transport identifier, if an endpoint migrates between gateways, it will still receive packets with the same transport identifier, and therefore these packets will not be dropped.

[0007] According to a second aspect, a control system for initiating a firmware update process to provide firmware updates to multiple endpoint devices is provided, wherein the control system includes processing circuitry configured to: generate multiple firmware update requests by: dividing multiple gateway devices into multiple gateway device groups, each gateway device group including one or more gateway devices; and providing for each firmware update request: an identifier of a different gateway device group within the gateway device group; a common identifier for the firmware update process; and a common identifier for the firmware update to be provided to each endpoint device; and providing each firmware update request to a different server among multiple servers.

[0008] According to a third aspect, a method is provided, comprising: providing different firmware update requests from a control system to each of a plurality of servers among a plurality of servers, wherein each firmware update request includes an identifier of a different group of gateways among one or more gateways; at each of the plurality of servers: undertaking a firmware update service for providing firmware updates to each of a plurality of endpoint devices; and in response to receiving a corresponding firmware update request among the firmware update requests, distributing a data packet including a firmware update to one or more gateways among the gateways identified by the identifier in the corresponding firmware update request among the firmware update requests; and at each of the endpoint devices: receiving a plurality of further data packets from at least one of the gateways among the gateways, the plurality of further data packets including the same identifier of the firmware update and the firmware update process; and in response to determining that the same identifier of the firmware update process exists in each of the received further data packets, accepting each of the plurality of further data packets.

[0009] In some embodiments, a method includes: at a first endpoint in the endpoints: receiving a portion of a firmware update from a first gateway in the gateways in a first subset of corresponding further data packets; and subsequently receiving another portion of the firmware update from a second gateway in the gateways in a second subset of corresponding further data packets.

[0010] In some embodiments, the method includes: at a first endpoint in the endpoints, after receiving the portion of the firmware update, providing an indication to a second gateway in the gateways of the progress of providing the firmware update to the first endpoint in the endpoints; and at a second gateway device in the gateway device, continuing to provide the firmware update from a point identified based on the progress indication.

[0011] In some embodiments, the method includes: at a first endpoint of the endpoints: receiving a portion of a firmware update during a first time period, wherein the first endpoint of the endpoints during the first time period is connected to a first gateway of the gateways; and receiving the additional portion of the firmware update during a second time period, wherein the first endpoint of the endpoints during the second time period is connected to a second gateway of the gateways.

[0012] In some embodiments, each endpoint device is a smart meter, including: processing circuitry; and a memory storing firmware for controlling the processing circuitry, wherein the method includes: at each smart meter, updating the firmware stored in the memory based on a received firmware update.

[0013] In some embodiments, the method includes: at each smart meter: under the control of firmware, causing a measurement of energy usage to be reported to the control system.

[0014] In some embodiments, the control system is a head-end system associated with the smart meter.

[0015] In some embodiments, the method includes: in response to receiving one or more initial data packets including the same transport identifier: each endpoint device causes the same transport identifier to be stored in the endpoint's storage; and subsequently, in response to determining a match between the same transport identifier stored in the storage and the same transport identifier in each of a plurality of subsequent data packets, determining to accept the plurality of subsequent data packets.

[0016] In some embodiments, the method includes: at a first endpoint of a plurality of endpoints, in response to determining that one or more portions of firmware are missing from the memory of the respective endpoint, sending a request for the missing firmware to a first server of servers; and the first server of servers, in response to receiving the request, retrieving the one or more portions of firmware from its memory and returning the one or more portions of firmware to the first endpoint.

[0017] According to a fourth aspect, a method is provided for initiating a firmware update process to provide firmware updates to multiple endpoint devices, wherein the method includes: generating multiple firmware update requests by: dividing multiple gateway devices into multiple gateway device groups, each gateway device group including one or more gateway devices; and providing each firmware update request in the firmware update requests with: an identifier of a different gateway device group in the gateway device group; a common identifier for the firmware update process; and a common identifier for the firmware update to be provided to each endpoint device in the endpoint devices; and distributing each firmware update request in the multiple firmware update requests to a different server in the multiple servers.

[0018] In some embodiments, the method includes: storing each of a plurality of firmware update requests in a storage device of the control system; and for each of the plurality of firmware update requests, in response to receiving a request from a corresponding server in the server, sending each of the firmware update requests to a corresponding server in the server.

[0019] In some embodiments, the method includes: for each of a plurality of firmware update requests: storing an associated lock in a storage device of the control system; and updating the associated lock to indicate that the firmware update request is unavailable when the corresponding firmware update request is sent to one of the servers; and in response to receiving each request from the server: selecting the firmware update request in response to determining that the lock associated with one of the plurality of firmware update requests indicates that the firmware update request is available; and sending the selected firmware update request from the plurality of firmware update requests to the server, wherein the corresponding request is received from the server.

[0020] According to a fifth aspect, a computer program is provided that includes computer-readable instructions, which, when executed by at least one processor, cause the execution of the method according to the fourth aspect or any embodiment thereof.

[0021] According to a sixth aspect, a non-transitory computer-readable medium is provided for storing a computer program according to a fifth aspect. Attached Figure Description

[0022] The arrangement of the invention will be more fully understood and appreciated through the following detailed description, which is by way of example only and in conjunction with the accompanying drawings, wherein:

[0023] Figure 1 illustrates an example network in which the control system interfaces with multiple endpoint devices via multiple network gateway devices and multiple servers;

[0024] Figure 2A shows an example of how a control system can divide an initial firmware update request into multiple firmware update requests;

[0025] Figure 2B illustrates how firmware and multiple firmware requests are stored in the storage device of the control system.

[0026] Figure 3A illustrates how to divide work represented by multiple requests across multiple servers;

[0027] Figure 3B illustrates an example of how a firmware update request can be provided to a server configured to distribute firmware updates to multiple gateways identified in the firmware update request.

[0028] Figure 4 illustrates an example of how a gateway device distributes firmware received from a server to multiple endpoint devices connected to the gateway device;

[0029] Figure 5 illustrates the various processing circuits and storage devices within the endpoint device;

[0030] Figure 6A illustrates how an endpoint requests a missing firmware block from the server;

[0031] Figure 6B illustrates how an endpoint can change its associated gateway;

[0032] Figure 7 shows an example computer system including memory and processing circuitry;

[0033] Figure 8 shows an example device including a user interface, memory, and processing circuitry;

[0034] Figure 9 illustrates an example method implemented in a data processing system; and

[0035] Figure 10 illustrates an example method implemented in the control system of a data processing system. Detailed Implementation

[0036] The embodiment is implemented in a data processing system that interfaces with multiple endpoints to collect measurement data from these endpoints.

[0037] Referring to Figure 1, a data processing system 1 is illustrated, in which a control system 2 interfaces with multiple servers 4 and multiple network devices 6 and endpoints 8 reachable by the network devices 6. The data processing system 1 includes the control system 2, servers 4, network devices 6, and endpoints 8. Network device 6 is referred to herein as gateway 6. Gateway 6 may also be referred to as a gateway device. Gateway 6 is part of a network in which the control system 2 sends commands to endpoints 8 and, in turn, receives data (e.g., measurement data) from endpoints 8.

[0038] When endpoint 8 is in the form of a smart meter, control system 2 can be a head-end system, and gateway device 6 can be in the form of a collector, responsible for collecting measurement data from the smart meter and returning the measurement data to the head-end system.

[0039] Gateway 6 also interfaces server 4 with endpoint 8, enabling server 4 to transmit firmware updates to endpoint 8 to update the firmware stored in endpoint 8. Each of servers 4 includes computer-readable instructions that, when executed by at least one processor of server 4, provide a firmware download service 3, which enables firmware to be provided to endpoint 8 of system 1. Control system 2 can provide the same set of firmware to each of servers 4, enabling firmware download service 3 to distribute the firmware to each of endpoint 8. Each of servers 4 is operable to provide firmware updates to more than one of the gateways 6, and each of the gateways 6 is operable to provide firmware updates to more than one of the endpoints 8. However, the relationship between server 4 and the gateway device 6 to which it provides firmware is not fixed, allowing gateway device 6 to communicate with more than one of the servers 4. Furthermore, the relationship between gateway 6 and endpoint 8 is not fixed, allowing one endpoint 8 to switch between gateways 6 with which it communicates due to changes in network topology.

[0040] Once control system 2 has distributed the firmware to server 4, control system 2 is configured to issue commands to server 4 to distribute the firmware to gateway 6 and endpoint 8. To this end, control system 2 divides the network according to gateway 6.

[0041] Referring to Figure 2A, it illustrates a process that can be executed in control system 2 to generate multiple firmware update requests. An initial request 210 is generated by system 2.

[0042] Initial request 210 includes an identifier for the firmware update operation, referred to herein as a transport ID. Endpoint 8 uses the transport ID to distinguish packets associated with one firmware update process from packets associated with another, and discards packets associated with firmware update processes different from those used to update the firmware on endpoint 8. Initial request 210 also includes the firmware update itself (shown in Figure 2A as "Firmware Binary"). This is the firmware to be provided to each endpoint 8 as part of the firmware update process.

[0043] The initial request 210 also includes a set of identifiers for multiple gateway devices 6 in system 1. The number of gateways is N, and the identifiers are identifiers of gateways that can be referenced by numbers 1 to N.

[0044] Request 210 is provided to staging stage 220, which generates multiple firmware update requests 230a-c based on request 210. Three example requests 230a-c are shown in Figure 2A, but it should be understood that a different number of requests may exist. When generating requests 230a-c, control system 2 divides the gateway set (i.e., 1 to N in the example shown) into multiple gateway subsets (e.g., 1 to m, m to 2m, Nm to N) and provides an indication of a different subset for each request.

[0045] Segmentation phase 220 extracts firmware update 240 from initial request 210 and includes an identifier for firmware 240 in each request 230a-c. Each of requests 230a-c also includes a transport ID and an identifier for the firmware to be applied to endpoint 8. For each of requests 230a-c, the transport ID and firmware identifier are identical. Each of requests 230a-c may also include a request token, which the control system 230 uses to identify the firmware update process associated with the multiple requests 230a-c.

[0046] Although not shown in Figure 2A, each of requests 230a-c may also include an indication of the time when the request was generated. Each of requests 230a-c may also include an indication of settings for downloading firmware. Such settings may relate to, for example, the network protocol used.

[0047] Referring to Figure 2B, it illustrates how the control system 2 stores firmware 240 and each request 230a-c in the storage device 250 of the control system 2. Firmware 240 is stored as part of the storage device 250. In addition to the storage of firmware image 240, the control system 2 stores table 260 in the storage device 250, which may be referred to as firmware block table 260. Firmware image 240 is logically divided into multiple blocks because the entire image 240 may be too large to be transmitted in a single data packet. In some embodiments, firmware image 240 may be between 800KB and 900KB, wherein each firmware block of the image is 1000 bytes in size. For each of the multiple blocks, firmware block table 260 includes a pointer associated with the corresponding block and a length field associated with the corresponding block. The term "firmware block" here refers to the portions of firmware image 240.

[0048] Storage device 250 stores a plurality of firmware update requests 230a-c and status information 280 associated with each of the firmware update requests 230a-c. Status information 280 indicates for each request whether the request is being processed by one of the servers in server 4. For this purpose, status information 280 may include a lock associated with each of the requests 230a-c.

[0049] Referring to Figure 3A, it illustrates how server 4 retrieves requests from control system 2. After storing firmware 240 and update requests 230a-c in storage device 250, control system 2 sends a notification (shown as "1. Notification" in Figure 3A) to each of the servers 4. In response to receiving such a notification, each server 4 sends a request to control system 2 (shown as "2. Polling" in Figure 3A) to retrieve one of the firmware update requests 230a-c. The requests sent by server 4 do not identify a specific one of the firmware update requests 230a-c. In response to receiving each request from server 4, control system 2 checks status information 280 to determine whether any of the requests 230a-c are available (i.e., not currently being served by any other server 4). If any of the requests 230a-c are available, control system 2 sends one of the available requests (shown as "3. Request" in Figure 3A) to the corresponding server 4. Control system 2 then updates status information 280 to indicate that the available request is no longer available. Control system 2 follows the same process to respond to each request from other servers 4 (“2. Polling”). By implementing locking in the status information 280 in this way, control system 2 ensures that each request 230a-c is assigned to a different server 4. However, the assignment of requests 230a-c to servers 4 is not predetermined, but depends on the order in which requests are received at control system 2 (“2. Polling”).

[0050] Referring to Figure 3B, a portion of providing firmware update request 230a and firmware update 240 to one of the servers in server 4 is illustrated. Request 230a (which corresponds to one of the “3. Requests” shown in Figure 3A) is transmitted to server 4 in multiple data packets. In response to receiving request 230a, server 4 issues one or more requests 300 to retrieve a block of firmware 240 from storage device 250 of control system 2. Request 300 includes an identifier of firmware 240 identified by the firmware identifier contained in request 230a. In response to receiving these requests 300, control system 2 returns a data packet 310 including the requested firmware to server 4.

[0051] Firmware update 240 is distributed to server 4 in multiple data packets sent over the network. Server 4 stores the firmware provided in these multiple data packets in its memory.

[0052] The first request 230a is distributed to server 4 in one or more data packets sent over the network. Based on the identifiers of a first subset of gateways 1 to m in the first request 230a, server 4 distributes data packet sets 300a-c to gateways 1 to m. In response to receiving data packet 310, server 4 distributes the firmware contained in those data packets to each gateway 6. Server 4 distributes the firmware in data packets 320a-c to each gateway 6. Specifically, server 4 distributes one set of data packets 300a-c to each of gateways 1 to m. Each of data packet sets 300a-c includes the same set of firmware received by server 4 from control system 2. Server 4 continues to request and receive blocks of firmware 240 from control system 2 and transmits the received blocks to each gateway 6.

[0053] In addition to the firmware update to be applied to endpoint 6, each packet belonging to packet set 320a-c also includes the transport ID contained in request 230a.

[0054] Although not shown in Figure 3B, each of the other servers 4 that receive one of the requests 230a-c from the control system 2 distributes firmware 240 to each of the gateways 6 identified in the corresponding one of the requests 230a-c received from the control system 2.

[0055] Referring to Figure 4, it illustrates the provision of firmware to an endpoint 8 communicating with one of the gateway devices 6. In this example, there are two endpoints 8, each associated with a gateway GW1, for the purpose of sending measurement data to the control system 2 and receiving firmware updates. The association between endpoint 8 and gateway GW1 can be temporary and can change as the network topology changes.

[0056] In response to packet set 300a, gateway 6 provides packet sets 400a-b to each of its currently associated endpoints 8. The first or more packets in packet sets 400a-b sent to each of endpoints 8 provide an indication that a firmware update will be provided to endpoint 8 in subsequent packets. The first packet in the packet set also includes a transport ID received by gateway 6 from server 4. The transport ID is stored by each endpoint 8 and used to check whether any other received incoming packets associated with the firmware update process are associated with the same firmware update process.

[0057] Although not shown in Figure 4, each of the other gateways 6 in system 1 identified in one of the requests 230a-c distributed from control system 2 also distributes a set of data packets containing firmware and transport ID to its associated endpoint 8.

[0058] Referring to Figure 5, which illustrates the components of endpoint 8, endpoint 8 may be endpoint EP1 as shown in Figure 4. Endpoint 8 includes an interface 500 for receiving a set of data packets 400a. Interface 500 may include protocol processing circuitry to remove one or more lower-layer headers from each data packet 400a. When a first data packet 400a is received, circuitry 510 receives the transport ID contained in the data packet and stores the transport ID in transport ID storage device 520. Subsequent data packets in data packet 400a are received at interface 500, wherein these data packets include firmware to be applied to update the firmware currently stored in memory 540 of the endpoint. Each of those subsequent data packets in data packet 400a also includes a transport ID. In response to receiving each data packet, circuitry 510 checks the transport ID received in those data packets 400a against the transport ID stored in storage device 520 to determine if a match exists. In response to determining a match, the corresponding data packet and the associated piece of firmware contained in the corresponding data packet are accepted. In response to determining a mismatch, the data packet is discarded and the contents of the data packet are erased.

[0059] When a match is detected between the transport ID in one of the data packets 400a and the stored transport ID, the memory controller 530 writes the firmware contained in that data packet into the firmware memory 540. In doing so, a portion of an earlier version of the firmware stored in the memory 540 may be overwritten.

[0060] Endpoint 8 also includes processing circuitry 550, which is configured to operate according to firmware stored in memory 540. For example, under the control of the firmware stored in memory 540, processing circuitry 550 can cause the recording of measurements of electricity or gas consumption and cause reports of these measurements to be distributed to control system 2.

[0061] Although not shown in Figure 5, each of the other endpoints 8 in system 1 associated with one of the gateways 6 identified in one of requests 230a-c also performs equivalent processing relative to packets received from their associated gateways and containing the same transport ID.

[0062] In some embodiments, each of the endpoints 8 can determine whether it has received all the blocks of firmware update 240. If an endpoint 8 determines that it has not yet received all the blocks of firmware update 240, then the endpoint 8 sends a request to its associated server 4 to retrieve the missing blocks.

[0063] Referring to Figure 6A, an example is shown where endpoint 8 has received a portion 600 of firmware update 240. Portion 600 includes several blocks of firmware 240, but as indicated, two blocks are missing (i.e., blocks #2 and #9). In response to determining that the two blocks of firmware 240 are missing, endpoint 8 issues a request 610 to retrieve the missing blocks. Request 610 is sent from endpoint 8 to gateway 6 and from gateway 6 to server 4. Server 4 stores a copy of firmware 240. In response to receiving request 610, server 4 retrieves the identified missing firmware blocks and sends blocks 620a and 620b to gateway 6, from which request 610 was received. Gateway 6 sends blocks 620a and 620b to endpoint 8.

[0064] In the example of Figure 6A, firmware 240 is shown as including only 10 blocks. However, in practice, the number of blocks can be different and may be greater than 10. Furthermore, in the given example, the number of missing blocks is two, but this could be a different number. This example is given for one of the endpoints 8, but each of the other endpoints 8 in system 1 can also perform the same process to retrieve blocks from its associated server 4.

[0065] The advantage of providing firmware download service 3 at each point in server 4 is that if any endpoint 8 is missing a block of firmware 240, that endpoint can retrieve those missing blocks from its associated server 4 without having to request them from control system 2. In this way, bottlenecks at control system 2 are avoided.

[0066] A network topology change during a firmware update may cause endpoint 8 to switch from being associated with one gateway 6 to being associated with another gateway 6. According to an embodiment, when endpoint 8 switches gateways 6 in this manner, firmware can continue to be provided to that endpoint 8. Endpoint 8 can provide a status indication indicating its position during the firmware update process, which gateway 6 uses to continue providing the remaining firmware to endpoint 8.

[0067] Referring to Figure 6B, server 4, gateway 6, and endpoint EP3 are shown. Initially, endpoint EP3 is associated with gateway GW1 and receives a data packet 600a containing firmware from gateway GW1, which has already been received from server 4 at gateway GW1. Data packet 600a includes a portion of the firmware update to be applied to endpoint EP3. After receiving data packet 600a, endpoint 8 connects to gateway GW2 instead of gateway GW1 and therefore no longer receives data packets from gateway GW1. In this way, the firmware update from GW1 is interrupted. When EP3 connects to GW2 instead, EP3 can send an indication to gateway GW2 of its firmware download progress. Such an indication can indicate how much of the total firmware update has been received at EP3 so far. In response, gateway GW2 begins sending the remainder of the firmware update in a further set of data packets 600b. Each of the further sets of data packets 600b contains the same transport ID as data packet set 600a, so the further sets of data packets 600b are accepted, and the firmware therein is applied to update the firmware stored in memory 540.

[0068] Referring to Figure 7, an example computer system 700 is shown that can provide any one of a control system 2, a server 4, a gateway device, or an endpoint device 8. System 700 may include servers, back-end systems, etc.

[0069] System 700 includes at least one memory 710, 720, at least one data processing unit 730, 740, and an input / output interface 750. The at least one memory 710, 720 includes random access memory 710 and at least one hard disk drive 720. The memories 710, 720 store computer-executable code that, when run by the at least one data processing unit 730, 740, performs steps described as being performed by system 700. The memories 710, 720 can be used to store data associated with a control application. Specifically, the memories 710, 720 can be used to store log files including data recorded by the control application.

[0070] At least one processor 730, 740 communicates with memories 710, 720 to load instructions for execution, load data for processing, and store the results of processing the data. At interface 750, system 700 sends and receives messages. Messages received at interface 750 include data for processing by at least one processor 730, 740. Messages sent from interface 750 are created by at least one processor 730, 740.

[0071] The operations performed by any of the control system 2, server 4, gateway device 6, and endpoint device 8 may be performed by a data processor 730 that executes computer-readable instructions to cause the corresponding system 700 to perform these operations, or by an additional processing component 740 that operates in hardware (e.g., in an FPGA or ASIC).

[0072] As an alternative to server-type system 700, one or more of the control system 2, server 4, gateway device 6, or endpoint device 8 can be provided as different types of devices with user interfaces. Referring to Figure 8, an example of such a computing device 800 is shown. Device 800 can be a mobile user equipment (UE), a personal computer (PC), a terminal or workstation, or some other form of device.

[0073] Device 800 includes interface 840 through which it transmits and receives signals. Interface 840 can be a wired or wireless interface. For example, interface 840 may include a wired interface for connecting to a wired network (e.g., a local area network and / or the Internet). Alternatively or additionally, interface 840 may include a transceiver device configured to transmit and receive communications via a radio interface. The transceiver device may be provided, for example, by means of a radio section and an associated antenna arrangement. The antenna arrangement may be arranged inside or outside system 800.

[0074] System 800 is provided with at least one data processing entity 815, at least one random access memory 820, at least one read-only memory 825, and other possible components 830 for software and hardware assistance in performing tasks designed to be performed, including controlling access systems and other communication devices, accessing access systems and other communication devices, and communicating with access systems and other communication devices. At least one random access memory 820 and a hard disk drive 825 communicate with the data processing entity 815, which may be a data processor. Data processing, storage, and other related control devices may be located on appropriate circuit boards and / or chipsets. Users control the operation of system 800 through a suitable user interface (such as a keyboard 810) or through voice commands. A display 805 is included on system 800 for displaying visual content to the user. System 800 may also include speakers for providing audio content.

[0075] The operations performed by any of the control system 2, server 4, gateway device 6, and endpoint device 8 may be performed by a data processor 815 that executes computer-readable instructions to cause the corresponding device 800 to perform these operations, or by an additional processing component 830 that operates in hardware (e.g., in an FPGA or ASIC).

[0076] Referring to Figure 9, an example method 900 for performing a firmware update process according to an embodiment of this application is illustrated. Method 900 is implemented in system 1.

[0077] At S910, the control system 2 provides each of the multiple servers 4 with different firmware update requests (e.g., requests 230a-c). Each of the multiple firmware update requests includes the same identifier for the firmware update process (i.e., a transfer identifier). Each firmware update request also includes identifiers for different groups of gateways 6 in system 1. Each of the multiple firmware update requests includes an identifier for the same firmware. Each of the multiple firmware update requests is available in the storage device 250 of the control system 2 and is retrieved by the different servers 4.

[0078] At S920, at each of the plurality of servers 4, in response to the firmware update request received at the corresponding server 4 at S910, firmware update service 3 is hosted on server 4. As part of hosting firmware update service 3, firmware 240 to be distributed to endpoint device 8 is stored in the memory of the corresponding server 4.

[0079] At S930, in response to the firmware receiving an update request in an update request, each of the plurality of servers 4 causes a data packet including the firmware update (e.g., data packet 300a-c) to be provided to the group of gateways 6 identified by the request. Firmware update service 3 executes S930.

[0080] At S930, the transmission from server 4 to different gateways 6 can be concurrent, allowing different servers 4 to simultaneously send firmware updates to their respective gateways 6.

[0081] In response to receiving a data packet containing a firmware update from one of the servers 4, each gateway 6 provides further data packets containing the firmware update (e.g., one of data packets 400a and 400b) to several endpoint devices 8. Thus, at S940, each of the endpoint devices 8 receives a data packet containing a portion of the firmware update from one of the gateways 6.

[0082] At S940, the transmission from gateway 6 to device 8 can be concurrent, allowing different gateways 6 to simultaneously send firmware updates to their respective devices 8.

[0083] Although S930 and S940 are shown to execute sequentially, they can actually overlap in time. For example, before the entire firmware update has been sent from server 4 to gateway 6, each server 4 can transmit a portion of the firmware update to several gateways 6, and each gateway 6 can transmit that portion of the firmware update to several endpoint devices 8.

[0084] S950, S960, and S970 are executed for each of the further data packets received at S940.

[0085] At S950, each endpoint device 8 compares the transmission ID received in each further data packet received at S940 with the transmission ID received at endpoint device 8 in an earlier data packet sent from gateway 6. If a match is found, method 900 proceeds to S960, where further data packets are accepted and the firmware contained therein is stored in the memory 540 of the corresponding endpoint device 8. If no match is found, method 900 proceeds to S970, where further data packets are rejected and the firmware contained therein is deleted.

[0086] Referring to Figure 10, an example method 1000 for initiating a firmware update process according to an embodiment of this application is illustrated. Method 1000 is implemented in a control system 2.

[0087] In S1010, the control system 2 divides the multiple gateway devices 6 into multiple groups of gateway devices 6. The division of the gateways 6 can be performed evenly, so that the number of gateways contained in each group is basically the same across different groups.

[0088] At S1020, the control system 2 generates multiple firmware update requests, including providing for each firmware update request: an identifier of a different group in the group of gateway devices 6; a common identifier of the firmware update process; and an identifier of the firmware update to be provided to each of the endpoint devices 8.

[0089] At S1030, S1040, and S1050, the control system 2 provides each of the multiple firmware update requests to a different server in the multiple servers 4.

[0090] At S1030, multiple firmware update requests are stored in storage device 250.

[0091] In S1040, a notification is provided to each of the servers in server 4.

[0092] At S1050, in response to requests from each different server in server 4, each firmware update request is provided to the different server in server 4.

[0093] The steps described above as belonging to method 900 and method 1000 can be combined.

[0094] The embodiments of the subject matter and operations described in this specification can be implemented in digital electronic circuits, or in computer software, firmware, or hardware, including the structures disclosed in this specification and their equivalents, or combinations thereof. For example, hardware may include processors, microprocessors, electronic circuits, electronic components, integrated circuits, etc. Embodiments of the subject matter described in this specification can be implemented using one or more computer programs (i.e., one or more modules of computer program instructions), the computer programs being encoded on a computer storage medium for execution by a data processing apparatus or for controlling the operation of the data processing apparatus. Alternatively or additionally, program instructions may be encoded on artificially generated propagating signals, such as machine-generated electrical, optical, or electromagnetic signals, which are generated to encode information for transmission to a suitable receiver device for execution by the data processing apparatus. The computer storage medium may be or is included in a computer-readable storage device, a computer-readable storage substrate, a random or serial access memory array or device, or combinations thereof. Furthermore, although the computer storage medium is not a propagating signal, it may be a source or destination of computer program instructions encoded in artificially generated propagating signals. Computer storage media may also be or be included in one or more separate physical components or media (e.g., multiple CDs, disks or other storage devices).

[0095] While certain arrangements have been described, they are presented by way of example only and are not intended to limit the scope of protection. The inventive concepts described herein can be implemented in a variety of other forms. Furthermore, various omissions, substitutions, and changes may be made to the specific embodiments described herein without departing from the scope of protection defined in the appended claims.

[0096] Appendix A

[0097] This invention can also be defined by reference to the following terms:

[0098] Clause 1. A data processing system, comprising:

[0099] A control system that initiates a firmware update process to provide firmware updates to multiple endpoint devices;

[0100] Multiple servers, each of which hosts firmware update services and includes storage for firmware updates to be supplied to multiple endpoint devices;

[0101] Multiple gateways, each configured to interface one server in the server pool with several endpoint devices in the endpoint devices pool to supply firmware updates to the endpoint devices in the endpoint devices pool; and

[0102] These multiple endpoint devices,

[0103] The control system is configured to provide each server with a different firmware update request from a plurality of firmware update requests, wherein each firmware update request includes an identifier of a different gateway group of one or more gateways.

[0104] Each server is configured to, in response to receiving a corresponding firmware update request, distribute a data packet containing the firmware update to one or more gateways among the gateways identified by the identifier in the corresponding firmware update request, wherein each data packet includes the same identifier for the firmware update process.

[0105] Each endpoint device in the endpoint device set is configured as follows:

[0106] Receives multiple further data packets from at least one of the gateway devices, the multiple further data packets including the same identifier for firmware updates and firmware update procedures; and

[0107] In response to the determination that the same identifier for the firmware update process exists in the received further data packets, the corresponding multiple further data packets are accepted.

[0108] Clause 2. The data processing system according to Clause 1, wherein the first endpoint among the endpoints is configured as follows:

[0109] In the first subset of the corresponding further data packets, a portion of the firmware update is received from the first gateway in the gateway; and

[0110] Subsequently, in the second subset of the corresponding further data packets, another portion of the firmware update is received from the second gateway in the gateway.

[0111] Clause 3. The data processing system according to Clause 2, wherein a first endpoint among the endpoints is configured to, upon receiving such a portion of a firmware update, provide a progress indication to a second gateway among the gateways regarding the delivery of the firmware update to the first endpoint among the endpoints.

[0112] The second gateway device in the gateway device is configured to continue providing firmware updates from points identified based on progress indications.

[0113] Clause 4. The data processing system according to Clause 2 or Clause 3, wherein the first endpoint among the endpoints is configured as follows:

[0114] This portion of receiving firmware updates during the first time period, wherein during the first time period, the first endpoint in the endpoints is connected to the first gateway in the gateways; and

[0115] This additional portion of receiving firmware updates during the second time period, wherein during the second time period, the first endpoint in the endpoints is connected to the second gateway in the gateways.

[0116] Clause 5. A data processing system according to any of the preceding clauses, wherein each endpoint device is a smart meter, comprising:

[0117] Processing circuitry; and

[0118] The memory stores the firmware used to control the processing circuitry.

[0119] The processing circuit of each smart meter is configured as follows:

[0120] Update the firmware stored in memory based on the received firmware update.

[0121] Clause 6. The data processing system according to Clause 5, wherein the processing circuitry of each smart meter is configured as follows:

[0122] Under the control of the firmware, the measured values ​​of energy usage are reported to the control system.

[0123] Clause 7. The data processing system as described in Clause 5 or Clause 6, wherein the control system is a head-end system associated with the smart meter.

[0124] Clause 8. The data processing system according to any of the preceding clauses, wherein, for each endpoint device, the processing circuitry of the respective endpoint device is configured as follows:

[0125] In response to receiving one or more initial data packets including the same transport identifier, the same transport identifier is stored in the storage device of the endpoint; and

[0126] Subsequently, in response to determining a match between the same transmission identifier stored in the storage device and the same transmission identifier in each of the corresponding plurality of further data packets, it is determined that the corresponding plurality of further data packets shall be accepted.

[0127] Clause 9. The data processing system according to any of the preceding clauses, wherein a first endpoint of a plurality of endpoints is configured to: in response to determining that one or more portions of firmware are missing from the memory of the respective endpoint, send a request for the missing firmware to a first server of servers, wherein the first server of servers is configured to, in response to receiving the request, retrieve the one or more portions of firmware from its memory and return the one or more portions of firmware to the first endpoint.

[0128] Clause 10. A control system for initiating a firmware update process to provide firmware updates to multiple endpoint devices, wherein the control system includes processing circuitry configured to:

[0129] Multiple firmware update requests can be generated using the following method:

[0130] Multiple gateway devices are divided into multiple gateway device groups, and each gateway device group includes one or more gateway devices; and

[0131] For each firmware update request in the firmware update request, provide:

[0132] Identifiers for different gateway device groups within a gateway device group;

[0133] The same identifier used in the firmware update process; and

[0134] The same identifier to be provided to each endpoint device in the endpoint device firmware update; and

[0135] Each firmware update request in a plurality of firmware update requests is provided to a different server in a plurality of servers.

[0136] Clause 11. The control system according to Clause 10, wherein the control system includes a storage device, and wherein the processing circuitry is configured to:

[0137] Each firmware update request in a plurality of firmware update requests is stored in a storage device; and

[0138] For each of the multiple firmware update requests, in response to receiving the request from the corresponding server in the server, each firmware update request in the firmware update request is sent to the corresponding server in the server.

[0139] Clause 12. The control system according to Clause 11, wherein the control system includes a storage device, and wherein the processing circuitry is configured to:

[0140] For each firmware update request in a set of multiple firmware update requests:

[0141] Store the associated lock in a storage device;

[0142] When a corresponding firmware update request is sent to one of the servers, the associated lock is updated to indicate that the firmware update request is unavailable; and

[0143] In response to each request received from the server:

[0144] In response to determining that a lock associated with one of a plurality of firmware update requests indicates that the firmware update request is available, the firmware update request is selected; and

[0145] Send one of a plurality of firmware update requests to a server, from which the corresponding request is received.

[0146] Clause 13. A method comprising:

[0147] The control system provides each of the multiple firmware update requests to each of the multiple servers, wherein each firmware update request includes an identifier of a different gateway group of one or more gateways;

[0148] At each of the multiple servers:

[0149] Manages the firmware update service used in the firmware update process, providing firmware updates to each of multiple endpoint devices; and

[0150] In response to receiving a corresponding firmware update request in a firmware update request, a data packet including the firmware update is distributed to one or more gateways among those identified by the identifier in the corresponding firmware update request; and

[0151] At each endpoint device in the endpoint device:

[0152] Receives multiple further data packets from at least one of the gateways, the multiple further data packets including the same identifier for firmware updates and firmware update procedures; and

[0153] In response to determining that each of the received further data packets contains the same identifier for the firmware update process, each of the multiple further data packets is accepted.

[0154] Clause 14. A method for initiating a firmware update process to provide firmware updates to multiple endpoint devices, wherein the method includes:

[0155] Multiple firmware update requests can be generated using the following method:

[0156] Multiple gateway devices are divided into multiple gateway device groups, and each gateway device group includes one or more gateway devices; and

[0157] For each firmware update request in the firmware update request, provide:

[0158] Identifiers for different gateway device groups within a gateway device group;

[0159] The same identifier used in the firmware update process; and

[0160] The same identifier to be provided to each endpoint device in the endpoint device firmware update; and

[0161] Each firmware update request in a plurality of firmware update requests is distributed to a different server in a plurality of servers.

[0162] Clause 15. A computer program including computer-readable instructions that, when executed by at least one processor, cause a method to be performed, the method comprising:

[0163] Multiple firmware update requests can be generated using the following method:

[0164] Multiple gateway devices are divided into multiple gateway device groups, and each gateway device group includes one or more gateway devices; and

[0165] For each firmware update request in the firmware update request, provide:

[0166] Identifiers for different gateway device groups within a gateway device group;

[0167] The same identifier used in the firmware update process; and

[0168] The same identifier to be provided to each endpoint device in the endpoint device firmware update; and

[0169] Each firmware update request in a plurality of firmware update requests is distributed to a different server in a plurality of servers.

Claims

1. A data processing system, comprising: A control system that initiates a firmware update process to provide firmware updates to multiple endpoint devices; Multiple servers, each of which hosts a firmware update service and includes a memory that stores firmware updates to be supplied to the multiple endpoint devices; Multiple gateways, each of which is configured to interface one of the servers with several endpoint devices in the endpoint devices to supply the firmware update to the several endpoint devices; The control system is configured to provide each of the servers with different firmware update requests among a plurality of firmware update requests, wherein each firmware update request includes an identifier of a different gateway group of one or more of the gateways, wherein each of the servers is configured to, in response to receiving a corresponding firmware update request among the firmware update requests, distribute a data packet including the firmware update to a corresponding one or more gateways among the gateways identified by the identifier in the corresponding firmware update request among the plurality of firmware update requests, wherein each data packet includes the same identifier of the firmware update process, wherein each of the endpoint devices is configured to: receive a plurality of further data packets from at least one of the gateway devices, the plurality of further data packets including the firmware update and the same identifier of the firmware update process; and accept a corresponding plurality of further data packets in response to determining that the same identifier of the firmware update process exists in a received further data packet.

2. The data processing system according to claim 1, wherein, The first endpoint is configured to: receive a portion of the firmware update from the first gateway in the gateway in the first subset of the corresponding further data packets; and subsequently, receive another portion of the firmware update from the second gateway in the gateway in the second subset of the corresponding further data packets.

3. The data processing system according to claim 2, wherein, The first endpoint is configured to, upon receiving the portion of the firmware update, provide a progress indication to the second gateway in the gateway regarding the progress of providing the firmware update to the first endpoint, wherein the second gateway device in the gateway device is configured to continue providing the firmware update from a point identified based on the progress indication.

4. The data processing system according to claim 2, wherein, The first endpoint of the endpoints is configured to receive a portion of the firmware update during a first time period, wherein the first endpoint of the endpoints is connected to a first gateway of the gateways during the first time period. And the additional portion of receiving the firmware update during the second time period, wherein during the second time period, the first endpoint of the endpoints is connected to the second gateway of the gateways.

5. The data processing system according to claim 1, wherein, Each of the endpoint devices is a smart meter, the smart meter including: processing circuitry; and a memory storing firmware for controlling the processing circuitry, wherein the processing circuitry of each smart meter is configured to update the firmware stored in the memory based on received firmware updates.

6. The data processing system according to claim 5, wherein, The processing circuitry of each smart meter is configured to, under the control of the firmware, report the measured value of energy usage to the control system.

7. The data processing system according to claim 5, wherein, The control system is a headend system associated with the smart instrument.

8. The data processing system according to claim 1, wherein, For each of the endpoint devices, the processing circuitry of the corresponding endpoint device is configured to: in response to receiving one or more initial data packets including the same transmission identifier, such that the same transmission identifier is stored in the storage device of the endpoint; And subsequently, in response to determining a match between the same transmission identifier stored in the storage device and the same transmission identifier in each of the corresponding plurality of further data packets, it is determined that the corresponding plurality of further data packets are accepted.

9. The data processing system according to claim 1, wherein, A first endpoint of the plurality of endpoints is configured to: in response to determining that one or more portions of the firmware are missing from the memory of the corresponding endpoint, send a request for the missing firmware to a first server of the servers, wherein the first server of the servers is configured to: in response to receiving the request, retrieve the one or more portions of the firmware from its memory and return the one or more portions of the firmware to the first endpoint.

10. A control system for initiating a firmware update process to provide firmware updates to multiple endpoint devices, wherein, The control system includes a processing circuit configured to generate multiple firmware update requests by dividing multiple gateway devices into multiple gateway device groups, each gateway device group including one or more gateway devices. And for each firmware update request in the firmware update request, provide: an identifier for the different gateway device group in the gateway device group; and a common identifier for the firmware update process; And the same identifier to be provided to each of the endpoint devices in the endpoint devices; And to provide each of the plurality of firmware update requests to a different server among the plurality of servers.

11. The control system according to claim 10, wherein, The control system includes a storage device, wherein the processing circuitry is configured to: store each of the plurality of firmware update requests in the storage device; and, in response to receiving a request from a corresponding server among the servers, send each of the firmware update requests to the corresponding server among the servers for each of the plurality of firmware update requests.

12. The control system according to claim 11, wherein, The control system includes a storage device, wherein the processing circuitry is configured to: for each of the plurality of firmware update requests: store an associated lock in the storage device; update the associated lock to indicate that the firmware update request is unavailable when the corresponding firmware update request is sent to one of the servers; and in response to receiving each of the requests from the server: select the one firmware update request in response to determining that the lock associated with one of the plurality of firmware update requests indicates that the one firmware update request is available; and send the selected firmware update request from the plurality of firmware update requests to the server, wherein the corresponding request is received from the server.

13. A method comprising: The control system provides different firmware update requests from multiple firmware update requests to each of multiple servers, wherein each firmware update request includes an identifier of a different gateway group of one or more gateways; at each of the multiple servers: administers a firmware update service for a firmware update process to provide firmware updates to each of multiple endpoint devices; and in response to receiving a corresponding firmware update request from the firmware update requests, distributes a data packet including the firmware update to one or more gateways identified by the identifier in the corresponding firmware update request; and at each of the endpoint devices: receives multiple further data packets from at least one of the gateways, the multiple further data packets including the firmware update and the same identifier of the firmware update process; and in response to determining that the same identifier of the firmware update process exists in each of the received further data packets, accepts each of the multiple further data packets.

14. A method for initiating a firmware update process to provide firmware updates to multiple endpoint devices, wherein, The method includes: generating multiple firmware update requests by dividing multiple gateway devices into multiple gateway device groups, each gateway device group including one or more gateway devices; and providing each firmware update request with: an identifier of a different gateway device group within the gateway device group; a common identifier for the firmware update process; and a common identifier for the firmware update to be provided to each endpoint device among the endpoint devices; and distributing each firmware update request among the multiple firmware update requests to a different server among multiple servers.

15. A non-transitory computer-readable storage medium storing a computer program comprising computer-readable instructions that, when executed by at least one processor, cause a method to be performed, the method comprising: Multiple firmware update requests are generated by dividing multiple gateway devices into multiple gateway device groups, each of which includes one or more gateway devices. And for each firmware update request in the firmware update request, provide: an identifier for the different gateway device group in the gateway device group; and a common identifier for the firmware update process; And the same identifier to be provided to each endpoint device in the endpoint device; And to distribute each of the plurality of firmware update requests to different servers among the plurality of servers.