Patent Description:
Wireless-enabled devices offer many benefits, such as convenience, flexibility and improved user interaction. For example, a user may adjust his home's temperature by adjusting a wireless-enabled thermostat from a remote location. However, the initial setup and configuration of wireless-enabled device is often cumbersome to the user. <CIT> relates to reconfiguring a headless wireless device. <CIT> relates to remotely connecting a household appliance to a wireless local area network. <CIT> describes a system and method for initiating and maintaining a secure wireless communication between a wireless analyzer and a target network.

The subject-matter of the claims is presented. The disclosed subject matter relates to a computer-implemented method. The method comprises receiving, from a server, first network credentials for a first wireless network hosted by a wireless-enabled device. The method further comprises establishing a first network connection with the wireless-enabled device in the first wireless network based on the first network credentials. The method further comprises providing second network credentials for a second wireless network to the wireless-enabled device via the first network connection. In addition, the method comprises establishing a second network connection with the wireless-enabled device in the second wireless network based on the second network credentials.

The disclosed subject matter also relates to a wireless network access system. The system comprises a machine-readable medium encoded with instructions and a processor configured to execute the instructions to perform a process comprising receiving, from a server, first network credentials for a first wireless network hosted by a wireless-enabled device. The process further comprises scanning to detect the wireless-enabled device based on the first network credentials. The process further comprises establishing, upon detecting the wireless enabled device, a first network connection with the wireless-enabled device in the first wireless network based on the first network credentials. The process further comprises providing second network credentials for a second wireless network to the wireless-enabled device via the first network connection. In addition, the process comprises establishing a second network connection with the wireless-enabled device in the second wireless network based on the second network credentials.

The disclosed subject matter also relates to a non-transitory machine-readable medium encoded with instructions that, when executed by a processor, cause the processor to perform a process comprising receiving, from a server, first network credentials for a first wireless network hosted by a wireless-enabled device. The process further comprises establishing a first network connection with the wireless-enabled device in the first wireless network based on the first network credentials. The process further comprises providing second network credentials for a second wireless network to the wireless-enabled device via the first network connection. The process further comprises terminating the first network connection after providing the second network credentials. In addition, the process comprises establishing a second network connection with the wireless-enabled device in the second wireless network based on the second network credentials.

The disclosed subject matter also relates to a computer-implemented method. The method comprises receiving, from a client application, network credentials for a first wireless network hosted by a wireless-enabled device and account credentials for a user account of a cloud-based service. The method further comprises determining a wireless access point affiliated with the user account of the cloud-based service, wherein the wireless access point is configured to provide access to a second wireless network. In addition, the method comprises providing the network credentials for accessing the wireless-enabled device via the first wireless network to the determined wireless access point.

The disclosed subject matter further relates to a non-transitory machine-readable medium encoded with instructions that, when executed by a processor, cause the processor to perform a process comprising receiving, from a client application, encoded network credentials for a first wireless network hosted by a wireless-enabled device and account credentials for a user account of a cloud-based service. The process further comprises verifying and decoding the encoded network credentials. The process further comprises determining a wireless access point affiliated with the user account of the cloud-based service, wherein the wireless access point is configured to provide access to a second wireless network. The process further comprises providing the decoded network credentials for accessing the wireless-enabled device via the first wireless network to the determined wireless access point. The process further comprises generating a registration ticket associated with the user account of the cloud-based system to the wireless access point. The process further comprises sending the registration ticket to the wireless access point. The process further comprises receiving, via the wireless access point, a registration request from the wireless-enabled device based on the registration ticket. In addition, the process comprises registering the wireless-enabled device with the user account of the cloud-based service in response to the registration request.

Features of the subject technology are set forth in the appended claims.

The detailed description set forth below is intended as a description of various configurations of the subject technology and is not intended to represent the only configurations in which the subject technology may be practiced. However, the subject technology is not limited to the specific details set forth herein and may be practiced without these specific details. In some instances, structures and components are shown in block diagram form in order to avoid obscuring the concepts of the subject technology.

Wireless-enabled devices offer many benefits, such as convenience, flexibility and improved user interaction. For example, a user may adjust his home's temperature by adjusting a wireless-enabled thermostat from a remote location. However, limitations associated with setting up a wireless-enabled device may negatively impact user experience on a variety of levels. For example, setting up a wireless-enabled device may require the wireless-enabled device to act as an access point hosting a provisional wireless network. A client device of the user may need to temporarily break its internet connection in order to connect to the provisional wireless network and setup the wireless-enabled device for a permanent wireless network.

The subject technology provides an improved system for setting up a wireless-enabled device in a local wireless network. In some implementations, encoded network credentials for a first wireless network (e.g., a provisional network) associated with the wireless-enabled device may be provided by a user via a client application (e.g., web application or a standalone client application) running on a client device. The encoded network credentials may be obtained via a mechanism that indicates physical proximity and/or control of the wireless-enabled device by the user. For example, the wireless-enabled device may broadcast the encoded network credentials using a short-range wireless protocol or transmit the encoded network credentials over a physical connection to the client device. Alternatively, or in addition, the encoded network credentials may be obtained by scanning a code displayed on the wireless-enabled device. The client application may send the encoded network credentials for the first wireless network associated with the wireless-enabled device and account credentials of a user account associated with the user for a cloud-based service to a server.

The server may receive the encoded network credentials for the first wireless network associated with the wireless-enabled device and the account credentials for the user account of the cloud-based service. The server may determine a wireless access point associated with the user account of the cloud-based service, for example, based on an association of the wireless access point and the user account of the cloud-based service. The determined wireless access point may be configured to provide access to a second wireless network. The server may decode the encoded network credentials, for example, into a Service Set Identifier (SSID) and/or a password of the first wireless network. The server may provide the decoded network credentials for accessing the wireless-enabled device via the first wireless network to the determined wireless access point. In addition, the server may provide a registration ticket associated with the user account of the cloud-based system to the determined wireless access point.

The determined wireless access point may receive, from the server, the decoded network credentials for the first wireless network associated with the wireless-enabled device and the registration ticket associated with the user account of the cloud-based service. The determined wireless access point may identify the wireless-enabled device within range and establish a first network connection with the wireless-enabled device via the first wireless network, for example, using the received decoded network credentials. The determined wireless access point may provide network credentials for the second wireless network to the wireless-enabled device via the first network connection. The wireless-enabled device may tear down the first wireless network and send an association request including the network credentials for the second wireless network to the determined wireless access point. Upon receiving the association request, the determined wireless access point may establish a second network connection with the wireless-enabled device via the second wireless network.

