Subsequent accessory setup

By setting up components to manage the list of added attachments and communicating with applications in the new ecosystem, the problem of inefficient electronic device settings in the prior art is solved, and more efficient and secure device connections and configurations are achieved.

CN120077377APending Publication Date: 2025-05-30APPLE INC
View PDF 0 Cites 0 Cited by

Patent Information

Application Number
CN202380074077.0
Authority / Receiving Office
CN · China
Patent Type
Applications(China)
Current Assignee / Owner
Priority Date
2023-09-19
Filing Date
2023-09-20
Publication Date
2025-05-30

AI Technical Summary

Technical Problem

The prior art is inefficient and complex when used to set up electronic devices, making it difficult to effectively connect and configure controllers and accessories.

Method used

Add these attachments to the new ecosystem by setting up components to maintain a list of added attachments and communicating with applications for the new ecosystem. In addition, different communication protocols are employed to provide different levels of security and privacy and to enable the setup component to act as a bridge for applications so that all or most of the communication with the attachments can be performed through the setup component.

Benefits of technology

Improves the efficiency and effectiveness of electronic device settings, simplifies user operations, and provides higher security and privacy protection.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure CN120077377A_ABST
    Figure CN120077377A_ABST
Patent Text Reader

Abstract

Some techniques are described herein for a setup component of a controller to add an attachment that has been added to another ecosystem to a new ecosystem (e.g., a packet of one or more attachments and one or more controllers added to an application and / or a packet of one or more attachments). Such techniques may include the setup component maintaining a list of attachments for which the setup component has added to the other ecosystem. Using the list, the setup component adds the attachments to the nascent system through communication with the attachments in the list and an application corresponding to the nascent system.
Need to check novelty before this filing date? Find Prior Art

Description

[0001] Cross - Reference to Related Applications

[0002] This application claims the benefit of U.S. Provisional Application No. 63 / 418,441, filed on Oct. 21, 2022, entitled "SUBSEQUENT ACCESSORY SETUP", which is hereby incorporated by reference in its entirety for all purposes. BACKGROUND OF THE DISCLOSURE

[0003] Interconnectivity of electronic devices has become increasingly strong. For example, controllers (e.g., user devices and / or computer systems) are typically connected to accessories (e.g., speakers, fans, and thermostats) in a home or office. As the configurations of those connections have become more complex, setting up such electronic devices has become more difficult. Thus, there is a need for improved techniques for setting up different electronic devices. SUMMARY OF THE DISCLOSURE

[0004] Current techniques for setting up electronic devices (e.g., controllers, accessories, user devices, and / or computer systems) are generally ineffective and / or inefficient. For example, some techniques require a user to open an application of an electronic device and set up connections with different electronic devices through communication between the application and the different electronic devices. The present disclosure provides more effective and / or efficient techniques for setting up electronic devices using examples of applications of controllers connected to accessories. It should be recognized that other types of electronic devices can be used with the techniques described herein. For example, a smart phone can use the techniques described herein to connect to a laptop computer. Additionally, the techniques optionally supplement or replace other techniques for connecting electronic devices.

[0005] Some techniques are described herein for a setup component of a controller to add an accessory that has been added to another ecosystem to a new ecosystem (e.g., a grouping of one or more accessories and one or more controllers and / or a grouping of one or more accessories added to an application). Such techniques can include the setup component maintaining a list of accessories to which the setup component has added to the other ecosystem. Using the list, the setup component adds the accessories to the new ecosystem by communicating with the accessories in the list and an application corresponding to the new ecosystem.

[0006] Modifications to the techniques described above include using different communication protocols for communication with or from the setup component compared to communication with or from an application. In some examples, this modification provides different levels of security and / or privacy based on the different communication protocols used.

[0007] Another modification to such technology includes making the settings component act as a bridge for the application such that all or most communication from the application to the accessory occurs through the settings component. In some examples, this another modification allows the application to control the accessory regardless of whether the application is configured to communicate using a communication protocol compatible with the accessory.

[0008] In some examples, a method is described that is performed at a settings component of a computer system. In some examples, the method includes: identifying an accessory for which the settings component of the computer system has been granted one or more first permissions relative to the accessory, where the accessory is different from the computer system; transmitting to the accessory a request to add a first credential to grant one or more second permissions relative to the accessory; and transmitting to an application of the computer system settings information for the accessory, where the settings information is intended to be used by the application to communicate with the accessory to grant the one or more second permissions to the application relative to the accessory, and where the application is different from the settings component.

[0009] In some examples, a non-transitory computer-readable storage medium is described that stores one or more programs configured to be executed by one or more processors of a computer system. In some examples, the one or more programs include instructions for: identifying an accessory for which the settings component of the computer system has been granted one or more first permissions relative to the accessory, where the accessory is different from the computer system; transmitting to the accessory a request to add a first credential to grant one or more second permissions relative to the accessory; and transmitting to an application of the computer system settings information for the accessory, where the settings information is intended to be used by the application to communicate with the accessory to grant the one or more second permissions to the application relative to the accessory, and where the application is different from the settings component.

[0010] In some examples, a transitory computer-readable storage medium is described that stores one or more programs configured to be executed by one or more processors of a computer system. In some examples, the one or more programs include instructions for: identifying an accessory for which the settings component of the computer system has been granted one or more first permissions relative to the accessory, where the accessory is different from the computer system; transmitting to the accessory a request to add a first credential to grant one or more second permissions relative to the accessory; and transmitting to an application of the computer system settings information for the accessory, where the settings information is intended to be used by the application to communicate with the accessory to grant the one or more second permissions to the application relative to the accessory, and where the application is different from the settings component.

[0011] In some examples, a computer system is described. In some examples, the computer system includes: one or more processors; and a memory that stores one or more programs configured to be executed by the one or more processors. In some examples, the one or more programs include instructions for: identifying an attachment for which the computer system's settings component has been granted one or more first permissions relative to the attachment, where the attachment is different from the computer system; transmitting to the attachment a request to add a first credential to grant one or more second permissions relative to the attachment; and transmitting the attachment's settings information to an application of the computer system, where the settings information is intended to be used by the application to communicate with the attachment to grant the application the one or more second permissions relative to the attachment, and where the application is different from the settings component.

[0012] In some examples, a computer system is described. In some examples, the computer system includes components for performing each of the following steps: identifying an attachment for which the computer system's settings component has been granted one or more first permissions relative to the attachment, where the attachment is different from the computer system; transmitting to the attachment a request to add a first credential to grant one or more second permissions relative to the attachment; and transmitting the attachment's settings information to an application of the computer system, where the settings information is intended to be used by the application to communicate with the attachment to grant the application the one or more second permissions relative to the attachment, and where the application is different from the settings component.

[0013] In some examples, a computer program product is described. In some examples, the computer program product includes one or more programs configured to be executed by one or more processors of a computer system. In some examples, the one or more programs include instructions for: identifying an attachment for which the computer system's settings component has been granted one or more first permissions relative to the attachment, where the attachment is different from the computer system; transmitting to the attachment a request to add a first credential to grant one or more second permissions relative to the attachment; and transmitting the attachment's settings information to an application of the computer system, where the settings information is intended to be used by the application to communicate with the attachment to grant the application the one or more second permissions relative to the attachment, and where the application is different from the settings component.

[0014] In some examples, a method is described that is performed at an application of a computer system. In some examples, the method includes: transmitting a request for an identification of one or more attachments to a settings component of the computer system, the settings component having been granted one or more first permissions for the identification of the one or more attachments, wherein the one or more attachments are different from the computer system; after transmitting the request for the identification of the one or more attachments, receiving settings information of a first attachment from the settings component; and transmitting to the first attachment a request to add credentials to grant one or more first permissions to the application of the computer system with respect to the first attachment, wherein the request to add the credentials includes at least a portion of the settings information.

[0015] In some examples, a non-transitory computer-readable storage medium is described that stores one or more programs configured to be executed by one or more processors of a computer system. In some examples, the one or more programs include instructions for: transmitting a request for an identification of one or more attachments to a settings component of the computer system, the settings component having been granted one or more first permissions for the identification of the one or more attachments, wherein the one or more attachments are different from the computer system; after transmitting the request for the identification of the one or more attachments, receiving settings information of a first attachment from the settings component; and transmitting to the first attachment a request to add credentials to grant one or more first permissions to an application of the computer system with respect to the first attachment, wherein the request to add the credentials includes at least a portion of the settings information.

[0016] In some examples, a transitory computer-readable storage medium is described that stores one or more programs configured to be executed by one or more processors of a computer system. In some examples, the one or more programs include instructions for: transmitting a request for an identification of one or more attachments to a settings component of the computer system, the settings component having been granted one or more first permissions for the identification of the one or more attachments, wherein the one or more attachments are different from the computer system; after transmitting the request for the identification of the one or more attachments, receiving settings information of a first attachment from the settings component; and transmitting to the first attachment a request to add credentials to grant one or more first permissions to an application of the computer system with respect to the first attachment, wherein the request to add the credentials includes at least a portion of the settings information.

[0017] In some examples, a computer system is described. In some examples, the computer system includes: one or more processors; and a memory that stores one or more programs configured to be executed by the one or more processors. In some examples, the one or more programs include instructions for: transmitting a request for an identification of one or more attachments to a settings component of the computer system, the settings component having been granted one or more first permissions for the identification of the one or more attachments, wherein the one or more attachments are different from the computer system; after transmitting the request for the identification of the one or more attachments, receiving, from the settings component, settings information for a first attachment; and transmitting to the first attachment a request for adding credentials to grant one or more first permissions to an application of the computer system with respect to the first attachment, wherein the request for adding the credentials includes at least a portion of the settings information.

[0018] In some examples, a computer system is described. In some examples, the computer system includes components for performing each of the following steps: transmitting a request for an identification of one or more attachments to a settings component of the computer system, the settings component having been granted one or more first permissions for the identification of the one or more attachments, wherein the one or more attachments are different from the computer system; after transmitting the request for the identification of the one or more attachments, receiving, from the settings component, settings information for a first attachment; and transmitting to the first attachment a request for adding credentials to grant one or more first permissions to an application of the computer system with respect to the first attachment, wherein the request for adding the credentials includes at least a portion of the settings information.

[0019] In some examples, a computer program product is described. In some examples, the computer program product includes one or more programs configured to be executed by one or more processors of a computer system. In some examples, the one or more programs include instructions for: transmitting a request for an identification of one or more attachments to a settings component of the computer system, the settings component having been granted one or more first permissions for the identification of the one or more attachments, wherein the one or more attachments are different from the computer system; after transmitting the request for the identification of the one or more attachments, receiving, from the settings component, settings information for a first attachment; and transmitting to the first attachment a request for adding credentials to grant one or more first permissions to an application of the computer system with respect to the first attachment, wherein the request for adding the credentials includes at least a portion of the settings information.

[0020] In some examples, a method performed at an accessory is described. In some examples, the method includes: receiving, from a settings component of a computer system, a request to re-establish a first communication channel between the settings component and the accessory, where the accessory is different from the computer system; receiving, via the first communication channel, a request to add credentials to grant one or more permissions with respect to the accessory; and, after receiving the request to add the credentials from the settings component, receiving, from an application of the computer system, a request to add the credentials to grant the one or more permissions with respect to the accessory to the application, where the application is different from the settings component.

[0021] In some examples, a non-transitory computer-readable storage medium is described that stores one or more programs configured to be executed by one or more processors of an accessory. In some examples, the one or more programs include instructions for: receiving, from a settings component of a computer system, a request to re-establish a first communication channel between the settings component and the accessory, where the accessory is different from the computer system; receiving, via the first communication channel, a request to add credentials to grant one or more permissions with respect to the accessory; and, after receiving the request to add the credentials from the settings component, receiving, from an application of the computer system, a request to add the credentials to grant the one or more permissions with respect to the accessory to the application, where the application is different from the settings component.

[0022] In some examples, a transitory computer-readable storage medium is described that stores one or more programs configured to be executed by one or more processors of an accessory. In some examples, the one or more programs include instructions for: receiving, from a settings component of a computer system, a request to re-establish a first communication channel between the settings component and the accessory, where the accessory is different from the computer system; receiving, via the first communication channel, a request to add credentials to grant one or more permissions with respect to the accessory; and, after receiving the request to add the credentials from the settings component, receiving, from an application of the computer system, a request to add the credentials to grant the one or more permissions with respect to the accessory to the application, where the application is different from the settings component.

[0023] In some examples, an attachment is described. In some examples, the attachment includes: one or more processors; and a memory that stores one or more programs configured to be executed by the one or more processors. In some examples, the one or more programs include instructions for: receiving, from a settings component of a computer system, a request to re - establish a first communication channel between the settings component and the attachment, where the attachment is different from the computer system; receiving, via the first communication channel, a request to add credentials to grant one or more permissions with respect to the attachment; and, after receiving the request to add the credentials from the settings component, receiving, from an application of the computer system, a request to add the credentials to grant the one or more permissions with respect to the attachment to the application, where the application is different from the settings component.

[0024] In some examples, an attachment is described. In some examples, the attachment includes components for performing each of the following steps: receiving, from a settings component of a computer system, a request to re - establish a first communication channel between the settings component and the attachment, where the attachment is different from the computer system; receiving, via the first communication channel, a request to add credentials to grant one or more permissions with respect to the attachment; and, after receiving the request to add the credentials from the settings component, receiving, from an application of the computer system, a request to add the credentials to grant the one or more permissions with respect to the attachment to the application, where the application is different from the settings component.

[0025] In some examples, a computer program product is described. In some examples, the computer program product includes one or more programs configured to be executed by one or more processors of an attachment. In some examples, the one or more programs include instructions for: receiving, from a settings component of a computer system, a request to re - establish a first communication channel between the settings component and the attachment, where the attachment is different from the computer system; receiving, via the first communication channel, a request to add credentials to grant one or more permissions with respect to the attachment; and, after receiving the request to add the credentials from the settings component, receiving, from an application of the computer system, a request to add the credentials to grant the one or more permissions with respect to the attachment to the application, where the application is different from the settings component. BRIEF DESCRIPTION OF THE DRAWINGS

[0026] To better understand the various described embodiments, reference should be made to the following detailed description in conjunction with the accompanying drawings, in which like reference numerals indicate corresponding parts throughout the drawings.

[0027] Figure 1 is a block diagram illustrating a computing system.

[0028] Figure 2 is a block diagram illustrating a device having an interconnect subsystem.

[0029] Figure 3 is a block diagram illustrating a controller communicating with multiple accessories.

[0030] Figure 4 is a flowchart illustrating a technique for setting up an accessory with a subsequent ecosystem using one or more communication protocols.

[0031] Figure 5A is a flowchart illustrating a technique for setting up an accessory with a subsequent ecosystem using a setup component as a bridge.

[0032] Figure 5B is a flowchart illustrating a technique for communicating with a setup component as a bridge.

[0033] Figure 6 is a flowchart illustrating a method for subsequent setup of an accessory from the perspective of a setup component according to some embodiments.

[0034] Figure 7 is a flowchart illustrating a method for subsequent setup of an accessory from the perspective of an application according to some embodiments.

[0035] Figure 8 is a flowchart illustrating a method for subsequent setup of an accessory from the perspective of the accessory according to some embodiments. Detailed Description

[0036] The following description sets forth exemplary techniques, methods, parameters, systems, computer-readable storage media, etc. However, it should be recognized that this description is not intended as a limitation on the scope of the present disclosure. Instead, this description is provided as a description of exemplary embodiments.

[0037] The methods described herein may include one or more steps depending on the satisfaction of one or more conditions. It should be understood that a method may occur in multiple iterations of the same process, where different steps of the method are satisfied in different iterations. For example, if a method requires a first step to be performed when it is determined that a set of one or more criteria is satisfied, and a second step to be performed when it is determined that the set of one or more criteria is not satisfied, one of ordinary skill in the art will understand that the steps of the method are repeated until both conditions are satisfied in no particular order. Thus, a method described as having steps that depend on the satisfaction of conditions can be rewritten as a method that repeats until each of the conditions described in the method is satisfied. However, this is not required for system claims or computer-readable medium claims, where the system claims or computer-readable medium claims include instructions for performing one or more steps that depend on the satisfaction of one or more conditions. Because the instructions for system claims or computer-readable medium claims are stored in one or more processors and / or at one or more memory locations, the system claims or computer-readable medium claims include logic that can determine whether one or more conditions have been satisfied without explicitly repeating the steps of the method until all of the conditions upon which the steps of the method are based have been satisfied. One of ordinary skill in the art will also understand that, similar to a method having steps that depend on circumstances, a system or computer-readable storage medium may repeat the steps of the method as many times as needed to ensure that all of the steps that depend on circumstances have been performed.

[0038] Although the following description uses terms such as "first", "second", etc. to describe various elements, these elements should not be limited by the terms. In some examples, these terms are used to distinguish individual elements. For example, without departing from the scope of the various described embodiments, a first subsystem may be referred to as a second subsystem, and similarly, a subsystem device may be referred to as a subsystem device. In some examples, the first subsystem and the second subsystem are two separate references to the same subsystem. In some embodiments, both the first subsystem and the second subsystem are subsystems, but they are not the same subsystem or the same type of subsystem.

[0039] The terms used in the description of the various embodiments described herein are for the purpose of describing particular embodiments only and are not intended to be limiting. As used in the description of the various embodiments and the appended claims, the singular forms "a", "an", and "the" are intended to include the plural forms as well, unless the context clearly indicates otherwise. It will also be understood that the term "and / or" as used herein refers to and encompasses any and all possible combinations of one or more of the associated listed items. It will also be understood that the terms "comprises" and / or "comprising", when used in this specification, specify the presence of stated features, integers, steps, operations, elements, and / or components, but do not preclude the presence or addition of one or more other features, integers, steps, operations, elements, components, and / or groups thereof.

[0040] Depending on the context, the term "if" is optionally interpreted to mean "when", "upon", "in response to determining", "in response to detecting", or "in accordance with a determination". Similarly, depending on the context, the phrase "if it is determined that..." or "if [the stated condition or event] is detected" is optionally interpreted to mean "when it is determined that...", "in response to determining...", "when [the stated condition or event] is detected", "in response to detecting [the stated condition or event]", or "in accordance with a determination of [the stated condition or event]".

[0041] Turning to Figure 1 , a block diagram of a computing system 100 is illustrated. Computing system 100 is a non-limiting example of a computing system that can be used to perform the functionality described herein. It should be recognized that other computer architectures of computing systems can be used to perform the functionality described herein.

[0042] In the illustrated example, computing system 100 includes a processor subsystem 110 that communicates (e.g., wired or wirelessly) with a memory 120 (e.g., system memory) and an I / O interface 130 via an interconnect 150 (e.g., a system bus, one or more memory locations, or other communication channels for connecting multiple components of computing system 100). Additionally, I / O interface 130 communicates (e.g., wired or wirelessly) with an I / O device 140. In some examples, I / O interface 130 and I / O device 140 are included together such that the two are a single component. It should be recognized that there can be one or more I / O interfaces, where each I / O interface communicates with one or more I / O devices. In some examples, multiple instances of processor subsystem 110 can communicate via interconnect 150.

[0043] The computing system 100 can be any type of device among various types of devices, including but not limited to a system on a chip, a server system, a personal computer system (e.g., a smart phone, a smart watch, a wearable device, a tablet computer, a laptop computer, and / or a desktop computer), a sensor, etc. In some examples, for the purpose of modifying physical components in response to instructions, the computing system 100 is included or communicates with the physical components. In some examples, the computing system 100 receives instructions for modifying physical components, and in response to the instructions, causes the physical components to be modified. In some examples, the physical components are modified via an actuator, an electrical signal, and / or an algorithm. Examples of such physical components include acceleration controls, brakes, gearboxes, hinges, motors, pumps, refrigeration systems, springs, suspension systems, steering controls, pumps, vacuum systems, and / or valves. In some examples, a sensor includes one or more hardware components that detect information about the physical environment near (e.g., around) the sensor. In some examples, the hardware components of the sensor include a sensing component (e.g., an image sensor or a temperature sensor), a transmitting component (e.g., a laser or a radio transmitter), a receiving component (e.g., a laser or a radio receiver), or any combination thereof. Examples of sensors include angle sensors, chemical sensors, brake pressure sensors, contact sensors, non-contact sensors, electrical sensors, flow sensors, force sensors, gas sensors, humidity sensors, image sensors (e.g., camera sensors, radar sensors, and / or lidar sensors), inertial measurement units, leak sensors, level sensors, light detection and ranging systems, metal sensors, motion sensors, particle sensors, photoelectric sensors, position sensors (e.g., global positioning system), sediment sensors, pressure sensors, proximity sensors, radio detection and ranging systems, radiation sensors, speed sensors (e.g., measuring the speed of an object), temperature sensors, time-of-flight sensors, torque sensors, and ultrasonic sensors. In some examples, a sensor includes a combination of multiple sensors. In some examples, sensor data is captured by fusing data from one sensor with data from one or more other sensors. Although in Figure 1 a single computing system is shown, the computing system 100 can also be implemented as two or more computing systems that operate together.

[0044] In some examples, the processor subsystem 110 includes one or more processors or processing units configured to execute program instructions to perform the functionality described herein. For example, the processor subsystem 110 can execute an operating system, a middleware system, one or more applications, or any combination thereof.

[0045] In some examples, an operating system manages the resources of computing system 100. Examples of types of operating systems covered herein include batch operating systems (e.g., Multiple Virtual Storage (MVS)), time-sharing operating systems (e.g., Unix), distributed operating systems (e.g., Advanced Interactive Executive (AIX)), network operating systems (e.g., Microsoft Windows Server), and real-time operating systems (e.g., QNX). In some examples, the operating system includes various programs, sets of instructions, software components, and / or drivers for controlling and managing general system tasks (e.g., memory management, storage device control, power management, etc.) and for facilitating communication between various hardware and software components. In some examples, the operating system uses a priority-based scheduler that assigns priorities to different tasks that the processor subsystem 110 may execute. In such examples, the priority assigned to a task is used to identify the next task to be executed. In some examples, the priority-based scheduler identifies the next task to be executed when a previous task has completed execution. In some examples, the highest-priority task runs to completion unless another higher-priority task is ready.

[0046] In some examples, a middleware system provides one or more services and / or capabilities to applications (e.g., one or more applications running on processor subsystem 110) that are outside of what the operating system provides (e.g., data management, application services, messaging, authentication, API management, etc.). In some examples, the middleware system is designed for heterogeneous computer clusters to provide hardware abstraction, low-level device control, implementation of common functionality, messaging between processes, package management, or any combination thereof. Examples of middleware systems include Lightweight Communications and Marshalling (LCM), PX4, Robot Operating System (ROS), and ZeroMQ. In some examples, the middleware system uses a graph architecture to represent processes and / or operations, where processing occurs in nodes that can receive, publish, and reuse sensor data messages, control messages, status messages, planning messages, actuator messages, and other messages. In such examples, the graph architecture can define applications (e.g., applications executing on processor subsystem 110 as described above) such that different operations of the application are included with different nodes in the graph architecture.

