on-board sound on ASUS TRX-40
Hi,
The on-board earphone jack does not seem to work on an ASUS TRX-40 board. Here's the alsa-info.sh output:
http://alsa-project.org/db/?f=7a94c1b1eec4b2e623c75770364ec43c33d6c95c
Tried coding up the patch below, but it _does not_ fix the problem. It does shows the earphone as 'plugged' though. Verified that it's not an hardware issue via Windows.
Please instruct on how to debug this further.
Thanks!
diff --git a/sound/usb/mixer_maps.c b/sound/usb/mixer_maps.c index 9af7aa93f6fa..ab0f036f385e 100644 --- a/sound/usb/mixer_maps.c +++ b/sound/usb/mixer_maps.c @@ -568,6 +568,10 @@ static const struct usbmix_ctl_map usbmix_ctl_maps[] = { .map = trx40_mobo_map, .connector_map = trx40_mobo_connector_map, }, + { /* ASUS TRX40-PRO */ + .id = USB_ID(0x0b05, 0x1918), + .map = trx40_mobo_map, + }, { /* Asrock TRX40 Creator */ .id = USB_ID(0x26ce, 0x0a01), .map = trx40_mobo_map,
On Thu, 22 Oct 2020 10:17:46 +0200, Dan Aloni wrote:
Hi,
The on-board earphone jack does not seem to work on an ASUS TRX-40 board. Here's the alsa-info.sh output:
http://alsa-project.org/db/?f=7a94c1b1eec4b2e623c75770364ec43c33d6c95c
Tried coding up the patch below, but it _does not_ fix the problem. It does shows the earphone as 'plugged' though. Verified that it's not an hardware issue via Windows.
Please instruct on how to debug this further.
Did you try to add connector_map, too?
Takashi
Thanks!
diff --git a/sound/usb/mixer_maps.c b/sound/usb/mixer_maps.c index 9af7aa93f6fa..ab0f036f385e 100644 --- a/sound/usb/mixer_maps.c +++ b/sound/usb/mixer_maps.c @@ -568,6 +568,10 @@ static const struct usbmix_ctl_map usbmix_ctl_maps[] = { .map = trx40_mobo_map, .connector_map = trx40_mobo_connector_map, },
{ /* ASUS TRX40-PRO */
.id = USB_ID(0x0b05, 0x1918),
.map = trx40_mobo_map,
}, { /* Asrock TRX40 Creator */ .id = USB_ID(0x26ce, 0x0a01), .map = trx40_mobo_map,
-- Dan Aloni
On Thu, Oct 22, 2020 at 11:14:03AM +0200, Takashi Iwai wrote:
On Thu, 22 Oct 2020 10:17:46 +0200, Dan Aloni wrote:
Hi,
The on-board earphone jack does not seem to work on an ASUS TRX-40 board. Here's the alsa-info.sh output:
http://alsa-project.org/db/?f=7a94c1b1eec4b2e623c75770364ec43c33d6c95c
Tried coding up the patch below, but it _does not_ fix the problem. It does shows the earphone as 'plugged' though. Verified that it's not an hardware issue via Windows.
Please instruct on how to debug this further.
Did you try to add connector_map, too?
Yes, and it did not help. Anything else I can try?
On Thu, 22 Oct 2020 12:18:52 +0200, Dan Aloni wrote:
On Thu, Oct 22, 2020 at 11:14:03AM +0200, Takashi Iwai wrote:
On Thu, 22 Oct 2020 10:17:46 +0200, Dan Aloni wrote:
Hi,
The on-board earphone jack does not seem to work on an ASUS TRX-40 board. Here's the alsa-info.sh output:
http://alsa-project.org/db/?f=7a94c1b1eec4b2e623c75770364ec43c33d6c95c
Tried coding up the patch below, but it _does not_ fix the problem. It does shows the earphone as 'plugged' though. Verified that it's not an hardware issue via Windows.
Please instruct on how to debug this further.
Did you try to add connector_map, too?
Yes, and it did not help. Anything else I can try?
Well, you need to figure out via trial and error. It should receive some event processed in snd_usb_mixer_interrupt_v2(), and you can check which widget is involved, at least.
Takashi
On Thu, Oct 22, 2020 at 12:24:31PM +0200, Takashi Iwai wrote:
On Thu, 22 Oct 2020 12:18:52 +0200, Dan Aloni wrote:
On Thu, Oct 22, 2020 at 11:14:03AM +0200, Takashi Iwai wrote:
On Thu, 22 Oct 2020 10:17:46 +0200, Dan Aloni wrote:
Hi,
The on-board earphone jack does not seem to work on an ASUS TRX-40 board. Here's the alsa-info.sh output:
http://alsa-project.org/db/?f=7a94c1b1eec4b2e623c75770364ec43c33d6c95c
Tried coding up the patch below, but it _does not_ fix the problem. It does shows the earphone as 'plugged' though. Verified that it's not an hardware issue via Windows.
Please instruct on how to debug this further.
Did you try to add connector_map, too?
Yes, and it did not help. Anything else I can try?
Well, you need to figure out via trial and error. It should receive some event processed in snd_usb_mixer_interrupt_v2(), and you can check which widget is involved, at least.
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.
[12204.873896] snd_usb_mixer_interrupt, ustatus = 0 [12204.873908] snd_usb_mixer_interrupt_v2: attribute=1 unitid=7, control=2, channel=2 [12204.889894] snd_usb_mixer_interrupt, ustatus = 0 [12204.889902] snd_usb_mixer_interrupt_v2: attribute=1 unitid=11, control=2, channel=2 [12206.233879] snd_usb_mixer_interrupt, ustatus = 0 [12206.233889] snd_usb_mixer_interrupt_v2: attribute=1 unitid=7, control=2, channel=2 [12206.249877] snd_usb_mixer_interrupt, ustatus = 0 [12206.249885] snd_usb_mixer_interrupt_v2: attribute=1 unitid=11, control=2, channel=2
On Thu, 22 Oct 2020 14:33:47 +0200, Dan Aloni wrote:
On Thu, Oct 22, 2020 at 12:24:31PM +0200, Takashi Iwai wrote:
On Thu, 22 Oct 2020 12:18:52 +0200, Dan Aloni wrote:
On Thu, Oct 22, 2020 at 11:14:03AM +0200, Takashi Iwai wrote:
On Thu, 22 Oct 2020 10:17:46 +0200, Dan Aloni wrote:
Hi,
The on-board earphone jack does not seem to work on an ASUS TRX-40 board. Here's the alsa-info.sh output:
http://alsa-project.org/db/?f=7a94c1b1eec4b2e623c75770364ec43c33d6c95c
Tried coding up the patch below, but it _does not_ fix the problem. It does shows the earphone as 'plugged' though. Verified that it's not an hardware issue via Windows.
Please instruct on how to debug this further.
Did you try to add connector_map, too?
Yes, and it did not help. Anything else I can try?
Well, you need to figure out via trial and error. It should receive some event processed in snd_usb_mixer_interrupt_v2(), and you can check which widget is involved, at least.
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.
Takashi
On Thu, Oct 22, 2020 at 02:36:16PM +0200, Takashi Iwai wrote:
On Thu, 22 Oct 2020 14:33:47 +0200, Dan Aloni wrote:
On Thu, Oct 22, 2020 at 12:24:31PM +0200, Takashi Iwai wrote:
On Thu, 22 Oct 2020 12:18:52 +0200, Dan Aloni wrote:
On Thu, Oct 22, 2020 at 11:14:03AM +0200, Takashi Iwai wrote:
On Thu, 22 Oct 2020 10:17:46 +0200, Dan Aloni wrote:
Hi,
The on-board earphone jack does not seem to work on an ASUS TRX-40 board. Here's the alsa-info.sh output:
http://alsa-project.org/db/?f=7a94c1b1eec4b2e623c75770364ec43c33d6c95c
Tried coding up the patch below, but it _does not_ fix the problem. It does shows the earphone as 'plugged' though. Verified that it's not an hardware issue via Windows.
Please instruct on how to debug this further.
Did you try to add connector_map, too?
Yes, and it did not help. Anything else I can try?
Well, you need to figure out via trial and error. It should receive some event processed in snd_usb_mixer_interrupt_v2(), and you can check which widget is involved, at least.
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.
On Thu, 22 Oct 2020 14:51:00 +0200, Dan Aloni wrote:
On Thu, Oct 22, 2020 at 02:36:16PM +0200, Takashi Iwai wrote:
On Thu, 22 Oct 2020 14:33:47 +0200, Dan Aloni wrote:
On Thu, Oct 22, 2020 at 12:24:31PM +0200, Takashi Iwai wrote:
On Thu, 22 Oct 2020 12:18:52 +0200, Dan Aloni wrote:
On Thu, Oct 22, 2020 at 11:14:03AM +0200, Takashi Iwai wrote:
On Thu, 22 Oct 2020 10:17:46 +0200, Dan Aloni wrote: > > Hi, > > The on-board earphone jack does not seem to work on an ASUS TRX-40 > board. Here's the alsa-info.sh output: > > http://alsa-project.org/db/?f=7a94c1b1eec4b2e623c75770364ec43c33d6c95c > > Tried coding up the patch below, but it _does not_ fix the problem. It > does shows the earphone as 'plugged' though. Verified that it's not an > hardware issue via Windows. > > Please instruct on how to debug this further.
Did you try to add connector_map, too?
Yes, and it did not help. Anything else I can try?
Well, you need to figure out via trial and error. It should receive some event processed in snd_usb_mixer_interrupt_v2(), and you can check which widget is involved, at least.
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.
Takashi
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.
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.
thanks,
Takashi
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.
participants (2)
-
Dan Aloni
-
Takashi Iwai