Mayflower ARC audio "hiccups"

Optimize your system for ultimate performance.

Moderators: MattKingUSA, khz

Post Reply
sezaru
Established Member
Posts: 3
Joined: Mon Mar 04, 2019 2:29 pm

Mayflower ARC audio "hiccups"

Post by sezaru »

Hello,

I have a Mayflower ARC DAC/AMP (https://mayflowerelectronics.com/arc/) which I use with my Gentoo system, I randomly get some audio "hiccups" (Kinda like xruns) with it and I'm not sure why. I tried a lot of different configs, kernel, etc (listed bellow) but still having that problem.
I tried it with Windows 10 and the problem doesn't happen there, also, I tried a Ubuntu 18.10 live-usb and could reproduce it there too, so I don't think it is something specifically from my Gentoo system or the ARC hardware.
Now, I don't think this issue is simply a normal xrun, the reason is that if I run jackctl, I will still have the issue but jackctl will not log any xrun in the status window.
For the tests I tried, I tested using Jack, pulseaudio and alsa directly, I can reproduce the issue with all of them.
For jack, I tried some configs, realtime on/off, sample rate 48000/96000, Frames/Period 64/128/256/1024, Periods/Buffer 2/3/4. None fixes the issue.
Thinking that maybe this could be a USB issue, I tried different ports, usb2, usb3, usb-c (via dongle), USB 3.1 and my gpu virtuallink via dongle too. None fixes the issue. I also tried to disable USB power management with "echo -1 > /sys/module/usbcore/parameters/autosuspend".
Lastly, I changed my kernel to PREEMPT and CPU frequency governor to performance but still it didn't change nothing.

So, I'm now basically out of ideas, it seems to me that the problem is that some USB packets are being dropped for some reason which causes the issue, but dmesg and journalctl shows no error, the only error I can find is when I first use the ARC after a reboot:

Code: Select all

[ 6041.722763] usb 1-2.3: new full-speed USB device number 9 using xhci_hcd
[ 6042.061251] usb 1-2.3: New USB device found, idVendor=0493, idProduct=4170, bcdDevice= 2.00
[ 6042.061253] usb 1-2.3: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[ 6042.061255] usb 1-2.3: Product: ARC AMP DAC
[ 6042.061256] usb 1-2.3: Manufacturer: Mayflower Electronics ARC AMP DAC
[ 6042.061258] usb 1-2.3: SerialNumber: FFFFFFFEFFFF
[ 6042.117260] usb 1-2.3: 1:1: cannot get freq at ep 0x1
[ 6067.637594] usb 1-2.3: 1:1: cannot get freq at ep 0x1
It will show that "cannot get freq at ep 0x1" 2 to 3 times and then not anymore, not sure what that means and if it is related to the issue.

Also, for completeness, here are other details:

My computer:
Processor: AMD Ryzen 7 2700x
Motherboard: MSI Gamming M7 AC
Memory: 32GB Corsair Vengeance Pro 3200 (16x2)
PSU: EVGA 1200W P2
GPU1: Aorus Radeon RX 580 8GB
GPU2: EVGA RTX 2070 8GB

cat /proc/asound/DAC/pcm0p/xrun_debug:

Code: Select all

0
cat /proc/asound/DAC/pcm0p/info:

Code: Select all

card: 6
device: 0
subdevice: 0
stream: PLAYBACK
id: USB Audio
name: USB Audio
subname: subdevice #0
class: 0
subclass: 0
subdevices_count: 1
subdevices_avail: 0
cat /proc/asound/DAC/pcm0p/sub0/hw_params:

Code: Select all

access: MMAP_INTERLEAVED
format: S24_3LE
subformat: STD
channels: 2
rate: 48000 (48000/1)
period_size: 256
buffer_size: 768
cat /proc/asound/DAC/pcm0p/sub0/status:

Code: Select all

state: RUNNING
owner_pid   : 23183
trigger_time: 6067.850526208
tstamp      : 0.000000000
delay       : 672
avail       : 144
avail_max   : 288
-----
hw_ptr      : 135277200
appl_ptr    : 135277824
cat /proc/asound/DAC/pcm0p/sub0/sw_params:

Code: Select all

tstamp_mode: NONE
period_step: 1
avail_min: 256
start_threshold: 0
stop_threshold: 768
silence_threshold: 0
silence_size: 0
boundary: 6917529027641081856
uname -a:

Code: Select all

Linux localhost 5.0.0-rc8 #10 SMP PREEMPT Sun Mar 3 22:55:24 -03 2019 x86_64 AMD Ryzen 7 2700X Eight-Core Processor AuthenticAMD GNU/Linux
So, does anyone have an idea what the problem can be? I'm basically out of ideas.

Thanks!
merlyn
Established Member
Posts: 1392
Joined: Thu Oct 11, 2018 4:13 pm
Has thanked: 168 times
Been thanked: 247 times

Re: Mayflower ARC audio "hiccups"

Post by merlyn »

Hi there sezaru. There was a post here about detailed setup of usb devices. An improvement in performance was gained by setting the buffer size to an exact divisor of the sample rate. Something to do with isochronous endpoint descriptors. Drumfix would know what that meant :)