[0047] In some examples, a publish-subscribe model is used to perform the transfer of messages from a first node in a graph architecture to a second node in the graph architecture, where the first node publishes data on a channel to which the second node can subscribe. In such examples, the first node may store the data in a memory (e.g., memory 120 or some local memory of the processor subsystem 110) and notify the second node that the data has been stored in the memory. In some examples, the first node notifies the second node that the data has been stored in the memory by transmitting a pointer (e.g., a memory pointer, such as an identification of a memory location) to the second node, such that the second node can access the data from the location where the first node stored the data. In some examples, the first node will directly transmit the data to the second node, such that the second node will not need to access the memory based on the data received from the first node.

[0048] Memory 120 may include a computer-readable medium (e.g., a non-transitory or transitory computer-readable medium) that can be used to store (e.g., is configured to store, is assigned to store, and / or stores) program instructions executable by the processor subsystem 110 to cause the computing system 100 to perform the various operations described herein. For example, memory 120 may store program instructions for implementing the functionality associated with methods 800, 900, 1000, 11000, 12000, 1300, 1400, and 1500 described below.

[0049] Memory 120 can be implemented using different physical non-transitory memory media such as hard disk storage devices, floppy disk storage devices, removable disk storage devices, flash memory, random access memory (RAM - SRAM, EDO RAM, SDRAM, DDR SDRAM, RAMBUS RAM, etc.), read-only memory (PROM, EEPROM, etc.), etc. The memory in the computing system 100 is not limited to the main storage device, such as memory 120. The computing system 100 may also include other forms of storage devices such as cache memory in the processor subsystem 110 and auxiliary storage devices (e.g., hard disk drives, storage arrays, etc.) on the I / O device 140. In some examples, these other forms of storage devices may also store program instructions executable by the processor subsystem 110 to perform the operations described herein. In some examples, the processor subsystem 110 (or each processor within the processor subsystem 110) includes a cache or other form of on-board memory.

[0050] The I / O interface 130 can be any one of various types of interfaces configured to communicate with other devices. In some examples, the I / O interface 130 includes a bridge chip (e.g., a south bridge) from a front-side bus to one or more back-side buses. The I / O interface 130 can communicate with one or more I / O devices (e.g., the I / O device 140) via one or more corresponding buses or other interfaces. Examples of I / O devices include storage devices (hard disk drives, optical disk drives, removable flash drives, storage arrays, SANs, or their associated controllers), network interface devices (e.g., to a local area network or a wide area network), sensor devices (e.g., cameras, radars, lidars, ultrasonic sensors, GPS, inertial measurement devices, etc.), and auditory or visual output devices (e.g., speakers, lights, screens, projectors, etc.). In some examples, the computer system 100 communicates with a network via a network interface device (e.g., configured to communicate via Wi-Fi, Bluetooth, Ethernet, etc.). In some examples, the computing system 100 is directly or wired-connected to a network.

[0051] Figure 2 A block diagram of a device 200 having an interconnection subsystem is illustrated. In the illustrated example, the device 200 includes three different subsystems (i.e., a first subsystem 210, a second subsystem 220, and a third subsystem 230) that communicate with each other (e.g., wired or wirelessly) to create a network (e.g., a personal area network, a local area network, a wireless local area network, a metropolitan area network, a wide area network, a storage area network, a virtual private network, an intranet, a campus area network, a system area network, and / or a controller area network). In Figure 1 (i.e., the computing system 100) examples of possible computer architectures of the subsystems included in Figure 2 are described. Although three subsystems are shown in Figure 2 , the device 200 can include more or fewer subsystems.

[0052] In some examples, some subsystems are not connected to other subsystems (e.g., the first subsystem 210 may be connected to the second subsystem 220 and the third subsystem 230, but the second subsystem 220 cannot be connected to the third subsystem 230). In some examples, some subsystems are connected via one or more wires, while other subsystems are connected wirelessly. In some examples, messages are set between the first subsystem 210, the second subsystem 220, and the third subsystem 230 such that when a corresponding subsystem transmits a message, other subsystems (e.g., via wires and / or buses) receive the message. In some examples, one or more subsystems are wirelessly connected to one or more computing systems external to the device 200, such as server systems. In such examples, the subsystems may be configured to wirelessly communicate with one or more computing systems external to the device 200.

[0053] In some examples, the device 200 includes a housing that completely or partially encloses the subsystems 210 to 230. Examples of the device 200 include home appliance devices (e.g., a refrigerator or an air conditioning system), robots (e.g., a robotic arm or a robotic vacuum cleaner), and vehicles. In some examples, the device 200 is configured to navigate in a physical environment (with or without user input).

[0054] In some examples, one or more subsystems of the device 200 are used to control, manage, and / or receive data from one or more other subsystems of the device 200 and / or one or more computing systems remote from the device 200. For example, the first subsystem 210 and the second subsystem 220 may each be a camera that captures images, and the third subsystem 230 may use the captured images for decision-making. In some examples, at least a portion of the device 200 functions as a distributed computing system. For example, a task may be split into different parts, where the first part is executed by the first subsystem 210 and the second part is executed by the second subsystem 220.

[0055] Attention is now directed to techniques for setting up an electronic device. Such techniques are described in the context of the application of a controller connected to an accessory. It should be recognized that other types of electronic devices may be used with the techniques described herein. For example, an accessory may use the techniques described herein to connect to another accessory. Additionally, the techniques optionally supplement or replace other techniques for connecting devices.

[0056] Figure 3FIG. is a block diagram of a controller (e.g., controller 300) that communicates with multiple attachments (e.g., first attachment 340 and second attachment 350). Controller 300 is a non-limiting example of a controller that can be used to perform the functionality described herein. It should be recognized that other computer architectures of controllers can be used to perform the functionality described herein. In some examples, controller 300 includes one or more features described above with respect to computing system 100 and / or device 200. In some examples, controller 300 is computing system 100 and / or device 200. In some examples, one or more features described with respect to controller 300 can be combined with, replaced by, and / or substituted for one or more features described with respect to computing system 100 and / or device 200. In some examples, controller 300 is a mobile device, a personal computing device, a multi-user speaker (e.g., including a microphone), a single-user speaker (e.g., including a microphone), a fitness tracking device (e.g., a smartwatch and / or a heart rate monitor), and / or a head-mounted display device.

[0057] As Figure 3 shown, controller 300 includes an operating system 310, a first application 320, and a second application 330. In other words, operating system 310, first application 320, and second application 330 are installed on controller 300. In some examples, first application 320 and / or second application 330 communicate with controller 300 but are not installed on the controller (e.g., first application 320 and / or second application 330 are installed on a remote device that communicates with controller 300). In some examples, operating system 310 manages the resources of controller 300 and can be one or more operating systems as described above with respect to the operating system of computing system 100. For example, operating system 310 can be a LINUX, iOS, or Windows operating system. In some examples, operating system 310 is an operating system for a mobile device, such as an operating system for a tablet and / or a mobile phone. In some examples, operating system 310 includes one or more operations that control a graphical user interface.

[0058] As Figure 3As shown, the operating system 310 includes a settings component 312. The settings component 312 is configured to communicate with one or more different accessories, such as a first accessory 340 and a second accessory 350. In some examples, the settings component 312 may configure the accessories to communicate with the settings component 312 and / or another software component of the controller 300, such as a first application 320 or a second application 330. In some examples, all or most of the communication between the controller 310 and the accessories is routed through the settings component 312. In some examples, the first application 320 and the second application 330 do not communicate directly with the accessories, but instead transmit communications to the settings component 312 such that the settings component 312 communicates with the accessories on behalf of the first application 320 and the second application. In some examples, the settings component 312 includes one or more instructions for performing one or more settings operations. In some examples, one or more settings operations include operations that are performed to (or that allow the accessories to be configured to) communicate with the controller 300 (and / or other controllers) and / or a computer system (e.g., having one or more features of the computing system 100 and / or the device 200). In some examples, the settings component 312 includes operations for transmitting and / or receiving one or more identifiers for registering and / or controlling accessories such as the first accessory 340 and the second accessory 350. In some examples, the settings component 312 is an application separate from the operating system 310. In some examples, whether or not the settings component 312 is part of the operating system 310, one or more of the first application 320 and the second application 330 is part of the operating system 310. In some examples, the controller includes one or more applications in addition to the first application 320 and the second application 330.

[0059] In Figure 3At [this location], the first application 320 and the second application 330 are different applications. In some examples, the first application 320 and the second application 330 correspond to different ecosystems. In some examples, the ecosystem is a smart home ecosystem, a smart office ecosystem, a smart manufacturing ecosystem, and / or a smart company ecosystem. In some examples, one or more accessories can be registered with (and / or controlled within) the ecosystem. Thus, in some examples, the first application 320 and the second application 330 are configured to communicate with one or more accessories. In some examples, the one or more accessories that the first application 320 is configured to communicate with are different from the one or more accessories that the second application 330 is configured to communicate with. In some examples, the first application 320 and the second application 330 communicate with the accessories by transmitting one or more commands (e.g., instructions and / or requests for control) for changing the state of the accessories and / or receiving information about the state of the accessories. In some examples, changing the state of the accessories includes changing the settings of the accessories, turning off the settings, and / or turning on the settings. In some examples, when the corresponding application is configured to communicate with the accessory, the corresponding application receives data about the state of the accessory, such as a value associated with the accessory (e.g., the brightness value of a light, the temperature value of a thermostat, the remaining battery level value, the overheat value, and / or the fan speed of a ceiling fan) or whether the accessory is on or off. In some examples, the corresponding application receives historical data about the accessory. It should be understood that the first application 320 and the second application 330 can be other types of applications, such as applications corresponding to a specific type of accessory and / or manufacturer (e.g., an application for controlling a light bulb), applications corresponding to multiple different ecosystems (e.g., an application corresponding to multiple different smart home ecosystems including Apple Home and Google Home), and / or any other type of application (e.g., a map application, a music application, and / or a communication application).

[0060] In some examples, the communication between the settings component 312 and the applications (e.g., the first application 320 and / or the second application 330) is communication within a single computer system, while the communication between one or more components of the controller 300 (e.g., the operating system 310, the settings component 312, the first application 320 and / or the second application 330) and the first accessory 340 and the second accessory 350 is communication between different computer systems. Such communication between different computer systems can be wired communication and / or wireless communication. In some examples, the settings component 312 (or another component of the controller 300) communicates with the first accessory 340 via a communication method such as Bluetooth, Zigbee, near field communication, WiFi, LiFi, 5G, or any other wireless communication technology. In some examples, the settings component 312 (or another component of the controller 300) communicates with the first accessory 340 via one communication method and communicates with the second accessory 350 via another communication method.

[0061] In Figure 3 it, the first accessory 340 and the second accessory 350 are different accessory devices. Examples of accessories include air conditioners, air purifiers, bridges, cameras, doorbells, fans, faucets, garage doors, humidifiers, lights, locks, sockets, receivers, routers, security systems, sensors, speakers, sprinklers, switches, thermostats, TVs, and / or windows. In some examples, the first accessory 340 and / or the second accessory 350 is a computer system that operates autonomously and / or in response to user input. In some examples, the first accessory 340 and / or the second accessory 350 autonomously performs one or more operations scheduled by the user within a time interval, performs one or more operations due to the satisfaction of one or more conditions (e.g., a threshold level of light and / or a threshold level of sound in the environment), and / or performs one or more operations in response to user input. In some of these examples, the user input is directed to the physical accessory or an application configured to control the accessory, such as the first application 320, the second application 330, and / or another application. In some examples, the controller communicates with one or more accessories other than the first accessory 340 and the second accessory 350.

[0062] Figure 4 is a flowchart illustrating techniques for using one or more communication protocols to establish an accessory 406 with a subsequent ecosystem. The flowchart includes three different entities that perform one or more operations. The one or more different entities are the application 402, the settings component 404, and the accessory 406. Figure 4 Some of the operations in the flowchart of

[0063] In some examples, the application 402 includes the above regardingFigure 3 one or more features described by the first application 320 and / or the second application 330. In some examples, the provisioning component 404 includes one or more features described above with respect to Figure 3 the provisioning component 312. In some examples, the application 402 and the provisioning component 404 are included in a controller, and the controller includes one or more features described above with respect to Figure 3 the controller 300. In some examples, the attachment 406 includes one or more features described above with respect to Figure 3 the first attachment 340 and / or the second attachment 350.

[0064] In some examples, the provisioning component 404 has added credentials (sometimes referred to as attachment management credentials) to the attachment 406, and this addition enables the attachment 406 to be added to a first ecosystem that includes the provisioning component 404 and the attachment 406. In some examples, adding attachment management credentials to the attachment 406 allows the provisioning component 404 to manage, configure, and / or control the attachment 406, including adding additional ecosystems. Examples of attachment management credentials include long-term keys, ecosystem credentials, certificates (e.g., root, intermediate, or other types of certificates), and administrator credentials. In some examples, the attachment management credentials are specific to a user (e.g., a user account), an ecosystem, and / or a computer system (e.g., a controller and / or the controller 300). In some examples, the attachment management credentials are added to the attachment 406 using a provisioning code received by the provisioning component 404. In such examples, the provisioning code is not generated by the provisioning component 404 but is instead provided to the provisioning component 404 as corresponding to the attachment 406. In some examples, the provisioning code is used to establish a two-way secure channel for mutual authentication between the provisioning component 404 and the attachment 406. Through the secure channel, the attachment credentials (e.g., attachment management credentials) are installed. In some examples, the provisioning component 404 uses the credentials to create a secure session for other (e.g., further) communication with the attachment 406.

[0065] In some examples, the application 402 corresponds to the second application 330, where Figure 3 the first application 320 has used one or more of the techniques described herein to add credentials (sometimes referred to as controller credentials) to the attachment 406. In such examples, Figure 3 the first application 320 has added the attachment 406 to a second ecosystem (e.g., different from the first ecosystem) that includes the first application 320 and the attachment 406. In some examples, adding controller credentials to the attachment 406 allows Figure 3The first application 320 adds, manages, configures, and / or controls the attachment 406, including adding additional ecosystems. Examples of controller credentials include the same examples as described above for attachment management credentials. In some examples, the controller credentials have the same level of privilege as the attachment management credentials. In some examples, the controller credentials are specific to a user (e.g., user account), ecosystem, and / or computer system (e.g., controller). In some examples, the controller credentials use a secret (e.g., setup code) received by the first application 320 from the settings component 404 or generated by the first application 320 of Figure 3 the first application 320 to add to the attachment 406. In such examples where the secret is received by the first application 320 from the settings component 404, the secret can be generated by the settings component 404. Figure 3 the first application 320 of

[0066] In some examples, the first ecosystem (e.g., the ecosystem corresponding to the settings component 404) is an administrative ecosystem of a lightweight ecosystem that is configured to have limited permissions and / or authorities with respect to the attachment 406. For example, the lightweight ecosystem may allow the settings component 404 to add additional ecosystems but not control the attachment 406. For another example, the lightweight ecosystem may limit the resources of the attachment 406 used with respect to that lightweight ecosystem. In such examples, compared to different types of ecosystems, the restricted resources result in a smaller memory available for storing code related to the lightweight ecosystem, a smaller memory available for executing operations corresponding to the lightweight ecosystem, and / or a lower priority when executing operations corresponding to the lightweight ecosystem. In other examples, the administrative ecosystem is configured as an enhanced ecosystem (e.g., a full ecosystem) compared to the lightweight ecosystem, and the enhanced ecosystem has an enhanced set of permissions and / or authorities with respect to the attachment 406 (e.g., a full set of permissions and / or authorities). In some examples, the enhanced ecosystem may be allowed to occupy more bandwidth of the attachment 406 and / or use more resources (e.g., short-term and / or long-term memory) compared to the lightweight ecosystem.

[0067] In some examples, the administrative ecosystem is the ecosystem first established for the attachment 406, and the administrative ecosystem is used to add other ecosystems (e.g., the second ecosystem discussed above with respect to the application 402). As described above, the second ecosystem can be an enhanced or lightweight ecosystem.

[0068] Figure 4 will be traversed twice: the first time illustrates an example using a single communication protocol, and the second time illustrates an example using multiple communication protocols.

[0069] At 408, when using a single communication protocol, application 402 determines to add an attachment. The determination to add an attachment can be based on different criteria. In some examples, the determination to add an attachment is based on a detected specific user input. For example, application 402 detects the selection of a user interface object displayed by application 402, and in response to detecting the selection, determines to add an attachment. In some examples, the determination to add an attachment is based on detecting that the attachment is within a predetermined distance (e.g., 1 meter - 20 meters) from a controller associated with application 402 (e.g., the controller that is executing and / or displaying the user interface of application 402). For example, application 402 detects that the attachment is within the predetermined distance from the controller, and in response, determines to add an attachment. In some examples, the determination to add an attachment is based on determining that the attachment is connected to the same communication network as the controller associated with application 402. In some examples, the determination to add an attachment is based on application 402 being initialized. For example, application 402 can log in to a user account (and / or execute for the first time on the controller), and in response, determine (e.g., based on the settings of application 402 and / or the controller associated with application 402) to add an attachment.

[0070] In some examples, the determination to add an attachment is to add a non - specific (e.g., general) attachment to an ecosystem corresponding to application 402 (e.g., a smart home ecosystem and / or a smart office ecosystem). In other examples, the determination to add an attachment is to add a specific attachment (e.g., attachment 406) to an ecosystem corresponding to application 402. In some examples, the determination to add an attachment includes determining to which ecosystem to add the attachment.

[0071] At 410, when using a single communication protocol, application 402 transmits a request for a list of available attachments to settings component 404. In some examples, the available attachments correspond to attachments for which settings component 404 has added credentials (e.g., attachment management credentials and / or controller credentials as described above) to attachment 406.

[0072] At 412, when using a single communication protocol, settings component 404 transmits a list of available attachments to application 402. In some examples, settings component 404 maintains a list of available attachments (e.g., added to the list when settings component 404 adds credentials to an attachment). In other examples, settings component 404 transmits a request to determine whether an attachment is available to attachments within range. In other examples, settings component 404 transmits one or more requests to one or more other devices and / or applications (e.g., Figure 3 first application 320 or second application 330) to identify available attachments based on one or more responses to one or more requests from one or more devices and / or applications.

[0073] At 414, when using a single communication protocol, the application 402 transmits a list of selected attachments to the settings component 404. In some examples, the list is a subset of the list of available attachments that is selected via user input. For example, the application 402 receives a list of available attachments at 412 when using a single communication protocol and displays a representation of the list for selection of all or part of the list via user input. In other examples, the application 402 does not receive a list of available attachments, but instead, the application 402 generates a list of selected attachments based on information determined by the application 402 outside of the settings component 404. For example, the application 402 detects one or more attachments proximate to the controller and displays a representation of the list of one or more attachments for selection of all or part of the list via user input. For another example, the application 402 receives a list of available attachments from a device remote from the controller (e.g., a server corresponding to an ecosystem or a different electronic device associated with the same user account as the controller) and displays a representation of the list for selection of all or part of the list via user input. For another example, the application 402 obtains a list of available attachments from another application of the controller (e.g., an application corresponding to a different ecosystem, such as Figure 3 the first application 320) and displays a representation of the list for selection of all or part of the list via user input.

[0074] In some examples, when the list of selected attachments is not selected from the list received from the settings component 404, some attachments in the list of selected attachments may not have been added to any ecosystem yet (e.g., by the settings component 404 and / or by any component or application) and those attachments will be added as described above with respect to adding attachment management credentials for the settings component 404 (e.g., in the case where operations 416 - 430 are not performed when using a single communication protocol), while other attachments may have been added to at least one ecosystem by the settings component 404 and those attachments will be added as described below with respect to operations 416 - 430 when using a single communication protocol.

[0075] At 416, when using a single communication protocol, the setup component 404 iterates through the list of selected attachments received from the application 402. In some examples, when a single communication protocol is used for each attachment in the list of selected attachments, the setup component 404 performs 418 - 422. In some examples, the setup component 404 does not receive a request for available attachments (e.g., 410 when using a single communication protocol), and does not receive a list of selected attachments (e.g., 414 when using a single communication protocol), but instead performs 418 - 422 when a single communication protocol is used for each available attachment identified by the setup component 404. Such operations can be performed at any time, such as before or after the application 402 receives a request to add an attachment at 408 when using a single communication protocol.

[0076] At 418, when using a single communication protocol, a setup session (e.g., a secure session or an insecure session) is established between the setup component 404 and the attachment 406. In some examples, the setup session is established by the setup component 404; in other examples, the setup session is established by the attachment 406.

[0077] In some examples, establishing the setup session requires multiple communications to be exchanged between the setup component 404 and the attachment 406, such as communications for configuring the setup session and / or securing the setup session. In some examples, the setup session is established based on the communication protocol supported by the attachment 406. For example, the advertisement received by the setup component 404 when identifying the attachment 406 and / or when establishing the setup session can indicate the specific communication protocol to be used for the subsequent setup session.

[0078] In some examples, establishing the setup session includes establishing a communication channel between the setup component 404 and the attachment 406. The communication channel can use any wireless communication technology, such as Bluetooth, Zigbee, near - field communication, WiFi, LiFi, or 5G. In some examples, the communication channel is a re - establishment of a previous communication channel between the setup component 404 and the attachment 406. For example, the setup component 404 and the attachment 406 have already established a pairing between them, and the communication channel uses information from the pairing to be established.

[0079] At 420, when using a single communication protocol, the setup component 404 transmits a request to the attachment 406 to add a controller (such as a new computer system, new ecosystem, and / or new administrator for configuring and / or controlling the attachment 406, each of which may include a different set of permissions). In some examples, the request to add a controller includes a secret generated by the application 402 or the setup component 404. In such examples, the secret is used by the component (e.g., by the application 402 or the setup component 404, including by the application 402 when generated by the setup component 404) to identify itself when adding credentials to the attachment 406. For example, the secret can be a piece of data known only to the devices, computer systems, and / or components in the new ecosystem (e.g., devices, computer systems, and / or components participating in secure communication, such as the application 402 and the attachment 406). In some examples, the secret is provided by the application 402 to the setup component 404. In such examples, the secret can be encrypted in such a way that the setup component 404 cannot identify the secret, but the attachment 406 can identify the secret when receiving the encrypted secret from the setup component 404. An example of the secret is the setup code as described above. In some examples, the secret is used to establish a two-way secure channel for mutual authentication between the component (e.g., the application 402 or the setup component 404) and the attachment 406. Through the secure channel, the provisioning credentials (e.g., the attachment management credentials or controller credentials as described herein) are provisioned. In some examples, the application 402 or the setup component 404 uses the credentials to create a secure session for other (e.g., further) communication with the attachment 406. The secret can be the same or different for each attachment iterated through at 416.

