IP Library Granted Patent US 12,206,550
Granted Patent B2
US 12,206,550 · App. 16/285,478 · Granted Jan 21, 2025

Systems and methods of remotely updating a multitude of IP connected devices

Inventors: David A. Nelson-Gal (Palo Alto, CA); Alex B. Sternberg (Forestville, CA); Eric L. Green (Newark, CA); Maxwell A. Nelson-Gal (Santa Clara, CA); Shibani P. Thakkar (Sunnyvale, CA)
Assignee: Viakoo, Inc.
H04L41/082G06F8/656H04L67/34H04L67/56
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,206,550
App. No.
16/285,478
Granted
Jan 21, 2025
Kind
B2
Abstract

Various embodiments of the present disclosure include a scalable distributed computing and network system that is configured to update multitude of passive devices in many isolated networks. The system may include a centralized update service (CUS) computing device that receives a firmware file, generates a firmware profile, identifies passive devices that include outdated firmware, select one of the identified passive devices as a test device, and send the firmware file to the test device through intermediates and proxy agents. The CUS computing device receives feedback from the test device, generates a trust score for the firmware file based on the received feedback, and determine whether to send the firmware file to the other identified passive devices based on the generated trust score.

Claims (103)

1. A method of updating software on passive devices on an isolated network, the method comprising:

receiving, via a processor in a centralized update service (CUS) computing device, a firmware file and information identifying at least one make and firmware version of the passive devices, wherein the passive devices do not initiate communications with other devices;

querying, by the processor, a global configuration database to identify the passive devices that match the identified make and have outdated firmware;

selecting, from the identified passive devices, a test group of identified passive devices that include different models and different hardware and software configurations;

generating an updated test group by updating the test group to exclude the identified passive devices in the test group associated with changing conditions;

selecting from the updated test group a test passive device that matches the identified make and has outdated firmware;

querying, using a passive device identifier (ID) as a primary lookup key, the global configuration database that stores information identifying relationships between the passive devices, isolated networks, and proxy agent components to retrieve a database record that identifies a proxy agent component that is included in a particular isolated network together with the selected test passive device;

sending, by the processor, the firmware file to the identified proxy agent component to cause the identified proxy agent component to initiate an update procedure on the selected test passive device;

receiving, by the processor, feedback from the proxy agent component, the feedback including state transition information indicating whether the update procedure caused the selected test passive device to transition into a succeeded state, a reverted state, or a failed state;

generating, by the processor, a trust score for the firmware file based on the feedback received from the proxy agent component; and

determining, by the processor and based on the generated trust score, whether to send the firmware file to other identified passive devices.

2. The method of claim 1 , wherein sending the firmware file to the identified proxy agent component to cause the identified proxy agent component to initiate the update procedure on the selected test passive device includes supporting secure communication through isolation layers via intermediary agents to proxy agent components on isolated networks.

3. The method of claim 1 , further comprising issuing a single command to securely update a plurality of passive devices in multiple isolated networks in response to determining, based on the generated trust score, that the firmware file should be sent to other identified passive devices.

4. The method of claim 3 , wherein the issuing the single command to securely update the plurality of passive devices in multiple isolated networks comprises sending the single command through multiple layers of network obstacles.

5. The method of claim 1 , wherein the CUS computing device is part of a scalable distributed computing and network architecture.

6. The method of claim 1 , wherein operations of sending the firmware file to the identified proxy agent component, receiving feedback from the proxy agent component, and generating a trust score for the firmware file based on the feedback received from the proxy agent component comprise:

sending the firmware file to one or more proxy agent components to cause the updated test group of passive devices to install the firmware file;

receiving separate discrete state transition information messages from each passive device in the updated test group of passive; and

generating the trust score based on the received separate discrete state transition information messages.

7. The method of claim 1 , further comprising:

determining selection criteria for implementing a policy;

retrieving metadata associated with the identified passive devices that include outdated firmware and match the identified make;

determining based on the determined selection criteria and retrieved metadata whether initiating the update procedure on one of the identified passive devices is consistent with implementing the policy; and

forgoing initiating the update procedure on the one of the identified passive devices in response to determining based on the determined selection criteria and retrieved metadata that initiating the update procedure on one of the identified passive devices is not consistent with implementing the policy.