You may find something useful in that thread.
sezaru
Established Member
Posts: 3
Joined: Mon Mar 04, 2019 2:29 pm

Re: Mayflower ARC audio "hiccups"

Post by sezaru »

Hey merlyn, thanks for the answer.

So, I read the whole thread and tried changing the buffer size to a exact divisor of the sample rate (I tried 96, 128, and 250). Changing that didn't fixed the issue, I could still hear the "hiccups" after some minutes playing music.

Actually at 250 buffer size, DSP Load didn't go above 1% (normally around 0.3%), and no xrun was logged in qjackctl.

I also tried their xruncounter program too, the results are just bellow:

Code: Select all

sezdocs@localhost:~[±]
λ gcc -Wall xruncounter.c -lm -ljack -lpthread -o xruncounter; ./xruncounter
Samplerate 48000 
Buffersize is 250 
jack running with realtime priority
Xrun 1 at DSP load 99.947983
in complete 1 Xruns in 29408 circles
first Xrun happen at DSP load 99.947983 circle 29400
I also tried setting Priority to 99 in qjackctl, but that didn't fixed it too.

Finally, I don't know if it is relevant, but the way I test it is to close everything, start jack daemon via qjackctl and then start playing some some FLAC music via mpv. After one or 2 music (~5 minutes each) I can hear the music stopping for a fraction of a second.
sezaru
Established Member
Posts: 3
Joined: Mon Mar 04, 2019 2:29 pm

Re: Mayflower ARC audio "hiccups"

Post by sezaru »

hey, a little update, since I'm not sure if I was able to explain clearly what these "hiccups" are I recorded my audio until I got the issue. You can download the audio file bellow:
hiccup.mp3
(115.75 KiB) Downloaded 56 times
As you can hear, at 3 seconds the music stops for a brief moment and then resumes, that is the issue I'm talking about. This happen randomly.

Also, I know the audio is kinda bad on my recording, the reason was that to record it I just plugged the headphone output of the ARC into the microphone input and recorded that input via audacity.

Basically I did this:
20190305_150802.jpg
20190305_150802.jpg (147.75 KiB) Viewed 695 times
.
merlyn
Established Member
Posts: 1392
Joined: Thu Oct 11, 2018 4:13 pm
Has thanked: 168 times
Been thanked: 247 times

Re: Mayflower ARC audio "hiccups"

Post by merlyn »

Did you try lsusb -v?

That outputs a whole lot of information that I can't claim to understand fully. The main point from the thread I linked to would be to find what the 'Transfer Type' is for your hardware. If it's 'isochronous' that means the usb device sends and receives packets at a constant time interval. In the thread I linked to this interval was 1 millisecond, so a device using that interval will work best when the buffer is a multiple of samplerate/1000, e.g. 48, 96 ... at 48k.

So for your hardware you can find the transfer type and the time interval using lsusb -v. Looking at the output I couldn't see anything that explicitly stated 1 millisecond, so you'd need to research that.
Post Reply