03-24-2011 10:47 AM
I've got a USB-6009 board connected via USB. The host PC can be Windows 7 or XP. Does the driver support selective suspend of the USB port?
Thanks
Rick
03-25-2011 12:05 PM
Hi Rick,
According to the manual for the device, if the USB port is suspended, the device will go into a suspend mode. Refer to the Reference and Power Sources as well as the Power Requirements section of the manual at the link below for any additional information. Thanks!
NI USB-6008/6009 User Guide and Specifications
04-04-2011 10:37 AM
Hi Rick,
To go into a little more detail, a selective suspend and a global suspend look the same to a USB device, and are handled exactly the same by NI hardware. All USB devices support both. Selective suspend is a feature of hubs, not of devices.
Here are some details about how it works, from the USB 2.0 Spec:
From section 11.9, "Global suspend/resume is implemented through the root port(s) at the host. Selective suspend/resume is implemented via requests to a hub."
From section 7.1.7.6.1, "Global suspend is used when no communication is desired anywhere on the bus and the entire bus is placed in
the Suspend state. The host signals the start of global suspend by ceasing all its transmissions (including the SOF token). As each device on the bus recognizes that the bus is in the Idle state for the appropriate length of time, it goes into the Suspend state."
From section 7.1.7.6.2, "Segments of the bus can be selectively suspended by sending the command SetPortFeature(PORT_SUSPEND) to the hub port to which that segment is attached. The suspended port will block activity to the suspended bus segment, and devices on that segment will go into the Suspend state after the appropriate delay as described above."
(The "delay as described above" is from section 7.1.7.6, "All devices must support the Suspend state. Devices can go into the Suspend state from any powered state. They begin the transition to the Suspend state after they see a constant Idle state on their upstream facing bus lines for more than 3.0 ms. The device must actually be suspended, drawing only suspend current from the bus after no more than 10 ms of bus inactivity on all its ports.")
Hope that helps!
William Earle
Staff Software Engineer
DAQ Software
National Instruments R&D
04-04-2011 01:37 PM
Hi Rick,
I believe I misread your question. The operating system is free to use selective suspend (for example, as part of suspending the entire computer), and our devices will respond to these requests as required by the USB 2.0 spec. However, hardware support not withstanding, the DAQmx driver does not submit idle notifications to the USB bus driver, so when the device is not in use it will not be selectively suspended.
William Earle
Staff Software Engineer
DAQ Software
National Instruments R&D
04-04-2011 02:44 PM
Thanks for the reply. I've been off dealing with other fires. When I posted the question, I was a little too terse.
What I understand your (final) answer to be is as follows: The DaqMx driver handles OS Power state changes appropriately, as all good drivers are expected to do. However, the DaqMx driver will not notify the OS that its attached devices are idle, which means that the USB port which the NI device is attached to will not be able to do a Selective Suspend.
Do I get you right?
Thanks
Rick B.
04-04-2011 03:31 PM
Hi Rick,
That's 100% correct.
This would be a great feature request to add to the DAQ Idea Exchange, as customer demand helps justify the software investment to add features to DAQmx :).
William Earle
Staff Software Engineer
DAQ Software
National Instruments R&D