[wdmaudiodev] Understanding USB Feature Unit Descriptors

  • From: RYAN ALLAN <ryanallan@xxxxxxx>
  • To: wdmaudiodev@xxxxxxxxxxxxx
  • Date: Fri, 14 Jan 2011 12:31:55 -0700

I am developing a USB-to-analog audio device, and am seeing strange 
volume scaling behavior from Windows 7/Vista machines. The problem is 
not apparent with XP machines. 
I am using the
 following Feature Unit Descriptors.

Get_Min: 0x01, 0x80

Get_Max: 0xFF, 0x7F

Get_Res: 0x00, 0x10This tells me that the volume will be in the
 range from Min:0x8001 to Max:0x7FFFF, and each step (each time the 
volume is incremented via volume+ button on a multimedia keyboard) will 
be of size Res:0x1000. Is this correct?

When I move the volume slider in a Windows 7/Vista machine, the 
volume (I am looking at Set_Cur packets) moves in a range from 0x7FFFF 
to 0x3900 with step sizes of 0x0100. The same experiment on a XP machine
 sees the volume move in a range from 0x7FFF to
 0x8001 with step sizes of 0x1000. Why do the two OS's have different 
I would like volume to be in the range from -127db - +127db (as per 
USB spec), and I would like step sizes of 0x1000. Basically, I would 
like the Windows 7 machine to behave like the XP machine.


Other related posts: