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 [2008/11/14 14:50] – tags holgerwiki:intel_hda_realtime_howto [2014/03/09 01:28] (current) j_e_f_f_g
Line 1: Line 1:
 [[http://lists.linuxaudio.org/pipermail/linux-audio-user/2008-November/056243.html|Based on this mail on LAU by Nathanael Anderson]] [[http://lists.linuxaudio.org/pipermail/linux-audio-user/2008-November/056243.html|Based on this mail on LAU by Nathanael Anderson]]
  
-~~META:title=An intel-hda jack low latency howto~~ +~~META:title=Intel-HDA JACK low latency howto~~ 
-~~META:desc=how to get intel-hda cards working with low latency, in duplex operation~~+~~META:desc=How to get Intel-HDA cards working with low latency, in duplex operation~~
  
-====== An intel-hda jack low latency howto ====== +====== Intel-HDA JACK low latency howto ======
- +
-===== Introduction =====+
  
 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'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. :)
Line 12: Line 10:
 ===== Kernel ===== ===== Kernel =====
  
-(i'm not going to walk you through how to compile a kernel)+(I'm not going to walk you through how to compile a kernel)
  
-(the last kernel before the big kernel lock regression)+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   wget http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.24.7.tar.bz2
  
Line 21: Line 19:
   wget http://www.kernel.org/pub/linux/kernel/projects/rt/patch-2.6.24.7-rt21.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)+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   bzcat ../patch-2.6.24.7-rt21.bz2
  
-  wget http://pastebin.com/pastebin.php?dl=f6ad31838 +Download this config{{:wiki:config-intel-hda.txt}} 
-  mv pastebin.php\?dl\=f6ad31838 .config.old+ 
 +  mv config-intel-hda.txt .config.old
   make oldconfig   make oldconfig
  
-(build and install your kernel)+build and install your kernel
  
 ===== Module Options ===== ===== Module Options =====
Line 62: Line 61:
   * Periods/Buffer 3   * 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 ===== ===== Comments =====
  
Line 69: Line 108:
  
 !-- Comments end here --! !-- Comments end here --!
-{{tag>Sound_Cards_and_Drivers jack howtos_and_faqs}}+{{tag>Sound_Cards_and_Drivers jack howtos_and_faqs hardware_linux}}
wiki/intel_hda_realtime_howto.1226670641.txt.gz · Last modified: 2008/11/14 14:50 by holger