14.01.2015 Views

Recommendations for Continua USB PHDC Device Driver ...

Recommendations for Continua USB PHDC Device Driver ...

Recommendations for Continua USB PHDC Device Driver ...

SHOW MORE
SHOW LESS

Transform your PDFs into Flipbooks and boost your revenue!

Leverage SEO-optimized Flipbooks, powerful backlinks, and multimedia content to professionally showcase your products and significantly increase your reach.

White Paper<br />

<strong>Recommendations</strong> <strong>for</strong> <strong>Continua</strong> <strong>USB</strong> <strong>PHDC</strong><br />

<strong>Device</strong> <strong>Driver</strong> Interoperability<br />

March 2012<br />

Executive Summary<br />

This paper defines the <strong>Continua</strong> Health Alliance ® position on <strong>USB</strong> <strong>PHDC</strong> driver interoperability as it pertains<br />

to <strong>Continua</strong> Design Guidelines 1.5. Potential problems with interoperability related to Windows * <strong>USB</strong> <strong>PHDC</strong><br />

device drivers are evaluated and recommendations that developers of PAN Managers <strong>for</strong> <strong>USB</strong> transport can<br />

implement. Based on the analysis of these problems, recommendations <strong>for</strong> a <strong>Continua</strong> strategy is<br />

discussed and the handling of generic Windows drivers based on Win<strong>USB</strong> and Lib<strong>USB</strong> are provided.<br />

This paper does not cover application level interoperability beyond the development of <strong>USB</strong> drivers.<br />

<strong>Recommendations</strong> <strong>for</strong> <strong>Continua</strong> <strong>USB</strong> <strong>PHDC</strong> <strong>Device</strong> <strong>Driver</strong> Interoperability<br />

White Paper


Contents<br />

Executive Summary ..................................................................... 1<br />

Introduction ................................................................................ 2<br />

Background and Description of <strong>USB</strong> <strong>PHDC</strong> <strong>Driver</strong>s Issues .................. 3<br />

Presentation of <strong>Continua</strong> <strong>USB</strong> <strong>Device</strong>s to User ............................. 4<br />

Figure 1 Windows <strong>Device</strong> Manager ................................................. 4<br />

Interoperability of <strong>USB</strong> <strong>PHDC</strong> Managers ...................................... 5<br />

Generic <strong>USB</strong> <strong>Driver</strong>s ................................................................. 6<br />

Figure 2 <strong>USB</strong> <strong>PHDC</strong> <strong>Driver</strong> from Generic <strong>USB</strong> <strong>Driver</strong> ......................... 6<br />

Figure 3 Interface GUID ................................................................ 6<br />

Native OS <strong>Driver</strong>...................................................................... 7<br />

Integration of New <strong>Continua</strong> <strong>Device</strong>s with Existing Managers ........ 8<br />

Conclusions and <strong>Recommendations</strong> ................................................ 9<br />

Step I: Initial Approach ............................................................ 9<br />

Step II: OS Vendor Certified <strong>Device</strong> INF File................................ 9<br />

Step III: OS Vendor Certified Universal INF File ........................... 9<br />

The Best: Native OS <strong>Driver</strong> ....................................................... 9<br />

<strong>Continua</strong> Recommendation <strong>for</strong> Use of Generic <strong>USB</strong> <strong>Driver</strong>s .............. 10<br />

Glossary ............................................................................... 11<br />

References ............................................................................ 11<br />

Legal .................................................................................... 11<br />

Introduction<br />

<strong>Continua</strong> Health Alliance strives to ensure interoperability <strong>for</strong> all <strong>Continua</strong> certified devices. <strong>USB</strong> devices<br />

are prevalent in the healthcare realm and must adhere to these interoperability requirements. This paper<br />

provides the background and description of issues in regard to the development of <strong>Continua</strong> <strong>USB</strong> <strong>PHDC</strong><br />

drivers. This includes how a <strong>Continua</strong> <strong>USB</strong> device is presented to the user, interoperability of generic or<br />

native <strong>USB</strong> drivers, and the integration of new <strong>Continua</strong> devices with existing managers. This paper<br />

concludes with recommendations <strong>for</strong> the implementation of these device drivers (Native and Generic).<br />

White Paper<br />

<strong>Recommendations</strong> <strong>for</strong> <strong>Continua</strong> <strong>USB</strong> <strong>PHDC</strong> <strong>Device</strong> <strong>Driver</strong> Interoperability<br />

