Gary, thank you very much for the detailed information! I wish such an
explication would make it to the MSDN...
It seems MS did spent a lot of effort into trying to make a guessing what a
connected device is intended for. And in that tremendous effort it seems to
neglect the obvious: let the device at least state whether itself thinks its
suitable to become a default device with all its "burden"...
Can you explain what you mean by "all endpoints of another device instancesWell, my device has two endpoints, a render and a capture one. One just
disappear by doing so"?
On 23.02.2021, at 23:46, Gary Daniels (Redacted sender "Gary.Daniels" for
DMARC) <dmarc-noreply@xxxxxxxxxxxxx> wrote:
Can you explain what you mean by "all endpoints of another device instances
disappear by doing so"?
PKEY_AudioEndpoint_FormFactor is created by AudioEndpointBuilder when the
endpoint is created. There's no way for a driver or application to directly
modify this key and doing so by overriding permissions would result in
AudioEndpointBuilder derives the form factor from the KSNODETYPE/terminal
type returned by the driver, so to change the form factor the driver would
have to change the ksnodetype/terminal type reported to Windows. Changing
what the driver reports for this value on one device wouldn't impact any
other devices, so i don't see how "all endpoints of another device instances
disappear". Changing the form factor will affect the rank for the endpoint
and can make it less likely the endpoint would become default.
This blog is a little out of date and there's more to the story.
Here is the current algorithm:
The driver is installed, and AudioEndpointBuilder creates the audio endpoint
During endpoint creation the form factor, jack location, jack detection, etc.
as outlined by Matthew's blog are used to calculate a rank for the endpoint
communications endpoints, like telephone and speakerphone, are down-ranked
for console default
communications endpoints, like telephone and speakerphone, are up-ranked for
If no user default has ever been selected, then the endpoint with the highest
rank is selected as default, and that is the end of it
If you report a form factor like "line level" or SPDIF, those form factors
are ranked toward the bottom and would be less likely to become default
But, how does user default selection affect the default? Matthew's blog says
nothing about this, but it will affect you in this case.
Whenever a user manually selects a default endpoint the OS adds the selection
to a tree of past selections. This tree keeps account of what endpoints were
available at the time that the selection was made.
Logically, you can think of it this way. If you manually select speaker
instead of bluetooth, that does not mean that you want to use speaker instead
of the USB headphones that weren't plugged in at the time you selected
speaker over bluetooth. It also does not mean you want to use speaker always
and forever from that day forward (which is what Windows 7 does when you
select a default). When the USB headphones are attached at some later day,
Windows needs to reevaluate the default, giving the newly attached USB
headphones the possibility of becoming default.
When the default selection algorithm encounters a newly attached device which
was not present when a user previously selected the default, the algorithm
gives preference to this newly attached device unless the device is
down-ranked for the role. Based on user studies, we found there is a strong
expectation by users that newly attached hardware becomes the default,
regardless of what was selected at some point in the past. This algorithm
reflects that user expectation, but also ensures that a telephone wouldn't
become the default console endpoint just because it was plugged in after a
Also, when a wrong decision is made, which is inevitable when you're talking
about user preferences and not technical requirements, it is best err on the
side of switching to something new when that new item is connected. The user
will be aware of a newly installed device when it is installed, and if audio
immediately moves to this newly installed device they will quickly make the
connection and correct it if they don't want it as default. Once they correct
it, Windows will store the preference in the tree and they shouldn't ever
have to communicate that preference again. The Windows 7 solution, where
manually selecting the speaker as the default 10 months ago prevented all
newly attached devices from ever becoming the default, caused a lot of
confusion with users partly because they did not make the connection between
the device being plugged in not working, and their selection many months, or
years, in the past of the speaker as the default.
So, what does this all mean for you. There does not exist a down-ranked form
factor for both console and communications, so there is no way to mark your
device to always be avoided by the default selection algorithm. No matter
what form factor is selected, it will always have the potential to
automatically become the default. If you were to select a communications form
factor, like telephone, then you could guarantee that it will never become
the console default because it is down-ranked for console. However, it would
always become the communications default that is used by Teams, Skype, Zoom,
Microsoft Windows Audio
Sent from Outlook
From: wdmaudiodev-bounce@xxxxxxxxxxxxx <wdmaudiodev-bounce@xxxxxxxxxxxxx> on
behalf of noise@xxxxxxxx <noise@xxxxxxxx>
Sent: Tuesday, February 23, 2021 8:02 AM
To: wdmaudiodev@xxxxxxxxxxxxx <wdmaudiodev@xxxxxxxxxxxxx>
Subject: [EXTERNAL] [wdmaudiodev] trouble preventing device to become
Windows' default audio device
according to Matthews outline of the Windows default audio device evaluation
its possible to kind of "downvote" a device by setting
PKEY_AudioEndpoint_FormFactor of the endpoint to something “unattractive” for
a default device to Windows.
This works, however all other endpoints of the same and all endpoints of
another device instances disappear by doing so.
I guess there is some misunderstanding on my side here.
Any hint or advice of how to make a device unattractive enough to Windows to
not being automatically selected, while still allowing the user to make it
the default on its on wish are highly appreciated!
Thanks & viele Grüße/Cheers,
Post message: mailto:wdmaudiodev@xxxxxxxxxxxxx
URL to WDMAUDIODEV page: