Hello,
First off, I was surprised to find that the USB-IF developer's forum went missing, but I'm glad I found this forum.
Anyway, we are developing a USB audio device that has a 3.5mm audio jack with a detection switch for jack sensing and I am wondering if there is a way to report the jack status to the host?
I searched through the audio 1.0 and 2.0 specification and didn't find anything related to the audio jack. Currently we have our device implemented as a speaker, I've also tried lineout but then we don't get the volume controls (at least in win XP)
I've also looked through the HID Usage tables, but didn't find anything there either.
What we want to do is prevent windows from automatically switching the sound output to our device when there is nothing in our audio jack. Currently we have a hack that switches the sampling rate in our audio format descriptor from 0Hz (nothing in jack) to 48kHz (something in jack) and then disconnecting our D+/D- lines to force a re-enumeration. We have found that does what we want on WinXP but we have found that on Win7 if we connect the first time (never plugged in before, shows driver installing bubble) without anything in our audio jack (and hence using the 0Hz descriptor), subsequent connections even with something in our jack will not allow us to play audio, as if Win7 has cached our old format descriptor and isn't listening to our new descriptor. The workaround we have for now is to make sure something is in our jack before connecting to Win7, or if the driver is already installed, uninstalling the driver (from device manager) and plugging in our device with something in the jack.
We want to avoid using 2 PIDs to separate the 2 cases since we have software that only recognizes one PID and stores settings based on it (e.g. if we had 2 PIDs then they would have different stored settings, confusing the user since there is only 1 physical device, e.g. "sometimes my device has this setting even though I set it to something else last time").
So we are hoping that if we can somehow report the jack status, we wouldn't need to do any hacky workarounds (like the one we have now).
Any help or advice would be appreciated, thanks!