Abstract:
A method for connecting an audio device to a wireless network is provided. A first audio device on a wireless network receives notice that a second audio device not on the network is available to join the wireless network. The first audio device provides a bridge network apart from the wireless network. A bridge channel is established between the first audio device and the second audio device via the bridge network. The first audio device provides network credentials to the second audio device over the bridge channel. The second audio device uses the credentials to establish a connection with the wireless network.

Description:
CROSS-REFERENCE TO RELATED APPLICATIONS 
       [0001]    This application claims the benefit of U.S. Provisional Patent Application Ser. No. 62/160,204, filed May 12, 2015, entitled “Method for Negotiating Group Membership for Audio Controllers,” which is incorporated by reference herein in its entirety. 
     
    
     FIELD OF THE INVENTION 
       [0002]    The present invention relates to communications networks, and more particularly, is related to networked audio controllers. 
       BACKGROUND OF THE INVENTION 
       [0003]    While home wireless networks have increased in popularity, configuration of devices being added to a wireless network may be cumbersome. For example, adding a device to a WiFi network generally involves entering the correct network credentials into the device, including the type of network protocol, the network name, the type of security used by that network (WEP, WPA, etc.), and a password for that network. 
         [0004]    In order to simplify this process, various protocols have been developed. For example, Wi-Fi Protected Setup (WPS) is a protocol where a user may manually place the router providing the wireless network and the new device in a discovery mode, where the router provides network credentials to the device. This protocol is router based. However, this may be problematic in some circumstances. For example, WPS may require physical access to the router, which may be unavailable. Further, not all routers support WPS. Therefore, there is a need in the industry to overcome one or more of the abovementioned shortcomings. 
       SUMMARY OF THE INVENTION 
       [0005]    Embodiments of the present invention provide a system and method for negotiating group membership for audio controllers. Briefly described, the present invention is directed to a method for connecting an audio device to a wireless network is provided. A first audio device on a wireless network receives notice that a second audio device not on the network is available to join the wireless network. The first audio device provides a bridge network apart from the wireless network. A bridge channel is established between the first audio device and the second audio device via the bridge network. The first audio device provides network credentials to the second audio device over the bridge channel. The second audio device uses the credentials to establish a connection with the wireless network. 
         [0006]    Other systems, methods and features of the present invention will be or become apparent to one having ordinary skill in the art upon examining the following drawings and detailed description. It is intended that all such additional systems, methods, and features be included in this description, be within the scope of the present invention and protected by the accompanying claims. 
     
    
     
       BRIEF DESCRIPTION OF THE DRAWINGS 
         [0007]    The accompanying drawings are included to provide a further understanding of the invention, and are incorporated in and constitute a part of this specification. The components in the drawings are not necessarily to scale, emphasis instead being placed upon clearly illustrating the principles of the present invention. The drawings illustrate embodiments of the invention and, together with the description, serve to explain the principals of the invention. 
           [0008]      FIG. 1  is a schematic diagram showing a wireless network during manual network configuration of a first player. 
           [0009]      FIG. 2  is a schematic diagram showing the wireless network after the first player has joined the network. 
           [0010]      FIG. 3  is a schematic diagram showing the wireless network with the first player in a bridging network with a second player. 
           [0011]      FIG. 4  is a schematic diagram showing the wireless network after the second player has joined the network. 
           [0012]      FIG. 5  is a schematic diagram showing the wireless network after the controller has discovered the second player. 
           [0013]      FIG. 6  is a flowchart of an exemplary method for configuring an audio device to join a wireless network. 
           [0014]      FIG. 7  is a schematic diagram illustrating an example of a system for executing functionality of the present invention. 
           [0015]      FIG. 8  is a timing diagram illustrating one implementation of the timing for the exemplary method of  FIG. 6 . 
       
    
    
     DETAILED DESCRIPTION 
       [0016]    Reference will now be made in detail to embodiments of the present invention, examples of which are illustrated in the accompanying drawings. Wherever possible, the same reference numbers are used in the drawings and the description to refer to the same or like parts. 
         [0017]    As used within this disclosure, “network credentials” may refer to, but not is limited to, the type of network protocol, the network name, the type of security used by that network (WEP, WPA, etc.), and a password for that network. 
         [0018]    As used within this disclosure, a “player” refers to an exemplary audio device, for example, a powered speaker, preamp, amplifier, receiver, etc. The term player is not intended to convey that the audio device is capable, on its own, of rendering an audio signal. 
         [0019]      FIG. 1  is a schematic diagram showing a wireless network during manual network configuration of a first player. As shown by  FIG. 1 , a communications network  210 , for example, a home WiFi network including a WiFi router  212  or wireless access point, may be in communication with multiple WiFi enabled devices, for example, a smart phone  224 , a laptop computer,  234 , a television  232 , and a tablet computer  240 . A first audio device  221  and a second audio device  222  are WiFi enabled, but are not configured to communicate with the network  210 . The WiFi network may be, for example, an IEEE 802.11bgn network, among other possible networks. 
         [0020]    A computing device, for example, one or more of the smart phone  224 , the laptop computer  234 , and the tablet computer  240 , is configured to run an application controlling one or more audio devices  221 ,  222 . For simplicity, a first exemplary embodiment assumes the smart phone  224  is hosting the controller application, and may be referred to hereafter as the controller  224 . 
         [0021]    The controller  224  allows a user of the controller application to control and/or configure one or more audio devices, for example, the audio devices  221 ,  222 . The audio devices  221 ,  222  may be, for example, speakers containing audio amplifiers and a WiFi interface configured to render a received music stream. For example, the audio devices  221 ,  222  may render a music stream received from the controller  224  or another streaming source via the network  210 . While the described embodiments herein generally include players as audio devices for exemplary purposes, audio devices are not limited to players, and may also include other WiFi enabled audio devices, for example, pre-amplifiers and/or audio processors. 
         [0022]    The audio devices  221 ,  222  may both be a single type of device, or they may be different types of devices. Once the audio devices  221 ,  222  are added to the network  210 , the controller  224  may allow a user of the controller  224  to control the audio devices  221 ,  222 . For example, the user of the controller  224  may use the controller  224  to control operating parameters of the audio devices  221 ,  222 , such as volume, balance, and/or equalization. The controller  224  may directly stream program material, such as an audio stream, to the audio devices  221 ,  222 , or may select program material to be streamed to the audio devices  221 ,  222  from an internet source via the router  212  of the WiFi network  210 . 
         [0023]    The audio devices  221 ,  222 , may include a processor or a computer system  500  ( FIG. 7 ), described further below. Initially, the audio devices  221 ,  222  are not configured to communicate via the network  210 , so the controller  224  may communicate with the players  221 ,  222  via another means, for example, a Bluetooth connection or a hard-wired connection. For example, the controller  224  may be physically connected to the first audio device  221  via a cable  120 , for example, an analog audio cable, an ethernet cable, or a Universal Serial Bus (USB) cable. The controller  224  establishes a communication channel with the first player  221  over the cable  120 , for example, a duplex communication channel. The controller  224  may provide network credentials for the network  210  to the first audio device  221  over the cable  210 . For example, the controller  224  may have received the provided network credentials from the user  225  when the user  225  provisions the first audio device  221  to access the WiFi network  210 . 
         [0024]    The first audio device  221  establishes a connection with the network  210  (“joins the network”) with the provided network credentials, as shown in  FIG. 2 . The cable  120  ( FIG. 1 ) between the controller  224  and the first audio device  221  may optionally be disconnected. The controller  224  discovers the first player  221 , and adds the first audio device  221  to a group  220 . The group  220  may include the controller  224  and one or more audio devices that may be configured by and/or controlled by the controller  224 . As shown in  FIG. 2 , the group  220  includes the audio device  221  and the controller  224 . The group may be, for example, a collection of one or more audio and/or video devices that are configured to collectively render a multi-channel audio and/or audio/video program, for example, a stereo pair, a stereo pair with subwoofer ( 2 . 1 ), a surround system including front, rear, center, and subwoofer speakers ( 5 . 1 ,  7 . 1 ,  7 . 2 ), among other collections. Each device in the group  220  may be configured by the controller  224  to render one or more channels of the multi-channel audio and/or audio/video program. 
         [0025]      FIG. 6  is a flowchart of an exemplary embodiment of a method to wirelessly add a second player  222  ( FIG. 2 ) to the network  210  ( FIG. 2 ). It should be noted that any process descriptions or blocks in flowcharts should be understood as representing modules, segments, portions of code, or steps that include one or more instructions for implementing specific logical functions in the process, and alternative implementations are included within the scope of the present invention in which functions may be executed out of order from that shown or discussed, including substantially concurrently or in reverse order, depending on the functionality involved, as would be understood by those reasonably skilled in the art of the present invention. The method is described here referencing  FIGS. 2-5 . 
         [0026]    A first audio device (audio device  221 ) on the network is given notice that a second audio device (audio device  222 ) not on the network is available, as shown by block  610 . For example, a user may use a graphical user interface (GUI) on a controller application on the smart phone (controller)  224  to notify the application on the controller  224  that the second audio device  222  is available, and the controller  224  may transmit a notice message to the first audio device  221 . In response to this notice message, the first audio device  221  provides a bridge network  320  ( FIG. 3 ), as shown by block  620 . The bridge network  320  may be a wireless network distinct from the network  212 . The bridge network  320  may be WiFi, BlueTooth, ZigBee, RF, or another wireless network protocol. The bridge network  320 , or temporary access point (AP), is generally a short duration network, where the bridge network is established temporarily during a configuration time window, and disabled after configuration is complete. In general, the bridge network  320  includes a proprietary protocol, so that only pre-configured audio devices will recognize and/or be recognized by the bridge network  320 . The second audio device  222  detects the first audio device  221  and connects to the bridge network  320 , for example, using a pre-shared key (PSK). 
         [0027]    A bridge communication channel is established between the first audio device  221  and the second audio device  222  via the bridge network  320 , as shown by block  630 . The first audio device  221  may notify the controller  224  that the first audio device  221  has established a bridge channel over the bridge network  320  with the second audio device  222 . 
         [0028]    The user of the controller  224  may be prompted by the controller  224  to request the second audio device  222  to initiate a handshake with the first audio device  221  over the bridge network  320  so that the first audio device  221  and second audio device  222  can exchange network credentials. For example, the application on the controller  224  may display a visual prompt via the controller application GUI instructing the user to manually initiate the handshake by pushing a button on the second audio device  222 . Alternatively, the second audio device  222  may alert the user to manually initiate the handshake, for example, with a flashing LED or an audio signal such as a loud beep, or even by playing a pre-recorded audio message. The user may respond to this alert by manually initiating the handshake via a button push on the second audio device  222 . 
         [0029]    The first audio device  221  provides network credentials for the network  210  to the second audio device  222  over the bridge network  320  channel, as shown by block  640 . The second audio device  222  establishes connection to the network  210  using the network credentials provided to the second audio device  222  by the first audio device  221 , as shown by block  650  and  FIG. 4 . The bridge network  320  may be discontinued after the second audio device  222  has joined the network  210 . The controller  224  may discover the second audio device  222  on the network  210 , for example, using a discovery protocol. Once the controller  224  has discovered the second audio device  222 , the controller application on the controller  224  may add the second audio device  222  to the group  220 . For example, the controller  224  may assign an audio channel to be reproduced by the second audio device, where the audio channel is one of two or more audio channels rendering an audio and/or video program by the group  220 .  FIG. 5  is a schematic diagram showing the wireless network after the controller  224  has discovered the second audio device  222 . 
         [0030]      FIG. 8  is a timing diagram  800  illustrating one implementation of the timing for the exemplary method  600  for discovery by the first audio device  221  and the controller  224  of a second audio device  222  in a WiFi network. It should be noted that any process descriptions, actions or blocks in timing diagrams should be understood as representing modules, segments, portions of code, or steps that include one or more instructions for implementing specific logical functions in the process, and alternative implementations are included within the scope of the present invention in which functions may be executed out of order from that shown or discussed, including substantially concurrently or in reverse order, depending on the functionality involved, as would be understood by those reasonably skilled in the art of the present invention. 
         [0031]    The timing diagram  800  includes actions between system entities, indicated by arrows  801 - 827 , and actions performed by a single system entity, as shown by blocks  830 - 837 . The user  225  turns on the second audio device  222 , as shown by action  801 , and the second audio device may detect that it does not have a working network connection, for example, by detecting the Ethernet link is down, or by finding no DHCP server, as shown by block  830 . The user  255  then adds a device to the controller  224 , as shown by action  801 . For example, the user  255  may use a graphical user interface of the controller  224  to notify the controller  224  to add the second audio device  222  to a list of devices. This may be accomplished by the user  225  selecting “Add Device” from a settings menu of the controller  224 . The specific behavior described above may depend on whether or not the first audio device  221  has network SSID and Password information. For example, depending upon the specific network, the user  225  may enter a network password and/or SSID that the controller  224  is using. 
         [0032]    The controller  224  notifies the previously configured first audio device  221  to start an invitation process, as shown by action  803 . The configured first audio device  221  starts a temporary access point (AP), or bridge network, including a vendor specific information element (IE), as shown by block  831 . The second audio device  222  scans the temporary AP with the vendor specific IE, as shown by block  832 . The second audio device  222  finds the first audio device  221  on the bridge network and the second audio device  222  connects to the first audio device  221  on the bridge network with a generated pre-shared key (PSK), as shown by action  804 . The first audio device  221  notifies the controller  224  that an un-configured device, namely the second audio device  222 , has been detected, as shown by action  805 . The controller  224  notifies the user  225  that the second audio device  222  is available to connect on the network, as shown by action  806 . This notification may be, for example, via the GUI of the controller  224 , or via other notification means, for example, an audible or visual indicator on the controller,  224 , the first audio device  221 , and/or the second audio device  222 . 
         [0033]    The connection of the second audio device  222  to the network is then initiated by the user  225 , for example, by pushing a connect button or another actuator on the second audio device, as shown by action  807 . The second audio device  222  generates a DHCP request to the first audio device  221 , for example, via the bridge network, as shown by action  808 , and the second audio device  222  passes the DHCP request to a network router having a DHCP server, for example, the WiFi router  212 , as shown by action  809 . For example, the second audio device  222  may initiate an DHCP client and send a “DHCP discover” command to the DHCP server of the WiFi router  212  via the configured first audio device  221 . The WiFi router  212  forwards an IP address to the first audio device  221 , as shown by action  810 , and the first audio device  221  passes the IP address to the second audio device  222 , as shown by action  811 . For example, the WiFi router  212  DHCP server sends a response “DHCP offer” command to the second audio device  222  via the configured first audio device  221 . At this time, the IP address of the second audio device  222  is assigned. The second audio device  222  connects to the WiFi router  212  via the WiFi network using the received IP address, so the controller  224 , the first audio device  221 , the second audio device  222 , and the WiFi router  212  may all communicate via the WiFi network, as shown by block  833 . 
         [0034]    The second audio device  222  starts UPnP (Universal Plug and Play) function for configuring, as shown by block  834 , and sends a “SSDP (Simple Service Discovery Protocol) notify” command to the controller  224 , as shown by action  812 . The controller  224  configures the second audio device  222  with UPnP commands, as shown by actions  813  and  814 . Optionally, the controller  224  may retrieve information for a home AP, for example, the SSID and/or password from the first audio device  221 , as shown by actions  815  and  816 . A home AP is typically an existing local hardware device called a “router” or “wi-fi router” that provides network access to devices located within the home via wired and wireless connections. It allows the devices on the local network to access an external network such as the Internet via it&#39;s built-in routing and bridging functions. 
         [0035]    The controller  224  sends the home AP information to the second audio device  222 , as shown by action  817 . The second audio device  222  connects to the home AP, as shown by block  835 . If the connection fails, the second audio device  222  front panel indicator may indicate an alert, for example, with a flashing light. Otherwise the second audio device notifies the controller  224  of the SSDP, as shown by action  818 . The controller  224  may request and receive configuration status from the second audio device  222 , as shown by actions  819  and  820 . The controller  224  declares the second audio device  222  as being found, as shown by block  836 , and notifies the user that the second audio device  222  is configured, and the second audio device  222  should be closed to the home AP, as shown by action  821 . 
         [0036]    The user  225  may forward a name for the second audio device  222  to the controller  224 , as shown by action  222 . The controller  224  may then negotiate with the second audio device  222  to set the name of the second audio device  222 , as shown by actions  823 - 826 . For example, the controller  224  may request a configuration token from the second audio device  222  with a GetConfigurationToken command, as shown by action  823 , and the second audio device  222  may respond by sending a configuration token to the controller  224 , as shown by action  824 . The configuration token may include information indicating the current configuration state of the second audio device  222 . The controller  224  may compare the information indicating the current configuration state of the second audio device  222 , and send the second audio device  222  a name change command (SetFriendlyName, as per action  825 ), and may further update the configuration of the second audio device  221  via an ApplyChanges command, as shown by action  226 . The controller  224  sends a “Stop Invitation” command to the first audio device  221 , as shown by action  827 . The first audio device  221  stops the temporary (bridge) AP, as shown by block  837 . 
         [0037]    System 
         [0038]    As previously mentioned, the present system for executing the functionality of the audio devices  221 ,  222  ( FIGS. 2-5 ) described in detail above may be a computer, an example of which is shown in the schematic diagram of  FIG. 5 . The system  500  contains a processor  502 , a storage device  504 , a memory  506  having software  508  stored therein that defines the abovementioned functionality, input and output (I/O) devices  510  (or peripherals), and a local bus, or local interface  512  allowing for communication within the system  500 . The local interface  512  can be, for example but not limited to, one or more buses or other wired or wireless connections, as is known in the art. The local interface  512  may have additional elements, which are omitted for simplicity, such as controllers, buffers (caches), drivers, repeaters, and receivers, to enable communications. Further, the local interface  512  may include address, control, and/or data connections to enable appropriate communications among the aforementioned components. 
         [0039]    The processor  502  is a hardware device for executing software, particularly that stored in the memory  506 . The processor  502  can be any custom made or commercially available single core or multi-core processor, a central processing unit (CPU), an auxiliary processor among several processors associated with the present system  500 , a semiconductor based microprocessor (in the form of a microchip or chip set), a macroprocessor, or generally any device for executing software instructions. 
         [0040]    The memory  506  can include any one or combination of volatile memory elements (e.g., random access memory (RAM, such as DRAM, SRAM, SDRAM, etc.)) and nonvolatile memory elements (e.g., ROM, hard drive, tape, CDROM, etc.). Moreover, the memory  506  may incorporate electronic, magnetic, optical, and/or other types of storage media. Note that the memory  506  can have a distributed architecture, where various components are situated remotely from one another, but can be accessed by the processor  502 . 
         [0041]    The software  508  defines functionality performed by the system  500 , in accordance with the present invention. The software  508  in the memory  506  may include one or more separate programs, each of which contains an ordered listing of executable instructions for implementing logical functions of the system  500 , as described below. The memory  506  may contain an operating system (O/S)  520 . The operating system essentially controls the execution of programs within the system  500  and provides scheduling, input-output control, file and data management, memory management, and communication control and related services. 
         [0042]    The I/O devices  510  may include input devices, for example but not limited to, a keyboard, mouse, scanner, microphone, etc. Furthermore, the I/O devices  510  may also include output devices, for example but not limited to, a printer, display, etc. The I/O devices  510  may further include devices that communicate via both inputs and outputs, for instance but not limited to, a modulator/demodulator (modem; for accessing another device, system, or network), a radio frequency (RF) or other transceiver, a telephonic interface, a bridge, a router, or other device. 
         [0043]    The I/O devices  510  include a communication processor  528 . The communication processor may control and/or include a Wi-Fi interface  522 , for example, but not limited to an interface configured to an IEEE 802.11bgn network interface, among other possible wireless network interfaces. A bridge network interface  524  is configured to provide wireless communication independently of the Wi-Fi interface  522 , as described above. A cable interface  526  provides a hard-wired communications interface, for example, between the players  221 ,  222  and the controller application. 
         [0044]    When the system  500  is in operation, the processor  502  is configured to execute the software  508  stored within the memory  506  to communicate data to and from the memory  506 , and to generally control operations of the system  500  pursuant to the software  508 , as explained above. 
         [0045]    When the functionality of the system  500  is in operation, the processor  502  is configured to execute the software  508  stored within the memory  506 , to communicate data to and from the memory  506 , and to generally control operations of the system  500  pursuant to the software  508 . The operating system  520  is read by the processor  502 , perhaps buffered within the processor  502 , and then executed. 
         [0046]    When the system  500  is implemented in software  508 , it should be noted that instructions for implementing the system  500  can be stored on any computer-readable medium for use by or in connection with any computer-related device, system, or method. Such a computer-readable medium may, in some embodiments, correspond to either or both the memory  506  or the storage device  504 . In the context of this document, a computer-readable medium is an electronic, magnetic, optical, or other physical device or means that can contain or store a computer program for use by or in connection with a computer-related device, system, or method. Instructions for implementing the system can be embodied in any computer-readable medium for use by or in connection with the processor or other such instruction execution system, apparatus, or device. Although the processor  502  has been mentioned by way of example, such instruction execution system, apparatus, or device may, in some embodiments, be any computer-based system, processor-containing system, or other system that can fetch the instructions from the instruction execution system, apparatus, or device and execute the instructions. In the context of this document, a “computer-readable medium” can be any means that can store, communicate, propagate, or transport the program for use by or in connection with the processor or other such instruction execution system, apparatus, or device. 
         [0047]    Such a computer-readable medium can be, for example but not limited to, an electronic, magnetic, optical, electromagnetic, infrared, or semiconductor system, apparatus, device, or propagation medium. More specific examples (a nonexhaustive list) of the computer-readable medium would include the following: an electrical connection (electronic) having one or more wires, a portable computer diskette (magnetic), a random access memory (RAM) (electronic), a read-only memory (ROM) (electronic), an erasable programmable read-only memory (EPROM, EEPROM, or Flash memory) (electronic), an optical fiber (optical), and a portable compact disc read-only memory (CDROM) (optical). Note that the computer-readable medium could even be paper or another suitable medium upon which the program is printed, as the program can be electronically captured, via for instance optical scanning of the paper or other medium, then compiled, interpreted or otherwise processed in a suitable manner if necessary, and then stored in a computer memory. 
         [0048]    In an alternative embodiment, where the system  500  is implemented in hardware, the system  500  can be implemented with any or a combination of the following technologies, which are each well known in the art: a discreet logic circuit(s) having logic gates for implementing logic functions upon data signals, an application specific integrated circuit (ASIC) having appropriate combinational logic gates, a programmable gate array(s) (PGA), a field programmable gate array (FPGA), etc. 
         [0049]    It will be apparent to those skilled in the art that various modifications and variations can be made to the structure of the present invention without departing from the scope or spirit of the invention. In view of the foregoing, it is intended that the present invention cover modifications and variations of this invention provided they fall within the scope of the following claims and their equivalents.