The determined wireless access point may provide the registration ticket associated with the user account to the wireless-enabled device via the second wireless network. The wireless-enabled device may send a registration request based on the registration ticket to the server via the second network connection of the determined wireless access point. The server may receive the registration request from the wireless-enabled device and register the wireless-enabled device with the user account of the cloud-based service in response to the registration request. Upon receiving the registration from the server, the determined wireless access point may associate the wireless-enabled device with the user account of the cloud-based service based on the registration request.

<FIG> illustrates an example network environment which provides for wireless network access. Network environment <NUM> includes wireless client devices <NUM> and <NUM>, wireless access point <NUM>, wireless-enabled device <NUM>, and server <NUM>.

Each of wireless client devices <NUM>, <NUM> represents various forms of processing devices. Example processing devices include a desktop computer, a laptop computer, a handheld computer, a personal digital assistant (PDA), a cellular telephone, a network appliance, a camera, a smartphone, an enhanced general packet radio service (EGPRS) mobile phone, a media player, a navigation device, an email device, a game console, or a combination of any these data processing devices or other data processing devices. Wireless client devices <NUM> and <NUM> may allow a user to access a wireless local area network, such as provided by wireless access point <NUM>, by authenticating credentials of the user with an authentication service, such as provided by server <NUM>.

Wireless-enabled device <NUM> may include an electronic device with built-in support for wireless network access. Wireless-enabled device <NUM> may include a variety of devices in an Internet of Things (IoT) network. Wireless-enabled device <NUM> may have a limited user interface or may not have a user interface for user interaction and control. Wireless-enabled device <NUM> may be small in size and may be embedded in a system or device, such as a sensor embedded in a system including thermostat systems, washer/dryers, automobiles and any other systems. Wireless-enabled device <NUM> may include temperature sensors, video cameras, audio recorders, motion sensors, humidity sensors, smoke detectors, various gas sensors, radiation monitors, security sensors, such as door and/or window sensors, biometric sensors, wearable devices/sensors, implantable devices/sensors, embedded devices/sensors and/or any other devices/sensors. Wireless-enabled device <NUM> may be a smart sensor that includes, but is not limited to, processing logic such as one or more controllers or processors, memory, and communication interfaces. Wireless-enabled device <NUM> may be action devices, such as actuators, alarm devices, automated devices, or any other devices that are capable of performing one or more actions.

Wireless access point <NUM> is a network device and can include network devices, such as a hub, a router, a switch, and/or a bridge. The network device may be a combination of network devices, such as a wireless router that includes a router, a switch, and a wireless access point. The network device can be a wireless router with a built in modem (e.g., cable modem) for example. Other network devices can also be utilized in implementations of the subject technology.

Server <NUM> can include one or more computing devices <NUM> and one or more computer-readable storage devices <NUM> (e.g., data stores). Server <NUM> may be a system or device having a processor, a memory, and communications capability for providing content and/or services to client devices. Server <NUM> can be a single computing device, for example, a computer server. In other embodiments, server <NUM> can represent more than one computing device working together to perform the actions of a server computer (e.g., cloud computing). Further, server <NUM> can represent various forms of servers including, but not limited to an application server, a proxy server, a network server, an authentication server, an electronic messaging server, a content server, etc., accessible to the wireless client devices <NUM>, <NUM>. Server <NUM> may be an authentication server that provides user authentication services for wireless local area network access. Server <NUM> may host services including cloud-based services. A cloud-based service may include a service provided by cloud computing resources, such as, but not limited to, server <NUM> and/or other computing resources accessible via one or more networks (e.g., network <NUM>). A cloud-based service may require authentication of a user account for access via a cloud-based application, such as a web-based personal portal or a web-based email application.

A user may interact with content and/or services hosted by server <NUM>, through a client application installed at wireless client device <NUM>, such as a web browser application and/or a standalone client application. Communication between wireless client device <NUM> and server <NUM> may be facilitated through network <NUM>.

Wireless client devices <NUM> and <NUM> may communicate wirelessly through a communication interface (not shown), which may include digital signal processing circuitry where necessary. The communication interface may provide for communications under various modes or protocols, for example, Global System for Mobile communication (GSM) voice calls, Short Message Service (SMS), Enhanced Messaging Service (EMS), or Multimedia Messaging Service (MMS) messaging, Code Division Multiple Access (CDMA), Time Division Multiple Access (TDMA), Personal Digital Cellular (PDC), Wideband Code Division Multiple Access (WCDMA), CDMA2000, or General Packet Radio System (GPRS), among others. For example, the communication may occur through a radio-frequency transceiver (not shown). In addition, short-range communication may occur, for example, using a Bluetooth, WiFi, Near Field Communication (NFC), or other such transceiver.

Wireless-enabled device <NUM> may communicate with wireless client devices <NUM>, <NUM>, and/or wireless access point <NUM> through a communication interface. The communication interface may be a network interface. The network interface may include an interface of a local area network ("LAN"), a wide area network ("WAN"), or an Intranet, or a network of networks, for example, the Internet. The network interface may include a wireless network interface, such as using a Bluetooth, WiFi, NFC, or other such transceiver. The communication interface may be an input and/or output device interface, such as an audio port, an interface for a printer and a display device, for example, a liquid crystal display (LCD).

Network <NUM> can include, for example, any one or more of a campus area network (CAN), a metropolitan area network (MAN), a wide area network (WAN), a broadband network (BBN), the Internet, and the like. Further, network <NUM> can include, but is not limited to, any one or more of the following network topologies, including a bus network, a star network, a ring network, a mesh network, a star-bus network, tree or hierarchical network, and the like.

Communication between clients (e.g., wireless client devices <NUM>, <NUM>) and server (e.g., server <NUM>) can occur via a virtual private network (VPN), Secure Shell (SSH) tunnel, Transport Layer Security (TLS) tunnel, Extensible Authentication Protocol (EAP)-TLS based tunnel, or other secure network connection. Network <NUM> may include one or more network devices that facilitate communications between wireless client devices <NUM>, <NUM>, wireless-enabled device <NUM>, and server <NUM>, such as switch devices, router devices, relay devices, etc., and/or may include one or more servers.

Wireless client devices <NUM>, <NUM> and wireless-enabled device <NUM> may associate with wireless access point <NUM> to access a wireless local area network using WiFi standards (e.g., IEEE <NUM>). The wireless local area network can include, but is not limited to, a computer network that covers a limited geographic area (e.g., a home, school, computer laboratory, or office building) using a wireless distribution method (e.g., spread-spectrum or OFDM).

Network environment <NUM> may be, or may include, one or more of a bus network, a star network, a ring network, a relay network, a mesh network, a star-bus network, a tree or hierarchical network, and the like.

As noted above, wireless-enabled device <NUM> may have a limited user interface or may not have a user interface, which may not allow a user to directly setup wireless-enabled device <NUM>. Wireless-enabled device <NUM> may connect to wireless access point <NUM> for setup and configuration. A user may provide network credentials of the wireless local area network to wireless-enabled device <NUM> to access the wireless local area network, for example, via wireless client device <NUM>. Wireless client device <NUM> may need to break its wireless connection with wireless access point <NUM> to provide network credentials of the wireless local area network to wireless-enabled device <NUM>.

<FIG> is a block diagram illustrating an example wireless client device <NUM>, server <NUM>, wireless-enabled device <NUM> and wireless access point <NUM> from the network environment of <FIG> according to certain aspects of the disclosure. Not all of the depicted components may be used, however, and one or more implementations may include additional components not shown in the figure. Variations in the arrangement and type of the components may be made without departing from the scope of the subject technology. Additional components, different components, or fewer components may be provided.

Wireless client device <NUM> includes memory <NUM>, processor <NUM>, storage <NUM>, bus <NUM>, one or more network interfaces <NUM>, one or more wireless network interfaces <NUM>, and one or more input/output (I/O) interfaces <NUM>. Wireless client device <NUM> may establish a network connection with wireless access point <NUM> via one or more wireless network interfaces.

Memory <NUM> may include a dynamic random-access memory (DRAM) and/or a read-only memory (ROM). Memory <NUM> may store data and instructions that may be retrieved by processor <NUM>. Storage <NUM> may include a non-volatile read-and-write memory that stores data and instructions, even when wireless client device <NUM> is off, that may be retrieved by the processor <NUM>. Storage <NUM> may include network access manager <NUM> and client application <NUM>. Storage <NUM> may include magnetic, solid state or optical media.

From memory <NUM> and/or storage <NUM>, processor <NUM> may retrieve instructions to execute and data to process in order to perform the processes of the subject disclosure. Processor <NUM> can be a single processor, a multi-core processor or multiple processors. Each of network access manager <NUM> and client application <NUM> may include instructions that, when executed by processor <NUM>, cause processor <NUM> to perform operations described below.

Network access manager <NUM> may include instructions to manage wireless connections between wireless client device <NUM> and a wireless local area network. Network access manager <NUM> may include instructions to discover wireless access points, send an authentication request for wireless local area network access, identify and select a wireless local area network to access, and associate with a wireless access point to access the wireless local area network. Network access manager <NUM> may include instructions to discover wireless-enabled devices, and associate with a wireless-enabled device to access a wireless network.

Client application <NUM> may include a web-based application. The web-based application may be accessed via a browser application. Client application <NUM> may include a standalone application, such as a native application. The native application is a software application designed to run on an operating system on wireless client device <NUM>. The native application may be free or purchased through an application store and installed on wireless client device <NUM>. Client application <NUM> may be used for setting up a wireless-enabled device, for example, based on information of the wireless-enabled device and/or user authentication credentials.

A user of wireless client device <NUM> may provide user authentication credentials, such as for a user account of a cloud-based service associated with the user, via client application <NUM>. Credentials for a user account of a cloud-based service may include a user account name, a user account password, a realm, an email address and/or any item corresponding to the user account of the cloud-based service. Credentials for a user account of a cloud-based service may be used for user account authentication, such as at server <NUM>.

Wireless client device <NUM> may receive encoded network credentials from wireless-enabled device <NUM> via one or more mechanisms, such as via a short-range communication protocol. The encoded network credentials may include an encoded SSID and/or password of a provisional wireless network hosted by wireless-enabled device <NUM>. Client application <NUM> may use or interact with the one or more mechanisms.

