IP Library Granted Patent US 12,210,865
Granted Patent B2
US 12,210,865 · App. 18/389,290 · Granted Jan 28, 2025

Safe modular upgrades

Inventors: Peter Hartley (Cambridge, MA); Philip Michaelson-Yeates (Ely, GB); Jonathan Tyson Williams (Cambridge, GB); Hugo Fiennes (Palo Alto, CA); Tejas Patil (Cambridge, GB); Joseph Birr-Pixton (Cambridge, GB)
Assignee: KORE WIRELESS GROUP, INC.
G06F8/656G06F8/658G06F21/572
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 12,210,865
App. No.
18/389,290
Granted
Jan 28, 2025
Kind
B2
Abstract

An Internet of Things (IoT) device is deployed with embedded software that may comprise multiple components. After deployment, updated versions of one or more components of the embedded software may become available. The IoT device maintains a manifest of the installed components. Periodically, the IoT device requests an updated copy of the manifest from an upgrade server. The installed manifest and the updated manifest are compared to determine if updated versions of any components are available. If so, the IoT device requests only the components to be updated. Prior to beginning the copying of the upgraded components, an upgrade flag is set. The IoT device then begins copying the received components into memory, replaces the manifest with the updated manifest, and clears the upgrade flag.

Claims (53)

1. A method comprising:

accessing, by one or more processors, a local manifest that identifies a first module, a second module, a local hash of the first module, and a local hash of the second module;

accessing, by the one or more processors, a remote manifest that identifies the first module, the second module, a remote hash of the first module, and a remote hash of the second module;

based on the local hash of the first module being different from the remote hash of the first module, receiving, over a network, the first module by multiplexing, on a single connection, multiple data streams comprising a first data stream for communication by an application and a second data stream for receiving the first module;

receiving, over the network, the second module;

validating the received second module; and

installing the received first module and the received second module based on the validating of the received first module and the received second module.

2. The method of claim 1 , wherein the multiplexing on the single connection of the multiple data streams comprises sending the first data stream using a first virtual channel and the second data stream using a second virtual channel.

3. The method of claim 1 , further comprising:

decrypting the received first module;

generating a hash of the received first module; and

comparing the generated hash to the remote hash to verify the received first module.

4. The method of claim 1 , further comprising:

transmitting, over the network, the local manifest; and

receiving, over the network, the remote manifest.

5. The method of claim 1 , wherein the first module is an application module.

6. The method of claim 1 , wherein the first module is a kernel module.

7. A system comprising:

one or more computer processors; and

one or more computer-readable mediums storing instructions that, when executed by the one or more computer processors, cause the system to perform operations comprising:

accessing a local manifest that identifies a first module, a second module, a local hash of the first module, and a local hash of the second module;

a remote manifest that identifies the first module, the second module, a remote hash of the first module, and a remote hash of the second module;

based on the local hash of the first module being different from the remote hash of the first module, receiving, over a network, the first module by multiplexing, on a single connection, multiple data streams comprising a first data stream for communication by an application and a second data stream for receiving the first module;

receiving, over the network, the second module;

validating the received second module; and

installing the received first module and the received second module based on the validating of the received first module and the received second module.

8. The system of claim 7 , wherein the multiplexing on the single connection of the multiple data streams comprises sending the first data stream using a first virtual channel and the second data stream using a second virtual channel.

9. The system of claim 7 , wherein the operations further comprise:

decrypting the received first module;

generating a hash of the received first module; and

comparing the generated hash to the remote hash to verify the received first module.

10. The system of claim 7 , wherein the operations further comprise:

transmitting, over the network, the local manifest; and

receiving, over the network, the remote manifest.

11. The system of claim 7 , wherein the first module is an application module.

12. The system of claim 7 , wherein the first module is a kernel module.

13. A non-transitory computer-readable medium storing instructions that, when executed by one or more computer processors of one or more computing devices, cause the one or more computing devices to perform operations comprising:

accessing a local manifest that identifies a first module, a second module, a local hash of the first module, and a local hash of the second module;

a remote manifest that identifies the first module, the second module, a remote hash of the first module, and a remote hash of the second module;

based on the local hash of the first module being different from the remote hash of the first module, receiving, over a network, the first module by multiplexing, on a single connection, multiple data streams comprising a first data stream for communication by an application and a second data stream for receiving the first module;

receiving, over the network, the second module;

validating the received second module; and

installing the received first module and the received second module based on the validating of the received first module and the received second module.

14. The non-transitory computer-readable medium of claim 13 , wherein the multiplexing on the single connection of the multiple data streams comprises sending the first data stream using a first virtual channel and the second data stream using a second virtual channel.

15. The non-transitory computer-readable medium of claim 13 , wherein the operations further comprise:

decrypting the received first module;

generating a hash of the received first module; and

comparing the generated hash to the remote hash to verify the received first module.

16. The non-transitory computer-readable medium of claim 13 , wherein the operations further comprise:

transmitting, over the network, the local manifest; and

receiving, over the network, the remote manifest.

17. The non-transitory computer-readable medium of claim 13 , wherein the first module is an application module.

18. The non-transitory computer-readable medium of claim 13 , wherein the first module is a kernel module.

Assignments (3)
SECURITY INTEREST Recorded Jul 22, 2026
From: KORE WIRLESS GROUP INC.; KORE WIRELESS INC.
To: WHITEHORSE CAPITAL ORIGINATION, LLC
Reel/Frame 075362/0959 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Nov 28, 2023
From: HARTLEY, PETER; MICHAELSON-YEATES, PHILIP; WILLIAMS, JONATHAN; FIENNES, HUGO; PATIL, TEJAS; BIRR-PIXTON, JOSEPH
To: TWILIO INC.
Reel/Frame 065685/0493 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Nov 28, 2023
From: TWILIO INC.
To: KORE WIRELESS GROUP, INC.
Reel/Frame 065685/0685 →
Continuity (2)
Continuation 17643295 · Dec 8, 2021
Related Publication 20240086180A1 · Mar 14, 2024
References Cited (14)
US 8463254B2 · Troster · 2013 [cited by examiner]
US 11027656B1 · Sagar · 2021 [cited by examiner]
US 11853743B2 · Hartley et al. · 2023 [cited by applicant]
US 20120191670A1 · Kennedy · 2012 [cited by examiner]
US 20130152070A1 · Bhullar · 2013 [cited by examiner]
US 20150288755A1 · Mosko · 2015 [cited by examiner]
US 20160364231A1 · Tati · 2016 [cited by examiner]
US 20190044887A1 · Cai · 2019 [cited by examiner]
US 20190235908A1 · Liguori · 2019 [cited by examiner]
US 20210216306A1 · Moeller · 2021 [cited by examiner]
US 20230176857A1 · Hartley et al. · 2023 [cited by applicant]
“U.S. Appl. No. 17/643,295, Non Final Office Action mailed Mar. 28, 2023”, 10 pgs. [cited by applicant]
“U.S. Appl. No. 17/643,295, Response filed Jun. 27, 2023 to Non Final Office Action mailed Mar. 28, 2023”, 9 pgs. [cited by applicant]
“U.S. Appl. No. 17/643,295, Notice of Allowance mailed Aug. 14, 2023”, 8 pgs. [cited by applicant]