[0080] At 422, when using a single communication protocol, the setup component 404 adds the attachment 406 to a hierarchical list to be transmitted to the application 402. In some examples, the hierarchical list includes the identifier of the attachment 406 and / or the setup code transmitted to the attachment in the request at 420.

[0081] At 424, when using a single communication protocol, the setup component 404 transmits the hierarchical list to the application 402. In some examples, the hierarchical list includes the identifier (name or indication of the attachment), address (e.g., IP address or MAC address), and / or secret (e.g., transmitted at 420 when using a single communication protocol) for each attachment for which the setup component 404 performs operations 418 - 422.

[0082] At 426, when using a single communication protocol, the application 402 iterates through the selected attachments in the hierarchical list received from the settings component 404. In some examples, the application 402 performs 428-430 for each attachment in the hierarchical list when using a single communication protocol. In other examples, the application 402 detects user input selecting one or more attachments (e.g., all or not all of the attachments in the hierarchical list), and performs 428-430 for each selected attachment when using a single communication protocol.

[0083] At 428, when using a single communication protocol, a settings session (e.g., a secure session or an insecure session) is established between the application 402 and the attachment 406. The settings session can be established by the application 402 or the attachment 406. In some examples, the settings session is established through multiple communications between the application 402 and the attachment 406 (such as communications for configuring the settings session and / or securing the settings session). In some examples, the settings session is a communication channel between the application 402 and the attachment 406. The communication channel can use any wireless communication technology, such as Bluetooth, Zigbee, Near Field Communication, WiFi, LiFi, or 5G.

[0084] At 430, when using a single communication protocol, the application 402 provisions credentials (e.g., the controller credentials as described above) on the attachment 406 such that the application 402 can configure and / or control the attachment 406. In some examples, provisioning the credentials creates the attachment 406 or adds the attachment to an ecosystem different from that described above with respect to the settings component 404. In such examples, the ecosystem of the application 402 can be configured as an enhanced ecosystem with enhanced permissions and / or authorities with respect to the attachment 406. For example, the enhanced ecosystem allows the application 402 to add additional ecosystems and / or control the attachment 406. In such an example, the enhanced ecosystem can be permitted to consume more bandwidth and / or use more resources (e.g., short-term and / or long-term memory) of the attachment 406 compared to a lightweight ecosystem. In some examples, each iteration of 426 when using a single communication protocol adds each attachment in the hierarchical list to the same ecosystem (e.g., the ecosystem corresponding to the application 402).

[0085] In some examples, after adding credentials to an accessory, the application 402 may transmit commands (e.g., instructions and / or requests for control) to the accessory. For example, the application 402 may transmit a command to the accessory 406. In some examples, the command is to change the state of the accessory 406 and / or receive information about the state of the accessory 406. Examples of changing the state of the accessory 406 include changing the settings of the accessory 406, turning off the settings, turning off the accessory 406, turning on the settings, and / or turning on the accessory 406. In some examples, the command is transmitted based on the communication protocol used by the application 402 to communicate with the accessory 406 using the credentials provisioned in 426 when using a single communication protocol. In some examples, the command is not transmitted through the settings component 404, but instead is transmitted directly from the application 402 to the accessory 406.

[0086] In some examples, in response to receiving a command from the application 402, the accessory 406 attempts to execute the command and transmits a response to the attempt to execute the command. In some examples, the response indicates whether the command has been successfully executed. In some examples, the response is transmitted based on the communication protocol used by the application 402 to communicate with the accessory 406. In some of these examples, the response is not transmitted through the settings component 404, but instead is transmitted directly from the accessory 406 to the application 402.

[0087] In some examples, the application 402 receives data about the state of the accessory 406, such as a value associated with the accessory 406 (e.g., the brightness value of a light, the temperature value of a thermostat, the remaining battery value, the overheat value, and / or the fan speed of a ceiling fan) or whether the accessory 406 is on or off. In some of these examples, such data is transmitted from the accessory 406 to the application 402 based on a trigger event occurring on the accessory 406 and without a request for such data from the application 402. Examples of trigger events include a temperature value reaching a threshold, a remaining battery value reaching a threshold, and an error occurring.

[0088] As described above, assuming multiple communication protocols, Figure 4 will be traversed a second time below. For example, the accessory 406 supports multiple communication protocols, uses a first communication protocol to communicate with the settings component 404, and uses a second communication protocol different from the first communication protocol to communicate with the application 402.

[0089] In some examples, the operations that occur on the application 402 when using multiple communication protocols are similar to the operations described above with respect to Figure 4 using a single communication protocol. For example, the details of 408, 410, 412, and 414 when using multiple communication protocols may be the same as the details described above with respect to 408, 410, 412, and 414 when using a single communication protocol.

[0090] At 416, when multiple communication protocols are used, the setup component 404 iterates through the list of selected attachments received from the application 402. In some examples, the details of 416 when using multiple communication protocols are similar to the details of 416 as described above when using a single communication protocol, except that the setup component 404 identifies the communication protocols supported by each attachment and selects a specific communication protocol to be used for each attachment. In some examples, the communication protocol used by the setup component 404 is different from the communication protocol used by the application 402 to communicate with the attachment. Different communication protocols can have different levels of security and / or privacy. Thus, in some examples, the communication transmitted or received by the setup component 404 is transmitted via a communication protocol having a specific level of security and / or privacy required by the setup component 404. In some examples, the setup component 404 supports a first communication protocol not used by the application 402 to communicate with the attachment and a second communication protocol used by the application 402 to communicate with the attachment. In some examples, the setup component 404 can use the first communication protocol when communicating with the attachment instead of forcing the setup component 404 to use the second communication protocol when communicating with the attachment. In some examples, the user of the controller selects which communication protocol to use by the setup component 404.

[0091] At 418, when multiple communication protocols are used, a setup session (e.g., a secure session or an unsecured session) is established between the setup component 404 and the attachment 406. In some examples, the details of 418 when using multiple communication protocols are similar to the details of 418 when using the single communication protocol described above, except that the selected communication protocol described above is used for the setup session.

[0092] At 420, when using multiple communication protocols, the setup component 404 transmits a request to the attachment 406 to add a controller (such as a new computer system, new ecosystem, and / or new administrator for configuring and / or controlling the attachment 406, each of which includes a different set of permissions). In some examples, the details of 420 when using multiple communication protocols are the same as the details of 420 when using a single communication protocol described above, including the communication protocol used by the application 402 being used at 420 to convey the request when using multiple communication protocols. In other examples, the details of 420 when using multiple communication protocols are similar to the details of 420 when using a single communication protocol described above, except that the selected communication protocol described above is used to communicate with the attachment 406. For example, the request to add a controller is encapsulated in a message based on the selected communication protocol, where the request is based on the communication protocol used by the application 402 to communicate with the attachment 406. In other words, the transmission of the request uses the selected communication protocol, and the payload received by the attachment 406 uses the communication protocol used by the application 402.

[0093] In some examples, Figure 4 the details of the remainder of the operations when using multiple communication protocols are the same as the details described above when using a single communication protocol with respect to Figure 4 For example, the details of 422, 4424, 426, 428, and 430 when using multiple communication protocols can be the same as the details described above for 422, 424, 426, 428, and 430 when using a single communication protocol. Additionally, in some examples, the operations after setting up the controller credentials described above when using a single communication protocol with respect to Figure 4 can be performed when using multiple communication protocols with respect to Figure 4 execution.

[0094] Figure 5A is a flowchart illustrating a technique for using the setup component 404 as a bridge to set up the subsequent ecosystem attachment 406. In some examples, the setup component 404 acts as a bridge because the application 402 (1) is not configured to communicate using the communication protocol supported by the attachment 406 and / or (2) is not allowed by the computer system (e.g., a controller, such as controller 300) including the application 402 to communicate using the communication protocol. Instead, the application 402 communicates with the setup component 404, and the setup component 404 communicates with the attachment 406 on behalf of the application 402. Figure 6 Some of the operations in the flowchart of

[0095] are optionally combined, performed by different entities, changed in order, and / or omitted. Figure 4 Similar to Figure 5AThe application 402 includes one or more features described above with respect to Figure 3 the first application 320 and / or the second application 330, Figure 5A The setup component 404 includes one or more features described above with respect to Figure 3 the setup component 312, Figure 5A The application 402 and Figure 5A the setup component 404 are included in the controller, and the controller includes one or more features described above with respect to Figure 3 the controller 300, and Figure 5A The attachment 406 includes one or more features described above with respect to Figure 3 the first attachment 340 and / or the second attachment 350.

[0096] In some examples, the details of 508, 510, 512, and 514 are the same as or similar to the details described above with respect to 408, 410, 412, and 414, respectively.

[0097] At 516, the setup component 404 iterates through a list of selected attachments received from the application 402. In some examples, the details of 516 are similar to the details described above with respect to 416. For example, the setup component 404 can (1) use a predefined communication protocol for each attachment or (2) identify the communication protocols supported by each attachment and select a specific communication protocol to be used for each attachment. In some examples, the communication protocol used by the setup component 404 is different from the communication protocol used and / or supported by the application 402. Different communication protocols can have different levels of security and / or privacy. Thus, in some examples, the communication transmitted or received by the setup component 404 is transmitted via a communication protocol having a specific level of security and / or privacy required by the setup component 404. In some examples, the setup component 404 supports a first communication protocol not used by the application 402 to communicate with the attachment and a second communication protocol used by the application 402 to communicate with the attachment. In some examples, the setup component 404 can use the first communication protocol when communicating with the attachment instead of forcing the setup component 404 to use the second communication protocol when communicating with the attachment. In some examples, the user of the controller selects which communication protocol to use by the setup component 404.

[0098] At 518, the setup component 404 activates a bridge (sometimes referred to as an adapter) to facilitate (e.g., transform) communication from the application 402 to one or more of the attachments in the list of selected attachments. In some examples, the setup component 404 activates multiple bridges, each for one or more of the attachments in the list of selected attachments. In other examples, the setup component 404 activates a single bridge for use with all of the attachments in the list of selected attachments. In some examples, the bridge uses the attachment management credentials described above to communicate with the attachment 406 on behalf of the application 402. In such examples, 524, 526, and 528 can be omitted, and the application 402 communicates with the setup component 404 as if the setup component 404 were the attachment 406. In other examples, the setup component 404 adds new credentials on behalf of the application 402 and uses the new credentials to communicate with the attachment 406, as described below.

[0099] At 520, the setup component 404 adds the attachment 406 to a hierarchical list to be transmitted to the application 402. In some examples, the hierarchical list includes an identifier of the attachment 406, an address of the setup component 404, and / or setup information for communicating with the attachment 406 via the setup component 404. In some examples, the setup information includes a secret (e.g., a setup code) generated by the setup component 404 (e.g., the secret generated by the setup component 404 at 520) and / or information on how to communicate with the setup component 404 using the communication protocol supported by the application 402. In such examples, the setup information is used by the application 402 to communicate with the attachment 406 via the setup component 404.