Client application <NUM> may receive encoded network credentials from wireless-enabled device <NUM> via a short-range communication technology. Client application <NUM> may initiate a pairing process with wireless-enabled device <NUM> using Bluetooth wireless technology. Client application <NUM> may communicate with wireless-enabled device <NUM> using Bluetooth low energy (LE) wireless technology without pairing needed. A user can confirm the pairing process on wireless-enabled device <NUM> using a button or inputting a PIN. In some aspects, client application <NUM> may communicate with wireless-enabled device <NUM> over WiFi or access network query protocol (ANQP), which is supported by WiFi standards (e.g., IEEE <NUM>. In some aspects, client application <NUM> may receive encoded network credentials from wireless-enabled device <NUM> by NFC wireless technology. In some aspect, wireless client device <NUM> may be connected with wireless client device <NUM> over an Ethernet connection to receive encoded network credentials from wireless-enabled device <NUM>.

Client application <NUM> may receive encoded network credentials from wireless-enabled device <NUM> by obtaining a code associated with wireless-enabled device <NUM>. The code associated with wireless-enabled device <NUM> may include a Quick Response (QR) code, a barcode, and/or PIN. A user may provide the code associated with wireless-enabled device <NUM> via client application <NUM>.

Client application <NUM> may receive encoded network credentials from wireless-enabled device <NUM> by letting a user to connect a cable to wireless-enabled device <NUM> as a pairing process, such as via an audio jack interface. Wireless client device <NUM> may pair with wireless-enabled device <NUM> over the cable to indicate a physical proximity with wireless-enabled device <NUM>. The cable can be removed after the pairing process.

Client application <NUM> may include a setup application for a USB stick or cable. Client application <NUM> may include a unique pairing key to pair wireless client device <NUM> with wireless-enabled device <NUM> to receive encoded network credentials from wireless-enabled device <NUM>.

A display of wireless client device <NUM> may assist a user to receive encoded network credentials from wireless-enabled device <NUM>, such as using one or more mechanisms as described above. For example, the display may provide an interface to allow a user of wireless client device <NUM> sign into a user account of a cloud-based service using one or more device controls.

Client application <NUM> may receive encoded network credentials from wireless-enabled device <NUM> in a form of audio signal transmitted by wireless-enabled device <NUM>. Wireless-enabled device <NUM> may transmit an audio signal via a speaker and may allow wireless client device <NUM> to receive the audio signal. The audio signal may include a noise, a whisper, a voice, a Dual-Tone Multi-Frequency (DTMF) signal, a touch tone, and/or a musical note. Wireless-enabled device <NUM> may transmit the audio signal continuously, such as in an inaudible ultrasonic range.

Client application <NUM> may receive encoded network credentials from wireless-enabled device <NUM> via a light blinking pairing process, similar to the process of scanning a QR code. Client application <NUM> may receive encoded network credentials from wireless-enabled device <NUM> via magnetic compass pairing process, similar to the process of NFC wireless technology.

Wireless network interfaces <NUM> may include one or more Bluetooth, WiFi, NFC wireless interfaces. One or more network interfaces <NUM> may include an Ethernet interface. One or more I/O interfaces <NUM> may include, for example, an audio interface (e.g., speaker), a USB interface, a touch screen interface, a keyboard interface, and/or a display interface for liquid crystal displays (LCD). Wireless client device <NUM> may communicate with a wireless-enabled device using one or more wireless network interfaces <NUM>, one or more network interfaces <NUM> and/or one or more I/O interfaces <NUM> to indicate a physical proximity with the wireless-enabled device.

Wireless access point <NUM> includes memory <NUM>, processor <NUM>, storage <NUM>, bus <NUM>, one or more wireless network interfaces <NUM> and one or more network interfaces <NUM>. Wireless access point <NUM> may establish a network connection with wireless client device <NUM> via one or more wireless network interfaces <NUM>. Wireless access point <NUM> may establish a network connection with network <NUM> via one or more network interfaces <NUM>.

Memory <NUM> may include a dynamic random-access memory (DRAM) and/or a read-only memory (ROM). Memory <NUM> may store data and instructions that may be retrieved by processor <NUM>. Storage <NUM> may include a non-volatile read-and-write memory that stores data and instructions, even when wireless access point <NUM> is off, that may be retrieved by the processor <NUM>. Storage <NUM> may include a network access manager <NUM>. For example, storage <NUM> may include magnetic, solid state or optical media.

From memory <NUM> and/or storage <NUM>, processor <NUM> may retrieve instructions to execute and data to process in order to perform the processes of the subject disclosure. Processor <NUM> can be a single processor, a multi-core processor or multiple processors. Network access manager <NUM> may include instructions that, when executed by processor <NUM>, cause processor <NUM> to perform operations described below.

Network access manager <NUM> may include instructions to manage wireless connections between wireless access point <NUM> and wireless client devices, such as wireless client device <NUM>. Network access manager <NUM> may include instructions to broadcast capabilities of association, respond to queries and association requests from wireless client devices and/or wireless-enabled devices, associate with wireless client devices and/or wireless-enabled devices based on network credentials, and grant wireless local area network access.

Network access manager <NUM> may include instructions to send an advertisement, such as a beacon, about the capabilities of wireless access point <NUM>. Network access manager <NUM> may include instructions to respond to queries from wireless client device <NUM> and/or wireless-enabled device <NUM>. Network access manager <NUM> may include instructions to detect an authentication request from wireless client device <NUM> and forward the authentication request to server <NUM>. Network access manager <NUM> may include instructions to detect one or more wireless-enabled device, such as wireless-enabled device <NUM>.

Network access manager <NUM> may include instructions to grant access to a wireless local area network in response to an association request, such as from wireless client device <NUM> and/or wireless-enabled device <NUM>. Network access manager <NUM> may include instructions to associate with wireless client device <NUM> to provide access to a wireless local area network based on authentication of user account credentials from server <NUM>.

Network access manager <NUM> may include an identifier that is associated with the wireless access point <NUM>, such as a network identifier including a Basic Service Set Identifier BSSID (e.g., Media Access Control (MAC) address), and/or a SSID. The owner of the wireless access point <NUM> may register the identifier with a service, for example, an authentication service hosted by server <NUM>. Network access manager <NUM> may include a routing table with route information about directly connected and remote networks associated with wireless access point <NUM>. The routing table may list the routes to particular network destinations, and in some cases, metrics (e.g., distances) associated with those routes. Wireless access point <NUM> may search the routing information stored in the routing table to forward a data packet toward its destination network, for example, based on a destination IP address of the data packet. Wireless-enabled device <NUM> includes memory <NUM>, processor <NUM>, storage <NUM>, bus <NUM>, one or more network interfaces <NUM>, one or more wireless network interfaces <NUM> and one or more I/O interfaces <NUM>. Wireless-enabled device <NUM> may establish a network connection with wireless access point <NUM> via one or more wireless network interfaces.

Memory <NUM> may include a dynamic random-access memory (DRAM) and/or a read-only memory (ROM). Memory <NUM> may store data and instructions that may be retrieved by processor <NUM>. Storage <NUM> may include a non-volatile read-and-write memory that stores data and instructions, even when wireless-enabled device <NUM> is off, that may be retrieved by the processor <NUM>. Storage <NUM> may include network access manager <NUM>. Storage <NUM> may include magnetic, solid state or optical media.

Network access manager <NUM> may include instructions to manage wireless connections between wireless-enabled device <NUM>, wireless client device <NUM> and/or wireless access point <NUM>. Network access manager <NUM> may include instructions to determine the capabilities of wireless access points, identify and select a wireless local area network to access, and associate with a wireless access point to access the wireless local area network.

Network access manager <NUM> may include instructions to send an advertisement, such as a beacon, associated with a wireless network provided by wireless-enabled device <NUM>. Network access manager <NUM> may include instructions to broadcast or send network credentials associated with the wireless network provided by wireless-enabled device <NUM>, such as encoded network credentials. Network access manager <NUM> may include instructions to respond to queries from wireless client device <NUM> and/or wireless access point <NUM>. Network access manager <NUM> may include instructions to determine what kind of network access wireless-enabled device <NUM> needs, such as based on the type of device, type of application running, and/or type of network traffic associated with wireless-enabled device <NUM>. For example, network access manager <NUM> may include instructions to determine only limited network access is needed for authentication and/or communication with server <NUM>. Alternatively or in addition, network access manager <NUM> may include instructions to determine full network access is needed to access one or more servers other than server <NUM>.

Wireless network interfaces <NUM> may include one or more Bluetooth, WiFi, NFC wireless interfaces. Network interfaces <NUM> may include an Ethernet interface. I/O interfaces <NUM> may include, for example, an audio interface (e.g., speaker), a USB interface, a touch screen interface, a keyboard interface, and/or a display interface for liquid crystal displays (LCD). Wireless-enabled device <NUM> may communicate with a wireless client device using one or more wireless network interfaces <NUM>, network interfaces <NUM> and/or I/O interfaces <NUM> to receive encoded network credentials from with the wireless client device.

Server <NUM> may include memory <NUM>, processor <NUM>, storage <NUM>, bus <NUM> and one or more network interfaces <NUM>. Server <NUM> may establish a network connection with network <NUM> via one or more network interfaces <NUM>.

Memory <NUM> may include a dynamic random-access memory (DRAM) and/or a read-only memory (ROM). Memory <NUM> may store data and instructions that may be retrieved by processor <NUM>. Storage <NUM> may include a non-volatile read-and-write memory that stores data and instructions, even when server <NUM> is off, that may be retrieved by processor <NUM>. Storage <NUM> may include encoder/decoder module <NUM>, and network configuration manager <NUM>. For example, storage <NUM> may include a magnetic, solid state or optical media.

From memory <NUM> and/or storage <NUM>, processor <NUM> may retrieve instructions to execute and data to process in order to perform the processes of the subject disclosure. Processor <NUM> can be a single processor, a multi-core processor or multiple processors. Each of encoder/decoder module <NUM> and network configuration manager <NUM> may include instructions that, when executed by processor <NUM>, cause processor <NUM> to perform operations described below.

As noted above, wireless client device <NUM> may receive encoded network credentials from wireless-enabled device <NUM> and send the encoded network credentials to server <NUM>. Encoder/decoder module <NUM> may include instructions to identify network credentials for a wireless local area network in a lookup table based on the encoded network credentials received from wireless client device <NUM>. The received encoded network credentials may include a code string uniquely associated with a wireless-enabled device. For example, the code string may be associated with a QR code of wireless-enabled device <NUM>. The lookup table may be predetermined and located in storage <NUM> to associate a code string with network credentials of a wireless local area network. The network credentials of a wireless local area network may include a network identifier (e.g., SSID) and/or a password. For example, encoder/decoder module <NUM> may look up a received QR code of wireless-enabled device <NUM> in the lookup table to identify a SSID and a password of a wireless local area network, for example a wireless local area network hosted by wireless-enabled device <NUM>.

Alternatively or in addition, encoder/decoder module <NUM> may include instructions to detect that the received encoded network credentials is in an encoded format, such as based on metadata and/or an indicator associated with the received encoded network credentials. Encoder/decoder module <NUM> may include instructions to encode and/or decode the received encoded network credentials from wireless access point <NUM>.

Network configuration manager <NUM> may include instructions to identify one or more network identifiers (e.g., BSSID), corresponding to one or more wireless access points that a user owns. For example, network configuration manager <NUM> may include instructions to determine that the user is an owner of wireless access point <NUM> by comparing the credentials of the user with the credentials of the owners of wireless access point <NUM>.

Network configuration manager <NUM> may include instructions to provide a user interface that allows network owners to register as an owner of a wireless access point (e.g., wireless access point <NUM>). The user interface may be a graphical user interface with elements representing owners and wireless access points. A network owner may provide identifiers (e.g., MAC address or SSID) of the wireless access point to network configuration manager <NUM>, via for example the user interface. The network owner may provide his user account credentials to network configuration manager <NUM>, such as a user account of a cloud-based service. Network configuration manager <NUM> may include instructions to associate a wireless access point with its owner by associating an identifier of the wireless access point with the user account credentials of the owner.

Network configuration manager <NUM> may include instructions to provide a user interface that allows network owners to register as an owner of a wireless device. The wireless device may include a wireless-enabled device and/or a wireless client device. The user interface may be a graphical user interface with elements representing owners and wireless devices. A network owner may provide identifiers (e.g., barcode) of the wireless device to network configuration manager <NUM>. The network owner may provide his user account credentials to network configuration manager <NUM>, such as a user account of a cloud-based service. Network configuration manager <NUM> may include instructions to associate a wireless device and an owner of the wireless device.

<FIG> illustrates a flow diagram of an example process <NUM> for providing wireless network access. For explanatory purposes, the example process <NUM> is primarily described herein with reference to wireless access point <NUM>, and server <NUM> of <FIG>; however, the example process <NUM> is not limited to wireless access point <NUM> and server <NUM> of <FIG>, and the example process <NUM> may be performed by one or more components of wireless access point <NUM> and server <NUM>. Further for explanatory purposes, the blocks of the example process <NUM> are described herein as occurring in serial, or linearly. However, multiple blocks of the example process <NUM> may occur in parallel. In addition, the blocks of the example process <NUM> may be performed a different order than the order shown and/or one or more of the blocks of the example process <NUM> may not be performed.

At block <NUM>, server <NUM> receives encoded network credentials for a first wireless network hosted by a wireless-enabled device (e.g., wireless-enabled device <NUM>) and account credentials for a user account of a cloud-based service from a client application. Wireless-enabled device <NUM> may broadcast and/or send encoded network credentials of a first wireless network that are detectable by wireless access point <NUM> and/or wireless client device <NUM>.

The encoded network credentials may include an encoded code string uniquely associated with wireless-enabled device <NUM>. The encoded code string may include a code string encoded with a network identifier (e.g., SSID) and a password of the first wireless network. The encoded code string may be associated with, for example, a QR code, a barcode, and/or any code uniquely associated with wireless-enabled device <NUM>. The encoded network credentials may include an encoded signal transmitted by the wireless-enabled device <NUM>. The encoded signal may include a signal encoded with a network identifier (e.g., SSID) and a password of the first wireless network, for example, unique to the wireless-enabled device <NUM>. The signal may include an audio signal, a wireless signal, and/or any signal uniquely associated with wireless-enabled device <NUM>.

Wireless client device <NUM> may receive the encoded network credentials from wireless-enabled device <NUM> via for example, one or more mechanisms described in detail with reference to <FIG>. The one or more mechanisms may indicate that wireless client device <NUM> is within a physical proximity with wireless-enabled device <NUM>. Wireless client device <NUM> may provide the encoded network credentials and forward to server <NUM>, for example, via wireless access point <NUM>.

At block <NUM>, server <NUM> verifies and decodes the encoded network credentials, for example, to obtain a network identifier and a password of the first wireless network. Server <NUM> may verify and/or decode the encoded network credentials by encoder/decoder module <NUM>, as described in detail with reference to <FIG>.

At block <NUM>, server <NUM> determines a wireless access point affiliated with the user account of the cloud-based service. The determined wireless access point may be wireless access point <NUM>. A user of the user account of the cloud-based service may be determined to be an owner of wireless access point <NUM>, such as by network configuration manager <NUM> as described in detail with reference to <FIG>.

At block <NUM>, server <NUM> provides the decoded network credentials for accessing the wireless-enabled device via the first wireless network to the determined wireless access point, such as wireless access point <NUM>.

At block <NUM>, wireless access point <NUM> receives the decoded network credentials for the first wireless network hosted by wireless-enabled device <NUM>. At block <NUM>, wireless access point <NUM> scans to detect wireless-enabled device <NUM> based on the decoded network credentials, such as a network identifier of the first wireless network hosted by wireless-enabled device <NUM>. Wireless access point <NUM> may send an error message to server <NUM> upon failure to detect wireless-enabled device <NUM>. In some aspects, wireless access point <NUM> is not within a range to detect wireless-enabled device <NUM>. For example, wireless access point <NUM> is not within a physical proximity with wireless-enabled device <NUM>. Alternatively or in addition, wireless-enabled device <NUM> may not be within a range to be detected by wireless access point <NUM>. For example, wireless-enabled device <NUM> may be powered off.

At block <NUM>, wireless access point <NUM> establishes, upon detecting wireless-enabled device <NUM>, a first network connection with wireless-enabled device <NUM> in the first wireless network based on the first network credentials. Wireless access point <NUM> may send, using a first radio system, a connection request to wireless-enabled device <NUM>. Wireless access point <NUM> may receive, using the first radio system, an authorization message in response to the connection request, the authorization message comprising parameters for the first network connection with wireless-enabled device <NUM>. The first radio system may include one or more first radio-frequency transceivers in wireless access point <NUM>. Wireless access point <NUM> may be associated with wireless client device <NUM> while the first network connection is made. Wireless client device <NUM> may not terminate a wireless network connection when the first network connection is made.

At block <NUM>, wireless access point <NUM> provides second network credentials for a second wireless network to wireless-enabled device <NUM> via the first network connection. The second network credentials may include a network identifier and/or a password of the second wireless network hosted by wireless access point <NUM>, for example, including a SSID and a password. At block <NUM>, wireless access point <NUM> terminates the first network connection after providing the second network credentials.

At block <NUM>, wireless access point <NUM> establishes a second network connection with wireless-enabled device <NUM> in the second wireless network based on the second network credentials. Wireless access point <NUM> may receive, using the first radio system, a connection request from wireless-enabled device <NUM>. The connection request may include the received second network credentials. Alternatively or in addition, wireless access point <NUM> may receive, using a second radio system, the connection request from wireless-enabled device <NUM>. Wireless access point <NUM> may send, using the first radio system or second radio system, an authorization message to wireless-enabled device <NUM> in response to the connection request, the authorization message comprising parameters for the second network connection with wireless-enabled device <NUM>. The second radio system may be different from the first radio system. The second radio system may include one or more second radio-frequency transceivers in wireless access point <NUM>.

At block <NUM>, server <NUM> generates a registration ticket associated with the user account of the cloud-based system to the wireless access point determined at block <NUM> (e.g., wireless access point <NUM>). The registration ticket may be generated prior to, later than or at the same, or substantially the same (e.g., within a preset duration), time when block <NUM> is performed.

At block <NUM>, wireless access point <NUM> receives the registration ticket. The registration ticket may include registration information associated with the user account of the cloud-based service. Wireless access point <NUM> may forward the registration information to wireless-enabled device <NUM>.

At block <NUM>, wireless access point <NUM> receives a registration request from wireless-enabled device <NUM> based on the registration ticket and sends the registration request to server <NUM>. At block <NUM>, server <NUM> receives the registration request from wireless-enabled device <NUM>. At block <NUM>, server <NUM> registers wireless-enabled device <NUM> with the user account of the cloud-based service in response to the registration request. Alternatively or in addition, wireless access point <NUM> may register wireless-enabled device <NUM> with the cloud-based service in association with the user account. Wireless access point <NUM> may receive, from server <NUM>, an access token associated with the user account. Wireless access point <NUM> may provide the access token to wireless-enabled device <NUM>.

The present disclosure described herein may offer several advantages for initial setup and configuration of a wireless-enabled device. A wireless client device of a user may not need to terminate its network connection and connect with a provisional network hosted by the wireless-enabled device to setup the wireless-enabled device. Access to a WiFi and/or network application program interface (API) that is not exposed to a wireless client device of the user is not required. The user may not need to be aware of the provisional wireless network hosted by the wireless-enabled device. The user may not need to provide and/or input network identifiers of the wireless local area network to the wireless-enabled device. The user may not need to input a SSID or a password of the wireless-enabled device on the wireless client device.

A wireless access point may provide initial setup and configuration of the wireless-enabled device. The wireless access point may detect the wireless-enabled device and associate with the wireless-enabled device for setup with minimal user interaction. The wireless access point may be modified to be affiliated with a user account of a cloud-based service. The wireless access point may be registered as affiliated with the user account of the cloud-based service at a server.

<FIG> illustrates a flow diagram of an example process <NUM> for providing wireless network access. For explanatory purposes, the example process <NUM> is primarily described herein with reference to wireless access point <NUM>, wireless client device <NUM>, wireless-enabled device <NUM>, and server <NUM> of <FIG>; however, the example process <NUM> is not limited to wireless access point <NUM>, wireless client device <NUM>, wireless-enabled device <NUM>, and server <NUM> of <FIG>, and the example process <NUM> may be performed by one or more components of wireless access point <NUM>, wireless client device <NUM>, wireless-enabled device <NUM>, and server <NUM>. Further for explanatory purposes, the blocks of the example process <NUM> are described herein as occurring in serial, or linearly. However, multiple blocks of the example process <NUM> may occur in parallel. In addition, the blocks of the example process <NUM> may be performed a different order than the order shown and/or one or more of the blocks of the example process <NUM> may not be performed.

At block <NUM>, wireless client device <NUM> sends account credentials for a user account of a cloud-based service and a request for an authentication token to server <NUM>. Wireless client device <NUM> may detect wireless-enabled device <NUM> based on an advertisement broadcast by wireless-enabled device <NUM>, such as via one or more mechanisms as described with reference to <FIG>. A user may input a user account of a cloud-based service via a client application as described in details with reference to <FIG>. The authentication token may be uniquely associated with account credentials for the user account of the cloud-based service to access one or more wireless networks, including, for example, a wireless network hosted by wireless access point <NUM>.

At block <NUM>, server <NUM> receives the account credentials for a user account of a cloud-based service and a request for the authentication token. Server <NUM> may support networking protocols including IEEE <NUM>. At block <NUM>, server <NUM> generates the authentication token associated with the user account of the cloud-based service and sends to wireless client device <NUM>. At block <NUM>, wireless client device <NUM> receives the authentication token.

At block <NUM>, wireless client device <NUM> sends an association request for a first wireless network including first network credentials to wireless-enabled device <NUM>. Wireless client device <NUM> may provide the first network credentials of the first wireless network as described above with reference to <FIG>. At block <NUM>, wireless-enabled device <NUM> establishes a first network connection with wireless client device <NUM> in the first wireless network based on first network credentials. Wireless client device <NUM> may terminate a current network connection before establishing the first connection. At block <NUM>, wireless client device <NUM> sends the authentication token via the first wireless network to wireless-enabled device <NUM>. At block <NUM>, wireless-enabled device <NUM> receives the authentication token via the first wireless network. At block <NUM>, wireless-enabled device <NUM> sends an association request including the authentication token to wireless access point <NUM>.

The second wireless network may be hosted by wireless access point <NUM>. Wireless access point <NUM> may support wireless local area network (WLAN) standards including IEEE <NUM>. At block <NUM>, wireless access point <NUM> forwards the authentication token to server <NUM> for authentication and network access authorization. The authentication token may be associated with IEEE <NUM>. 1x credentials for authentication with server <NUM>.

At block <NUM>, server <NUM> authorizes network access to the second wireless network based on the authentication token. At block <NUM>, wireless access point <NUM> establishes, upon authorization from server <NUM>, a second network connection to the wireless enabled device in the second wireless network. Wireless client device <NUM> may terminate the first network connection before establishing the second connection. At block <NUM>, server <NUM> registers the wireless enabled device to be associated with the user account of a cloud-based service.

The present disclosure described herein may offer several advantages for initial setup and configuration of a wireless-enabled device. The user may not need to input an SSID or password of the wireless-enabled device. A wireless client device of a user may not need to terminate its network connection. Access to a WiFi and/or network API that is not exposed to a wireless client device of the user is not required.

A wireless access point may assist in initial setup and configuration of the wireless-enabled device. The wireless access point may support WLAN standards including IEEE <NUM>. The wireless access point may be associated with an authentication server that supports IEEE <NUM>. 1X to perform authentication of wireless client devices.

At block <NUM>, wireless-enabled device <NUM> sends a first secret via a first limited network. Wireless-enabled device <NUM> may send an association request to a wireless access point, such as wireless access point <NUM>. The first secret may include encoded network credentials that are unique to wireless-enabled device <NUM>, as described in detail with reference to <FIG>. Wireless-enabled device <NUM> may have an authentication token that provides access to the first limited network. The authentication token may be a built-in token in wireless-enabled device <NUM>.

Wireless access point <NUM> may allow wireless-enabled device <NUM> to access the first limited network based on the authentication token. The first limited network may provide a limited access only one or more servers, such as server <NUM>. The first limited network may provide a limited access to only a portion of the information on the one or more servers, such as server <NUM>. Wireless access point <NUM> may provide an open access to one or more servers on a whitelist. The one or more servers may include a whitelisted server and the first limited network may be a rate-limiting network.

At block <NUM>, server <NUM> receives the first secret from wireless-enabled device <NUM>. At block <NUM>, wireless client device <NUM> obtains a second secret associated with wireless-enabled device <NUM>. The second secret may be uniquely associated with wireless-enabled device <NUM> that indicates a physical control and/or proximity, such as encoded network credentials as described with reference to <FIG>. At block <NUM>, wireless client device sends the second secret with a request to claim wireless-enabled device <NUM>.

At block <NUM>, server <NUM> receives the second secret and the request to claim wireless-enabled device <NUM>. Block <NUM> may be performed prior to, later than or at the same, or substantially the same (e.g., within a preset duration), time as block <NUM>. At block <NUM>, server <NUM> determines if the first secret matches with the second secret. If the first secret matches with the second secret, at block <NUM>, server <NUM> assigns credentials of a network access account and sends to wireless-enabled device <NUM> to access a wireless network. The network access account may be a robot account that may be authenticated by server <NUM> to access the wireless network. Credentials of the network access account may include a network identifier and/or password associated with the wireless network.

If the first secret does not match with the second secret, at block <NUM>, server <NUM> sends an error message and a request for confirmation to wireless client device <NUM>. At block <NUM>, wireless-enabled device <NUM> receives the credentials of the network access account from server <NUM>.

At block <NUM>, wireless-enabled device <NUM> may determine if general internet access is needed. Wireless-enabled device <NUM> may determine what kind of network access wireless-enabled device <NUM> needs, such as based on the type of device, type of application running, and/or type of network traffic associated with wireless-enabled device <NUM>. Wireless-enabled device <NUM> may determine only limited network access is needed for authentication and/or communication with server <NUM>. Wireless-enabled device <NUM> may determine general network access is needed to access one or more servers other than server <NUM>.

At block <NUM>, if wireless-enabled device <NUM> needs general internet access, wireless-enabled device <NUM> sends an association request including the credentials of the network access account received from server <NUM> to wireless access point <NUM>. At block <NUM>, if wireless-enabled device <NUM> does not need general internet access, wireless-enabled device <NUM> stays on the first limited network.

At block <NUM>, wireless access point <NUM> receives the association request including the credentials of the network access account. At block <NUM>, wireless access point <NUM> establishes, based on the credentials of the network access account, a network connection with wireless-enabled device <NUM> in a second wireless network.

The present disclosure described herein may offer several advantages for initial setup and configuration of a wireless-enabled device. A wireless client device of the user may not need to terminate its network connection and connect with a provisional network hosted by the wireless-enabled device. Access to a WiFi and/or network application program interface (API) that is not exposed to a wireless client device of the user is not required. The user may not need to be aware of the provisional wireless network hosted by the wireless-enabled device. The user may not need to provide and/or input network identifiers of the wireless local area network to the wireless-enabled device. The user may not need to input a SSID or a password of the wireless-enabled device on the wireless client device.

A wireless access point may assist in initial setup and configuration of the wireless-enabled device. The wireless access point may support an isolated network where unauthenticated devices are only allowed connection to whitelisted servers. The wireless-enabled device may not need to connect to a local network or the internet for initial setup and configuration. Many of the above-described features and applications are implemented as software processes that are specified as a set of instructions recorded on a computer readable storage medium (also referred to as computer readable medium). When these instructions are executed by one or more processing unit(s) (e.g., one or more processors, cores of processors, or other processing units), they cause the processing unit(s) to perform the actions indicated in the instructions. Examples of computer readable media include, but are not limited to, CD-ROMs, flash drives, RAM chips, hard drives, EPROMs, etc. The computer readable media does not include carrier waves and electronic signals passing wirelessly or over wired connections.

In this specification, the term "software" is meant to include firmware residing in read-only memory or applications stored in magnetic storage, which can be read into memory for processing by a processor. Also, in some implementations, multiple software aspects of the subject disclosure can be implemented as sub-parts of a larger program while remaining distinct software aspects of the subject disclosure. In some implementations, multiple software aspects can also be implemented as separate programs. Finally, any combination of separate programs that together implement a software aspect described here is within the scope of the subject disclosure. In some implementations, the software programs, when installed to operate on one or more electronic systems, define one or more specific machine implementations that execute and perform the operations of the software programs.

A computer program (also known as a program, software, software application, script, or code) can be written in any form of programming language, including compiled or interpreted languages, declarative or procedural languages, and it can be deployed in any form, including as a standalone program or as a module, component, subroutine, object, or other unit suitable for use in a computing environment.

These functions described above can be implemented in digital electronic circuitry, in computer software, firmware or hardware. The techniques can be implemented using one or more computer program products. Programmable processors and computers can be included in or packaged as mobile devices. The processes and logic flows can be performed by one or more programmable processors and by one or more programmable logic circuitry. General and special purpose computing devices and storage devices can be interconnected through communication networks.

Some implementations include electronic components, for example, microprocessors, storage and memory that store computer program instructions in a machine-readable or computer-readable medium (alternatively referred to as computer-readable storage media, machine-readable media, or machine-readable storage media). Some examples of such computer-readable media include RAM, ROM, read-only compact discs (CD-ROM), recordable compact discs (CD-R), rewritable compact discs (CD-RW), read-only digital versatile discs (e.g., DVD-ROM, dual-layer DVD-ROM), a variety of recordable/rewritable DVDs (e.g., DVD-RAM, DVD-RW, DVD+RW, etc.), flash memory (e.g., SD cards, mini-SD cards, micro-SD cards, etc.), magnetic or solid state hard drives, read-only and recordable Blu-Ray® discs, ultra density optical discs, any other optical or magnetic media, and floppy disks. The computer-readable media can store a computer program that is executable by at least one processing unit and includes sets of instructions for performing various operations. Examples of computer programs or computer code include machine code, for example, is produced by a compiler, and files including higher-level code that are executed by a computer, an electronic component, or a microprocessor using an interpreter.

While the above discussion primarily refers to microprocessor or multi-core processors that execute software, some implementations are performed by one or more integrated circuits, for example, application specific integrated circuits (ASICs) or field programmable gate arrays (FPGAs). In some implementations, such integrated circuits execute instructions that are stored on the circuit itself.

To provide for interaction with a user, implementations of the subject matter described in this specification can be implemented on a computer having a display device, e.g., a CRT (cathode ray tube) or LCD (liquid crystal display) monitor, for displaying information to the user and a keyboard and a pointing device, e.g., a mouse or a trackball, by which the user can provide input to the computer.

It is understood that any specific order or hierarchy of blocks in the processes disclosed is an illustration of example approaches. Based upon design preferences, it is understood that the specific order or hierarchy of blocks in the processes may be rearranged, or that all illustrated blocks be performed. Some of the blocks may be performed simultaneously. For example, in certain circumstances, multitasking and parallel processing may be advantageous.

Thus, the claims are not intended to be limited to the aspects shown herein, but are to be accorded the full scope consistent with the language claims, wherein reference to an element in the singular is not intended to mean "one and only one" unless specifically so stated, but rather "one or more. Headings and subheadings, if any, are used for convenience only and do not limit the subject disclosure.

Claim 1:
A method of joining a wireless-enabled device (<NUM>) to a wireless network, the method comprising:
establishing, by the wireless-enabled device (<NUM>), a first network connection between a wireless access point (<NUM>) and the wireless-enabled device (<NUM>) in a first wireless network based on first network credentials, by:
receiving a first connection request from the wireless access point (<NUM>); and
transmitting a first authorization message in response to the first connection request, the first authorization message comprising parameters for the first network connection with the wireless access point (<NUM>);
receiving, from the wireless access point (<NUM>), second network credentials for a second wireless network using the first network connection;
establishing, by the wireless-enabled device (<NUM>), a second network connection between the wireless access point (<NUM>) and the wireless-enabled device (<NUM>) in the second wireless network based on the second network credentials, by:
transmitting a second connection request to the wireless access point (<NUM>), and
receiving a second authorization message from the wireless access point (<NUM>) in response to the second connection request, the second authorization message comprising parameters for the second network connection with the wireless access point (<NUM>);
providing, by the wireless-enabled device (<NUM>), the first network credentials to a client device, which is connected to the second network, to send the first network credentials to a server (<NUM>) for verification; and
receiving, from the server (<NUM>), registration information associated with a user account of a cloud-based service.