# US 11,907,703 B2 · System and method for phased software update deployment

> Agents: this data is available as JSON from the patentgrep API and MCP server — see https://patentgrep.com/llms.txt

- Number: US 11,907,703 B2
- Document ID: US11907703B2
- Status: Granted
- Kind: B2
- Application number: 17/694,840
- Filed: 2022-03-15
- Published: 2023-09-21
- Granted: 2024-02-20
- Earliest claimed: 2022-03-15
- Assignees: Zebra Technologies Corporation
- Applicants: Zebra Technologies Corporation
- Inventors: Ryan E. Brock; Michael J. Ringholm; Chris Kenley; Corbin P. Johnson
- Web page: https://patentgrep.com/patent/US11907703B2

## CPC

- G06F 8/65: Updates (security arrangements therefor G06F21/57)
- H04L 67/34: {involving the movement of software or configuration parameters (network booting or remote initial program loading [RIPL] G06F9/4416)}
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)
- H04L: TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION (arrangements common to telegraphic and telephonic communication H04M)

## Abstract

A software deployment method in a server includes: obtaining a software update for deployment to a plurality of media processing devices; performing a primary deployment phase by: (i) transmitting the software update to selected media processing devices according to a primary deployment rate; (ii) responsive to the transmission, for each selected media processing device, updating a status indicator representing whether deployment of the software update succeeded; and (iii) determining, based on the status indicators, whether an update promotion condition has been satisfied; in response to determining that the update promotion condition has been satisfied, performing a secondary deployment phase by: transmitting the software update to further selected media processing devices according to a secondary deployment rate exceeding the primary deployment rate.

## Claims

### Claim 1

A software deployment method in a server, the method comprising:
obtaining a software update for deployment to a plurality of devices;
performing a primary deployment phase by:
(i) transmitting the software update to selected devices of the plurality of devices according to a primary deployment rate for each of a sequence of time windows by selecting a subset of the plurality of devices based on stored activity data and transmitting the updated software to each device in the subset, a number of devices in the subset is limited by a primary subset limit;
(ii) responsive to the transmission, for each selected device, updating a status indicator representing whether deployment of the software update succeeded; and
(iii) determining, based on the status indicators, whether an update promotion condition has been satisfied;
in response to determining that the update promotion condition has been satisfied, performing a secondary deployment phase by:
transmitting the software update to further selected devices of the plurality of devices according to a secondary deployment rate exceeding the primary deployment rate for each of a sequence of further time windows by selecting the further subset of the devices based on stored activity data and transmitting the updated software to each device in the further subset, a number of devices in the further subset is limited by a secondary subset limit greater than the primary subset limit.

### Claim 2 (depends on 1)

The method of claim 1, wherein the stored activity data indicates historical activity for the plurality of devices; and
wherein selecting the subset includes selecting the plurality of devices with historical activity below a threshold during a current time window.

### Claim 3 (depends on 1)

The method of claim 1, wherein selecting the subset includes determining, based on the activity data, at least one of:
(i) that each device in the subset is not currently active, and
(ii) that each device in the subset has not been active within a configurable period preceding a current time.

### Claim 4 (depends on 1)

The method of claim 1, wherein determining whether the update promotion condition has been satisfied includes:
determining whether a threshold portion of the plurality of devices in the subset have status indicators corresponding to successful deployment of the updated software.

### Claim 5 (depends on 1)

The method of claim 1, further comprising, prior to performing the primary deployment phase, performing a testing deployment phase by:
transmitting, to a testing subset of the plurality of devices, the software update and an output command; and
receiving a threshold number of update confirmations.

### Claim 6 (depends on 5)

The method of claim 5, further comprising, prior to performing the testing deployment phase, performing a monitored deployment phase by:
transmitting the software update to a monitored subset of the plurality of devices; and
receiving a command to proceed to the testing deployment phase.

### Claim 7

A computing device, comprising:
a communications interface; and
a processor configured to:
obtain a software update for deployment to a plurality of devices;
perform a primary deployment:
(i) transmit the software update to selected devices of the plurality of devices according to a primary deployment rate for each of a sequence of time windows based on selection a subset of the plurality of devices based on stored activity data and transmission of the updated software to each device in the subset, a number of devices in the subset is limited by a primary subset limit;
(ii) responsive to the transmission, for each selected device, update a status indicator representing whether deployment of the software update succeeded; and
(iii) determine, based on the status indicators, whether an update promotion condition has been satisfied;
in response to determining that the update promotion condition has been satisfied, to perform a secondary deployment phase:
transmit the software update to further selected devices of the plurality of devices according to a secondary deployment rate exceeding the primary deployment rate for each of a sequence of further time windows based on selection of a further subset of the devices based on stored activity data and transmission of the updated software to each device in the further subset, a number of devices in the further subset is limited by a secondary subset limit greater than the primary subset limit.

### Claim 8 (depends on 7)

The computing device of claim 7, wherein the stored activity data indicates historical activity for the plurality of devices; and
wherein the processor is configured, to select the subset, to select the plurality of devices with historical activity below a threshold during a current time window.

### Claim 9 (depends on 7)

The computing device of claim 7, wherein the processor is configured, to select the subset, to determine, based on the activity data, at least one of:
(i) that each device in the subset is not currently active, and
(ii) that each device in the subset has not been active within a configurable period preceding a current time.

### Claim 10 (depends on 7)

The computing device of claim 7, wherein the processor is configured, to determine whether the update promotion condition has been satisfied, to:
determine whether a threshold portion of the devices in the subset have status indicators corresponding to successful deployment of the updated software.

### Claim 11 (depends on 7)

The computing device of claim 7, wherein the processor is further configured, to perform a testing deployment phase prior to the primary deployment phase, to:
transmit, to a testing subset of the plurality of devices, the software update and an output command; and
receive a threshold number of update confirmations.

### Claim 12 (depends on 11)

The computing device of claim 11, wherein the processor is further configured, to perform a monitored deployment phase prior to the testing deployment phase, to:
transmit the software update to a monitored subset of the plurality of devices; and
receive a command to proceed to the testing deployment phase.

### Claim 13

A non-transitory computer-readable medium storing instructions executable by a processor to:
obtain a software update for deployment to a plurality of devices;
to perform a primary deployment:
(i) transmit the software update to selected devices of the plurality of devices according to a primary deployment rate for each of a sequence of time windows based on selection a subset of the plurality of devices based on stored activity data and transmission of the updated software to each device in the subset, a number of devices in the subset is limited by a primary subset limit;
(ii) responsive to the transmission, for each selected device, update a status indicator representing whether deployment of the software update; and
(iii) determine, based on the status indicators, whether an update promotion condition has been satisfied;
in response to determining that the update promotion condition has been satisfied, to perform a secondary deployment phase:
transmit the software update to further selected devices of the plurality of devices according to a secondary deployment rate exceeding the primary deployment rate for each of a sequence of further time windows based on selection of a further subset of the devices based on stored activity data and transmission of the updated software to each device in the further subset, a number of devices in the further subset is limited by a secondary subset limit greater than the primary subset limit.
