# US 2017/0286085 A1 · Compressed firmware update

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

- Number: US 2017/0286085 A1
- Document ID: US20170286085A1
- Status: Published application
- Kind: A1
- Application number: 15/086,024
- Filed: 2016-03-30
- Published: 2017-10-05
- Earliest claimed: 2016-03-30
- Assignees: Square, Inc.
- Applicants: Square, Inc.
- Inventors: Rodion Steshenko; Jianliang Zhao; Timothy Kordas
- Web page: https://patentgrep.com/patent/US20170286085A1

## CPC

- G06F 8/65: Updates (security arrangements therefor G06F21/57)
- G06F 8/44: {Encoding}
- G06F 8/4434: {Reducing the memory space required by the program code}
- G06F 8/654: using techniques specially adapted for alterable solid state memories, e.g. for EEPROM or flash memories
- G06Q 20/00: Payment architectures, schemes or protocols (apparatus for performing or posting payment transactions G07F7/08, G07F19/00; electronic cash registers G07G1/12)
- G06Q 20/20: Point-of-sale [POS] network systems
- G06Q 20/352: {Contactless payments by cards}
- G07F 7/0893: {the card reader reading the card in a contactless manner}
- G07G 1/0009: {Details of the software in the checkout register, electronic cash register [ECR] or point of sale terminal [POS]}
- H03M 7/30: Compression (speech analysis-synthesis for redundancy reduction G10L19/00; for image communication H04N); Expansion; Suppression of unnecessary data, e.g. redundancy reduction
- H04L 67/34: {involving the movement of software or configuration parameters (network booting or remote initial program loading [RIPL] G06F9/4416)}
- H04L 69/04: Protocols for data compression, e.g. ROHC
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)
- G06Q: INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G07F: COIN-FREED OR LIKE APPARATUS (coin sorting G07D3/00; coin testing G07D5/00; {handling coins or paper currencies apart from payment activated apparatus G07D; payment architectures, schemes or protocols G06Q20/00})
- G07G: REGISTERING THE RECEIPT OF CASH, VALUABLES, OR TOKENS
- H03M: CODING; DECODING; CODE CONVERSION IN GENERAL (using fluidic means F15C4/00; optical analogue/digital converters G02F7/00; coding, decoding or code conversion, specially adapted for particular applications, see the relevant subclasses, e.g. G01D, G01R, G06F, G06T, G09G, G10L, G11B, G11C, H04B, H04L, H04M, H04N; ciphering or deciphering for cryptography or other purposes involving the need for secrecy G09C)
- H04L: TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION (arrangements common to telegraphic and telephonic communication H04M)

## Abstract

It may be determined that a payment reader requires a firmware update, which may be transmitted to the payment reader as compressed firmware update blocks. The payment reader may receive a first portion of set of the compressed firmware update blocks. The payment reader may decompress the first portion and determine a partial firmware offset associated with the first portion. If the firmware update is incomplete, the payment reader may transmit that partial firmware offset to a second device. Based on this partial of firmware offset and an offset table that associates compressed firmware offsets with decompressed firmware offsets, the payment reader receive a second portion of compressed firmware update blocks to send to the payment reader. The payment reader may determine that entire update has been received and update its firmware.

## Claims

### Claim 1

A method of providing a firmware update to a payment reader of a payment system, the method comprising:
requesting, from a merchant device running a point-of-sale application, a firmware manifest from the payment reader;
accessing, at the payment reader, the firmware manifest;
transmitting, from the payment reader via the merchant device, the firmware manifest to a payment server;
determining, at the payment server, whether the firmware update is required based on the firmware manifest;
accessing, at the payment server, a plurality of firmware update blocks, wherein the plurality of firmware update blocks collectively comprise the firmware update;
compressing, at the payment server, each of the plurality of firmware update blocks to generate a plurality of compressed firmware update blocks;
generating, at the payment server, an offset table, wherein the offset table associates each of a plurality of compressed offsets associated with the compressed firmware update to a corresponding decompressed offset associated with a decompressed version of the firmware update;
transmitting, from the payment server to the merchant device, the offset table and the plurality of compressed firmware update blocks;
storing, at the merchant device, the offset table and the plurality of compressed firmware update blocks;
transmitting, from the merchant device, a first portion of the plurality of compressed firmware update blocks to the payment reader;
decompressing, at the payment reader, the first portion of the plurality of compressed firmware update blocks;
determining, at the payment reader, a partial firmware offset associated with the decompressed first portion;
transmitting, from the payment reader to the merchant device, the partial firmware offset;
determining, at the merchant device, a second portion of the plurality of compressed firmware update blocks to send to the payment reader, based on the partial firmware offset and the offsets stored in the offset table;
transmitting, from the merchant device, the second portion of the plurality of compressed firmware update blocks to payment reader;
decompressing, at the payment reader, the second portion of the plurality of compressed firmware update blocks;
determining, at the payment reader, that the entire firmware update has been received based at least on the decompressed first and second portions; and
updating the firmware of the payment reader based on the received firmware update.