2


Background and Description of <strong>USB</strong> <strong>PHDC</strong> <strong>Driver</strong>s Issues<br />

A <strong>Continua</strong> <strong>USB</strong> <strong>PHDC</strong> Manager is interchangeable with the <strong>Continua</strong> Application Hosting <strong>Device</strong> (AHD).<br />

<strong>Continua</strong> <strong>USB</strong> <strong>PHDC</strong> Managers operating on major consumer operating systems (OS) require a <strong>USB</strong> <strong>PHDC</strong><br />

class driver to enable wired connectivity with <strong>Continua</strong> PAN <strong>USB</strong> devices.<br />

Currently there are no native <strong>USB</strong> <strong>PHDC</strong> drivers provided with any major OS on the market (e.g., MS<br />

Windows, Mac OS or Linux). A <strong>Continua</strong> AHD must deploy its own <strong>USB</strong> <strong>PHDC</strong> driver which can result in<br />

interoperability issues.<br />

It is in the interest of <strong>Continua</strong> Health Alliance to provide guidance in following areas, until a native <strong>USB</strong><br />

<strong>PHDC</strong> driver is available in each OS:<br />

Seamless presentation of <strong>Continua</strong> <strong>USB</strong> devices to the end user<br />

Interoperability of multiple <strong>USB</strong> <strong>PHDC</strong> Managers deployed on the same end user system<br />

Integration of new <strong>Continua</strong> certified devices with existing <strong>USB</strong> <strong>PHDC</strong> Managers<br />

<strong>Recommendations</strong> <strong>for</strong> <strong>Continua</strong> <strong>USB</strong> <strong>PHDC</strong> <strong>Device</strong> <strong>Driver</strong> Interoperability<br />

White Paper<br />

3


Presentation of <strong>Continua</strong> <strong>USB</strong> <strong>Device</strong>s to User<br />

The end user experience with <strong>USB</strong>-based devices starts with the device manager on the operating system.<br />

For troubleshooting and usability reasons, the <strong>Continua</strong> devices should have a consistent appearance in<br />

the operating system.<br />

For example, the Windows OS provides a device manager view of all connected devices (see Figure 1).<br />

Figure 1 - Windows <strong>Device</strong> Manager<br />

The device driver (<strong>USB</strong> <strong>PHDC</strong> driver) is responsible <strong>for</strong> providing the OS with in<strong>for</strong>mation necessary to<br />

display the connected device details. The in<strong>for</strong>mation consists of:<br />

Setup GUID 1<br />

<strong>Device</strong> Class Name<br />

<strong>Device</strong> Name<br />

Recommendation:<br />

<br />

<br />

All <strong>Continua</strong> <strong>USB</strong> <strong>PHDC</strong> <strong>Driver</strong> solutions should be consistent in use of the Setup GUID<br />

and <strong>Device</strong> Class Name<br />

<strong>Continua</strong> should facilitate consistent use of the <strong>Device</strong> Name provided by the device<br />

manufacturer<br />

1 The Setup GUID responsible <strong>for</strong> the device appearance in the OS is different from Interface GUID related to the device<br />

API mentioned later in this document.<br />

White Paper<br />

<strong>Recommendations</strong> <strong>for</strong> <strong>Continua</strong> <strong>USB</strong> <strong>PHDC</strong> <strong>Device</strong> <strong>Driver</strong> Interoperability<br />

4


Interoperability of <strong>USB</strong> <strong>PHDC</strong> Managers<br />

As mentioned earlier, there currently is no native <strong>Continua</strong> <strong>USB</strong> <strong>PHDC</strong> driver available <strong>for</strong> Windows or any<br />

other OS.<br />

In theory, the <strong>Continua</strong> <strong>USB</strong> <strong>PHDC</strong> device vendors should provide a way <strong>for</strong> applications, such as <strong>Continua</strong><br />

Managers, to access the device. Historically, this has meant to implement a function driver <strong>for</strong> the device<br />

and installing the driver in the operating system.<br />

Currently, this responsibility was de facto moved to the <strong>USB</strong> Manager side, because the <strong>Continua</strong><br />

certification process does not require device manufacturers to provide a driver with a standard API <strong>for</strong> the<br />

device. In this situation, there is potential <strong>for</strong> multiple drivers to be installed <strong>for</strong> the same <strong>USB</strong> <strong>PHDC</strong> device<br />

