Alsa-Devel Archive on lore.kernel.org
 help / color / mirror / Atom feed
* USB-Audio: Common/HeadphonesOnly PlaybackMixerElem "PCM" does not match Topping D10s mixer (152a:8750)
       [not found] <18d26dd157c35a00-webhooks-bot@alsa-project.org>
@ 2026-09-05 12:52 ` GitHub issues - opened
  0 siblings, 0 replies; only message in thread
From: GitHub issues - opened @ 2026-09-05 12:52 UTC (permalink / raw)
  To: alsa-devel

alsa-project/alsa-ucm-conf issue #850 was opened from z23:

USB ID `152a:8750` is mapped to `Common/HeadphonesOnly`, which hard-codes `PlaybackMixerElem "PCM"`. A Topping D10s using that same Thesycon ID has no `PCM` mixer control. PipeWire/WirePlumber then falls back to software volume and leaves the DAC Feature Unit volume untouched, so desktop volume (e.g. 70%) stacks on top of a quiet hardware fader (here 84/127 = -43 dB).

## Hardware

- Device: Topping D10s (USB DAC)
- `lsusb`: `152a:8750 Thesycon Systemsoftware & Consulting GmbH D10s`
- iManufacturer: Topping; iProduct: D10s
- Distro: Arch Linux (`alsa-ucm-conf 1.2.16.1-1`, `alsa-lib 1.2.16.1-1`)
- Kernel: `7.2.3-arch1-2`
- Session: PipeWire 1.6.8 + WirePlumber 0.5.17

## Actual mixer controls

There is no control named `PCM`. The playback volume is named after the product string (note the trailing space):

```
numid=2,iface=MIXER,name='D10s  Playback Switch'
  ; type=BOOLEAN,access=rw------,values=1
  : values=on
numid=3,iface=MIXER,name='D10s  Playback Volume'
  ; type=INTEGER,access=rw---R--,values=1,min=0,max=127,step=0
  : values=84
  | dBminmax-min=-127.00dB,max=0.00dB
```

(`values=84` was the live hardware volume when the mismatch was noticed: 66% / -43.00 dB.)

## What UCM applies

`alsaucm -c D10s dump text`:

```
Verb.HiFi {
Comment Default
Device.Headphones {
Comment Headphones
Values {
CaptureCTL "_ucm0001.hw:D10s"
PlaybackCTL "_ucm0001.hw:D10s"
PlaybackMixerElem PCM
PlaybackPCM "_ucm0001.hw:D10s,0"
}
}
}
```

This comes from:

- `ucm2/USB-Audio/USB-Audio.conf`: `Macro.hp-only.StringMatch "Id='152a:8750' Profile='Common/HeadphonesOnly'"`
- `ucm2/USB-Audio/Common/HeadphonesOnly-HiFi.conf`: `PlaybackMixerElem "PCM"`

## Session manager effect

WirePlumber logs this on every start:

```
spa.alsa: Path PCM is not a volume or mute control
```

The PipeWire sink is created (`HiFi: Headphones`) but **without** `HW_VOLUME_CTRL`. Flags were `HARDWARE DECIBEL_VOLUME LATENCY`. Desktop volume therefore only applies software gain. The USB Feature Unit stays at whatever the DAC last stored (class-compliant volume is in the device), which made output far quieter than the UI suggested.

## History

`152a:8750` was originally added for a Topping DX3 Pro+ ([03fed99](https://github.com/alsa-project/alsa-ucm-conf/commit/03fed99a96da3effebbef1f2830a5ac19834c102)). That profile only set `PlaybackPCM` and did **not** name a mixer element.

When it was generalized to `Common/HeadphonesOnly` ([93d015d](https://github.com/alsa-project/alsa-ucm-conf/commit/93d015d12c68a0516d181a5c2682037f1ec256a7)), `PlaybackMixerElem "PCM"` was added. Several Thesycon-based Topping devices share `152a:8750` (DX3 Pro+ and D10s at least), and the D10s mixer is `D10s `, not `PCM`.

## Suggested fix

`Common/HeadphonesOnly` should not assume a mixer named `PCM`.

Preferred: drop `PlaybackMixerElem "PCM"` (back to the original DX3 Pro+ snippet) so ACP/PipeWire can bind the card's real playback volume control.

Alternative: only set it when the control exists:

```
If.pcm {
	Condition {
		Type ControlExists
		Control "name='PCM Playback Volume'"
	}
	True.Value.PlaybackMixerElem "PCM"
}
```

Hard-coding `PlaybackMixerElem "D10s "` would fix this one unit but is fragile (trailing space, and the USB ID is shared).

## Workaround

```
amixer -c D10s sset 'D10s ' 100%
alsactl store
```

That puts the Feature Unit at 0 dB so the desktop software volume is the only attenuation.

Issue URL     : https://github.com/alsa-project/alsa-ucm-conf/issues/850
Repository URL: https://github.com/alsa-project/alsa-ucm-conf

^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2026-09-05 12:53 UTC | newest]

Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
     [not found] <18d26dd157c35a00-webhooks-bot@alsa-project.org>
2026-09-05 12:52 ` USB-Audio: Common/HeadphonesOnly PlaybackMixerElem "PCM" does not match Topping D10s mixer (152a:8750) GitHub issues - opened

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox