Based on this mail on LAU by Nathanael Anderson
I've seen asked many times on the list how to get intel-hda cards working with low latency, in duplex operation. Here is a full, step by step, on how I got 4ms latency. I'm using a Dell M90 with a Quadro fx 1500, attached to a docking station with a Maudio Delta 66 pci card (secondary card) in it, the binary Nvidia drivers and Compiz. So if you were wondering, it is possible. :)
(I'm not going to walk you through how to compile a kernel)
the last kernel before the big kernel lock regression
wget http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.24.7.tar.bz2
tar xvjf linux-2.6.24.7.tar.bz2 cd linux-2.6.24.7.tar.bz2 wget http://www.kernel.org/pub/linux/kernel/projects/rt/patch-2.6.24.7-rt21.bz2
if you don't see it here look in the projects/rt/older/ directory
bzcat ../patch-2.6.24.7-rt21.bz2
Download this config: config-intel-hda.txt
mv config-intel-hda.txt .config.old make oldconfig
build and install your kernel
Add the following line to the file your distribution has its module options in (in ubuntu it is /etc/modules.d/alsa-base)
options snd-hda-intel model=ref position_fix=1 enable=1 index=0
enable capture/record elements in mixer
without this jack can't play nicely with intel-hda cards
In most modern distros /etc/security/limits.conf is where realtime permissions are set, I added these 3 lines to it, and added myself to the @audio group in /etc/group
@audio - memlock 1024000 @audio - nice -10 @audio - rtprio 99
I use qjackctl to set these
Use 'aplay -l' to list all playback devices, and 'arecord -l' to list all capture devices. Results are like 'card 1: Intel [HDA Intel], device 1: ALC1200 Digital [ALC1200 Digital] ', where the part made bold is the name used. Case sensitive.
pcm.!default { # declare the default PCM device type asym # combine playback and capture devices playback.pcm { ### Playback object ### type plug # convert audio to mixer format slave.pcm { type dmix # mix multiple audio streams ipc_key 69569 # shared memory key; must be unique, just make one up ipc_key_add_uid true # add UID to shared mem key ipc_perm 0600 # shared mem file permissions slave { pcm { type hw # define the playback hardware card "Intel" # YOUR playback card name device 1 # YOUR playback device on that card } format S32_LE # YOUR bits per sample format rate 48000 # YOUR samples per second channels 2 # number of audio channels } } } capture.pcm { ### Capture object ### type plug # convert audio format from the hardware slave { pcm { type hw # define the capture hardware card "CA0106" # YOUR capture card name device 0 # YOUR capture device on that card } } } }
Please comment here if this guide worked for you or what you had to do to get it working:
!– Comments end here –!