Simplified pairing for wireless devices

A first wireless device is paired with a second wireless device for communication over a wireless connection. The first wireless device receives an input that indicates a device identifier of the second wireless device, and then matches the device identifier with one of the data entries in a data repository to obtain a code of the second wireless device without user interactions. The data repository contains a plurality of data entries associating a plurality of wireless devices with their corresponding codes. Based on the code of the second wireless device, the first wireless device authenticates the second wireless device and establishes the wireless connection.

TECHNICAL FIELD

Embodiments of the present invention relate to communications between two wireless devices, and more specifically, to the determination of a code of a wireless device when establishing a connection to another wireless device.

BACKGROUND

Many wireless electronic devices are capable of exchanging data over a short range distance (e.g., a few to a hundred meters) using wireless data communication protocols. One of such protocols in common use today is Bluetooth. Many of the services offered over Bluetooth can expose private data, or allow a connecting device to control another device. For example, a Bluetooth-enabled headset can be connected to a mobile phone and receive the audio signals destined for the phone. A Bluetooth-enabled mouse can be connected to a computer and control the cursor movement on the computer. For security reasons, it is generally necessary to control the devices that are allowed to gain access to a given Bluetooth device. Therefore, a conventional Bluetooth device generally has a pre-determined personal identification number (PIN) code that can be used for authentication purposes.

The Bluetooth protocol defines a pairing process, which determines whether two Bluetooth-enabled devices (also referred to “Bluetooth devices”) can be authenticated to wirelessly communicate with each other. To pair two Bluetooth devices that do not have the “Secure Simple Pairing” (SSP) feature (which is available in Bluetooth 2.1 or later versions), a user typically has to manually enter PIN codes on both devices. A device that does not have a keypad or other means for entering the PIN code can use a pre-determined static PIN code for the pairing purposes. The PIN code is provided by the manufacturers of Bluetooth devices and is usually documented in the user manual. The PIN code can be used to compute an encryption key, which encrypts the wireless link between two Bluetooth devices to prevent man-in-the-middle attacks.

Conventionally, when a user wishes to pair two Bluetooth devices, the user typically has to manually enter at least one PIN code of one of the devices during the pairing process. For example, if one device is a headset and the other device is a mobile phone, a user typically has to look up the PIN in the headset's user manual, and enter the PIN using a keypad on the mobile phone. Once a pairing between the two devices has been established, the pairing is remembered by the two devices. Subsequent connections between the two devices can be established without repeating the pair process unless the pairing relationship is removed by the user.

DETAILED DESCRIPTION

Described herein is a method and system for pairing wireless devices. In one embodiment, a first wireless device is to be paired with a second wireless device for communication over a wireless connection. The first wireless device receives an input that indicates a device identifier of the second wireless device, and then matches the device identifier with one of the data entries in a data repository to obtain a code of the second wireless device without user interactions. The data repository contains a plurality of data entries associating a plurality of wireless devices with their corresponding codes. Based on the code of the second wireless device, the first wireless device authenticates the second wireless device and establishes the wireless connection.

In one embodiment, the wireless devices are enabled to communicate using the Bluetooth protocol without the Secure Simple Pairing (SSP) support. In contrast to the conventional pairing process, an embodiment of the invention allows the wireless devices to be paired without the user manually entering or manually confirming a PIN code (also referred to as a “code”). Instead, a wireless device can automatically look up a data repository to locate a PIN code for a connecting device. Data entries in the data repository may be provided by device manufacturers and/or software providers, and can be modified by a system administrator to include information pertaining to the devices that are commonly used in a specific environment such as an organization, a company or an office.

FIG. 1illustrates an exemplary wireless device100which implements embodiments of the invention. The wireless device100may be a computer (e.g., a server, a workstation, a personal computer (PC), a laptop, etc.), a mobile phone, a hand-held computing device, a game station, a personal digital assistant (PDA), a global positioning system (GPS) device, etc. In one embodiment, the wireless device100supports a communication protocol for exchanging data wirelessly over a short range. An example of the communications protocol is Bluetooth, which is an industry standard for short-range wireless communications with low power consumption.

In one embodiment, the wireless device100may also be connected to a wired network (e.g., a local area network (LAN), the Internet, or other private or public wired network) in addition to the short-range wireless connections. The wireless device100may exchange data via the short-range wireless connections with one or more connecting wireless devices115, which may be a computer, a mouse, a keyboard, a headset, a phone, a PDA, a game station, a GPS device, etc.

