Abstract:
An article of manufacture includes an interface component configured to couple to a computer, the computer being part of a network having a gateway device. The article further includes a memory component containing computer-implementable instructions that, when executed by the computer, gather network configuration information from the gateway device. The network configuration information is configured to enable an electronic device to join the network.

Description:
PRIORITY CLAIM 
       [0001]    This application claims priority from U.S. Provisional Patent Application No. 60/949,618, filed Jul. 13, 2007, entitled “ADDING NETWORK INTELLIGENCE TO A REMOVABLE DEVICE,” which is hereby incorporated by reference in its entirety as if fully set forth herein. 
     
    
     FIELD OF THE INVENTION 
       [0002]    Embodiments of the present invention are generally directed to computer networks and, more particularly, to a system for conveniently adding devices to a network. 
       BACKGROUND OF THE INVENTION 
       [0003]    The proliferation of wireless-enabled laptops has created demand for wireless networks in the home. Consumers can purchase wireless routers (or access points) at electronics stores and add them to their existing ISP connection to create their own wireless access to broadband networks. 
         [0004]    Transmissions between a laptop and an access point are typically unsecured. These transmissions often happen in clear-text, and a malicious user with limited skill can a) snoop on the conversation that is occurring between the laptop and the network and b) gain access to the network and resources on the internet. Fortunately, most routers and access points have the ability to enable wireless security. In doing so, a secret password is shared between all devices that want to communicate with the access point. 
         [0005]    By default, typically, such devices ship with wireless security disabled. The act of enabling wireless security on these devices is challenging and complex to the average home user. 
         [0006]    Wireless security is a complex field. There are many different types of wireless security available, such as WEP, WPA, WPA-PSK, WPA-RADIUS, WPA2, that often involve complex ‘hexadecimal keys’ or pass-phrases and sub-choices of encryption methods (TKIP/AES, etc). The method of securing a wireless network involves configuring the desired security settings inside the router and then configuring each wireless client with the same settings and pass-phrases. 
         [0007]    To further complicate things, each device requiring configuration may have a very different user experience. For example, the router may have a difficult-to-navigate web-based administration console, different versions of Windows have different user interfaces, a Mac in the home would require a different approach, and finally “headless devices” that don&#39;t have a display console, such as a network enabled web-camera or networked Digital Video Recorder, may have yet a very different user interface. 
         [0008]    Some efforts have been made by the industry to improve on the simplification of wireless network security. For example, the Microsoft Corporation has developed an approach known as “Windows Connect Now” (WCN) that allows wireless security configuration information to be stored in an XML file on removable storage devices such as USB keys. The Wi-Fi Alliance has been driving a set of standards around wireless configuration known as Wi-Fi Protected Setup (WPS). 
         [0009]    However, the current industry efforts fall short in a number of areas. For example, the WPS wizards in Windows XP and Vista may allow for creation of new network settings onto a USB key. This helps with wireless clients that support the key format, but it does not help users reconfigure their existing router settings to match. This is a complex task that users often do not know how to complete. Additionally, there are no standard APIs to program routers. Most of them support a web-based administrative interface, but not a well structured API set. Moreover, WPS is hindered by many conflicting ways of accomplishing the same goal (e.g., PIN based configuration, Push-Button configuration etc.) 
         [0010]    Once wireless security has been configured and enabled on a network, the task of adding a new device to that network is also complex; as it requires client configuration of the same settings. In many cases, a new device is added to the network a considerable amount of time after the network was originally secured, in which case the settings have been long forgotten. 
       BRIEF SUMMARY OF THE INVENTION 
       [0011]    An embodiment of the invention includes an article of manufacture having an interface component configured to couple to a computer, the computer being part of a network having a gateway device. The article further includes a memory component containing computer-implementable instructions that, when executed by the computer, gather network configuration information from the gateway device. The network configuration information is configured to enable an electronic device to join the network. 
     
    
     
       BRIEF DESCRIPTION OF THE DRAWING 
         [0012]    Preferred and alternative embodiments of the present invention are described in detail below with reference to the following figures: 
           [0013]      FIG. 1  is a functional block diagram of a network operating environment in which an embodiment of the present invention may be implemented; 
           [0014]      FIG. 2  is a functional block diagram of an operating environment in which an embodiment of the present invention may be implemented; 
           [0015]      FIG. 3  is a functional block diagram of an operating environment in which an embodiment of the present invention may be implemented; and 
           [0016]      FIGS. 4 and 5  are flowcharts illustrating a process according to an embodiment of the invention. 
       
    
    
     DETAILED DESCRIPTION OF THE INVENTION 
       [0017]    As is described in further detail below, various embodiments of the invention may employ elements of a network management tool. An embodiment of the network management tool, available from Pure Networks under the name NETWORK MAGIC, is described in detail in U.S. Provisional Patent Application No. 60/634,432, filed Dec. 7, 2004, entitled “Network Management” and naming Steve Bush et al. as inventors, and U.S. patent application Ser. No. 11/297,809, filed on Dec. 7, 2005, entitled “Network Management” and naming Steve Bush et al. as inventors, which applications, along with commonly owned U.S. Provisional Patent Application No. 60/789,522, filed Apr. 4, 2006, entitled “Network Management,” U.S. patent application Ser. No. 10/916,642, filed on Aug. 10, 2004, entitled “Service Licensing And Maintenance For Networks,” U.S. patent application Ser. No. 11/457,783, filed on Jul. 14, 2006, entitled “Network Device Management,” and U.S. patent application Ser. No. 11/457,763, filed on Jul. 14, 2006, entitled “Network Device Setup Utility,” are incorporated entirely herein by reference. 
         [0018]    Additionally, various embodiments of the invention may be employed within a small network.  FIG. 1  illustrates an example of this type of small network. The network  101  may include a variety of different computing devices or “nodes”. For example, the network  101  may include one or more laptop computers  103 A, one or more desktop computers  103 B, and one or more personal digital assistants  103 C. In addition to these computers, the network  101  may also include one or more computing appliances, which are not as versatile as a conventional programmable computer, but which nonetheless may be configured to exchange data over a network. Such network appliances may include, for example, one or more printers  103 D and one or more cameras  103 E, as illustrated in  FIG. 1 . Other small networks that can be used with various aspects of the invention may include any suitable computing devices, such as telephones that exchange voice information in data packets (sometimes generically referred to as “Voice over Internet Protocol (VoIP) telephones), digital video recorders, televisions, streaming media players, and digital music servers, among others. 
         [0019]    Each of these networked devices  103  communicates, either directly or indirectly, with a gateway device  105 . In turn, the gateway device  105  typically will communicate with an external device or network. An external network may be another private network, or it may be a public network, such as the Internet  107 . Thus, a gateway device is a device that can steer electronic data from one network to another network. Typically, a gateway device serves as a node on two incompatible networks (i.e., networks that use different communication protocol formats) and it can convert data from one network&#39;s communication protocol format into the other network&#39;s communication protocol format. As used herein, the term “small network” refers to a network made up of networked devices that each employ the same network address to communicate with the same gateway device, together with the gateway device itself. 
         [0020]    The network devices  103  may be connected to the gateway device  105  using any suitable communication medium. For example, in the illustrated network  101 , the desktop computers  103 B are connected to the gateway device  105  through a hard-wired connection  109 A (such as an Ethernet cable), while the laptop computer  103 A is connected to the gateway device  105  through a IEEE 802.11 wireless connection  109 B and the personal digital assistant  103 C is connected to the gateway device  105  through a Bluetooth wireless connection  109 C. 
         [0021]    It should be appreciated that, as used throughout this application, the term “connect” and its derivatives (e.g., connection, connected, connects) includes both direct and indirect connections. Thus, with the network illustrated in  FIG. 1 , the laptop computer  103 A may be connected to the gateway device  105  using a wireless transceiver incorporated into the laptop computer  103 A and a wireless transceiver incorporated into the gateway device  105 . Alternately, the laptop computer  103 A may be connected to the gateway device  105  using a wireless transceiver external to the laptop computer  103 , the gateway device  105 , or both. 
         [0022]    Typically, the gateway device  105  will be a router. As will be appreciated by those of ordinary skill in the art, a router routes data packets from the networked devices  103  to an external device or network. With some networks, however, the gateway device  105  alternately may be a computer performing router functions, a hub, a bridge, or “layer-3” switch. As will also be appreciated by those of ordinary skill in the art, the computing devices or “nodes” making up the network  101  can communicate with the gateway device  105  using one or more defined communication protocols, such as the Transmission Control Protocol (TCP) and the Internet Protocol (IP). 
         [0023]    With these communication protocols, each computing device  103  and gateway device  105  in the network  101  can be assigned a logical address. For example, if the network  101  is connected to the Internet  107  through an Internet service provider, the Internet service provider can assign the gateway device  105  a logical Internet Protocol (IP) address. The Internet service provider may also provide the gateway device  105  with a block of logical Internet Protocol (IP) addresses for the gateway device  105  to reassign to each network device  103 . Alternatively, the gateway device  105  can itself assign a range of logical Internet Protocol (IP) addresses to each network device  103 , and then use a translation operation (e.g., a Network Address Translation (NAT) operation) to route data packets that it receives to the appropriate network device  103 . This type of logical address typically is unrelated to the particular computing device to which it is assigned. Instead, a logical address identifies the relationship of that computing device to other computing devices in the network. 
         [0024]    In addition to a logical address, each network device has a physical address. For example, most computing devices capable of communicating over a network, including routers, employ a network adapter with a media access control (MAC) address. This type of physical address is assigned to a network adapter according to standards (referred to as Project  802  or just 802 standards, which are incorporated entirely herein by reference) set forth by the Institute of Electrical and Electronic Engineers (IEEE). More particularly, these standards define a 48-bit and 64-bit physical address format for network devices. The first 14 bits of the address are assigned by the IEEE Registration Authority, and uniquely identify the manufacturer of the network adapter. The remaining bits are then assigned by the manufacturer to uniquely identify each network adapter produced by the manufacturer. Consequently, the physical address of a network adapter is unique across all networks unless manually changed by the user. The physical address is unique to the network adapter, and is independent of a computing device&#39;s relationship to other computing devices in a network. Thus, the physical address does not change over time or between uses in different networks. 
         [0025]    A network may include both virtual devices and physical devices. Physical network devices can then include both computer devices and computing appliance devices. A “computer” may generally be characterized as a device that can be programmed to perform a number of different, unrelated functions. Examples of computers can thus include programmable personal computers, such as desktop computers and laptop computers. In addition, programmable media-purposed computers (e.g., “media adapters and servers”), network attached storage devices, programmable entertainment-purposed computers (e.g., video game consoles), some programmable personal digital assistants and some telephones (such as wireless “smart” telephones) may be characterized as computers in a network. A “computing appliance” then may generally be characterized as a device that is limited to primarily performing only specific functions. Examples of a computing appliance may thus include, for example, printers, cameras, telephones that exchange voice information in data packets (sometimes generically referred to as “Voice over Internet Protocol (VoIP) telephones or telephone adapters), digital video recorders, televisions, voice over Internet protocol (VoIP) adapters, print servers, media adapters, media servers, photo frames, data storage servers, routers, bridges and wireless access points. 
         [0026]    As will be appreciated by those of ordinary skill in the art, there may be no clear defining line between “computer” network devices and “computing appliance” network devices in a network. For example, a sophisticated print server may be programmable to additionally or alternately function as a data storage server, while a programmable media-purposed computer or programmable personal digital assistant may have restricted functionality due to limited memory, input devices or output devices. Accordingly, as used herein, the term “computer” can refer to any network device that is capable of implementing a network management tool according to one or more aspects of the invention, such as a personal programmable computer. The term “computer appliance” then can refer to a network device that typically cannot implement a network management tool according to at least one aspect of the invention without additional augmentation. The terms “computing device,” “network component,” or “electronic device” are then used herein to include both computers and computing appliances. 
         [0027]    With conventional networks located in a home, small office or other local environment, a network management tool according to various aspects of the invention can be implemented on, or otherwise executed by, a programmable personal computer, such as a desktop or laptop computer. A general description of this type of computer will therefore now be described. 
         [0028]    An illustrative example of such a computer  201  as may be present in the network  101  described above is illustrated in  FIG. 2 . As seen in this figure, the computer  201  has a computing unit  203 . The computing unit  203  typically includes a processing unit  205  and a system memory  207 . The processing unit  205  may be any type of processing device for executing software instructions, but can conventionally be a microprocessor device. The system memory  207  may include both a read-only memory (ROM)  209  and a random access memory (RAM)  211 . As will be appreciated by those of ordinary skill in the art, both the read-only memory (ROM)  209  and the random access memory (RAM)  211  may store software instructions for execution by the processing unit  205 . 
         [0029]    The processing unit  205  and the system memory  207  are connected, either directly or indirectly, through a bus  213  or alternate communication structure to one or more peripheral devices. For example, the processing unit  205  or the system memory  207  may be directly or indirectly connected to additional memory storage, such as the hard disk drive  215 , the removable magnetic disk drive  217 , the optical disk drive  219 , and the flash memory card  221 . The processing unit  205  and the system memory  207  also may be directly or indirectly connected to one or more input devices  223  and one or more output devices  225 . The input devices  223  may include, for example, a keyboard, touch screen, a remote control pad, a pointing device (such as a mouse, touchpad, stylus, trackball, or joystick), a scanner, a camera or a microphone. The output devices  225  may include, for example, a monitor display, television, printer, stereo, or speakers. 
         [0030]    Still further, the computing unit  203  can be directly or indirectly connected to one or more network interfaces  227  for communicating with a network. This type of network interface  227 , also sometimes referred to as a network adapter or network interface card (NIC), translates data and control signals from the computing unit  203  into network messages according to a communication protocol, such as the Transmission Control Protocol (TCP), the Internet Protocol (IP), and the User Datagram Protocol (UDP). These protocols are well known in the art, and thus will not be described here in more detail. An interface  227  may employ any suitable connection agent for connecting to a network, including, for example, a wireless transceiver, a power line adapter, a modem, or an Ethernet connection. 
         [0031]    It should be appreciated that one or more of these peripheral devices may be housed with the computing unit  203  and bus  213 . Alternately or additionally, one or more of these peripheral devices may be housed separately from the computing unit  203  and bus  213 , and then connected (either directly or indirectly) to the bus  213 . Also, it should be appreciated that both computers and computing appliances may include any of the components illustrated in  FIG. 2 , may include only a subset of the components illustrated in  FIG. 2 , or may include an alternate combination of components, including some components that are not shown in  FIG. 2 . 
         [0032]    It should be noted that, while a general description of a programmable personal computer was provided above, various aspects of the invention may be implemented on any desired device capable of supporting embodiments of the invention. For example, with some aspects of the invention, the network management tool may be implemented on special purposed programmable computers, such as a programmable media or entertainment-purposed computers, or personal digital assistants. Accordingly, the above description of a programmable personal computer should be understood as illustrative rather than limiting. 
         [0033]    A computing appliance may have any combination of the components of the computer  201  discussed above. More typically, however, a computing appliance can be simpler to optimize the performance of a specific function, and thus may have only a subset of these components. For example, a computing appliance may have only a computing unit  203 , an input device  223  or an output device  225 , and a network interface  227 . As will be apparent from the following description, however, a computing appliance will have sufficient computing resources to implement a desired embodiment of the invention in order to provide information to or receive information from a client operating on a separate computing device. 
         [0034]      FIG. 3  illustrates a network configuration device, such as a key  310 , according to an embodiment of the invention. In the illustrated example, the key  310  includes a memory component  320  on which is stored a network management tool  330  that may include computer-executable instructions. The key  310  further includes an interface component  340  that is configured to couple to an electronic device. For example, the interface component  340  may include a connector insertable into a USB port of a network device or a transceiver configured to wirelessly communicate with a network device. 
         [0035]    Examples and aspects of network management tools, such as the network management tool  330 , that may be employed according to various implementations of the invention are discussed in more detail in, for example, U.S. patent application Ser. No. 11/467,534 filed on Aug. 25, 2006, entitled “Network Administration Tool Employing A Network Administration Protocol” and naming Breft Marl as inventor, which application in turn claims priority to U.S. patent application Ser. No. 11/297,809 filed on Dec. 7, 2005, entitled “Network Management” and naming Steve Bush et al. as inventors, which application in turn claims priority to U.S. Provisional Patent Application No. 60/634,432, filed Dec. 7, 2004, entitled “Network Management” and naming Steve Bush et al. as inventors, each of which applications are incorporated entirely herein by reference. U.S. patent application Ser. No. 11/457,783, filed Jul. 14, 2006, entitled “Network Device Management” and naming Brett Marl as inventor is incorporated entirely herein by reference as well. 
         [0036]    In an embodiment of the invention, a software system, such as network management tool  330 , is pre-loaded on removable media, such as key  310  to add network intelligence to the key for the purpose of assisting with wireless-network security configuration. With the inclusion of this software, and referring now to  FIGS. 4 and 5 , the key  310  can be used in the following ways: 1) inserted into a network device that is already connected to the home network to automatically extract security settings; and 2) inserted into a device that is not connected to the home network to configure its settings and allow it to join the network automatically. 
         [0037]    An embodiment of the invention allows the network management tool  330  to be run by a PC or other device from an external media device, such as key  310 , without being installed onto the hard disk of such PC or other device. 
         [0038]    As such, and referring specifically to a process  400  illustrated in  FIG. 4 , when a user inserts, at a block  405 , the key  310  having the network management tool  330  pre-installed into a computing device  103 , a dialog box (not shown) or the like can appear on an associated display (not shown). Such a dialog box may suggest that the user run a “Wireless Setup Wizard” that is pre-installed on the key  310  and which may be a component of the tool  330 . If the user elects to run the wizard, the computing device  103  executes the tool  330  from the key  310 . 
         [0039]    At a block  410 , the wizard checks to see if the computing device  103  is connected to an existing home network, such as the network  101 . If the computing device  103  is connected to a network, then the process  400  proceeds to a block  505  of a process  500  ( FIG. 5 ). If the computing device  103  is not connected to a network, then the process  400  proceeds to a block  415  discussed in further detail below. 
         [0040]    Referring now to  FIG. 5 , at a block  505 , the wizard uses router driver technology associated with the tool  330  to locate, identify and communicate with the gateway  105  of the network  101  of which the computing device  103  is a member. The wizard also attempts to login to the administrative console of the gateway  105  to extract security settings for the network  101 . This may be accomplished by employing “screen scraping” drivers that allows the wizard to use an HTML-based web-interface of a router to interact with and read/write the settings associated with the router. Elements of this screen scraping technology are described in one or more of the commonly owned patent applications incorporated by reference elsewhere herein. Alternatively, the wizard may employ principles of the Home Network Administration Protocol (HNAP) if supported by the gateway  105 . A typical set of security settings can include the following: 
         [0041]    SSID or name of wireless network; 
         [0042]    Security Mode (e.g., None, WEP, WPA-PSK, WPA-RADIUS, WPA2-PSK, etc.); 
         [0043]    Security key or pass-phrase. 
         [0044]    Encryption Method (TKIP/AES) 
         [0045]    If the login succeeds and the settings are obtained, the process  500  continues to a block  510 . If the login fails due to administrative credentials being incorrect, at a block  515 , the wizard can prompt the user for necessary credentials and re-try the login. If, after examining the gateway  105 , it is determined that the gateway is a non-wireless device, the wizard may terminate with an error. 
         [0046]    After obtaining the settings from the gateway  105 , in an embodiment, the wizard looks for a network description file on the key  310  that, for example, is in WCN format. If such a file does not exist (e.g., the key  310  is blank), the wizard, at a block  520 , invokes a displayed dialog asking the user to wait while the settings are saved to the key. Simultaneously, at a block  535 , the router settings obtained at block  505  are saved to a file (e.g., XML) on the key  310 . The process  500  then proceeds to a block  525  described below. 
         [0047]    If such a file does exist, and the settings in the file are identical to the network settings obtained from the gateway  105 , then, at a block  525 , the wizard invokes a displayed dialog instructing the user to plug the key  310  into a device  103  to be joined to the network  101 . The process  500  then terminates. 
         [0048]    If such a file does exist, but the settings in the file are different from the network settings obtained from the gateway  105 , then, at a block  530 , the wizard invokes a displayed dialog asking the user if he/she wishes to create a new key for the network (i.e., override the current network settings). If the user answers in the affirmative, then the process  500  continues to block  520 . Otherwise, the process  500  terminates. 
         [0049]    Referring back to  FIG. 4 , if the computing device  103  into which the key  310  has been inserted is not connected to the network  101 , then the process  400  proceeds to a block  415 , wherein the tool  330  inspects the key for the presence thereon of, in an embodiment, a settings configuration XML file in, for example, WCN format. 
         [0050]    If such a file is not present, then, at a block  420 , the wizard invokes a displayed dialog prompting the user to insert the key  310  into another device that is already connected to the network  101 . If the user complies with this request, the process  400  continues to block  405 . 
         [0051]    If such a file is present, the tool  330  assumes that the user wishes that the device  103  be joined to the network  101 . If the device  103  has a wireless network card, and the SSID of the network  101  stored in the file is within range, the tool  330 , at a block  425 , attempts to join the device  103  to the network  101  using the settings stored in the file. If the tool  330  determines that the device  103  was successfully joined to the network  101 , then, at a block  430 , the wizard invokes a displayed dialog informing the user of such. The process  400  then terminates. 
         [0052]    The processes  400 ,  500  shown in and described with reference to  FIGS. 4 and 5  are illustrated as a set of operations shown as discrete blocks. One or more aspects of these processes  400 ,  500  may be implemented in any suitable hardware, software, firmware, or combination thereof. As such, such aspects may be implemented in computer-executable instructions that can be transferred from one electronic device (not shown) to a second electronic device, such as a device on network  101 , via a communications medium, such as Internet  107 . 
         [0053]    By way of example, and referring back to  FIG. 1 , consider how the printer  103 D may initially join the wireless network  101  according to an embodiment. The manufacturer of the printer  103 D may include a USB key  310  as part of the packaging of the printer  103 D. Further, the key  310  may be pre-loaded with the tool  330  of an embodiment of the invention. The instructions packaged with the printer may direct the user to plug the key  310  into a device  103  that is already joined to the network  101  and follow the instructions displayed on an associated display device. The user plugs the key  310  into a USB port of the computer  103 B and is presented with a wizard that the computer  103 B runs from the key. The tool  330  locates, communicates with and extracts security credentials from the gateway device  105 . These security credentials and the network name may be then written onto the key  310  in an XML file. The user is then instructed to unplug the key  310  from the computer  103 B and plug the key into the printer  103 D. The printer  103 D reads the settings from the XML file stored on the key  310  and, by executing the instructions stored on the key, uses the settings to join the network  101 . 
         [0054]    Optionally advantageous aspects of at least one embodiment of the invention include the notion of a binary that can run from a removable media device, such as a key, that can automatically extract settings associated with a network. The key is agnostic to the type of router installed. The key is also intelligent enough to know if the device is or is not connected to a network, and if previous settings have been stored on the key. 
         [0055]    While embodiments of the invention have been described with respect to specific examples including presently preferred modes of carrying out the invention, those skilled in the art will appreciate that there are numerous variations and permutations of the above described systems and techniques that fall within the spirit and scope of the invention as described herein.