on the same system. Each of these drivers could have a different API.<br />

Depending on the driver the OS selects <strong>for</strong> the connected device, some managers may not have access to<br />

the device if they are designed <strong>for</strong> a driver with a different API.<br />

Recommendation:<br />

The problem of Manager interoperability is difficult to solve. A single <strong>USB</strong> <strong>PHDC</strong> driver native to<br />

an OS <strong>for</strong> all <strong>PHDC</strong> class devices is the only way to ensure real interoperability with multiple<br />

connecting Managers [1].<br />

<br />

In most situations the generic <strong>USB</strong> drivers available <strong>for</strong> major operating systems can be<br />

used and <strong>Continua</strong> can, at a minimum, provide guidelines to improve interoperability<br />

between managers using the same generic driver<br />

<strong>Recommendations</strong> <strong>for</strong> <strong>Continua</strong> <strong>USB</strong> <strong>PHDC</strong> <strong>Device</strong> <strong>Driver</strong> Interoperability<br />

White Paper<br />

5


Generic <strong>USB</strong> <strong>Driver</strong>s<br />

<strong>Device</strong> drivers require significant development ef<strong>for</strong>t and some devices are simple enough that they do not<br />

require the full support of a custom function driver. The generic <strong>USB</strong> driver is a software library that uses<br />

external in<strong>for</strong>mation to make any <strong>USB</strong> device available to the operating system. The external in<strong>for</strong>mation<br />

is usually provided in a text file with a .INF extension (INF File). See Figure 2.<br />

Figure 2 - <strong>USB</strong> <strong>PHDC</strong> <strong>Driver</strong> from Generic <strong>USB</strong> <strong>Driver</strong><br />

<strong>USB</strong> <strong>PHDC</strong> <strong>Driver</strong><br />

Generic <strong>USB</strong> <strong>Driver</strong><br />

INF file A<br />

INF file B<br />

<strong>Device</strong> A<br />

<strong>Device</strong> B<br />

Currently there are two major generic <strong>USB</strong> drivers available:<br />

1. Lib<strong>USB</strong>: Open source <strong>for</strong> Windows, LINUX,and etc.<br />

2. Win<strong>USB</strong>: Part of the Windows OS starting with XP SP3<br />

The advantage of using the generic <strong>USB</strong> drivers is that the API defined by the driver can be utilized by<br />

<strong>Continua</strong> Managers <strong>for</strong> any new devices of the same class as long as the INF file is constructed correctly:<br />

This means consistent use of the same industry-wide Interface GUID value within the device class<br />

<strong>for</strong> a particular generic <strong>USB</strong> driver<br />

Figure 3 - Interface GUID<br />

<strong>Driver</strong> API<br />

(Uses Interface GUID to discover and communicate with the device)<br />

Generic <strong>USB</strong> <strong>Driver</strong><br />

INF File<br />

Interface GUID<br />

← mapping<br />

Info from <strong>USB</strong> <strong>Device</strong><br />

• Vendor ID<br />

• Product ID<br />

White Paper<br />

<strong>Recommendations</strong> <strong>for</strong> <strong>Continua</strong> <strong>USB</strong> <strong>PHDC</strong> <strong>Device</strong> <strong>Driver</strong> Interoperability<br />

6


Figure 3 illustrates the use of the Interface GUID. The device manufacturer supplies the Vendor ID and<br />

Product ID. This is mapped to a GUID representing the interface <strong>for</strong> the class of devices, <strong>for</strong> this paper, the<br />

<strong>USB</strong> <strong>PHDC</strong> class. A Manager application uses the generic driver API with the Interface GUID to<br />

communicate with the device.<br />

NOTE:<br />

The API is different between Lib<strong>USB</strong> and Win<strong>USB</strong>. Thus, the manufacturer should provide<br />

separate INF files, each with a distinct Interface GUID, <strong>for</strong> each generic driver.<br />

Recommendation:<br />

To allow <strong>Continua</strong> <strong>USB</strong> <strong>PHDC</strong> Managers to discover and communicate with agents, <strong>Continua</strong><br />

should provide guidelines <strong>for</strong> use of generic <strong>USB</strong> drivers on major operating systems:<br />

<br />

<br />

<strong>Continua</strong> <strong>USB</strong> <strong>PHDC</strong> <strong>Driver</strong> based on generic <strong>USB</strong> drivers should use consistent<br />

industry-wide Interface GUIDs in the INF files.<br />

The Interface GUID shall be specific to a particular driver API (e.g. Lib<strong>USB</strong> or Win<strong>USB</strong>)<br />

Native OS <strong>Driver</strong><br />

There are some limitations with use of generic OS drivers. The MSDN document, “How to Use Win<strong>USB</strong> to<br />

Communicate with a <strong>USB</strong> <strong>Device</strong>” [1] provides a comparison of Win<strong>USB</strong> drivers with drivers developed<br />

using the Windows <strong>Driver</strong> Foundation (WDF) framework.<br />

The best solution <strong>for</strong> interoperability is the native OS driver which supports concurrent access to the device<br />

and is supplied as part of the operating system.<br />

This results in:<br />

A seamless use experience with the device class<br />

A solution <strong>for</strong> Multiple Manager / Concurrency Issues<br />

A Standard API <strong>for</strong> all Managers<br />

The elimination of driver signing<br />

Recommendation:<br />

To allow <strong>Continua</strong> <strong>USB</strong> <strong>PHDC</strong> Managers to discover and communicate with any <strong>USB</strong> <strong>PHDC</strong> agent<br />

seamlessly, <strong>Continua</strong> should strive to provide OS native <strong>USB</strong> <strong>PHDC</strong> drivers <strong>for</strong> all major operating<br />

systems on the market.<br />

<strong>Recommendations</strong> <strong>for</strong> <strong>Continua</strong> <strong>USB</strong> <strong>PHDC</strong> <strong>Device</strong> <strong>Driver</strong> Interoperability<br />

White Paper<br />

7


Integration of New <strong>Continua</strong> <strong>Device</strong>s with Existing Managers<br />

To improve the use experience there is benefit to driver signing. This eliminates the security risk warning<br />

on most major operating systems.<br />

To accomplish this <strong>for</strong> non-native Windows OS drivers and generic drivers with INF files, Microsoft must<br />

certify the INF file (through the WHQL 2 process). This is either provided per device (Product ID, Vendor ID)<br />

or with one INF file covering multiple devices.<br />

An INF file is based on the driver’s Interface Global Unique ID (GUID). As mentioned previously, if the INF<br />

file is not certified by Microsoft, a security warning is displayed to the end-user during driver installation.<br />

Each agent device manufacturer must provide its <strong>USB</strong> Product ID and Vendor ID to the driver manufacturer<br />

(<strong>for</strong> generation of the driver’s INF file) be<strong>for</strong>e the manager can interface to it.<br />

Recommendation:<br />

<br />

<br />

<br />

<strong>Continua</strong> should facilitate the Product ID and Vendor ID in<strong>for</strong>mation <strong>for</strong> certified <strong>Continua</strong><br />

<strong>Device</strong>s<br />

<strong>Continua</strong> should provide a path <strong>for</strong> OS vendor certification and signing of generic <strong>USB</strong><br />

driver INF files<br />

<strong>Continua</strong> should drive the adoption of OS native <strong>USB</strong> <strong>PHDC</strong> drivers<br />

2 Indications are that the security message is completely avoided with WHQL certification because certification will result<br />

in the release of the driver with the next Service Pack. Thus, driver installation is not required..<br />

White Paper<br />

<strong>Recommendations</strong> <strong>for</strong> <strong>Continua</strong> <strong>USB</strong> <strong>PHDC</strong> <strong>Device</strong> <strong>Driver</strong> Interoperability<br />

8


Conclusions and <strong>Recommendations</strong><br />

Step I: Initial Approach<br />

Publish INF file creation recommendation on Setup GUID, Interface GUID, and string values <strong>for</strong><br />

each driver API (see <strong>Continua</strong> Recommendation <strong>for</strong> Use of Generic <strong>USB</strong> <strong>Driver</strong>s)<br />

Host a database of PID and VID and unsigned INF files <strong>for</strong> certified devices<br />

NOTE:<br />

The Unsigned INF file results in a warning message to the user.<br />

Step II: OS Vendor Certified <strong>Device</strong> INF File<br />

Publish INF file creation recommendation on Setup GUID, Interface GUID, and string values <strong>for</strong><br />

each driver API (see <strong>Continua</strong> Recommendation <strong>for</strong> Use of Generic <strong>USB</strong> <strong>Driver</strong>s)<br />

Host a database of OS Vendor certified and signed INF files <strong>for</strong> individual certified devices<br />

