Bug 211211

Summary: Sound stutters with TC-Helicon GoXLR
Product: Drivers Reporter: Anthony Bourguignon (contact+kernel)
Component: Sound(ALSA)Assignee: Jaroslav Kysela (perex)
Status: RESOLVED OBSOLETE    
Severity: normal CC: contact+kernel, johnathontrisler, lm41, lou, robin.van.cauter, tiwai
Priority: P1    
Hardware: All   
OS: Linux   
Kernel Version: 5.10.5 Subsystem:
Regression: No Bisected commit-id:
Attachments: alsa-info
lusub -vvv -d 1220:8fe0
stream0
lsusb-1220:8fe4

Description Anthony Bourguignon 2021-01-15 14:40:20 UTC
Hi,

I bought a hardware mixer from TC-Helicon. I mainly use it under windows for streaming. But now, I'm trying to make it work under Linux, which I use for work. The hardware is seen as a multi-inputs multi-outputs soundcard under Linux. I use Debian unstable, Gnome (xwayland) and pulseaudio. It's an usb connected hardware (with its own power).

The sound was stuttering every 3 or 4 seconds. It was plugged on a usb 3.0 port on the motherboard. But then, I bought a pci-express usb 3.0 card and I plugged the goxlr on it. The stutters are steal present but less often (I'd say on every 30 seconds).

I've opened an issue on pulseaudio gitlab but it doesn't seem related to pulse as I've got the issue with alsa only : https://gitlab.freedesktop.org/pulseaudio/pulseaudio/-/issues/1093 .

I know a person, met on the discord of tc-helicon, who has exactly the same symptoms with another distribution.

Another fun fact is that the inputs do not stutter. I can record my mic plugged in the goxlr and it never stutters.
Comment 1 Takashi Iwai 2021-01-15 16:20:54 UTC
Please give alsa-info.sh output.  Run the script with --no-upload option, and attach the output to Bugzilla.

Also, please give the output of lsusb -v for the corresponding device, and the content of /proc/asound/card*/stream* files (for the device), too.
Comment 2 Anthony Bourguignon 2021-01-16 08:47:02 UTC
Created attachment 294665 [details]
alsa-info
Comment 3 Anthony Bourguignon 2021-01-16 08:47:44 UTC
Created attachment 294667 [details]
lusub -vvv -d 1220:8fe0
Comment 4 Anthony Bourguignon 2021-01-16 08:49:53 UTC
Created attachment 294669 [details]
stream0

There is only one stream file in /proc
# ls /proc/asound/card1/
id  pcm0c  pcm0p  stream0  usbbus  usbid  usbmixer
Comment 5 Anthony Bourguignon 2021-01-16 08:55:25 UTC
Hi,

I've enclosed the files you requested. Thanks for your time.

Another issue with it, as you can see, the mixer is seen as a multi-inputs and multi-outputs. But those are separated outputs, controled by the hardware sliders. Currently, I use this configuration in pulse to split them :

load-module module-remap-sink sink_name=system sink_properties="device.description='GoXLR System'" remix=no master=alsa_output.usb-TC-Helicon_GoXLR-00.multichannel-output channels=2 master_channel_map=front-left,front-right channel_map=front-left,front-right
load-module module-remap-sink sink_name=game sink_properties="device.description='GoXLR Game'" remix=no master=alsa_output.usb-TC-Helicon_GoXLR-00.multichannel-output channels=2 master_channel_map=rear-left,rear-right channel_map=front-left,front-right
load-module module-remap-sink sink_name=music sink_properties="device.description='GoXLR Music'" remix=no master=alsa_output.usb-TC-Helicon_GoXLR-00.multichannel-output channels=2 master_channel_map=side-left,side-right channel_map=front-left,front-right
load-module module-remap-sink sink_name=chat sink_properties="device.description='GoXLR Voice Chat'" remix=no master=alsa_output.usb-TC-Helicon_GoXLR-00.multichannel-output channels=2 master_channel_map=front-center,lfe channel_map=front-left,front-right
load-module module-remap-sink sink_name=sample sink_properties="device.description='GoXLR Sample'" remix=no master=alsa_output.usb-TC-Helicon_GoXLR-00.multichannel-output channels=2 master_channel_map=aux0,aux1 channel_map=front-left,front-right

Is there a possibility to separate the outputs at a driver level or maybe in alsa ? Thanks a lot again.
Comment 6 Robin Van Cauter 2021-01-16 11:09:37 UTC
Hi, I've been experiencing the same issue.

I use JACK2 to route audio from and to my GoXLR and it looks like ALSA correctly identifies all channels (21 capture channels, 10 output channels).

As Anthony also stated, the capture channels are working perfectly fine (good quality, no dropouts, glitches or stuttering) but when I direct system audio from any source towards the output channels, there's some stuttering/skipping.

I'm by no means a Linux audio expert (or audio expert in general), but if I had to guess it seems as if whatever signal the GoXLR is delivering to the OS, is something the OS has no issue dealing with (hence the capture channels working perfectly) but whatever signal the OS is delivering to GoXLR is causing issue.


I'm currently using PopOS 20.04, with the ubuntu mainline kernel 5.10.6-lowlatency, but 5.5, 5.8 (both generic / lowlatency) were giving the exact same issue.


If there is anything I can do to be of assistance in terms of debugging this issue, feel free to ask, as I would love to see this resolved.


Could this have something to do with PCM ring buffer? The ALSA project debug page points towards it as a potential cause of skipping and glitches in general.
Comment 7 Robin Van Cauter 2021-01-16 11:14:00 UTC
Created attachment 294671 [details]
lsusb-1220:8fe4
Comment 8 Robin Van Cauter 2021-01-16 11:16:24 UTC
I've also added my lsusb, as I'm using the GoXLR Mini (powered through USB) and Anthony is using the GoXLR, so maybe it could be useful as well.

Here's my alsa info:

http://alsa-project.org/db/?f=cfc68d0fb0930e1dc56645621c0053f580e533a7
Comment 9 lou 2021-02-23 14:22:53 UTC
Hello ! 

I have the exact same issues. 

I'm on ArchLinux, kernel 5.10.16-arch1-1. I have the issue using Alsa directly or with Pulseaudio. I tried changing the sampling rate but no dice. 

I'm not sure if this is related, but I saw this error message somewhere (I think it was Pulseaudio with the verbose flag)

"We were woken up with POLLOUT set -- however a subsequent snd_pcm_avail() returned 0 or another value < min_avail."
Comment 10 Takashi Iwai 2021-03-03 15:00:53 UTC
Such a problem could be due to the (lack of) implicit feedback mode.
5.11 kernel got a lot of changes regarding the implicit-fb support, and it might work already better alone.  So please test with 5.11.x kernel.
Comment 11 Takashi Iwai 2021-03-03 15:02:30 UTC
And, if the problem persists 5.11 kernel, you can enforce the implicit feedback mode via implicit_fb=1 option to snd-usb-audio module.  e.g., boot with
  snd_usb_audio.implicit_fb=1
boot option.  If this improves, we can put the device entry to the quirk list.
Comment 12 lou 2021-03-09 12:58:49 UTC
I have no sound coming out of the GoXLR at all since the 5.11.2 update (5.11.2-arch1-1). I will install it on another PC to see if it's related or if I'm just unlucky
Comment 13 Johnathon 2021-03-09 18:25:38 UTC
I am very new to linux so I do not know a whole lot about how pulse and alsa work, but I can confirm I had the same issue of audio cuts every few seconds with my GOXLR Mini. I am also now having the same issue as lou where I have no audio any more after updating to 5.11. If I can be of any help please let me know as I would like to see this fixed. It gets slightly annoying having to connect to a different DAC every time I want audio.
Comment 14 lou 2021-03-11 01:00:43 UTC
So:

I updated to 5.11.4, still no sound. But I killed pulseaudio, started Jack with 

jackd -P70 -dalsa -dhw:3,0 -r44100 -p256 -n2

(where 3,0 is my GoXLR) 

And I get sound ! And no stutter at all !


I'm going to try with Pipewire
Comment 15 Anthony Bourguignon 2021-11-15 14:00:28 UTC
Resolved with kernel 5.11 and after.