Hi folks, I wanted to provide another update on my progress with the
Native Instruments USB driver in Linux. After patching the audio
driver to have a minimum allowable buffer size of 32 frames, I have
worked hard to tune my test system to eliminate contention and
xruns. Without system tuning I found the usb device to be very prone
to the above problems where my other soundcard, the layla20, worked
very well and reliably without much tuning.
After patching and being able to freely assign buffer sizes down to
32 samples, it became apparent that when connecting to jackd, xruns
would appear randomly even at very large buffer sizes like 1024. My
hope was to find a magic combination of buffer, periods, channels,
rate and depth (and other options like unlocking memory etc) that
would be satisfactory for tracking and playing(instruments). However
I noticed that even when the jack messages indicated 5 ms to spare, a
randomly initiated stream of xruns would occur all in the magnitude
of .1 ms or less and once initiated would continue until shutting
down the server or crashing jack. Watching the 'top' system monitor
the xorg process would go from 1-4% cpu to 30% or more at the same
time. Researching xorg process hogging I found copius threads dating
back to 2001 that have not yet been solved.
Since USB is notoriously sensitive to resource contention, I did my
best to learn about system tuning for audio from the alsa help
pages. Specifically, dedicating irq's to pci hardware and setting
pci bus priority policy for audio.
With a saturday morning, some fresh coffee and a few hours available
I set about providing my pci USB 2.0 host card with a dedicated IRQ.
This required card shuffling, and becoming an expert with my bios
options concerning the peripherals and pci irq allocation. After
quite some wrangling I was able to dedicate a high priority IRQ
number, 10, solely to the card without any sharing. Continuing, I
used the setpci command to give this USB card the highest priority on
the pci bus, and confirmed this.
Now, after these two adjustments, the behaviour of jackd is much
improved and the xrun streaming/xorg inflation would not occur until
selecting very low buffer sizes like 128 or lower. Trying my usual
trick of running reaper with wine and the wineasio driver I was able
to play windows vst instruments at 128 frames. However, any use of
the reaper gui or changing of the vst program would initiate the xrun
stream that would not heal. So, not quite there yet. Whereas, with
my layla20 without system tuning I could do the same thing with
artifacts on gui use, but that would disappear afterwards. This is
similiar in XP to getting glitches when moving windows.
Given that the whole wine/wineasio/reaper config is like a mutant
retard configuration I tried a native linux application called Ardour
2.0. Starting jack with qjackctl, with no options except realtime,
Ardour2 connected. Then from Ardour you can select a buffer size.
Here, it was necessary to select a very high number like 1024 or 2048
to 'clear the pipes', and then select 128 frames. In Ardour2 I
opened a project containing 4 stereo tracks, and a freeverb on the
master that used around 30% cpu total. I reset the qjackctl
statistics and left Ardour2 to run overnight and through the
morning. The NI Rig control has now been running for 17 hours at 128
samples in Ardour2 without a single xrun. Using the ardour gui,
loading additional plugins on the master and min/maxing windows has
not produced any more xruns. Smooth as silk.
Next I will try recording and live monitoring including the kore
controller.
I think some things in the driver could be improved as it seems very
delicate and needing much more system tuning than my layla20.
Specifically, there is a problem that happens with the xorg process
that once initiated, does not heal. I have seen reference to
soundcard drivers setting their own pci bus priority. For example
without any adjustment, the layla20 driver loads with a high priority
of 192, whereas of course my usb 2.0 card gets a typical default
value of 32 like all the usual pci devices. This is worth
investigating for a future patch of snd-usb-caiaq, along with the
lower minimum for buffer sizes.
Thank you for reading this!
-Jonathan Adams Leonard
http://www.jonathanleonard.com
First all Linux track:
http://www.jonathanleonard.com/songs/2007/mp3/reapers_wish.mp3
-------------------------------------------------------------------------
This SF.net email is sponsored by: Splunk Inc.
Still grepping through log files to find problems? Stop.
Now Search log events and configuration files using AJAX and a browser.
Download your FREE copy of Splunk now >> http://get.splunk.com/
_______________________________________________
Alsa-user mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/alsa-user