[0100] At 522, the setup component 404 transmits the hierarchical list to the application 402. In some examples, the hierarchical list includes an identifier (name or indication of the attachment), an address (e.g., an IP address or a MAC address), and / or setup information for each attachment for which the setup component 404 performs operation 518. In some examples, the setup information corresponds to the setup component 404 (e.g., rather than the attachment 406 as described above Figure 4 ).

[0101] At 524, the application 402 iterates through the selected attachments in the hierarchical list received from the setup component 404. In some examples, the application 402 performs 526 - 528 for each attachment in the hierarchical list. In other examples, the application 402 detects a selected user input corresponding to one or more of the attachments within the hierarchical list (e.g., all or not all of the attachments within the hierarchical list) and performs 526 - 528 for each selected attachment.

[0102] At 526, a settings session (e.g., a secure session or an unsecured session) is established between the application 402 and the settings component 404. In some examples, the details of 524 are the same as the details described above with respect to 424.

[0103] At 528, the application 402 transmits a request for credentials (e.g., controller credentials) for provisioning the attachment 406 to the settings component 404 such that the application 402 can configure and / or control the attachment 406 via the settings component 404. Examples of the credentials include the same examples as the attachment management credentials described above. In some examples, provisioning the credentials via the settings component 404 includes: the application 402 transmitting a request for provisioning the credentials to the settings component 404, and then the settings component 404 provisioning the credentials on the attachment 406, similar to the operation described above with respect to provisioning the attachment management credentials. In other examples, the credentials are not provisioned on the attachment 406, but instead the settings component uses the credentials previously provisioned by the settings component 404 for the settings component 404 to communicate with the attachment 406.

[0104] In some examples, provisioning the credentials creates the attachment 406 or adds the attachment to a different ecosystem than that described above with respect to the settings component 404 at 518. In such examples, the ecosystem of the application 402 can be configured as an enhanced ecosystem with enhanced permissions and / or privileges with respect to the attachment 406. For example, the enhanced ecosystem can allow the application 402 to add additional ecosystems and / or control the attachment 406. In such an example, the enhanced ecosystem can be permitted to consume more bandwidth of the attachment 406 and / or use more resources (e.g., short-term and / or long-term memory) compared to a lightweight ecosystem.

[0105] Figure 5B is a flowchart illustrating techniques for communicating with a settings component 406 acting as a bridge. In some examples, Figure 5B is Figure 5A a continuation of. In some examples, the settings component 404 acts as a bridge because the application 402 (1) is not configured to communicate using the communication protocol supported by the attachment 406 and / or (2) is not permitted by the computer system (e.g., the controller, such as controller 300) including the application 402. Instead, the application 402 communicates with the settings component 404 such that the settings component 404 communicates with the attachment 406 on behalf of the application 402. Figure 5B Some operations in the flowchart of are optionally combined, performed by different entities, reordered, and / or omitted.

[0106] At 530, application 402 transmits a command (e.g., an instruction and / or request for control) to settings component 404 for transmission to accessory 406. In some examples, the command is to change the state of accessory 406 and / or receive information about the state of accessory 406. Examples of changing the state of accessory 406 include changing the settings of the accessory, turning off the settings, and / or turning on the settings. In some examples, the command is transmitted based on a communication protocol used by application 402 to communicate with settings component 404.

[0107] At 532, settings component 404 transmits the command to accessory 406 using credentials provisioned by settings component 404. In some examples, settings component 404 transforms the command according to a communication protocol used by settings component 404 to communicate with accessory 406 and then transmits the transformed command to accessory 406.

[0108] At 534, accessory 402 attempts to execute the command received at 532. At 536, accessory 402 transmits a response to the attempt to execute the command. In some examples, the response indicates whether the command has been successfully executed. In some examples, the response is transmitted based on a communication protocol used by accessory 406 to communicate with settings component 404.

[0109] At 538, settings component 404 transmits the response to application 402. In some examples, settings component 404 transforms the response according to a communication protocol used by settings component 404 to communicate with application 402 and transmits the transformed command to application 402.

[0110] At 540, accessory 406 determines that an event that needs to notify application 402 has occurred. For example, a light can be turned off or the amount of remaining power can reach a threshold.

[0111] At 542, accessory 406 transmits an event notification to settings component 404. In some examples, the event notification is transmitted based on a communication protocol used by accessory 406 to communicate with settings component 404.

[0112] At 544, settings component 404 transmits the event notification to application 402. In some examples, settings component 404 transforms the event notification according to a communication protocol used by settings component 404 to communicate with application 402 and then transmits the transformed event notification to application 402.

[0113] Figure 6FIG. 600 is a flowchart illustrating a method for subsequent setup of an accessory from the perspective of a setup component. Method 600 is performed at a setup component (e.g., an operating system component or an application different from the operating system) of a computer system. In some examples, the computer system is a watch, a phone, a tablet, a processor, a head-mounted display (HMD) device, and / or a personal computing device.

[0114] At 610, the setup component identifies an accessory for which the setup component has been granted one or more first permissions (e.g., one or more rights, licenses, and / or capabilities) (e.g., establishing a first ecosystem, managing the accessory, and / or previously pairing with the accessory) relative to the accessory, where the accessory is different from the computer system; in some examples, the accessory is an air conditioner, an air purifier, a bridge, a camera, a doorbell, a fan, a faucet, a garage door, a humidifier, a light, a lock, a socket, a receiver, a router, a security system, a sensor, a speaker, a sprinkler, a switch, a thermostat, a television, an actuator, and / or a window. In some examples, the first ecosystem is a grouping of one or more accessories and one or more controllers (e.g., devices, computer systems, applications executing on the devices, and / or software processes configured to control the accessories).

[0115] At 620, the setup component transmits to the accessory a request for adding a first credential to grant one or more second permissions (e.g., one or more second permissions are the same as or different from one or more first permissions (e.g., at least one of the one or more first permissions is a different permission)) relative to the accessory (e.g., adding a controller, a second ecosystem different from the first ecosystem, a credential for controlling the accessory, and / or an administrator different from the setup component); and in some examples, the second ecosystem is a grouping of one or more accessories and one or more controllers (e.g., devices, computer systems, applications executing on the devices, and / or software processes configured to control the accessories).

[0116] At 630, the setup component transmits setup information of the accessory to an application of the computer system, where the setup information is intended to be used by the application to communicate with the accessory to grant the application one or more second permissions relative to the accessory, and where the application is different from the setup component. In some examples, the application communicates with the accessory without going through the setup component. In some examples, the application is an application of an ecosystem that allows a user to control one or more accessories (including, for example, accessories of different types and / or from different manufacturers), an application of an accessory manufacturer that allows a user to control one or more accessories associated with the accessory manufacturer, and / or an application for a specific communication protocol (e.g., the application communicates with an accessory configured for a specific communication protocol according to the specific communication protocol).

[0117] In some examples, before transmitting a request to add a first credential, the setup component receives from the application a first identifier (e.g., one or more identifiers) of one or more attachments (e.g., a list of one or more attachments). In some examples, the identifier of the attachment is included in the first identifier of the one or more attachments. In some examples, the identifier of the one or more attachments is an attachment selected by the application or by the user via the application.

[0118] In some examples, the setup component transmits to the application a second identifier of one or more attachments. In some examples, the second identifier of the one or more attachments is transmitted before receiving from the application the first identifier of the one or more attachments. In some examples, the first identifier of the one or more attachments received from the application is an attachment selected by the application or by the user via the application from the second identifier of the one or more attachments transmitted to the application.

[0119] In some examples, the setup component receives from the application an identifier of one or more selected attachments. In some examples, the identifier of the one or more selected attachments includes fewer attachments than the identifier of the one or more attachments transmitted to the application. In some examples, a request to add a credential to grant one or more second permissions is transmitted to each attachment identified in the identifier of the one or more selected attachments.

[0120] In some examples, the setup component generates setup information. In some examples, the setup component generates second setup information for a second attachment and transmits the second setup information to the application. In some examples, the setup information is intended to be used by the application to communicate with the second attachment to grant the application one or more second permissions relative to the second attachment.

[0121] In some examples, the setup information is transmitted together with an identifier of the attachment.

[0122] In some examples, the setup component selects a first communication protocol (e.g., a communication protocol supported by the setup component but not by the application, a communication protocol supported by the application, a communication protocol corresponding to an ecosystem, a communication protocol corresponding to the setup component, and / or a communication protocol supported by multiple different ecosystems) from a plurality of communication protocols supported by the attachment (e.g., Bluetooth, WiFi, Internet Protocol communication protocol, NFC, and / or UWB). In some examples, the setup information is sent to the attachment in a message according to the first communication protocol. In some examples, one or more second permissions correspond to a second communication protocol (e.g., a communication protocol supported by the application) (e.g., Bluetooth, WiFi, Internet Protocol communication protocol, NFC, and / or UWB) among the plurality of communication protocols. In some examples, the second communication protocol is different from the first communication protocol.

[0123] In some examples, a settings component receives a command from an application to change the state of an accessory (e.g., turn on or off or set an amount or value). In some examples, the settings component generates a message corresponding to the command (e.g., including the command or including a different command having the same effect of changing the state of the accessory as the command) according to (e.g., based on and / or via) a particular communication protocol (e.g., a communication protocol supported by the accessory). In some examples, the settings component transmits the message to the accessory. In some examples, the accessory does not support the communication protocol supported by the accessory (e.g., even when the accessory supports only a single communication protocol), and the settings component converts the message received from the application to the single communication protocol before transmitting it to the accessory. In some examples, transmitting the message to the accessory causes the accessory to perform an operation based on the content of the message, and in some embodiments, the operation causes the accessory to change from a first state (e.g., an on state, an off state, a low state, a high state, a state based on a first value (e.g., -100 - 100, 0 - 100%, low, medium, and / or high)) to a second state different from the first state.

[0124] Note that the details of the processes described above with respect to method 600 (e.g., Figure 6 ) also apply in a similar manner to the methods described below. For example, method 700 optionally includes one or more of the features of the various methods described above with reference to method 600. For example, Figure 7 the settings component of Figure 6 can be the settings component of

[0125] Figure 7 is a flowchart illustrating a method for subsequent settings of an accessory from the perspective of an application according to some embodiments. Method 700 is executed at an application of a computer system (e.g., different from the operating system). In some examples, the application is an application of an ecosystem that allows a user to control one or more accessories (including, for example, accessories of different types and / or from different manufacturers), an application of an accessory manufacturer that allows a user to control one or more accessories associated with the accessory manufacturer, and / or an application for a particular communication protocol (e.g., the application communicates with an accessory configured for the particular communication protocol according to the particular communication protocol). In some examples, the computer system is a watch, a phone, a tablet, a processor, a head-mounted display (HMD) device, and / or a personal computing device.

[0126] At 710, the application transmits a request to a settings component of the computer system (e.g., an operating system component or an application different from the operating system) for an identification of one or more attachments (e.g., a list of one or more attachments), for which the settings component has been granted one or more first permissions (e.g., one or more rights, licenses, and / or capabilities) (e.g., establishing a first ecosystem, managing one or more attachments, and / or previously pairing with one or more attachments), where the one or more attachments are different from the computer system; in some examples, the first ecosystem is a grouping of one or more attachments and one or more controllers (e.g., devices, computer systems, applications executing on a device, and / or software processes configured to control the attachments).

[0127] After transmitting the request for an identification of one or more attachments (e.g., as a result of or in conjunction with it), at 720, the application receives settings information for a first attachment (e.g., an identifier, address, and / or settings code of the first attachment) from the settings component; and in some examples, the first attachment is an air conditioner, an air purifier, a bridge, a camera, a doorbell, a fan, a faucet, a garage door, a humidifier, a light, a lock, a socket, a receiver, a router, a security system, a sensor, a speaker, a sprinkler, a switch, a thermostat, a television, an actuator, and / or a window.

