Windows 10 UAC2 native driver summary
Posted: Thu Jul 05, 2018 6:54 am
Here's my summary of usage of the USB Audio 2.0 reference with the Windows 10 UAC2 native driver:
Reference software works with only item #1. I tested the XS1-L1 HS Audio Development, and a custom board correctly with Windows 10 April 2018 version.
Notes:
1 - Explicit Feedback only. This is more compatible anyways. Windows Native, Linux good. Apple prefers implicit.
Need to add this to customdefines.h:
#define UAC_FORCE_FEEDBACK_EP
2 - Windows installation.
Plugging in the device will load the native driver automatically, good. But if you are changing any enumeration, or option,
you must uninstall the driver in device manager, unplug the device, update the firmware or debugger, then
plug back in. Windows will not automatically reconfigure for the new settings, and comes up in an unknown state upon changes.
3 - Recommend using different PIDs and product names if debugging for each configuration.
Use #ifdefines for product and PIDs for each different option. Such as testing between 2 channels / 8 channels.
Windows will start enumerating if names are the same (1 - product name).
Using different PIDs keeps it operating without uninstalls, as long as the configuration doesn't change.
4 - Native driver supports more than 2 channels!
I enumerated and tested a custom board with 4 inputs and 8 outputs just fine.
5 - Bit Perfect.
If you use the WASAPI audio interface, the output is bit perfect, phase correct, and will change frequencies with the source material.
6 - Audio stop.
The USB stream will start and stop with the source. It does not stay running.
7 - 24 Bit supported.
Probably 32 also, but did not test.
8 - Works through a hub.
9 - Appears to support the full 16.16 range for feedback. I did not mask the 3 lowest bits and works correctly.
10 - Volumes.
Not sure here. With enumerated as 7.1 surround, playback lower. As 2 channel it was correct. Probably a windows item.
11 - Limitations.
1 - No clock selector (i.e. SPDIF, ADAT, etc). They allow one, but will not provide a means to change it. Support a clock interrupt (not a selector).
2 - No DFU. Need your own solution.
3 - Not sure about HID, did not test.
4 - No ASIO. But see #5 above.
Reference software works with only item #1. I tested the XS1-L1 HS Audio Development, and a custom board correctly with Windows 10 April 2018 version.
Notes:
1 - Explicit Feedback only. This is more compatible anyways. Windows Native, Linux good. Apple prefers implicit.
Need to add this to customdefines.h:
#define UAC_FORCE_FEEDBACK_EP
2 - Windows installation.
Plugging in the device will load the native driver automatically, good. But if you are changing any enumeration, or option,
you must uninstall the driver in device manager, unplug the device, update the firmware or debugger, then
plug back in. Windows will not automatically reconfigure for the new settings, and comes up in an unknown state upon changes.
3 - Recommend using different PIDs and product names if debugging for each configuration.
Use #ifdefines for product and PIDs for each different option. Such as testing between 2 channels / 8 channels.
Windows will start enumerating if names are the same (1 - product name).
Using different PIDs keeps it operating without uninstalls, as long as the configuration doesn't change.
4 - Native driver supports more than 2 channels!
I enumerated and tested a custom board with 4 inputs and 8 outputs just fine.
5 - Bit Perfect.
If you use the WASAPI audio interface, the output is bit perfect, phase correct, and will change frequencies with the source material.
6 - Audio stop.
The USB stream will start and stop with the source. It does not stay running.
7 - 24 Bit supported.
Probably 32 also, but did not test.
8 - Works through a hub.
9 - Appears to support the full 16.16 range for feedback. I did not mask the 3 lowest bits and works correctly.
10 - Volumes.
Not sure here. With enumerated as 7.1 surround, playback lower. As 2 channel it was correct. Probably a windows item.
11 - Limitations.
1 - No clock selector (i.e. SPDIF, ADAT, etc). They allow one, but will not provide a means to change it. Support a clock interrupt (not a selector).
2 - No DFU. Need your own solution.
3 - Not sure about HID, did not test.
4 - No ASIO. But see #5 above.