Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
wiki:intel_hda_realtime_howto [2012/01/18 01:27] quinn_adamswiki:intel_hda_realtime_howto [2014/03/09 01:28] (current) j_e_f_f_g
Line 1: Line 1:
-The paragon of udnesrtadnnig these issues is right here!+[[http://lists.linuxaudio.org/pipermail/linux-audio-user/2008-November/056243.html|Based on this mail on LAU by Nathanael Anderson]]
  
 +~~META:title=Intel-HDA JACK low latency howto~~
 +~~META:desc=How to get Intel-HDA cards working with low latency, in duplex operation~~
  
-[[http://e-writer.org/|essay writer]]+====== Intel-HDA JACK low latency howto ======
  
 +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. :)
 +
 +===== Kernel =====
 +
 +(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 [[http://www.kernel.org/pub/linux/kernel/projects/rt/older/|projects/rt/older/]] directory
 +
 +  bzcat ../patch-2.6.24.7-rt21.bz2
 +
 +Download this config: {{:wiki:config-intel-hda.txt}}
 +
 +  mv config-intel-hda.txt .config.old
 +  make oldconfig
 +
 +build and install your kernel
 +
 +===== Module Options =====
 +
 +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
 +
 +===== Mixer Options (VERY IMPORTANT ! ! !) =====
 +
 +enable capture/record elements in mixer
 +
 +**without this jack can't play nicely with intel-hda cards**
 +
 +===== RT Permissions =====
 +
 +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
 +
 +===== Jack options =====
 +
 +I use qjackctl to set these
 +
 +  * put a check in Realtime
 +  * Priority 89
 +  * Frames/Period 64
 +  * Sample Rate 48000
 +  * Periods/Buffer 3
 +
 +===== Debian (9 sept 2013) =====
 +  * Realtime does not have to be compiled anymore into the kernel: it is already by default. I know at least on "Debian 7.1 //Wheezy// amd64" & latest UbuntuStudio, perhaps more.
 +  * On Debian the location of the config file is **/etc/modprobe.d/alsa-base.conf**
 +  * Further config files are located at **~/.asoundrc** (userwide) and **/etc/asound.conf** (systemwide). Note that ~/.asoundrc works out as /home/CURRENTUSERNAME/.asoundrc so be aware that using ~ while being root (or su in a terminal) works out as /home/root/.asoundrc, which might not be what you want.
 +  * The 'index=' setting seems to not work properly, and give errors during boot about //card not ready for slot// or something ( I will try to reproduce later). The solution is to not use the line with 'index=', but instead use '**options snd slots=snd-hda-intel**'. This will put snd-hda-intel in slot 0. If you have more cards, like me, you can sum them all up, 'options snd slots=snd-ca0106,snd-hda-intel' will assign my SB Audigy (ca0106) to slot 0, and my motherboard audio (hda-intel) to slot 1. You can also keep slot 0 'open', and only assign slot 1: 'options snd slots=,snd-hda-intel' will put the hda-intel in slot 1, keeping slot 0 open for any takers. Note the comma.
 +  * The '**nice**' option is not needed, it is commented out on my setup.
 +  * Example of /etc/asound.conf that will capture sound from device 0 on 'CA0106', and playbacks sound to device 1 on 'Intel':
 +  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
 +        }
 +      }
 +    }
 +  }
 +===== Comments =====
 +
 +Please comment here if this guide worked for you or what you had to do to get it working:
 +
 +
 +
 +!-- Comments end here --!
 +{{tag>Sound_Cards_and_Drivers jack howtos_and_faqs hardware_linux}}
wiki/intel_hda_realtime_howto.1326846448.txt.gz · Last modified: 2012/01/18 01:27 by quinn_adams