[0128] At 730, the application transmits a request to the first attachment for adding credentials (e.g., a certificate and / or identifier corresponding to the application) to grant (e.g., allow, configure, and / or enable) one or more first permissions (e.g., one or more rights, licenses, and / or capabilities) relative to the first attachment (e.g., establishing a first ecosystem and / or managing the first attachment), where the request for adding credentials includes at least a portion of the settings information (e.g., an identifier, address, and / or settings code of the first attachment). In some examples, the application uses the settings information to establish a communication channel with the first attachment. In some examples, the application communicates with the first attachment without going through the settings component. In some examples, the first ecosystem is a grouping of one or more attachments and one or more controllers (e.g., devices, computer systems, applications executing on a device, and / or software processes configured to control the attachments).

[0129] In some examples, before receiving the setup information for the first attachment, the application receives an identification of one or more available attachments (e.g., an attachment for which the setup component has been granted one or more first permissions). In some examples, the application receives user input corresponding to a selection of at least one of the one or more available attachments. In some examples, at least one of the one or more available attachments includes the first attachment. In some examples, the application transmits to the setup component an identification of at least one of the one or more available attachments (e.g., a second identification as described above with respect to method 600).

[0130] In some examples, the application receives an identification of one or more attachments. In some examples, the identification of the one or more attachments includes setup information for each of the one or more attachments.

[0131] In some examples, the request for an identification of one or more attachments is transmitted in response to receiving a request to add an attachment to the ecosystem.

[0132] In some examples, the setup information includes a setup code or (e.g., and / or) an address for the first attachment. In some examples, the address is a name, an Internet protocol address, a media access control address, and / or a unique identifier for the first attachment. In some examples, the setup code is a set of one or more digits and / or one or more characters for establishing a link (e.g., pairing) with the first attachment.

[0133] In some examples, the request to add credentials is transmitted to the attachment via the setup component.

[0134] In some examples, after transmitting the request to add credentials to the attachment, the application uses the credentials (e.g., the message transmitted to the attachment may include the credentials and / or an indication of the credentials) to transmit to the attachment a command to change the state of the attachment (e.g., turn on or off or a set amount or value) (e.g., as described above with respect to method 600).

[0135] In some examples, the command is transmitted to the first attachment via the setup component.

[0136] Note that the details of the processes described above with respect to method 700 (e.g., Figure 7 ) also apply in a similar manner to the methods described above and below. For example, method 600 optionally includes one or more of the features of the various methods described above with reference to method 700. For example, Figure 6 the application of Figure 7 may be the application of

[0137] Figure 8It is a flowchart illustrating a method for subsequent setup of an accessory from the perspective of the accessory according to some embodiments. Method 600 is performed at the accessory: In some examples, the accessory is an air conditioner, an air purifier, a bridge, a camera, a doorbell, a fan, a faucet, a garage door, a humidifier, a light, a lock, a socket, a receiver, a router, a security system, a sensor, a speaker, a sprinkler, a switch, a thermostat, a television, an actuator, and / or a window.

[0138] At 810, the accessory receives a request from a setup component of a computer system (e.g., an operating system component or an application different from the operating system) to re - establish a first communication channel between the setup component and the accessory, where the accessory is different from the computer system; in some examples, the computer system is a watch, a phone, a tablet, a processor, a head - mounted display (HMD) device, and / or a personal computing device.

[0139] At 820, the accessory receives, via the first communication channel, a request to add credentials to grant one or more permissions (e.g., one or more rights, licenses, and / or capabilities) with respect to the accessory (e.g., establishing a first ecosystem, managing one or more accessories, and / or previously pairing with one or more accessories) (e.g., adding a controller, a second ecosystem different from the first ecosystem, credentials for controlling the accessory, and / or an administrator different from the setup component); and in some examples, the first ecosystem is a grouping of one or more accessories and one or more controllers (e.g., devices, computer systems, applications executed on the devices, and / or software processes configured to control the accessory). In some examples, the second ecosystem is a grouping of one or more accessories and one or more controllers (e.g., devices, computer systems, applications executed on the devices, and / or software processes configured to control the accessory).

[0140] After receiving a request to add credentials from a settings component, at 830, the accessory receives, from an application of the computer system, a request to add credentials (e.g., a certificate and / or identifier corresponding to the application) to grant (e.g., allow, configure, and / or implement) one or more permissions (e.g., one or more rights, licenses, and / or capabilities) with respect to the accessory (e.g., establish a first ecosystem and / or manage the accessory), where the application is different from the settings component. In some examples, the accessory grants one or more first permissions with respect to the accessory to the settings component based on a first credential. In some examples, the accessory grants one or more second permissions with respect to the accessory to the application based on a second credential. In some examples, the application is an application of an ecosystem that allows a user to control one or more accessories (including, for example, accessories of different types and / or from different manufacturers), an application of an accessory manufacturer that allows a user to control one or more accessories associated with the accessory manufacturer, and / or an application for a specific communication protocol (e.g., the application communicates with an accessory configured for the specific communication protocol according to the specific communication protocol).

[0141] In some examples, the request received via the first communication channel is included in a message formatted according to a first communication protocol (e.g., as described above with respect to method 600). In some examples, the request to add credentials received from the application is included in a message formatted according to a second communication protocol different from the first communication protocol (e.g., as described above with respect to method 600). In some examples, the request received via the first communication channel includes a setup code (e.g., as described above with respect to method 600). In some examples, the request to add credentials received from the application includes a setup code.

[0142] In some examples, the accessory receives, from the application, a command to change the state of the accessory (e.g., turn on or off or set an amount or value) (e.g., as described above with respect to method 600). In some examples, in response to receiving the command, the accessory changes the state of the accessory (e.g., as described above with respect to method 600).

[0143] In some examples, the accessory receives, from the settings component, a command to change the state of the accessory (e.g., turn on or off or set an amount or value) (e.g., as described above with respect to method 600). In some examples, in response to receiving the command, the accessory changes the state of the accessory (e.g., as described above with respect to method 600).

[0144] In some examples, after receiving a request via a first communication channel, an attachment receives, from an application, a request to establish a second communication channel between the application and the attachment. In some examples, the second communication channel is different from the first communication channel (e.g., a different type of communication channel and / or a communication channel having a different communication medium). In some examples, in response to receiving the request to establish the second communication channel, the attachment establishes the second communication channel. In some examples, a request received from the application to add credentials is received via the second communication channel.

[0145] Note that the details of the processes described above with respect to method 800 (e.g., Figure 8 ) also apply in a similar manner to the methods described above. For example, method 600 optionally includes one or more of the features of the various methods described above with reference to method 800. For example, Figure 6 the attachment of Figure 8 can be the attachment of

[0146] For explanatory purposes, the foregoing description has been described by reference to specific examples. However, the above illustrative discussion is not intended to be exhaustive or to limit the disclosure to the precise forms disclosed. Many modifications and variations are possible in light of the above teachings. The examples were chosen and described in order to best explain the principles of the techniques and their practical applications. Others skilled in the art are thus enabled to best utilize the techniques and various examples with various modifications as are suited to the particular use contemplated.

[0147] Although the present disclosure and examples have been described in full with reference to the accompanying drawings, it should be noted that various changes and modifications will become apparent to those skilled in the art. It should be understood that such changes and modifications are considered to be included within the scope of the present disclosure and examples as defined by the claims.

[0148] As described above, one aspect of the techniques of the present invention is to collect and use data that can be obtained from various sources to improve the way in which a device interacts with a user. The present disclosure contemplates that, in some instances, the collected data may include personal information data that uniquely identifies or can be used to contact or locate a particular person. Such personal information data may include demographic data, location-based data, telephone numbers, email addresses, home addresses, or any other identifying information.

[0149] The present disclosure recognizes that the use of such personal information data in the techniques of the present invention can be used to benefit the user. For example, personal information data can be used to change the way in which a device interacts with a user. Accordingly, using such personal information data enables better user interaction. In addition, the present disclosure also contemplates other uses of personal information data that benefit the user.

[0150] The present disclosure also contemplates that entities responsible for the collection, analysis, disclosure, transmission, storage, or other use of such personal information data will comply with established privacy policies and / or privacy practices. Specifically, such entities should implement and adhere to privacy policies and measures that are recognized as meeting or exceeding industry or government requirements for maintaining the privacy and security of personal information data. For example, personal information from users should be collected for legitimate and reasonable uses of the entity and not shared or sold outside of those legitimate uses. Additionally, such collection should only occur after receiving the informed consent of the user. Additionally, such entities should take any necessary steps to safeguard and protect access to such personal information data and ensure that others who have access to the personal information data comply with their privacy policies and procedures. Additionally, such entities may subject themselves to third-party assessments to demonstrate their compliance with widely accepted privacy policies and practices.

[0151] Notwithstanding the foregoing, the present disclosure also anticipates embodiments in which users selectively block the use or access of personal information data. That is, the present disclosure anticipates that hardware elements and / or software elements may be provided to prevent or block access to such personal information data. For example, in the case of image capture, the inventive technology may be configured to allow a user to select to "opt-in" or "opt-out" of participating in the collection of personal information data during a registration service.

[0152] Accordingly, while the present disclosure broadly covers the use of personal information data to implement one or more of the various disclosed embodiments, the present disclosure also anticipates that various embodiments may also be implemented without access to such personal information data. That is, various embodiments of the inventive technology will not be rendered inoperable due to the absence of all or a portion of such personal information data. For example, content may be presented to a user by inferring a location based on non-personal information data or an absolute minimum amount of personal information (such as content being requested by a device associated with the user or other non-personal information).

Claims

1. A method, the method comprises: at a settings component of a computer system: identifying an attachment for which the settings component has been granted one or more first permissions relative to the attachment, wherein the attachment is different from the computer system; transmitting to the attachment a request for adding a first credential to grant one or more second permissions relative to the attachment; and transmitting the settings information of the attachment to an application of the computer system, wherein the settings information is intended to be used by the application to communicate with the attachment to grant the application the one or more second permissions relative to the attachment, and wherein the application is different from the settings component.

2. The method according to claim 1, the method further comprises: before transmitting the request for adding the first credential, receiving from the application a first identification of one or more attachments, wherein the identification of the attachment is included in the first identification of the one or more attachments.

3. The method according to any one of claims 1 to 2, the method further comprises: transmitting to the application a second identification of one or more attachments.

4. The method according to claim 3, the method further comprises: receiving from the application an identification of one or more selected attachments, wherein the identification of the one or more selected attachments includes fewer attachments than the identification of the one or more attachments transmitted to the application, and wherein a request for adding a credential to grant the one or more second permissions is transmitted to each attachment identified in the identification of the one or more selected attachments.

5. The method according to any one of claims 1 to 4, the method further comprises: generating the settings information.

6. The method according to any one of claims 1 to 5, wherein the settings information is transmitted together with an identifier of the attachment.

7. The method according to any one of claims 1 to 6, the method further comprises: selecting a first communication protocol from a plurality of communication protocols supported by the attachment, wherein the settings information is transmitted to the attachment in a message according to the first communication protocol, and wherein the one or more second permissions correspond to a second communication protocol among the plurality of communication protocols, and wherein the second communication protocol is different from the first communication protocol.

8. The method according to any one of claims 1 to 7, the method further comprises: receiving from the application a command for changing a state of the attachment; generating a message corresponding to the command according to a specific communication protocol; and transmitting the message to the attachment.