NOTE:<br />

INF files <strong>for</strong> Windows OS need certification through the Microsoft WHQL process <strong>for</strong> all <strong>Continua</strong><br />

certified devices.<br />

Step III: OS Vendor Certified Universal INF File<br />

Publish INF file creation recommendation on Setup GUID, Interface GUID, and string values <strong>for</strong><br />

each driver API (see <strong>Continua</strong> Recommendation <strong>for</strong> Use of Generic <strong>USB</strong> <strong>Driver</strong>s)<br />

Provide OS Vendor certified and signed single universal INF file <strong>for</strong> all current and future <strong>Continua</strong><br />

devices that are used with major generic <strong>USB</strong> <strong>Driver</strong>s<br />

NOTE:<br />

INF files <strong>for</strong> Windows OS need certification through the Microsoft WHQL process <strong>for</strong> all <strong>Continua</strong><br />

certified devices.<br />

The Best: Native OS <strong>Driver</strong><br />

OS Vendors (e.g., Microsoft) provide a native <strong>PHDC</strong> driver (does not need an INF file)<br />

NOTE: This solution is not available in MS Windows OS as of Win 7.<br />

<strong>Recommendations</strong> <strong>for</strong> <strong>Continua</strong> <strong>USB</strong> <strong>PHDC</strong> <strong>Device</strong> <strong>Driver</strong> Interoperability<br />

White Paper<br />

9


<strong>Continua</strong> Recommendation <strong>for</strong> Use of Generic <strong>USB</strong> <strong>Driver</strong>s<br />

<strong>Continua</strong> Health Alliance recommends that Managers <strong>for</strong> <strong>USB</strong> <strong>PHDC</strong> that provide a <strong>USB</strong> <strong>PHDC</strong> driver based<br />

on a generic <strong>USB</strong> driver use the following values in the INF file:<br />

Attribute INF File Element Win<strong>USB</strong> Value Lib<strong>USB</strong> Value<br />

<strong>Device</strong> Class GUID [Version]/ ClassGUID {182A3B42-D570-4066-8D13-<br />

C72202B40D78}<br />

{EB781AAF-9C70-4523-A5DF-<br />

642A87ECA567}<br />

<strong>Device</strong> Class Text [Version]/Class <strong>PHDC</strong><br />

libusb-win32 devices<br />

[Strings]/ClassName<br />

Interface GUID [Dev_AddReg] {B8B610DE-FB41-40A1-A4D6- N/A<br />

AB28E87C5F08}<br />

<strong>Device</strong> GUID [Strings]/<strong>Device</strong>GUID N/A D0C36FAA-CE6D-4887-A3AA-<br />

6FC42D3037E5}<br />

NOTE: <strong>Continua</strong> should negotiate the API, Setup, Interface GUID, and the class name with OS vendors<br />

that create native drivers.<br />

White Paper<br />

<strong>Recommendations</strong> <strong>for</strong> <strong>Continua</strong> <strong>USB</strong> <strong>PHDC</strong> <strong>Device</strong> <strong>Driver</strong> Interoperability<br />

10


Glossary<br />

Term<br />

AHD<br />

GUID<br />

PAN<br />

API<br />

<strong>USB</strong> <strong>PHDC</strong><br />

Description<br />

Application Hosting <strong>Device</strong><br />

Global Unique Identifier<br />

Personal Area Network<br />

An application programming interface<br />

<strong>USB</strong> device class that represents Personal Healthcare <strong>Device</strong>s<br />

References<br />

[1] How to Use Win<strong>USB</strong> to Communicate with a <strong>USB</strong> <strong>Device</strong><br />

http://msdn.microsoft.com/en-us/windows/hardware/gg487341<br />

Legal<br />

<strong>Continua</strong> is a trademark of <strong>Continua</strong> Health Alliance and CONTINUA HEALTH ALLIANCE and the<br />

CONTINUA HEALTH ALLIANCE logo are registered service marks of <strong>Continua</strong> Health Alliance.<br />

*Other names and brands may be claimed as the property of others.<br />

Copyright © 2012 <strong>Continua</strong> Health Alliance. All rights reserved.<br />

<strong>Recommendations</strong> <strong>for</strong> <strong>Continua</strong> <strong>USB</strong> <strong>PHDC</strong> <strong>Device</strong> <strong>Driver</strong> Interoperability<br />

White Paper<br />

11

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!