On Thu, Oct 22, 2020 at 06:09:48PM +0200, Takashi Iwai wrote: > On Thu, 22 Oct 2020 17:49:59 +0200, > Dan Aloni wrote: > > > > On Thu, Oct 22, 2020 at 02:57:56PM +0200, Takashi Iwai wrote: > > > > > > Upon plugging or unplugging the headphone, the unitid of 11 matches the > > > > > > unit in `trx40_mobo_connector_map`, although two events are happening - > > > > > > two for plug and two for unplug. There's another event for '7', and > > > > > > changing the second item of `static const struct usbmix_connector_map` > > > > > > from 11 to 7 does not seem to affect it. > > > > > > > > > > Well, then I'm afraid that it has yet another mapping of the units. > > > > > You'd need to create the whole map from the topology, and rewrite the > > > > > connector_map as well. > > > > > > > > Would be helpful a USB trace from KVM, when running a Windows VM that > > > > successfully manages this device following USB redirection? I can > > > > produce this given instructions, if you have them handy. > > > > > > The topology is found in lsusb -v output. It's the connection among > > > units. More importantly, the maps only care about the certain units > > > like input/output terminals and feature unit. You can look at those > > > and correct the corresponding unit ids. > > > > It shows 6 triplelets of input terminal, feature unit, and output terminal, > > and they are structured like this: > > > > IT[7] -> FU[19] -> OT[13] > > Line-in USB Streaming > > > > IT[8] -> FU[20] -> OT[14] > > Rear Mic-In USB Streaming > > > > IT[9] -> FU[21] -> OT[15] > > Desktop Mic USB Streaming > > > > IT[10] -> FU[22] -> OT[16] > > Headphone Speaker > > > > IT[11] -> FU[23] -> OT[17] > > USB Streaming Headphone > > > > IT[12] -> FU[24] -> OT[18] > > USB Streaming SPDIF interface > > > > Not sure how to make sense of that to a usbmix_name_map array and/or > > usbmix_connector_map array combination that works. My trials so far > > have not yielded a good result. > > Could you show the patch you've tried? Fitting the above into two > tables should be straightforward. Well I have almost zero familiarity with the code base, so it's really not trivial to me. I still have gaps. Please explain: - Maybe I conflated UnitId and TerminalId, when analyzing `lsusb -v`, are these both referring to units? - I assume bSourceId refers to another descriptor UnitId, is that right? - Out of the 18 possible entries in `usbmix_name_map` in this case how it is decided to omit certain input and output terminals? Should all feature units are necessarily described? - What is the purpose of `usbmix_connector_map` array, and how to decide to add entries to this array? Is it done relative to `usbmix_name_map` omissions? - Is there a tool that can better describe the topology based on `lsusb -v` output? - Seems that `mixer_maps.c` compensates for knowledge not obtained from `lsusb -v`, or all of it can be obtained? Thanks. -- Dan Aloni