9. A non-transitory computer-readable medium storing one or more programs configured to be executed by one or more processors of a computer system, the one or more programs including instructions for performing the method according to any one of claims 1 to 8.

10. A computer system, the computer system comprises: one or more processors; and A memory that stores one or more programs configured to be executed by the one or more processors, the one or more programs including instructions for performing the method according to any one of claims 1 to 8.

11. A computer system, the computer system comprising: Components for performing the method according to any one of claims 1 to 8.

12. A computer program product comprising one or more programs configured to be executed by one or more processors of a computer system, the one or more programs including instructions for performing the method according to any one of claims 1 to 8.

13. A non-transitory computer-readable storage medium storing one or more programs configured to be executed by one or more processors of a computer system, the one or more programs including instructions for: Identifying an attachment for which a settings component of the computer system has been granted one or more first permissions relative to the attachment, wherein the attachment is different from the computer system; Transmitting to the attachment a request to add a first credential to grant one or more second permissions relative to the attachment; and Transmitting the settings information of the attachment to an application of the computer system, wherein the settings information is intended to be used by the application to communicate with the attachment to grant the application one or more second permissions relative to the attachment, and wherein the application is different from the settings component.

14. A computer system, the computer system comprising: One or more processors; and A memory that stores one or more programs configured to be executed by the one or more processors, the one or more programs including instructions for: Identifying an attachment for which a settings component of the computer system has been granted one or more first permissions relative to the attachment, wherein the attachment is different from the computer system; Transmitting to the attachment a request to add a first credential to grant one or more second permissions relative to the attachment; and Transmitting the settings information of the attachment to an application of the computer system, wherein the settings information is intended to be used by the application to communicate with the attachment to grant the application one or more second permissions relative to the attachment, and wherein the application is different from the settings component.

15. A computer system, the computer system comprising: Components for identifying an attachment for which a settings component of the computer system has been granted one or more first permissions relative to the attachment, wherein the attachment is different from the computer system; Components for transmitting to the attachment a request to add a first credential to grant one or more second permissions relative to the attachment; and A component for transmitting setting information of the attachment to an application of the computer system, where the setting information is intended to be used by the application to communicate with the attachment to grant the application one or more second permissions relative to the attachment, and where the application is different from the setting component.

16. A computer program product, the computer program product including one or more programs configured to be executed by one or more processors of a computer system, the one or more programs including instructions for: Identifying an attachment for which a setting component of the computer system has been granted one or more first permissions relative to the attachment, where the attachment is different from the computer system; Transmitting to the attachment a request for adding a first credential to grant one or more second permissions relative to the attachment; And Transmitting the setting information of the attachment to an application of the computer system, where the setting information is intended to be used by the application to communicate with the attachment to grant the application one or more second permissions relative to the attachment, and where the application is different from the setting component.

17. A method, the method Comprising: At an application of a computer system: Transmitting to the setting component of the computer system a request for an identification of one or more attachments for which the setting component has been granted one or more first permissions, where the one or more attachments are different from the computer system; After transmitting the request for the identification of the one or more attachments, receiving the setting information of a first attachment from the setting component; And Transmitting to the first attachment a request for adding a credential to grant the application one or more first permissions relative to the first attachment, where the request for adding the credential includes at least a portion of the setting information.

18. The method according to claim 17, the method further Comprising: Before receiving the setting information of the first attachment, receiving an identification of one or more available attachments; Receiving user input corresponding to a selection of at least one of the one or more available attachments, where the at least one of the one or more available attachments includes the first attachment; And Transmitting the identification of the at least one of the one or more available attachments to the setting component.

19. The method according to any one of claims 17 to 18, the method further Comprising: Receiving an identification of one or more attachments, where the identification of the one or more attachments includes the setting information of each of the one or more attachments.

20. The method according to any one of claims 17 to 19, where the request for an identification of one or more attachments is transmitted in response to receiving a request for adding an attachment to an ecosystem.

21. The method according to any one of claims 17 to 20, where the setting information includes a setting code or address of the first attachment.

22. The method according to any one of claims 17 to 21, wherein the request for adding the credential is transmitted to the attachment via the setting component.

23. The method according to any one of claims 17 to 22, the method further comprises: After transmitting the request for adding the credential to the attachment, using the credential to transmit a command for changing the state of the attachment to the attachment.

24. The method according to claim 23, wherein the command is transmitted to the first attachment via the setting component.

25. A non-transitory computer-readable medium storing one or more programs configured to be executed by one or more processors of a computer system, the one or more programs including instructions for performing the method according to any one of claims 17 to 24.

26. A computer system, the computer system comprises: One or more processors; and A memory storing one or more programs configured to be executed by the one or more processors, the one or more programs including instructions for performing the method according to any one of claims 17 to 24.

27. A computer system, the computer system comprises: Components for performing the method according to any one of claims 17 to 24.

28. A computer program product including one or more programs configured to be executed by one or more processors of a computer system, the one or more programs including instructions for performing the method according to any one of claims 17 to 24.

29. A non-transitory computer-readable storage medium storing one or more programs configured to be executed by one or more processors of a computer system, the one or more programs including instructions for: Transmitting a request for identification of one or more attachments to the setting component of the computer system, for which the setting component has been granted one or more first permissions, wherein the one or more attachments are different from the computer system; After transmitting the request for the identification of the one or more attachments, receiving the setting information of the first attachment from the setting component; and Transmitting a request for adding a credential to the first attachment to grant one or more first permissions to an application of the computer system relative to the first attachment, wherein the request for adding the credential includes at least a portion of the setting information.

30. A computer system, the computer system comprises: One or more processors; and A memory storing one or more programs configured to be executed by the one or more processors, the one or more programs including instructions for: Transmitting a request for identification of one or more attachments to the setting component of the computer system, for which the setting component has been granted one or more first permissions, wherein the one or more attachments are different from the computer system; After transmitting the request for the identification of one or more attachments, receive setting information of a first attachment from the setting component; And Transmit to the first attachment a request for adding credentials to grant one or more first permissions to an application of the computer system with respect to the first attachment, wherein the request for adding the credentials includes at least a portion of the setting information.

31. A computer system, the computer system Comprises: A component for transmitting a request for the identification of one or more attachments to a setting component of the computer system, wherein the setting component has been granted one or more first permissions for the one or more attachments, and wherein the one or more attachments are different from the computer system; A component for receiving, after transmitting the request for the identification of one or more attachments, setting information of a first attachment from the setting component; And A component for transmitting to the first attachment a request for adding credentials to grant one or more first permissions to an application of the computer system with respect to the first attachment, wherein the request for adding the credentials includes at least a portion of the setting information.

32. A computer program product, the computer program product comprising one or more programs configured to be executed by one or more processors of a computer system, the one or more programs including instructions for: Transmitting a request for the identification of one or more attachments to a setting component of the computer system, wherein the setting component has been granted one or more first permissions for the one or more attachments, and wherein the one or more attachments are different from the computer system; Receiving, after transmitting the request for the identification of one or more attachments, setting information of a first attachment from the setting component; And Transmitting to the first attachment a request for adding credentials to grant one or more first permissions to an application of the computer system with respect to the first attachment, wherein the request for adding the credentials includes at least a portion of the setting information.

33. A method, the method Comprises: At an attachment: Receive from a setting component of a computer system a request for re - establishing a first communication channel between the setting component and the attachment, wherein the attachment is different from the computer system; Receive via the first communication channel a request for adding credentials to grant one or more permissions with respect to the attachment; And After receiving the request for adding the credentials from the setting component, receive from an application of the computer system a request for adding the credentials to grant the one or more permissions to the application with respect to the attachment, wherein the application is different from the setting component.

34. The method according to claim 33, wherein the request received via the first communication channel is included in a message formatted according to a first communication protocol, and wherein the request for adding the credentials received from the application is included in a message formatted according to a second communication protocol, the second communication protocol being different from the first communication protocol.

35. The method according to any one of claims 33 to 34, wherein the request received via the first communication channel includes a setup code, and wherein the request received from the application for adding the credentials includes the setup code.

36. The method according to any one of claims 33 to 35, the method further comprises: receiving, from the application, a command for changing the status of the attachment; and in response to receiving the command, changing the status of the attachment.

37. The method according to any one of claims 33 to 37, the method further comprises: receiving, from the setup component, a command for changing the status of the attachment; and in response to receiving the command, changing the status of the attachment.

38. The method according to any one of claims 33 to 37, the method further comprises: after receiving the request via the first communication channel, receiving, from the application, a request for establishing a second communication channel between the application and the attachment, wherein the second communication channel is different from the first communication channel; and in response to receiving the request for establishing the second communication channel, establishing the second communication channel, wherein the request received from the application for adding the credentials is received via the second communication channel.

39. A non-transitory computer-readable medium storing one or more programs configured to be executed by one or more processors of an attachment, the one or more programs including instructions for performing the method according to any one of claims 33 to 38.

40. An attachment, the attachment comprises: one or more processors; and a memory storing one or more programs configured to be executed by the one or more processors, the one or more programs including instructions for performing the method according to any one of claims 33 to 38.

41. An attachment, the attachment comprises: means for performing the method according to any one of claims 33 to 38.

42. A computer program product including one or more programs configured to be executed by one or more processors of an attachment, the one or more programs including instructions for performing the method according to any one of claims 33 to 38.

43. A non-transitory computer-readable storage medium storing one or more programs configured to be executed by one or more processors of an attachment, the one or more programs including instructions for: receiving, from a setup component of a computer system, a request for re-establishing a first communication channel between the setup component and the attachment, wherein the attachment is different from the computer system; receiving, via the first communication channel, a request for adding credentials to grant one or more permissions with respect to the attachment; and After receiving the request for adding the credentials from the settings component, receive, from an application of the computer system, a request for adding the credentials to grant one or more permissions to the application with respect to the attachment, wherein the application is different from the settings component.

44. An attachment, the attachment comprises: one or more processors; and a memory storing one or more programs configured to be executed by the one or more processors, the one or more programs including instructions for: receiving, from a settings component of a computer system, a request to re - establish a first communication channel between the settings component and the attachment, wherein the attachment is different from the computer system; receiving, via the first communication channel, a request for adding credentials to grant one or more permissions with respect to the attachment; and after receiving the request for adding the credentials from the settings component, receiving, from an application of the computer system, a request for adding the credentials to grant one or more permissions to the application with respect to the attachment, wherein the application is different from the settings component.

45. An attachment, the attachment comprises: means for receiving, from a settings component of a computer system, a request to re - establish a first communication channel between the settings component and the attachment, wherein the attachment is different from the computer system; means for receiving, via the first communication channel, a request for adding credentials to grant one or more permissions with respect to the attachment; and means for, after receiving the request for adding the credentials from the settings component, receiving, from an application of the computer system, a request for adding the credentials to grant one or more permissions to the application with respect to the attachment, wherein the application is different from the settings component.

46. A computer program product, the computer program product comprising one or more programs configured to be executed by one or more processors of an attachment, the one or more programs including instructions for: receiving, from a settings component of a computer system, a request to re - establish a first communication channel between the settings component and the attachment, wherein the attachment is different from the computer system; receiving, via the first communication channel, a request for adding credentials to grant one or more permissions with respect to the attachment; and after receiving the request for adding the credentials from the settings component, receiving, from an application of the computer system, a request for adding the credentials to grant one or more permissions to the application with respect to the attachment, wherein the application is different from the settings component.