# US 10,481,899 B2 · Self-healing learing system for one or more controllers

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

- Number: US 10,481,899 B2
- Document ID: US10481899B2
- Status: Granted
- Kind: B2
- Application number: 16/458,360
- Filed: 2019-07-01
- Published: 2019-10-24
- Granted: 2019-11-19
- Earliest claimed: 2017-07-25
- Assignees: Aurora Labs Ltd.
- Applicants: Aurora Labs Ltd.
- Inventors: Zohar Fox
- Web page: https://patentgrep.com/patent/US10481899B2

## CPC

- G06F 8/658: Incremental updates; Differential updates
- B60W 50/02: Ensuring safety in case of control system failures, e.g. by diagnosing, circumventing or fixing failures
- B60W 50/0205: {Diagnosing or detecting failures; Failure detection models}
- B60W 50/0225: {Failure correction strategy}
- B60W 50/04: Monitoring the functioning of the control system
- B60W 50/045: {Monitoring control system parameters}
- G06F 8/60: Software deployment
- G06F 8/65: Updates (security arrangements therefor G06F21/57)
- G06F 8/654: using techniques specially adapted for alterable solid state memories, e.g. for EEPROM or flash memories
- G06F 8/656: while running
- G06F 8/71: Version control (security arrangements therefor G06F21/57); Configuration management
- G06F 9/4401: Bootstrapping (security arrangements therefor G06F21/57)
- G06F 9/445: Program loading or initiating (bootstrapping G06F9/4401; security arrangements for program loading or initiating G06F21/57)
- G06F 9/44521: {Dynamic linking or loading; Link editing at or after load time, e.g. Java class loading}
- G06F 11/0721: {within a central processing unit [CPU]}
- G06F 11/0751: {Error or fault detection not based on redundancy (power supply failures G06F1/30; network fault management H04L41/06)}
- G06F 11/079: {Root cause analysis, i.e. error or fault diagnosis (in a hardware test environment G06F11/22; in a software test environment G06F11/36)}
- G06F 11/0793: {Remedial or corrective actions (recovery from an exception in an instruction pipeline G06F9/3861; by retry G06F11/1402; for recovering from a failure of a protocol instance or entity H04L69/40)}
- G06F 11/1433: {during software upgrading}
- G06F 11/1629: {Error detection by comparing the output of redundant processing systems}
- G06F 11/3612: {by runtime analysis (performance monitoring G06F11/3466)}
- G06F 12/0284: {Multiple user address space allocation, e.g. using different base addresses (interprocessor communication G06F15/163)}
- G06F 12/0646: {Configuration or reconfiguration}
- G06F 16/188: Virtual file systems
- G06F 21/57: Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
- G06F 21/572: {Secure firmware programming, e.g. of basic input output system [BIOS]}
- G06F 21/577: {Assessing vulnerabilities and evaluating computer system security}
- B60W 2050/021: {Means for detecting failure or malfunction}
- G06F 8/66: {of program code stored in read-only memory [ROM]}
- G06F 2212/1008: Correctness of operation, e.g. memory ordering
- G06F 2212/1044: Space efficiency improvement
- G06F 2212/1056: Simplification
- G06F 2221/033: Test or assess software
- G06N 20/00: Machine learning
- Y02D 10/00: Energy efficient computing, e.g. low power processors, power management or thermal management
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)
- B60W: CONJOINT CONTROL OF VEHICLE SUB-UNITS OF DIFFERENT TYPE OR DIFFERENT FUNCTION; CONTROL SYSTEMS SPECIALLY ADAPTED FOR HYBRID VEHICLES; ROAD VEHICLE DRIVE CONTROL SYSTEMS FOR PURPOSES NOT RELATED TO THE CONTROL OF A PARTICULAR SUB-UNIT
- G06N: COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- Y02D: CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE

## Abstract

Disclosed embodiments relate to automatically providing updates to at least one vehicle. Operations may include receiving, at a server remote from the at least one vehicle, Electronic Control Unit (ECU) activity data from the at least one vehicle, the ECU activity data corresponding to actual operation of the ECU in the at least one vehicle; determining, at the server and based on the ECU activity data, a software vulnerability affecting the at least one vehicle, the software vulnerability being determined based on a deviation between the received ECU activity data and expected ECU activity data; identifying, at the server, an ECU software update based on the determined software vulnerability; and sending, from the server, a delta file configured to update software on the ECU with a software update corresponding to the identified ECU software update.

## Claims

### Claim 1

A non-transitory computer readable medium including instructions that, when executed by at least one processor, cause the at least one processor to perform operations for automatically providing software changes, comprising:
receiving controller activity data from at least one controller, the controller activity data corresponding to actual operation of the at least one controller;
determining a software vulnerability affecting the at least one controller, the software vulnerability being determined based on a deviation between the received controller activity data and expected controller activity data;
identifying a controller software change based on the determined software vulnerability, wherein the identified controller software change is configured to adjust the at least one controller from executing a first version of controller software to a second version of controller software by updating a program counter of the at least one controller to skip a segment of code of the first version of controller software; and
sending a multi-dimensional delta file configured to change software on the at least one controller based on the identified controller software change, wherein:
the multi-dimensional delta file comprises at least one of a binary data dimension, a source attribute dimension, and a map file dimension, the multidimensional delta file comprises position-independent code, and the identified controller software change is configured to adjust the at least one controller from executing a first version of controller software to a second version of controller software.

