By colin on Jun 02, 2008
The Wireless USB technology from usb.org tries to make it easy for end
users to connect a wireless USB device with a wireless USB host, quoted
from the specification: “The goal is that end users view it as the same
as wired USB, just without the wires.”. However, there have to be
something different because of the difference of wireless and wired
environment. The most significant thing is "Association". It is
something happened before the first time that a wireless USB device can
be enumerated by the host system.
Association is special for wireless host and device, it is new for
wired USB users and it is not a straight forward concept for most
people. But if we take a look at the following question, we might know
Suppose two PC boxes are put in one room, each of them has a WUSB host.
A user brings a WUSB device to the room and turn on the device radio.
The question is, which PC box should enumerate the device? Or the
question can be asked in another way, how can the user choose a PC box
with which he would like to connect the wireless device?
It is not a question at all if in a wired case: the user just plug the
device to the PC box with which he want to connect the device. In
wireless case, a new way must be invented to let the specific wireless
hosts and devices know that which device should be connected to which
host. So, usb.org comes the technologies called "Association Model". It
makes the specific WUSB host and device create a shared CC (Connection
Context). A CC includes three elements: CHID (Connection Host ID), CDID
(Connection Device ID), CK(Connection Key). Once the CC is created
during the association process, it will be saved in the non-volatile
memory on both host and device. Thus, the host and device will "know"
each other and trust each other in a wireless environment.
According to WUSB specification, there are two Association Models optional for device manufactures and users.
- Cable Association
User need to connect the WUSB device with his PC box with a USB cable
for a few seconds. The WUSB host on the PC box then talks to the device
to create a CC. The user then unplug the WUSB device and need not to
plug it any longer, unless he decide to connect the WUSB device with
another PC. With the CC stored in both WUSB host and device, when user
turn on the device radio, because the device and host already know each
other, they can authentication each other and be connected just as
wired USB. The only difference is, the connection is over air.
- Numeric Association
User need not a USB cable in this case. But the WUSB device need to
have a screen to display digit numbers. The process is, user turns on
the device radio, and run the WUSB administration software on the host
to specify a WUSB host on the system to start to associate itself with
the device which is beaconing. The specified WUSB host then talk to the
device over air and create a CC. Because it is performed in the open
radio, user is asked manually confirm the association. A digital number
is displayed both on the host system screen and the device screen. If
they are the same, user press OK on both sides. If not, then the
association is not right.
From the host software's view, there must be an utility to manage the
CCs stored in host system. Because, on one system (e.g., a PC box),
there could be multiple WUSB hosts. And also, there could be multiple
WUSB devices associated with a WUSB host. What's more, when system
booting up, a daemon is needed to load the CCs from file system to the
WUSB host driver instances. A specific CC belongs to a specific WUSB
To support the above issue, on Solaris, a software design is under
review. A daemon wusbd is introduced to be used to manage the CCs for
WUSB hosts and devices. It add/remove the CCs to CC database, load the
CC to host driver instances. A admin tool wusbadm is introduced for
user interfaces. It sends requests to wusbd when needs to operate CCs.
After the association process, from the host software view or the end
user view, it is all the same as wired USB devices, e.g., device
enumeration, USB client driver attach, connect/disconnect event
handling, devfs nodes, etc.
One of the goals for this design is the similar as the what the WUSB
spec tells, to have a simple user interface and make end user view WUSB
the same as wired ones. Connect and play, just without wires. Users
just need to turn on the device radio to connect, or, turn off the
device to disconnect. And something better in WUSB case: there are
always enough "ports" there. A WUSB host is supposed able to connect up
to 127 WUSB devices, theoretically. So, you just put WUSB devices
around your PC box, associated for once, then enjoy them as USB ones,
and without wires.