on-board sound on ASUS TRX-40
Dan Aloni
dan at kernelim.com
Thu Oct 22 20:08:42 CEST 2020
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
More information about the Alsa-devel
mailing list