### Claim 2 (depends on 1)

The non-transitory computer readable medium of claim 1, wherein the at least one controller includes a plurality of controllers being monitored as a group.

### Claim 3 (depends on 2)

The non-transitory computer readable medium of claim 2, wherein the plurality of controllers includes a first set of controllers being of a common controller type.

### Claim 4 (depends on 3)

The non-transitory computer readable medium of claim 3, wherein determining the software vulnerability comprises:
determining a software vulnerability affecting the first set of controllers.

### Claim 5 (depends on 4)

The non-transitory computer readable medium of claim 4, wherein determining the software vulnerability further comprises:
determining, based on the controller activity data, a second set of the plurality of controllers potentially affected by the software vulnerability.

### Claim 6 (depends on 5)

The non-transitory computer readable medium of claim 5, wherein sending the multi-dimensional delta file configured to change software on the at least one controller based on the software change comprises:
sending a plurality of delta files to the first set and the second set of controllers.

### Claim 7 (depends on 1)

The non-transitory computer-readable medium of claim 1, wherein the identifying is further based on a machine learning or artificial intelligence technique.

### Claim 8 (depends on 1)

The non-transitory computer readable medium of claim 1, wherein the instructions further comprise:
configuring, based on a multi-dimensional delta file corresponding to the second version of controller software, the second version of controller software on the at least one controller for execution; and
configuring the first version of controller software on the at least one controller to become non-executable.

### Claim 9 (depends on 8)

The non-transitory computer readable medium of claim 8, wherein the second version of controller software is deployed subsequent to the first version of controller software.

### Claim 10 (depends on 8)

The non-transitory computer readable medium of claim 8, wherein the second version of controller software is deployed prior to the first version of controller software.

### Claim 11 (depends on 1)

The non-transitory computer readable medium of claim 1, wherein the expected controller activity data comprises a model or map of controller functions.

### Claim 12 (depends on 8)

The non-transitory computer readable medium of claim 8, wherein:
the software on the at least one controller is mapped to a plurality of functional units;
the at least one controller is configured to utilize a virtual file system (VFS) to manage and track one or more versions of each of the plurality of functional units; and
the second version of controller software is the first version of controller software having one or more functional units disabled by the VFS.

### Claim 13 (depends on 1)

The non-transitory computer readable medium of claim 1, wherein the multi-dimensional delta file comprises startup code integrated into the multi-dimensional delta file and configured for executing the multi-dimensional delta file in the at least one controller.

### Claim 14 (depends on 1)

The non-transitory computer readable medium of claim 1, wherein the controller software change is performed by an installation agent for installing the controller software change on the at least one controller.

### Claim 15 (depends on 1)

The non-transitory computer readable medium of claim 1, wherein the controller software change is configured to recalibrate the at least one controller.

### Claim 16 (depends on 1)

The non-transitory computer readable medium of claim 1, wherein the instructions further comprise:
instructing the at least one controller to reboot in response to the controller software change.

### Claim 17

A system for automatically providing software changes, the system comprising:
one or more processors; and
one or more memories having instructions that, when executed by the one or more processors, cause the one or more processors to perform the operations of:
receiving controller activity data from at least one controller, the controller activity data corresponding to actual operation of the at least one controller;
determining a software vulnerability affecting the at least one controller, the software vulnerability being determined based on a deviation between the received controller activity data and expected controller activity data;
identifying a controller software change based on the determined software vulnerability, wherein the identified controller software change is configured to adjust the at least one controller from executing a first version of controller software to a second version of controller software by updating a program counter of the at least one controller to skip a segment of code of the first version of controller software; and
sending a multidimensional delta file configured to change software on the at least one controller based on the identified controller software change, wherein:
the multi-dimensional delta file comprises at least one of a binary data dimension, a source attribute dimension, and a map file dimension, the multi-dimensional delta file comprises position-independent code, and the identified controller software change is configured to adjust the at least one controller from executing a first version of controller software to a second version of controller software.

### Claim 18

A computer-implemented method for automatically providing software changes, the method comprising:
receiving controller activity data from at least one controller, the controller activity data corresponding to actual operation of the at least one controller;
determining a software vulnerability affecting the at least one controller, the software vulnerability being determined based on a deviation between the received controller activity data and expected controller activity data;
identifying a controller software change based on the software vulnerability, wherein the identified controller software change is configured to adjust the at least one controller from executing a first version of controller software to a second version of controller software by updating a program counter of the at least one controller to skip a segment of code of the first version of controller software; and
sending a multi-dimensional delta file configured to change software on the at least one controller based on the identified controller software change, wherein:
the multi-dimensional delta file comprises at least one of a binary data dimension, a source attribute dimension, and a map file dimension, the multi-dimensional delta file comprises position-independent code, and the identified controller software change is configured to adjust the at least one controller from executing a first version of controller software to a second version of controller software.