### Claim 2 (depends on 1)

The method of claim 1, wherein determining, at the payment reader, that the entire firmware update has been received comprises:
receiving, at the payment reader, an update size for the firmware update;
comparing, at the payment reader, the size of the received firmware update to the update size; and
determining that the firmware update has been received based on the comparison.

### Claim 3 (depends on 1)

The method of claim 1, further comprising:
identifying, at the payment reader, an overlap between the first portion and the second portion, wherein the overlap is based on a common firmware update block of the first portion and the second portion and a starting point for writing the second portion of the firmware update; and
writing the second portion of the firmware update based on the overlap and the starting point.

### Claim 4 (depends on 3)

The method of claim 3, wherein the starting point for writing the second portion of the firmware update is based on a location of a cyclic redundancy check within a memory for writing the firmware update.

### Claim 5

A method of updating firmware of a wireless communication device, the method comprising:
receiving, at the wireless communication device, a compressed version of a first portion of a firmware update, wherein the first portion of the firmware update is associated with a first firmware update block;
decompressing, at the wireless communication device, the compressed version of the portion of the firmware update;
determining, at the wireless communication device, that the firmware update is incomplete;
identifying, at the wireless communication device, a decompressed offset associated with the first portion of the firmware update;
transmitting the decompressed offset from the wireless communication device to a second device;
receiving, at the wireless communication device, a compressed version of a second portion of the firmware update, wherein the beginning of the compressed version of the second portion of the firmware update is based on the decompressed offset, and wherein the second portion of the firmware update is associated with a second firmware update block;
decompressing, at the wireless communication device, the compressed version of the second portion of the firmware update;
determining, at the wireless communication device, that the firmware update has been received based at least on the first portion and the second portion; and
updating the firmware of the wireless communication device based on the received firmware update.

### Claim 6 (depends on 5)

The method of claim 5, wherein a connection between the wireless communication device and the second device comprises a Bluetooth low energy connection.

### Claim 7 (depends on 5)

The method of claim 5, wherein determining, at the wireless communication device, that the firmware update has been received comprises:
receiving, at the wireless communication device, an update size for the firmware update;
comparing, at the wireless communication device, the size of the received firmware update to the update size; and
determining that the firmware update has been received based on the comparison.

### Claim 8 (depends on 7)

The method of claim 7, further comprising:
identifying, at the wireless communication device, an overlap between the first portion and the second portion, wherein the overlap is based on a common firmware update block of the first portion and the second portion and a starting point for writing the second portion of the firmware update; and
writing the second portion of the firmware update based on the overlap and the starting point.

### Claim 9 (depends on 8)

The method of claim 8, wherein the starting point for writing the second portion of the firmware update is based on a location of a cyclic redundancy check within a memory for writing the firmware update.

### Claim 10 (depends on 5)

The method of claim 5, wherein each of the first portion and the second portion are encrypted, further comprising decrypting each of the first portion and the second portion.

### Claim 11 (depends on 5)

The method of claim 5, wherein the decompressed offset is associated with a compressed offset within an offset table, wherein the offset table associates each of a plurality of compressed offsets associated with a compressed version of the firmware update to a corresponding decompressed offset associated with a decompressed version of the firmware update.

### Claim 12 (depends on 11)

The method of claim 11, wherein the offset table is stored at the wireless communication device.

### Claim 13

A wireless communication device, comprising:
a wireless communication interface configured to receive a compressed version of a first portion of a firmware update, wherein the first portion of the firmware update is associated with a first firmware update block, transmit a decompressed offset to a second device, and receive a compressed version of a second portion of the firmware update, wherein the beginning of the compressed version of the second portion of the firmware update is based on the decompressed offset and wherein the second portion of the firmware update is associated with a second firmware update block;
a processing unit configured to decompress the compressed version of the first portion of the firmware update, determine that the firmware update is incomplete, identify a decompressed offset associated with the first portion of the firmware update, decompress the compressed version of the second portion of the firmware update, determine that the firmware update has been received based at least on the first portion and the second portion; and update the firmware of the wireless communication device based on the received firmware update; and
a memory configured to store the decompressed first portion of the firmware update and the decompressed second portion of the firmware update.

### Claim 14 (depends on 13)

The wireless communication device of claim 13, wherein a connection between the wireless communication device and the second device comprises a Bluetooth low energy connection.

### Claim 15 (depends on 13)

The wireless communication device of claim 13, wherein the processing unit is configured to receive, via the wireless communication interface, an update size for the firmware update, compare a size of the received firmware update to the update size, and determine that the firmware update has been received based on the comparison.

### Claim 16 (depends on 15)

The wireless communication device of claim 15, wherein the processing unit is configured to identify, at the wireless communication device, an overlap between the first portion and the second portion, wherein the overlap is based on a common firmware update block of the first portion and the second portion and a starting point for writing the second portion of the firmware update, and to write the second portion of the firmware update to the memory based on the overlap and the starting point.

### Claim 17 (depends on 16)

The wireless communication device of claim 16, wherein the processing unit is configured to base the starting point for writing the second portion of the firmware update on a location of a cyclic redundancy check within a memory for writing the firmware update.

### Claim 18 (depends on 13)

The wireless communication device of claim 13, wherein the processing unit is configured to decrypt each of the first portion and the second portion, wherein each of the first portion and the second portion are encrypted.

### Claim 19 (depends on 13)

The wireless communication device of claim 13, wherein the decompressed offset is associated with a compressed offset within an offset table, wherein the offset table associates each of a plurality of compressed offsets associated with a compressed version of the firmware update to a corresponding decompressed offset associated with a decompressed version of the firmware update.

### Claim 20 (depends on 19)

The wireless communication device of claim 19, wherein the offset table is stored in the memory.

### Claim 21

A non-transitory computer-readable storage medium comprising instructions stored therein, which when executed by one or more processors, cause the one or more processors to perform operations comprising:
receiving a compressed version of a first portion of a firmware update, wherein the first portion of the firmware update is associated with a first firmware update block;
decompressing the compressed version of the first portion of the firmware update;
determining that the firmware update is incomplete;
identifying a decompressed offset associated with the first portion of the firmware update;
receiving a compressed version of a second portion of the firmware update, wherein the beginning of compressed version of the second portion of the firmware update is based on the decompressed offset, and where in the second portion of the firmware update is associate with a second firmware update block;
decompressing the compressed version of the second portion of the firmware update;
determining that the firmware update has been received based at least on the first portion and the second portion; and
updating the firmware of the wireless communication device based on the received firmware update.

### Claim 22 (depends on 21)

The non-transitory computer-readable storage medium of claim 21, wherein determining, at the wireless communication device, that the firmware update has been received comprises:
receiving, at the wireless communication device, an update size for the firmware update;
comparing, at the wireless communication device, a size of the received firmware update to the update size; and
determining that the firmware update has been received based on the comparison.

### Claim 23 (depends on 22)

The non-transitory computer-readable storage medium of claim 22, wherein the instructions further comprise instructions that cause the one or more processors to perform operations comprising:
identifying, at the wireless communication device, an overlap between the first portion and the second portion, wherein the overlap is based on a common firmware update block of the first portion and the second portion and a starting point for writing the second portion of the firmware update; and
writing the second portion of the firmware update based on the overlap and the starting point.

### Claim 24 (depends on 23)

The non-transitory computer-readable storage medium of claim 23, wherein the instructions further comprise instructions that cause the one or more processors to perform operations comprising basing the starting point for writing the second portion of the firmware update on a location of a cyclic redundancy check within a memory for writing the firmware update.

### Claim 25 (depends on 21)

The non-transitory computer-readable storage medium of claim 21, wherein the instructions further comprise instructions that cause the one or more processors to perform operations comprising decrypting each of the first portion and the second portion, wherein each of the first portion and the second portion are encrypted.

### Claim 26 (depends on 21)

The non-transitory computer-readable storage medium of claim 21, wherein the instructions further comprise instructions that cause the one or more processors to perform operations comprising associating the decompressed offset with a compressed offset within an offset table, wherein the offset table associates each of a plurality of compressed offsets associated with a compressed version of the firmware update to a corresponding decompressed offset associated with a decompressed version of the firmware update.

### Claim 27 (depends on 26)

The non-transitory computer-readable storage medium of claim 26, wherein the instructions further comprise instructions that cause the one or more processors to perform operations comprising storing the offset table at the wireless communication device.