8. The method of claim 7 , wherein determining based on the determined selection criteria and retrieved metadata whether initiating the update procedure on the one of the identified passive devices is consistent with implementing the policy comprises at least one of:

determining whether the one of the identified passive devices is being updated by another task;

determining whether two or more of the identified passive devices are running the same version of software;

determining whether the one of the identified passive devices has a related or overlapping coverage area as another identified passive device;

determining a priority associated with the one of the identified passive devices;

determining whether the one of the identified passive devices is a mission critical device;

determining whether two or more of the identified passive devices are included in the same group or collection of devices; or

determining whether two or more of the identified passive devices are included in conflicting groups or collections of devices.

9. The method of claim 8 , wherein forgoing initiating the update procedure on the one of the identified passive devices comprises:

forgoing selecting the one of the identified passive devices as the selected test passive device; or

forgoing sending the firmware file to the identified proxy agent component.

10. The method of claim 8 , wherein forgoing initiating the update procedure on the one of the identified passive devices comprises the identified proxy agent component forgoing initiating the update procedure on the one of the identified passive devices.

11. The method of claim 7 , further comprising:

receiving, in the identified proxy agent component, the firmware file;

receiving, in the identified proxy agent component, a list of passive devices to be updated based on the received firmware file;

determining based on the determined selection criteria and retrieved metadata whether initiating an update procedure on the one of the identified passive devices is consistent with implementing the policy; and

forgoing initiating the update procedure on the one of the passive devices in response to determining that initiating an update procedure on the one of the identified passive devices is not consistent with implementing the policy.

12. The method of claim 1 , wherein selecting at least one of the identified passive devices as the selected test passive device comprises:

rendering a list of passive devices on an electronic display associated with the CUS computing device; and

receiving user input identifying passive devices selected as test passive devices.

13. The method of claim 1 , wherein selecting at least one of the identified passive devices as the test passive device comprises:

retrieving metadata identifying at least one of:

a geographic location of at least one of the identified passive devices;

an installation facility of at least one of the identified passive devices;

a security requirement of the installation facility;

an installation location within the installation facility;

a coverage area of at least one of the identified passive devices;

a grouping of at least one of the identified passive devices; or

a priority of at least one of the identified passive devices; and

selecting at least one of the identified passive devices as the test passive device based on the retrieved metadata.

14. The method of claim 1 , further comprising augmenting the firmware file with instructions for implementing an installation policy, wherein sending the firmware file to the identified proxy agent component to cause the identified proxy agent component to initiate an update procedure on the selected test passive device comprises sending the firmware file to the identified proxy agent component to cause the identified proxy agent component to implement the installation policy based on information collected from the passive devices.

15. A server computing device, comprising:

a processor configured with processor-executable software instructions to perform operations comprising:

updating software on passive devices on an isolated network by:

receiving a firmware file and information identifying at least one make and firmware version of the passive devices, wherein the passive devices do not initiate communications with other devices;

querying a global configuration database to identify the passive devices that match the identified make and have outdated firmware;

selecting, from the identified passive devices, a test group of identified passive devices that include different models and different hardware and software configurations;

generating an updated test group by updating the test group to exclude the identified passive devices in the test group associated with changing conditions;

selecting from the updated test group a test passive device that matches the identified make and has outdated firmware;

querying, using a passive device identifier (ID) as a primary lookup key, the global configuration database that stores information identifying relationships between the passive devices, isolated networks, and proxy agent components to retrieve a database record that identifies a proxy agent component that is included in a particular isolated network together with the selected test passive device;

sending the firmware file to the identified proxy agent component to cause the identified proxy agent component to initiate an update procedure on the selected test passive device;

receiving feedback from the proxy agent component, the feedback including state transition information indicating whether the update procedure caused the passive device to transition into a succeeded state, a reverted state, or a failed state;

generating a trust score for the firmware file based on the feedback received from the proxy agent component; and

determining, based on the generated trust score, whether to send the firmware file to other identified passive devices.

16. The server computing device of claim 15 , wherein the processor is configured with processor-executable software instructions to perform operations such that operations of sending the firmware file to the identified proxy agent component, receiving feedback from the proxy agent component, and generating a trust score for the firmware file based on the feedback received from the proxy agent component comprise:

