James Carlson :
> Colin Zou - Sun Microsystems writes:
>   
>> Seems to me that there lack of some background introduction for WUSB. I 
>> just wrote a blog about WUSB association, it is offering the background 
>> info to this issue. Please take a look at:
>> http://blogs.sun.com/colin/entry/association_the_difference_between_usb
>>     
>
> I see.  Actually, it sounds to me like this new "CC" feature would be
> useful for regular wired USB as well.
>
> For wired USB, a common problem is that the device is identified by
> its attachment point on the system.  If you plug the device into a
> different port, it becomes a different device, and the system (as I
> understand it) has to "guess" whether it's really the same one.  That
> works somewhat well for self-identifying things like disks that have
> serial numbers and perhaps a saved mount point, but much less well
> otherwise.
>
> I'd very much like to have device identity down below this level, and
> the CC feature sounds ideal for doing that.  Why is it designed to be
> wireless only?
>   
I agree that it will be good if wired USB also has a feature similar as 
CC. However, we are not in charge of USB standards. usb.org does not 
design such a feature for wired USB. If there is a chance, I would like 
to propose it to usb.org for its future spec releases. The CC feature is 
not something only on host software side, it also relies on device 
hardware. Therefore, it needs the industry standards' support and also 
device vendor's support.

>   
>> And, to be clear, the implementation for supporting WUSB on Solaris 
>> comform to the existing usba(7D) framework on Solaris and also devfsadm 
>> framework. WUSB device enumeration is the same as USB on Solaris. The 
>> difference is "Association" which is a new concept for wireless USB 
>> only. It is discussed in detail in the above link.
>>     
>
> It implies a bit of an oddity, though.  In order for enumeration to
> follow "assocation," this means that the association daemon (wusbd)
> must somehow learn about and communicate with a device that has not
> yet been enumerated.  That itself sounds _like_ an enumeration,
> identification, and attachment sequence.
>   
The kind of "enumeration" you mentioned is actually done by the existing 
Solaris USB framework.
Let me explain this in detail. Take Cable Association as an example, the 
whole association process is as following:

1. user plug the WUSB device to a usb port on the PC box.
2. the Soalris USB framework (usba(7D) and ehci(7D)) gets the device 
plug event and enumerates the device as a wired USB device.
3. usba attach the wusb_ca driver to the device. wusb_ca driver is a 
newly introduced driver for Cable Association only. It is a normal wired 
USB driver developed on wired USB driver API, fully compliant to Solaris 
USB framework.
4. User run wusbadm tool to specify with which WUSB host the device 
should be associated.
5. wusbadm tool sends a request to wusbd, who will then open the device 
node created by wusb_ca USB driver.
6. wusbd talk to the device via wusb_ca driver to create a CC. It then 
store the CC to CC database in file system, in the mean while, it loads 
the CC to the WUSB host driver.
7. wusbd then complete the association request from wusbadm tool.
8. Association is done. User then unplug the device. wusba_ca driver is 
then dettached.

After the above is done, user can then turn on the device radio to 
connect the WUSB device with host over air. The subsequent wireless 
enumeration is the same as wired USB. A newly introduced WUSB host 
driver (e.g., whci) is developer on the existing Solaris USB framework 
(usba). whci driver gets the device radio signal and consider it as a 
device plug event. It passes the event to usba framework module, the 
latter then load an existing USB device driver (e.g. usbprn(7D) if the 
device is a WUSB printer) to attach to the WUSB device.

If user reboot the system, wusbd daemon will load the CCs stored in the 
CC database to WUSB host driver instances. So that WUSB host can be 
ready to connect the associated devices.

Please note that, it is necessary to have a daemon (wusbd) because the 
daemon can load CCs to WUSB host drivers automatically after system 
reboot. Users want the WUSB device just work after each reboot, instead 
of manually running a tool to load CCs.

Thanks,
Colin


Reply via email to