All of lore.kernel.org
 help / color / mirror / Atom feed
From: GitHub issues - edited <github@alsa-project.org>
To: alsa-devel@alsa-project.org
Subject: [ALSA/usb-audio] Weltrend/XiiSound Headset (040b:0897) splits channels into independent 'PCM'/'PCM 1' mixer elements and suffers from severe dB volume curve mismatch
Date: Thu, 14 May 2026 17:40:29 +0200 (CEST)	[thread overview]
Message-ID: <18af78d394905300-webhooks-bot@alsa-project.org> (raw)
In-Reply-To: <18af78d3948a4100-webhooks-bot@alsa-project.org>

alsa-project/alsa-ucm-conf issue #760 was edited from skye6034:

<img width="717" height="298" alt="Image" src="https://github.com/user-attachments/assets/3f81ef7d-5973-493c-a2c1-b2046bb958c1" />
<img width="958" height="529" alt="Image" src="https://github.com/user-attachments/assets/b49f830a-255a-4283-a561-0aa957a86b68" />

### Description of the Bug
The Weltrend Semiconductor / XiiSound wireless headset dongle (USB ID 040b:0897) is incorrectly handled by the `snd-usb-audio` driver. Instead of presenting a single unified stereo hardware volume control interface, the driver registers two completely separate hardware playback controls simultaneously:
1. `PCM` (Controls overall initial gain / Left physical channel)
2. `PCM 1` (Controls the hardware amplification exclusively for the physical Right ear channel)

Because of this firmware descriptor misinterpretation, standard desktop environments (like GNOME/KDE) parse the device into separate, conflicting "Analog Output" and "Digital Output (S/PDIF)" hardware profiles simultaneously. 

When a user adjusts the system volume slider, the audio engine modulates the primary `PCM` element but leaves `PCM 1` un-synchronized at 0%. This instantly kills the physical Left audio channel entirely, leaving sound playing exclusively out of the Right side.

Furthermore, the hardware volume scaling curve is completely non-linear and broken. Small adjustments to the user-space volume slider result in massive, disproportionate drops in the hardware mixer levels. For example, lowering the desktop system volume slider slightly from 100% down to 98% causes the ALSA hardware `PCM` channel level to violently plummet down to approximately 33%.

The hardware functions perfectly as a standard, unified single stereo device on Windows and macOS.

### Steps to Reproduce
1. Connect the wireless USB dongle.
2. See two "Analog Output" and "Digital Output (S/PDIF)" profiles on the desktop (GNOME/KDE)
3. Audio won't play until you set "Analog" to 100%, and then, it would only play on the Right Channel
4. Open `alsamixer` and select the `H878 Wireless headset` sound card.
5. Observe two independent, unlinked channel elements: `PCM` and `PCM 1`.
6. Set `PCM 1` to 100. The physical left speaker starts outputting audio.
7. Attempting to lower system volume via desktop controls drops the main `PCM` element while leaving the channels permanently split and mismatched.
8. Drop the system volume slider slightly from 100% to 98% and observe the hardware `PCM` slider collapse immediately to ~33% gain.### 

Current User Workaround:
To achieve functional stereo, a user must manually force both `PCM` and `PCM 1` to exactly 100% in `alsamixer` to force open both physical speaker channels, and then instruct their user-space audio server (PipeWire/PulseAudio) to utilize software-side attenuation rather than mapping to the hardware mixer paths.

### Hardware Details (`lsusb -v`):
Bus 005 Device 003: ID 040b:0897 Weltrend Semiconductor H878 Wireless headset
Device Descriptor:
  bLength                18
  bDescriptorType         1
  bcdUSB               1.10
  bDeviceClass            0 [unknown]
  bDeviceSubClass         0 [unknown]
  bDeviceProtocol         0 
  bMaxPacketSize0        64
  idVendor           0x040b Weltrend Semiconductor
  idProduct          0x0897 H878 Wireless headset
  bcdDevice            0.31
  iManufacturer           1 XiiSound Technology Corporation
  iProduct                2 H878 Wireless headset
  bNumConfigurations      1

### Alsamixer Controls Detected:
- Card: H878 Wireless headset
- Chip: USB Mixer
- Item: PCM [dB gain: 0.39, 0.39] -> Controls Left channel pathing
- Item: PCM 1 [Volume: 0] -> Hard-muted by default, controls Right hardware amp pathing

### Suggested Fix / Quirk Needed
This chip requires a custom driver mapping entry added to the Linux kernel (`sound/usb/quirks.c` or `sound/usb/mixer.c`). The driver needs a mixer quirk targeting USB ID `040b:0897` to:
1. Alias or hard-link `PCM 1` to the master `PCM` control for unified, locked stereo tracking.
2. Implement a custom volume map (`dB_map`) to override the broken firmware descriptors, preventing the hardware volume level from collapsing to 33% when a minor user-space attenuation (98%) is requested.

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

       reply	other threads:[~2026-05-14 15:41 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <18af78d3948a4100-webhooks-bot@alsa-project.org>
2026-05-14 15:40 ` GitHub issues - edited [this message]
     [not found] <18af78d74ec85800-webhooks-bot@alsa-project.org>
2026-05-14 15:40 ` [ALSA/usb-audio] Weltrend/XiiSound Headset (040b:0897) splits channels into independent 'PCM'/'PCM 1' mixer elements and suffers from severe dB volume curve mismatch GitHub issues - edited
     [not found] <18af78cd46d0be00-webhooks-bot@alsa-project.org>
2026-05-14 15:40 ` GitHub issues - opened

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=18af78d394905300-webhooks-bot@alsa-project.org \
    --to=github@alsa-project.org \
    --cc=alsa-devel@alsa-project.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.