sending the firmware file to one or more proxy agent components to cause a select group of passive devices to install the firmware file;

receiving separate discrete state transition information messages from each passive device in the select group of passive devices; and

generating the trust score based on the received separate discrete state transition information messages.

17. The server computing device of claim 15 , wherein the processor is configured with processor-executable software instructions to perform operations further comprising:

determining selection criteria for implementing a policy;

retrieving metadata associated with the identified passive devices that include outdated firmware and match the identified make;

determining based on the determined selection criteria and retrieved metadata whether initiating the update procedure on one of the identified passive devices is consistent with implementing the policy; and

forgoing initiating the update procedure on the one of the passive devices in response to determining based on the determined selection criteria and retrieved metadata that initiating the update procedure on the one of the identified passive devices is not consistent with implementing the policy.

18. The server computing of claim 15 , wherein the processor is configured with processor-executable software instructions to perform operations such that selecting at least one of the identified passive devices as the test passive device comprises:

selecting at least one of the identified passive devices from the updated test group as the test passive device based on user input identifying passive devices selected as test passive devices; or

selecting at least one of the identified passive devices from the updated test group as the test passive device based on metadata identifying at least one of a geographic location of at least one of the identified passive devices, an installation facility of at least one of the identified passive devices, a security requirement of the installation facility, an installation location within the installation facility, a coverage area of at least one of the identified passive devices, a grouping of at least one of the identified passive devices, or a priority of at least one of the identified passive devices.

19. A non-transitory processor-readable storage medium having stored thereon processor-executable instructions configured to cause a processor of a server computing device to perform operations for updating software on passive devices on an isolated network, the operations comprising:

receiving a firmware file and information identifying at least one make and firmware version of the passive devices, wherein the passive devices do not initiate communications with other devices;

querying a global configuration database to identify the passive devices that include outdated firmware and match the identified make;

selecting, from the identified passive devices, a test group of identified passive devices that include different models and different hardware and software configurations;

generating an updated test group by updating the test group to exclude the identified passive devices in the test group associated with changing conditions;

selecting from the updated test group a test passive device that matches the identified make and has outdated firmware;

querying, using a passive device identifier (ID) as a primary lookup key, the global configuration database that stores information identifying relationships between the passive devices, isolated networks, and proxy agent components to retrieve a database record that identifies a proxy agent component that is included in a particular isolated network together with the selected test passive device;

sending the firmware file to the identified proxy agent component to cause the identified proxy agent component to initiate an update procedure on the selected test passive device;

receiving feedback from the proxy agent component, the feedback including state transition information indicating whether the update procedure caused the selected test passive device to transition into a succeeded state, a reverted state, or a failed state;

generating a trust score for the firmware file based on the feedback received from the proxy agent component; and

determining, based on the generated trust score, whether to send the firmware file to other identified passive devices.

20. A method of updating software on passive devices on an isolated network, the method comprising:

receiving, via a processor in a centralized update service (CUS) computing device, a firmware file and information identifying at least one make and firmware version of passive devices, wherein the passive devices do not initiate communications with other devices;

querying, by the processor, a global configuration database to identify passive devices that match the identified make and have outdated firmware;

selecting, from the identified passive devices, a test group of identified passive devices that include different models and different hardware and software configurations;

generating an updated test group by updating the test group to exclude the identified passive devices in the test group associated with changing conditions;

selecting from the updated test group a test passive device that matches the identified make and has outdated firmware;

querying, using a passive device identifier (ID) as a primary lookup key, the global configuration database that stores information identifying relationships between the passive devices, isolated networks, and proxy agent components to retrieve a database record that identifies a proxy agent component that is included in a particular isolated network together with the selected test passive device;

sending, by the processor, the firmware file to the identified proxy agent component to cause the identified proxy agent component to initiate an update procedure on the selected test passive device;

receiving, by the processor, feedback from the proxy agent component, the feedback including state transition information indicating whether the update procedure caused the selected test passive device to transition into a succeeded state, a reverted state, or a failed state;

using, by the processor, network and device security mechanisms along with a social dimension of trust to determine trustworthiness of the firmware file;

generating, by the processor, a trust score for the firmware file based on the determined trustworthiness of the firmware file and the feedback received from the proxy agent component; and

determining, by the processor, whether to send the firmware file to other identified passive devices based on the generated trust score.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 26, 2019
From: NELSON-GAL, DAVID A.; STERNBERG, ALEX B.; NELSON-GAL, MAXWELL A.; GREEN, ERIC L.; THAKKAR, SHIBANI P.
To: VIAKOO, INC.
Reel/Frame 048437/0608 →
Continuity (2)
Provisional Application 62775166 · Dec 4, 2018
Related Publication 20200177444A1 · Jun 4, 2020
References Cited (41)
US 6233577B1 · Ramasubramani et al. · 2001 [cited by applicant]
US 7519504B2 · Goldman et al. · 2009 [cited by applicant]
US 7523092B2 · Andreev et al. · 2009 [cited by applicant]
US 8548297B2 · Pashkevich et al. · 2013 [cited by applicant]
US 9456190B2 · Liu et al. · 2016 [cited by applicant]
US 9851980B1 · Li · 2017 [cited by examiner]
US 10009575B1 · Liu et al. · 2018 [cited by applicant]
US 11240043B1 · Leblang et al. · 2022 [cited by applicant]
US 20050076204A1 · Thornton et al. · 2005 [cited by applicant]
US 20100208064A1 · Lu et al. · 2010 [cited by applicant]
US 20120036220A1 · Dare · 2012 [cited by examiner]
US 20130024429A1 · Raas · 2013 [cited by applicant]
US 20130336627A1 · Calvert · 2013 [cited by applicant]
US 20140181504A1 · Almahallawy et al. · 2014 [cited by applicant]
US 20140201321A1 · Donaghey · 2014 [cited by examiner]
US 20150085115A1 · Sternberg et al. · 2015 [cited by applicant]
US 20160291959A1 · Searle · 2016 [cited by examiner]
US 20160337169A1 · Chhabra · 2016 [cited by examiner]
US 20160381030A1 · Chillappa · 2016 [cited by examiner]
US 20180109533A1 · Thubert · 2018 [cited by examiner]
US 20180227391A1 · Zimmer · 2018 [cited by examiner]
US 20180248749A1 · Chou · 2018 [cited by examiner]
US 20190205115A1 · Gomes · 2019 [cited by examiner]
US 20190215688A1 · Zavesky · 2019 [cited by examiner]
US 20190250898A1 · Yang · 2019 [cited by examiner]
US 20190288913A1 · Salgueiro · 2019 [cited by examiner]
US 20190306242A1 · Thummalapalli · 2019 [cited by examiner]
US 20190334869A1 · Grant · 2019 [cited by examiner]
US 20190391800A1 · Lin · 2019 [cited by examiner]
US 20200012492A1 · Bonar · 2020 [cited by examiner]
US 20200059372A1 · Goeringer et al. · 2020 [cited by applicant]
US 20200136836A1 · Schiattarella et al. · 2020 [cited by applicant]
US 20210377053A1 · Mahajan et al. · 2021 [cited by applicant]
WO 2015070225A1 · 2015 [cited by applicant]
WO 2016076841A1 · 2016 [cited by applicant]
Wang, et al. (2016). Toward trustworthy crowdsourcing in the social internet of things. IEEE Wireless Communications, 23(5), 30-36. Retrieved from https://ieeexplore.ieee.org/abstract/document/7721739. [cited by examiner]
Nakagawa, et al., (Jul. 2017). IoT agent platform mechanism with transparent cloud computing framework for improving IoT security. In 2017 IEEE 41st Annual Computer Software and Applications Conference (COMPSAC) (vol. 2… [cited by examiner]
International Search Report and Written Opinion for International Application No. PCT/US2014/65039 mailed Feb. 19, 2015, 17 pages. [cited by applicant]
Extended European Search Report from the Munich Patent Office issued in related Application No. 21204457.2 1218 dated Feb. 21, 2022. [cited by applicant]
Communication pursuant to Rules 70(2) and 70a(2) EPC and reference to Rule 39(1) EPC Office Action issued in related Application No. 21204457.2-1218 / 3989483 dated May 3, 2022. [cited by applicant]
Nelson-Gal, et al., Non-Final Office Action in copending U.S. Appl. No. 17/079,903, dated Oct. 25, 2023. [cited by applicant]
Cited By (1)
US 12,712,949