Drumfix wrote: ↑Thu Oct 01, 2020 9:35 pm
Since they started to build USB interfaces RME completely ignores Linux. So buying any of their newer interfaces is a complete waste of money. TotalMix doesn't work at all. Only USB class compliant work.
@tvaz
Having a computer where the problems shows up very quickly is actually a good thing for debugging.
First of all, make sure you have done all of the following:
1. Disable any kind of CPU turbo boost in the bios and set the cpu frequency to a fixed value.
2. add "acpi_irq_nobalance nowatchdog nohz=off intel_idle.max_cstate=1" to your kernel command line
3. Set the smp affinity of the interrupts such, that the usb host controller has its own core, e.g. on 4 core/8 threads CPU
as root, "echo f > /proc/irq/<for all irq number except that of the usb host controller>/smp_affinity
and " echo 10 > proc/irq/<usb host controller irq>/smp_affinity
4. set the cpu governor to "performance"
5. unload all drivers that use the usb host controller except the motu driver (e.q some pages up there was the btusb and the uvcvideo driver)
Drumfix
Thanks for the hints,
@Drumfix! After following the steps above I left the device playing overnight. It's been more than 12 hours without any issue, no channel hopping, no distortion, no interruptions, crystal clear sound. What I precisely have now is:
Kernel 5.8.5 with your
snd_ua101 module, compiled without EHCI support, booted with the following options:
Code: Select all
root@x1:~# cat /proc/cmdline
BOOT_IMAGE=/vmlinuz-5.8.5 root=/dev/mapper/x1--vg-root ro snd_hda_intel.dmic_detect=0 intel_iommu=off acpi_irq_nobalance nowatchdog nohz=off intel_idle.max_cstate=1 quiet
I unloaded btusb and uvcvideo modules, which were on ports 7 and 8, so that only snd-motu-avb is using the controller:
Code: Select all
root@x1:~# lsusb -t
/: Bus 02.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/6p, 5000M
/: Bus 01.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/12p, 480M
|__ Port 1: Dev 5, If 7, Class=Vendor Specific Class, Driver=snd-motu-avb, 480M
|__ Port 1: Dev 5, If 5, Class=Vendor Specific Class, Driver=snd-motu-avb, 480M
|__ Port 1: Dev 5, If 3, Class=Audio, Driver=snd-motu-avb, 480M
|__ Port 1: Dev 5, If 1, Class=Audio, Driver=snd-motu-avb, 480M
|__ Port 1: Dev 5, If 6, Class=Vendor Specific Class, Driver=snd-motu-avb, 480M
|__ Port 1: Dev 5, If 4, Class=Audio, Driver=snd-motu-avb, 480M
|__ Port 1: Dev 5, If 2, Class=Audio, Driver=snd-motu-avb, 480M
|__ Port 1: Dev 5, If 0, Class=Audio, Driver=snd-motu-avb, 480M
|__ Port 7: Dev 3, If 0, Class=Wireless, Driver=, 12M
|__ Port 7: Dev 3, If 1, Class=Wireless, Driver=, 12M
|__ Port 8: Dev 4, If 1, Class=Video, Driver=, 480M
|__ Port 8: Dev 4, If 0, Class=Video, Driver=, 480M
Then I've set 8 for irq 126 and f for all the others:
Code: Select all
root@x1:~# cat /proc/interrupts
CPU0 CPU1 CPU2 CPU3
0: 7 0 0 0 IR-IO-APIC 2-edge timer
1: 0 0 5234 0 IR-IO-APIC 1-edge i8042
8: 0 0 0 1 IR-IO-APIC 8-edge rtc0
9: 0 296273 0 0 IR-IO-APIC 9-fasteoi acpi
12: 0 256418 0 0 IR-IO-APIC 12-edge i8042
16: 0 0 2 0 IR-IO-APIC 16-fasteoi i801_smbus
20: 0 0 0 206672 IR-IO-APIC 20-fasteoi intel_ish_ipc
120: 0 0 0 0 DMAR-MSI 0-edge dmar0
121: 0 0 0 0 DMAR-MSI 1-edge dmar1
124: 0 400963 0 0 IR-PCI-MSI 376832-edge ahci[0000:00:17.0]
125: 21687 0 0 0 IR-PCI-MSI 520192-edge enp0s31f6
126: 0 80529 0 684608183 IR-PCI-MSI 327680-edge xhci_hcd
127: 0 0 1311847 0 IR-PCI-MSI 32768-edge i915
128: 0 0 0 104 IR-PCI-MSI 360448-edge mei_me
129: 0 0 0 0 accel_3d-dev0 accel_3d_consumer0
131: 573222 0 0 0 IR-PCI-MSI 2097152-edge iwlwifi
132: 0 830 0 0 IR-PCI-MSI 514048-edge snd_hda_intel:card0
Code: Select all
root@x1:~# cat /proc/irq/126/effective_affinity
8
Set CPU governor to performance:
Code: Select all
root@x1:~# cat /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor
performance
performance
performance
performance
Now that everything is working for so long I don't really know how to start debugging
Let me know if you have any directions. I'll update this post if the problem appears again using the current setup.
Bests,
tvaz