On 2011-06-28 23:13, Colin Guthrie wrote: > PS, while looking into this issue, I found a way to easily recreate the > "initial volume issue" I discussed on IRC. > > 1. Comment out the path_set_unify() call. > 2. Use my USB Handset with the Speaker kcontrol (no Master or PCM) > 3. Switch between Analog Output and Analog Speakers profiles. > > > When witching from AS -> AO, the Speaker kcontrol is zeroed+muted. When > switching from AO -> AS, it stays in it's zeroed+muted state until the > volume control is touched. I think this is similar behaviour to the > initial startup problem. Aha, interesting. > Of course even with path_set_unify() commented out, the fact I have two > ports (one of which now at least works \o/) is bogus. Only Analog > Speakers should be present so this still needs to be addressed somehow, > but I'm beginning to actually "get" the problem in a bit more depth now :) Given your analysis of the problem, you definitely seem to have got deeper into it than I have :-) But when scratching my head about this problem a while ago, I remember thinking that after having run through all the paths, we should remove all paths whose volumes/mutes/enums are true *subsets* of another path, because having that path does not contribute anything. That would in some cases solve this problem as well, e g in the USB headset case, Analog Output would be removed through that algorithm and so no profile without hw volume would be present. (Btw, it does annoy me a little that it's actually named "Speaker" when it's actually a headphone, but that's an ALSA level problem!) -- David Henningsson http://launchpad.net/~diwic