In one embodiment, the wireless device100includes processing unit112, which may include one or more processors. The processing unit112executes instructions and interacts with other functional units in the wireless device100. The wireless device100also includes a network manager107to manage wireless communications for the wireless device100, one or more sensors106to detect the presence of the connecting wireless devices115within the vicinity of the wireless device, and a transceiver108to transmit and receive wireless signals from the connecting wireless devices115. In some embodiments, the sensor106and the transceiver108may be integrated into the same piece of unit, which switches between a sensor mode and a transceiver mode at a high rate (e.g., thousands of times per second). The network manager107performs a pairing process with one or more of the connecting wireless devices115to determine which devices115are permitted to communicate with the wireless device100. The pairing process may include a sequence of handshakes between the wireless device100and a connecting wireless device115to exchange authentication information.

In one embodiment, the wireless device100also includes a device wizard module129, which enables a device wizard interface128to be shown on a display screen127coupled to the wireless device100. The device wizard interface128includes a sequence of screen displays to guide a user through the pairing process. In an alternative embodiment, the wireless device100is not coupled to a display screen. Instead, the wireless device100has a display element integrated in its housing. For example, the display element may be a Liquid Crystal Display (LCD) with a one-line display, which allows the user to scroll through a list of devices and select one device to be paired with the wireless device100.

Through the device wizard interface128, the device wizard module129receives the device identifier of a connecting wireless device115that a user wishes to connect to the wireless device100. The device wizard module129uses the device identifier to look up a matching data entry in a data repository118that contains a collection of data entries. In one embodiment, the data repository118may be a file (e.g., an Extensible Markup Language (XML) file) stored in a memory109of the wireless device100. The memory109may include volatile memory devices (e.g., random access memory (RAM)), non-volatile memory devices (e.g., flash memory), and/or other types of memory devices. In an alternative embodiment, the data repository118may be stored in data storage (not shown) coupled to the wireless device100. The data storage may include mass storage devices, such as magnetic or optical storage based disks, tapes or hard drives.

According to one embodiment of the present invention, the data repository118provides the PIN code for the connecting wireless device115. Upon receiving an identifier of the connecting wireless device115, the device wizard module129looks up a matching data entry, which contains the PIN code associated with the connecting wireless device115. There is no user interaction for entering the PIN code. The PIN code is used to authenticate the connecting wireless device115, and establishes a connection with the connecting wireless device115if the authentication is successful. After the connection is established, the wireless device100communicates with the connecting wireless device115using the transceiver108.

FIG. 2illustrates an example of a screenshot of the device wizard128. The device wizard128displays a list of devices (i.e., the connecting wireless devices115) that have been found in the vicinity (i.e., within the wireless communication range) of the wireless device100. The list of devices may be shown in a scrollable window210. Each device is shown as a device name and a corresponding device type (also referred to as a “device class”). A user can select from the list a device that he wants the wireless device100to pair with. In one embodiment, the device wizard128also includes a filter function that filters the devices shown in the window. For example, when a user presses a button250, a list of available device types will be shown in a pull-down menu. The user may select “headset” as a filter, and only the devices with device type “headset” will be shown in the window210.

Once a device is selected from the window210, the device wizard module129looks up the data repository118to identify a PIN code for the selected device. If a PIN code cannot be found, then the device wizard128will inform the user to manually enter the PIN code. In one embodiment, the user can press a “passkey options” button260, which causes another window to pop up. The user may manually enter the PIN code into this other window. In an alternative embodiment, the network manager107may be implemented to incorporate the capability (e.g., PIN code lookups).

FIG. 3illustrates an example of the data entries in the data repository118. In this example, the data entries are stored in an XML file300. The XML file300includes a collection of data entries, each including a device identifier and a corresponding code. The device identifier may include one or more of a device name, an organizationally unique identifier (OUI), and a device type. In one embodiment, the data entries in the file may be sorted in an order from specific to generic. For example, a first data entry that represents a headset of a specific brand can be listed before a second data entry that represents generic headsets. The device identifier of the first data entry may include an OUI to indicate the specific brand, and may additionally include a device name and/or a device type. The device identifier of the second data entry may include only the device type and not the OUI. The device wizard module129scans the XML file300in the direction from specific entries to the generic entries (e.g., from top to bottom), and stops scanning when a matching data entry is found. Thus, if a headset of a specific brand uses a particular PIN code that is different from the generic PIN code of generic headsets, the device wizard module129will locate the particular PIN code instead of the generic PIN code.

In an alternative embodiment, the data repository118may include multiple files with each file containing multiple data entries. The files may be provided by the vendors of the wireless devices. Data entries in the files may be unsorted. In this alternative embodiment, the device wizard module129may scan all of the data entries in the files and determines the best matching data entry for a selected device. The device wizard module129may first identify a number of candidate data entries with each candidate data entry being associated with a weighting factor. For example, a candidate data entry that matches both the OUI and the device type is weighed more heavily than another candidate data entry that only matches the device type. The device wizard module129then determines a matching data entry as the candidate data entry that has the most weight.

In the embodiment ofFIG. 3, it is shown that some of the PIN codes are pre-determined fixed-length numbers310(e.g., “0000”). Some of the PIN codes are random numbers up to a maximum number of digits320(e.g., max: 4). Some of the PIN codes are shown as “NULL”330, which indicates that the devices will not be paired, but will be connected without an encrypted connection and will be marked as trusted. The “NULL”330can be used for devices such as mice and joypads where there is no encryption.

Referring toFIG. 2andFIG. 3, in one embodiment, the device names shown in window210are the same as the device names in the file300. The device names in both places are provided by the corresponding remote devices (e.g., the connecting wireless devices115). However, the device names may be somewhat cryptic (e.g. “CMT-DH5BT,” instead of “Sony Bluetooth speakers CMT-DH5BT”). In one embodiment, for a device that was previously known and paired with the wireless device100, an end user may change the device name in the window210to a name more descriptive and meaningful to that user.

For certain input devices the device wizard module129may implement a helper function that detects the absence of a peripheral device (e.g., an input device such as a mouse or a keyboard) on the system. When the absence of the device is detected, the helper function automatically looks for such a device in the vicinity and informs the user of this action.

FIG. 4is a flow diagram illustrating one embodiment of a method400for pairing two wireless devices. The method400may be performed by computer system500ofFIG. 5that may comprise hardware (e.g., circuitry, dedicated logic, programmable logic, microcode, etc.), software (e.g., instructions run on a processing device to perform hardware simulation), or a combination thereof. In one embodiment, the method400is performed by the wireless device100ofFIG. 1.

Referring toFIG. 4, in one embodiment, the method400begins when the wireless device100receives a request to activate the device wizard module129for adding a new connection to the wireless device100(block410). The request may be in the form of a user launching the device wizard interface128on the display screen127of the wireless device100. After the device wizard interface128is launched, the wireless device100searches the other wireless devices in the vicinity (block420). The wireless device100may use one or more sensors106to detect the presence of the other wireless devices. These other wireless devices support the same wireless communication protocol as the wireless device100. For short-range wireless communications, this protocol may be the Bluetooth protocol. The size of the vicinity within which wireless communication can be performed is defined by the Bluetooth protocol.

After the devices in the vicinity are found, the wireless device100displays a list of the devices on its display screen127(block430). The list of devices shown on the display screen127may be filtered by the user to show only a specific type of the device. The user may select one of the listed devices as the new device to be connected. Through the device wizard interface128, the device wizard module129receives an identifier (e.g., a device name and a device type) of the new device (block440). The device wizard module129then matches the identifier with the data entries in the data repository118to determine the PIN code for the new device (block450). After the PIN code is found, the network manager107uses the PIN code to authenticate the new device (block460). The wireless device100may start a sequence of handshakes with the new device to exchange authenticating information. Upon completion of the handshakes, the wireless device100may display a message to indicate whether the new device has been successfully authenticated (block470). If the new device has been successfully authenticated (block480), the wireless device100can start wireless communication with the new device (block490). If the new device cannot be authenticated (block480), the wireless device100denies the request for connecting to the new device (block495).

The secondary memory518may include a machine-readable storage medium (or more specifically a computer-readable storage medium)531on which is stored one or more sets of instructions (e.g., device wizard logic522) embodying any one or more of the methodologies or functions described herein (e.g., the device wizard module129ofFIG. 1). The device wizard logic522may also reside, completely or at least partially, within the main memory504and/or within the processing device502during execution thereof by the computer system500; the main memory504and the processing device502also constituting machine-readable storage media. The device wizard logic522may further be transmitted or received over a network520via the network interface device508.

The computer system500may additionally include a device wizard module528for implementing the functionalities of the device wizard module129ofFIG. 1. The module528, components and other features described herein (for example in relation toFIG. 1) can be implemented as discrete hardware components or integrated in the functionality of hardware components such as ASICS, FPGAs, DSPs or similar devices. In addition, the module528can be implemented as firmware or functional circuitry within hardware devices. Further, the module528can be implemented in any combination of hardware devices and software components.